Click lecture names for slides.

Note: lecture/exam dates are for the Mon/Wed section. The Tue/Thu section will have these the day after. Project due dates are the same for both sections.

1/7 Introduction and C Basics (Oualline ch 1, 2, 4, 6, 8)
1/9 C - Functions (Oualline ch 3, 9)
1/14 C - Strings and Files (Oualline ch 5, 14)
1/16 C - Structs, Unions, Enums, Typedefs (Oualline ch 12)
1/21 No class - ponder on centuries of atrocities
1/22 No class Tuesday, either
1/23 C - Pointers and Arrays (Oualline ch 5, 13, Misurda ch 1)
1/26 proj1 due by 11:59pm
1/28 C - Scope, Lifetime, and the Stack (Oualline ch 9, Misurda ch 2, 6)
1/30 C - Memory management (Oualline ch 15-23)
2/4 Programs - Memory allocation (Misurda ch 7)
2/6 Programs - Memory deallocation (Misurda ch 7)
2/11 C - Multi-file development and make (Oualline 7, 10, 18)
2/13 Programs - Debugging (Misurda appendix B)
2/16 proj2 due by 11:59pm
2/18 Exam review
2/20 Exam 1
2/25 Programs - Calling conventions (Misurda ch 6)
2/27 Programs - Preprocessing, Compilation, and Linking (Misurda ch 3, Oualline ch 10)
3/4 Programs - Dynamic Linking and Loading (Misurda ch 3-4)
3/6 Programs - Loading and running (Misurda ch 5)
3/9 proj3 due by 11:59pm
3/11 No class - ponder on SPRING BREAAAAAAAAAAAAK
3/18 OS - System calls (Misurda ch 8, ALP ch 3, 8)
3/20 OS - Processes and Signals (Misurda ch 3, 8)
3/25 Kernel - Device drivers Part 1 (LDD3 ch 1-2)
3/27 Kernel - Device drivers Part 2
3/30 proj4 due by 11:59pm
4/1 Threads - Multiprocessing Part 1 (Misurda ch 9)
4/3 Threads - Multiprocessing Part 2
4/8 Threads - Race conditions and Synchronization (Misurda ch 10)
4/10 Threads - Synchronization and Deadlocks
4/15 Threads - Interprocess Communication
4/17 Exam review
4/20 proj5 due by 11:59pm
4/24 Mon/Wed Exam 2: 2:00pm, room TBA
4/26 Tue/Thu Exam 2: 4:00pm, room TBA