The following course schedule is TENTATIVE and subject to change. Readings are taken from Computer Systems: A programmer's Perspective, 3rd edition by Bryant and O'Hallaron.
| Class # | Date | Lecture Topics | Book Readings |
|---|---|---|---|
| 1 | 8/26 | Administrative & Overview | 1 |
| 2 | 8/28 | Revision control, git | |
| 3 | 9/2 | Revision control, git (cont.) | |
| 4 | 9/4 | Linking and Loading | 7 |
| 5 | 9/9 | Linking and loading | |
| 6 | 9/11 | Profiling and Optimization | |
| 7 | 9/16 | Profiling and Optimization | 5 |
| 8 | 9/18 | Debugging | |
| 9 | 9/23 | Debugging | |
| 10 | 9/25 | Dynamic memory allocation (basic concepts) | 9.9-9.11 |
| 11 | 9/30 | Dynamic memory allocation (implementation techniques) | |
| 12 | 10/2 | Dynamic memory allocation | |
| 13 | 10/7 | Exceptional control flow, processes | 8.1-8.4 |
| 14 | 10/9 | Exceptional control flow, processes | |
| 10/14 | Fall Break (no class) | ||
| 15 | 10/16 | Exceptional control flow, processes | |
| 16 | 10/21 | Signals, signal handlers | 8.5-8.8 |
| 17 | 10/23 | Async-signal-safety, waiting for signals, nonlocal jumps | 10.1-10.4 |
| 18 | 10/28 | Midterm Exam | |
| 19 | 10/30 | System-level I/O: Unix I/O, Unix file system concepts | 11.1-11.4 |
| 20 | 11/4 | System-level I/O: File descriptors, sharing files, pipes, redirection | |
| 21 | 11/6 | Concurrent programming -- Motivation (via network servers) | 12.1-12.3 |
| 22 | 11/11 | Concurrent Programming - Overview of threads | 12.4-12.8 |
| 23 | 11/13 | Concurrent Programming - threads | |
| 24 | 11/18 | Synchronization: Race conditions, mutual exclusion, semaphores, mutexes | |
| 25 | 11/20 | Synchronization: Bounded buffer, Readers & Writers | |
| 26 | 11/25 | Thread safety, races, deadlocks | |
| 11/27 | Thanksgiving (no class) | ||
| 27 | 12/2 | Memory hierarchy, cache concepts | 6 |
| 28 | 12/4 | Virtual memory concepts | 9.1-9.8 |
| 12/18 | Final Exam (L01) (8:00 am -- 10:30 am) |