| Schedule (approx) | Topic (relates to book) | Tasks (due date) |
| January | Course Syllabus | |
| OS review (1) | Lab#1 (Fri Jan 14) | |
| C overview | Lab#2 (Fri Jan 21) | |
| system calls for file I/O (handout) | Lab#3 (Fri Jan 21 and Tue Jan 25) | |
| Unix/Windows Side by Side (4, handouts) | ||
| system calls for creating processes | Lab#4 (5pm Tue Feb 1) | |
| Linux bootstrapping (4) | ||
| February | processes and scheduling (6.7, 8) | Test#1 (noon Fri Feb 11) |
| Concurrent Programming [ppt] | Practice Set#1 (concurrency) | |
| Controlling Concurrency [ppt] (5.7) | Practice Set#2 (synchronization) | |
| Synchronization Patterns [ppt] | ||
| deadlock (5.8) | Practice Set#3 (pointers) | |
| pointers in C |
Practice Set#4 (pthreads) | |
| Concurrency in C | Practice Set#5 (locking) | |
| Synchronization in C | Lab#5 (noon Fri Feb 25) | |
| March | Concurrency in Java | Project#1 (Phase 1: noon Fri Mar 11) (Phases 2 and 3: 5pm Tue Mar 22) |
| system calls for shared memory | ||
| memory management (10.7, 12) | ||
| April | device management (16, handout) | Test#2 (2pm Fri Apr 1) |
| file management (18.4, 18.7, 20) | Project#2 (5pm Mon Apr 18) | |
| Final Exam (10am Fri Apr 29) |