No required textbook. Reading materials will be provided on the course website and/or distributed in class. If you lack the basics in system programming, please refer to this short online course:
CS 261 (261H) and (CS 271 or ECE 271)
A minimum grade of C is required in those courses.
Your final grade for this course will be based on the following scheme:
By the end of this course, you will be able to:
| Date | Topics | Notes | Supplementary Materials |
|---|---|---|---|
| Overview and Motivation | |||
| Mon. 03/30 |
Intro to Operating Systems | [Slides] | |
| Wed. 04/01 |
Preliminaries | [Slides] |
[Reading] The Missing Semester of Your CS Education |
| Part I: OS Fundamentals | |||
| Mon. 04/06 |
Processes and Threads | [Slides] | [Due] Syllabus Quiz |
| Wed. 04/08 |
Context Switching | [Slides] | |
| Mon. 04/13 |
Virtual Memory [Online] |
[Slides] |
[Due] Programming Assignment I [Reading] Thrashing |
| Wed. 04/15 |
Scheduling (Basics) | [Slides] |
[Reading] Process scheduling [Reading] Real-Time Operating Systems (RTOS) |
| Part II: Files and File System Basics | |||
| Mon. 04/20 |
Files | [Slides] |
[Due] Midterm Quiz I [Reading] The UNIX Time-sharing System |
| Wed. 04/22 |
I/O | [Slides] | |
| Mon. 04/27 |
Filesystem Internals | [Slides] |
[Due] Programming Assignment II [OS Internals] Linux file descriptor table [OS Internals] Linux source code for fopen() |
| Part III: IPC, RPC, and Networking | |||
| Wed. 04/29 |
Signals and PIPEs | [Slides] | [Due] Midterm Quiz II |
| Mon. 05/04 |
Sockets | [Slides] | |
| Wed. 05/06 |
Networking I | [Slides] |
[Reading] IPv4 vs. IPv6 [Reading] HTTPS (explained IPv6) [Reading] Man-in-the-Middle attack [Reading] Apache or NGINX |
| Mon. 05/11 |
Networking II [SH's Conference Travel] |
[Slides] | (Async) Recorded materials on Canvas |
| Part IV: Synchronization | |||
| Wed. 05/13 |
Synchronization I | [Slides] |
[Due] Midterm Quiz III [Due] Programming Assignment III [Reading] Resource contention |
| Mon. 05/18 |
Deadlock [SH's Conference Travel] |
[Slides] | (Async) Recorded materials on Canvas |
| Wed. 05/20 |
Synchronization II [SH's Conference Travel] |
[Slides] |
(Async) Recorded materials on Canvas [Reading] Race condition [Reading] Google's Syzkaller |
| Mon. 05/25 |
Memorial Day | [No lecture] | |
| Wed. 05/27 |
Synchronization III | [Slides] |
[Due] Programming Assignment IV [Tools/Tips] Semaphore Man Page [Reading] Linearizability |
| Part V: Safe Operating Systems | |||
| Mon. 06/01 |
Rust in Linux Kernel | [Slides] |
[Reading] Paper: Security of GitHub's Code Copilot [Reading] Rust in the Linux Kernel |
| Wed. 06/03 |
Rowhammer and Side-channels | [Slides] | [Reading] PrisonBreak: Jailbreaking LLMs with at Most 25 Targeted Bit-flips |
| Finals Week (06/08 - 06/12): Please do your late submissions for programming assignments by 06/12. | |||
| Mon. 06/08 |
- | [Due] Midterm Quiz IV | |
| Fri. 06/12 |
- |
[Due] Programming Assignment V [Due: late submissions] Programming Assignment I-V |
|