CS 344 :: Winter 2023 :: Operating Systems I



Textbooks

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:

  • [MIT] The Missing Semester of Your CS Education [Link]

Prerequisites

CS 261 and (CS 271 or ECE 271)
A minimum grade of C is required in those courses.

  • CS 261: Data Structures
  • CS 271: Computer Architecture and Assembly Language
  • ECE 271: Digital Logic Design

Grading

Your final grade for this course will be based on the following scheme:

  • 60%: 5 Online Programming Assignments
  • 40%: 4 Online Mid-term Quizzes

  • [Bonus] +12%: Extra point opportunities
  • N/A: Not available yet on Canvas.
    • +2%: Constructing a ML classifier
    • +3%: Multi-process data loader
    • +2%: Rust programming
    • +5%: Linus Torvalds

Announcements


Schedule

*[Note] This is a tentative outline; the lecture contents or the deadlines can change depending on progress.
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