Introduction to Computer Systems
During the Fall 2010 semester, I was a teaching assistant for the introductory systems course under Professors Randy Bryant and David O'Hallaron. The official course website is www.cs.cmu.edu/~213. The role of a teaching assistant includes teaching a small recitation class (~30 people) and holding two hours of "office hours" each week, grading laboratory assignments and examinations, and providing a review for students prior to exams.
The CS department describes 15-213 as a class which "provides a programmer's view of how computer systems execute programs, store information, and communicate." These are the main topics which are covered:
Data Representation (twos compliment, floating point representation)
Machine Programming (x86 & x86_64 control, linking and ELF, procedures, stack discipline, and other semantics)
Memory (virtual memory, logical to physical translations, cache memories)
Processes and Exceptional Control Flow (kernel signals and lifecycle system calls)
System I/O (dup/redirection and file descriptors)
Network Programming (socket programming, web services, HTTP requests)
Concurrent Programming (race conditions, locking, synchronization, readers/writers)
One of the responsibilities that the TAs share is to come up with slides to present during recitation class. Here I'll post any of the slides which I've come up with, as a sample of my presentation work. Keep in mind these are for meant for 50 minute recitations, and are made available online after class.
|- Datalab||- Buflab||- Review for Exam #1|
|- System I/O||- Malloc Lab||- Virtual Memory|
|- Review for Exam #2|