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