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/23 C - Pointers and Arrays (Oualline ch 5, 13, Misurda ch 1)
1/28 C - Scope, Lifetime, and the Stack (Oualline ch 9, Misurda ch 2, 6)
1/30 no class due to weather
2/4 C - Memory management (Oualline ch 15-23)
2/6 Programs - Memory allocation (Misurda ch 7)
2/11 Programs - Memory deallocation (Misurda ch 7)
2/13 C - Multi-file development and make (Oualline 7, 10, 18)
2/18 Programs - Debugging (Misurda appendix B)
2/25 Exam 1
2/27 Programs - Calling conventions (Misurda ch 6)
3/4 Programs - Preprocessing, Compilation, and Linking (Misurda ch 3, Oualline ch 10)
3/6 Programs - Dynamic Linking and Loading (Misurda ch 3-4)
3/11 No class - ponder on SPRING BREAAAAAAAAAAAAK
3/18 Programs - Loading and running (Misurda ch 5)
3/20 OS - System calls (Misurda ch 8, ALP ch 3, 8)
3/25 OS - Processes and Signals (Misurda ch 3, 8)
3/27 Kernel - Device drivers Part 1 (LDD3 ch 1-2)
4/1 Kernel - Device drivers Part 2
4/3 Threads - Multiprocessing Part 1 (Misurda ch 9)
4/8 Threads - Multiprocessing Part 2
4/10 Threads - Race conditions and Synchronization (Misurda ch 10)
4/15 Threads - Condition variables and Semaphores
4/17 Threads - Deadlocks and IPC
4/24 Mon/Wed Exam 2: 2:00pm, in the regular classroom
4/26 Tue/Thu Exam 2: 4:00pm, in the regular classroom