CR: Stack I Topics Outline
Weekly Topics
- History of computer architecture: basic programming models
Assignments
Assignments would all be divided into two parts:
- Part A must be attempted in lab and checked by a TA or instructor. Slow students can continue to work during office hours which should run after lab; however, part A is not explicitly graded in lab, more it is used to make sure students don't get stumped early. This part should be doable by good students in 10-15 minutes.
- Part B has more extensive exercises but still should be doable by good students in an hour or so.
Part A and B are turned in within one week. There should also be optional exercises that are not graded, but that could occupy good students for multiple hours.
Potential assignments:
- command line basics: standard in/out, command line pipes, standard commands, job control
- basic strings and pointers (printf, scanf), pointer/array equivalence, gdb
- Command line arguments, pointer arithmetic
- running programs with execve, PATH, environment variables, basic malloc
- dynamic buffers for file I/O, memory mapped I/O
- fork, shared memory
- sockets, netcat (TCP mainly, UDP optional)
- libraries, linking, C->assembly, function calling conventions, ltrace, strace