See course resources for information on the book abbreviations found in the Extra column.

This schedule is tentative and subject to change!

Week Date Topic Reading Extra Assignment
Computer Organization
1 Mon Aug 29 Introduction to Computer Systems [notes] [recording] [drawing] [birrell] Stack frame layout on x86-64 [BO Ch. 1]
Wed Aug 31 C Programming Practice [notes] [BO Ch. 2.1-2.3]
Fri Sep 2 [handout] [solution] Blob to Image (Learning C) (No checkpoint)
2 Mon Sep 5 Labor Day (no class)
Wed Sep 7 Data Representation [notes] [recording] [birrell:ints1] [birrell:ints2] [birrell:floats] Floating Point Visually Explained [BO Ch. 2.4]
Fri Sep 9 [handout] [solution] Data Representation
3 Mon Sep 12 x86-64 Assembly [recording] [drawing] [slides] [birrell] NASM Tutorial [BO Ch. 3.1-3.4]
Wed Sep 14 Debugging Practice [notes] [birrell] [BO Ch. 3.5-3.6]
Fri Sep 16 [handout] [solution] Debugging the Labyrinth
4 Mon Sep 19 Assembly Control Flow and Data [slides] [birrell] Read Parts 1 through 4 [BO Ch. 3.7]
Wed Sep 21 Assembly Data and Subroutines [slides] [recording] [subroutines] [birrell] [BO Ch. 3.8-3.9]
Fri Sep 23 [handout] [solution] Binary Bombs
5 Mon Sep 26 Security and Overflows [slides] [birrell] ROP Chaining: Return Oriented Programming [BO Ch. 3.10]
Wed Sep 28 Security and Overflows [slides] [birrell] [Shacham07]
Fri Sep 30 [handout] [solution] Binary Attacks
6 Mon Oct 3 Dynamic Memory [slides] [birrell] Writing My Own Dynamic Memory Management
Wed Oct 5 Dynamic Memory [slides] [birrell] [BO Ch. 5]
Fri Oct 7 [handout] [solution] Dynamic Memory
7 Mon Oct 10 Caching (Direct-Mapped) [slides] [birrell] How Does CPU Cache Work? [BO Ch. 6.2-6.4.2]
Wed Oct 12 Caching (Set-Associative) [slides] [birrell] [BO Ch. 6.4.3-6.4.7]
Fri Oct 14 [handout] [solution] Caching
8 Mon Oct 17 Fall break (no class)
Wed Oct 19 Cache Performance [slides] [birrell] See gradescope [BO Ch. 6.5]
Fri Oct 21 [handout] [solution] Catch Up (no Checkpoint)
Operating Systems
9 Mon Oct 24 Processes [slides] [birrell] Threads vs. Processes [AA Ch. 4, 5, 6]
Wed Oct 26 Scheduling [slides] [birrell] [AA Ch. 7, 8]
Fri Oct 28 [handout] [solution] Command Line Shell
10 Mon Oct 31 Virtual Memory [slides] [birrell] The Abstraction: Address Spaces (PDF) [AA Ch.15,16,18,21]
Wed Nov 2 Paging Virtual Memory [slides] [birrell] [AA Ch. 19, 20, 23]
Fri Nov 4 [handout] [solution] Virtual Memory
11 Mon Nov 7 Threading [slides] [birrell] Introduction to Pthreads [AA Ch. 26, 28]
Wed Nov 9 Synchronization [slides] [birrell] [AA Ch. 31, 30]
Fri Nov 11 [handout] [solution] Synchronization
12 Mon Nov 14 System I/O [slides] [birrell] The Definitive Guide to Linux System Calls [AA Ch. 39, BO Ch. 10]
Wed Nov 16 File Systems [slides] [birrell] [AA Ch. 40, 41]
Fri Nov 18 Guest Lecture [handout] [solution]
13 Mon Nov 21 File Systems
Wed Nov 23 Thanksgiving (no class)
Fri Nov 25 Thanksgiving (no class)
14 Mon Nov 28 Networks [slides] [birrell] The Internet [BO Ch. 11.1-11.3]
Wed Nov 30 Transmission Control Protocol (TCP) [slides] [birrell] [BO Ch. 11.4]
Fri Dec 2 [handout] [solution] Networking
15 Mon Dec 5 Simulation, Emulation, Virtualization [slides] (Optional) Emulator 101
Wed Dec 7 Linux from Scratch [slides]
Fri Dec 9 Reading day (no class)
16 Fri Dec 16 Final (2:00 - 5:00 PM)

© Eleanor birrell and Anthony Clark, 2022