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 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:
Date | Topics | Notes | Supplementary Materials |
---|---|---|---|
Overview and Motivation | |||
Mon. 01/09 |
Introduction to Operating Systems | [Slides] |
[Reading] Resource contention [Reading] Thrashing |
Wed. 01/11 |
Preliminaries | [Slides] |
[Reading] The Missing Semester of Your CS Education [Tools/Tips] Vim configurations |
Mon. 01/16 |
Martin Luther King Jr. Day |
[No lecture] | [Due] Syllabus Quiz |
Part I: Processes, Threads, and Scheduling Basics | |||
Wed. 01/18 |
Processes | [Slides] | |
Mon. 01/23 |
Threads | [Slides] |
[Due] Programming Assignment I [Reading] Process scheduling [Reading] Real-Time Operating Systems (RTOS) |
Wed. 01/25 |
Scheduling (Basics) | [Slides] | |
Part II: Files and File System Basics | |||
Mon. 01/30 |
Files | [Slides] |
[Due] Midterm Quiz I [Reading] The UNIX Time-sharing System |
Wed. 02/01 |
I/O | [Slides] | |
Mon. 02/06 |
Filesystem Internals | [Slides] |
[Due] Programming Assignment II [OS Internals] Linux file descriptor table [OS Internals] Linux source code for fopen() |
Wed. 02/08 |
SH's Business Travel | [No lecture] | |
Part III: IPC, RPC, and Networking | |||
Mon. 02/13 |
Signals and PIPEs | [Slides] |
[Due] Midterm Quiz II [Reading] Paper: Security of GitHub's Code Copilot [Reading] Paper: Cryptocurrency Abuses in the Dark Web |
Wed. 02/15 |
Sockets |
[Slides] |
[Reading] IPv4 vs. IPv6 [Reading] HTTPS (explained IPv6) [Reading] Man-in-the-Middle attack [Reading] Web server frameworks: Apache or NGINX |
Mon. 02/20 |
Networking I | [Slides] | [Due] Programming Assignment III |
Wed. 02/22 |
Networking II and One-time Pads (OTP) | [Slides] | |
Mon. 02/27 |
Quizzes, Assignments, and Opportunities | [No lecture] | |
Part IV: Synchronization and Rust | |||
Wed. 03/01 |
Synchronization I | [Slides] | [Due] Midterm Quiz III |
Mon. 03/06 |
Synchronization II | [Slides] |
[Due] Programming Assignment IV [Reading] Race condition [Reading] Google's Syzkaller |
Wed. 03/08 |
Synchronization III | [Slides] |
[Tools/Tips] Semaphore Man Page |
Mon. 03/13 |
Rust Programming Language | [Slides] |
[Reading] Linearizability |
Wed. 03/15 |
Recap: OS I Summary | [Slides] | [Due] Programming Assignment V |
Finals Week (03/20 - 03/22): Please do your late submissions for programming online exams by 03/22. | |||
Mon. 03/20 |
- | [Due] Midterm Quiz IV | |
Wed. 03/22 |
- |
[Due: late submissions] Programming Assignment I-V |