Monday | Tuesday |
Wednesday | Thursday |
Friday |
jan 18 |
jan 19 |
jan 20
First day of classes
Block 1: Computer Systems Basics |
jan 21
LEC 1: Overview and machine organization ❓
Assigned: Project 1: Strings & Vectors
Assigned: Lab 0 (Setup)
🎥 S0: Intro and topic overview
🎥 S1: Course logistics
🎥 S2: Machine organization |
jan 22 |
jan 25 |
jan 26
LEC 2: Introduction to Systems Programming ❓
DUE: Lab 0 (Setup)
Assigned: Lab 1 (C Programming and Build Tools)
🎥 S0: More logistics
🎥 S1: Memory recap & C programming intro
🎥 S2: Programs as data |
jan 27 |
jan 28
LEC 3: Pointers and Memory Organization ❓
🎥 S1: Pointers
🎥 S2: ASCII, Lifetimes, and Memory Segments
🎥 Live Lecture Recording (broken, but with Q&A) |
jan 29 |
feb 1 |
feb 2
LEC 4: Strings, Memory Allocation ❓
DUE: Lab 1 (C Programming and Build Tools)
Assigned: Lab 2 (Debugging)
🎥 S0: Logistics, Pointer Review
🎥 S1: Strings
🎥 S2: Dynamic Memory Allocation, Undefined Behavior |
feb 3 |
feb 4
LEC 5: Arrays, Structures, and Alignment ❓
🎥 S1: Arrays, Endianness
🎥 S2: Structures
🎥 S3: Linked List Example
🎥 S4: Alignment |
feb 5
DUE: Project 1: Strings & Vectors (strings part excl. mbslen ) |
feb 8 |
feb 9
LEC 6: Collection Summary, Signed Numbers, and Assembly ❓
DUE: Lab 2 (Debugging)
Assigned: Lab 3 (Assembly)
🎥 S1: Collection Summary
🎥 S2: Signed Numbers
🎥 S3: Assembly Language |
feb 10 |
feb 11
LEC 7: Assembly, Calling Conventions ❓
🎥 S0: sizeof() review, Correction (optional, 10min)
🎥 S1: More Assembly
🎥 S2: Assembly Control Flow
🎥 S3: Calling Conventions |
feb 12
DUE: Project 1: Strings & Vectors (everything)
Assigned: Project 2: DMalloc
🎥 DMalloc Gearup & Pointer Review Section |
feb 15
Long Weekend |
feb 16
Long Weekend |
feb 17 |
feb 18
LEC 8: Stack, Buffer Overflow, C++ ❓
🎥 S1: Call/return sequence, Stack
🎥 S2: Base pointer, Buffer overflow
🎥 S3: Intro to C++
🎥 Buffer overflow walkthrough (optional, 4min) |
feb 19 |
feb 22 |
feb 23
LEC 9: C++, Caching ❓
DUE: Lab 3 (Assembly)
Assigned: Lab 4 (Caching)
🎥 S0: Base pointer and Stack Review (optional, 8min)
🎥 S1: C++ Standard Library Data Structures
🎥 S2: Storage Hierarchy
🎥 S3: Processor Caches |
feb 24
Block 2: Fundamentals of Operating Systems |
feb 25
LEC 10: Caching, Operating System Intro ❓
🎥 S0: DMalloc Hints (optional, 8min)
🎥 S1: Processor Caching in Action
🎥 S2: Intro to Operating Systems
🎥 S3: Processor Sharing |
feb 26
DUE: Project 2: DMalloc
Assigned: Project 3: Caching I/O |
mar 1 |
mar 2
LEC 11: Privilege Separation, Memory Protection ❓
DUE: Lab 4 (Caching)
Assigned: Lab 5 (Intro to WeensyOS)
🎥 S1a: PLQ review (Caches, Kernel)
🎥 S1b: Privilege Separation
🎥 Patch files (optional)
🎥 S2: WeensyOS Memory Layout
🎥 S3: Memory Protection |
mar 3 |
mar 4
LEC 12: Syscalls, Virtual Memory ❓
🎥 S1: System Calls and I/O Caching
S2: Caching and OS Q&A (1:30-2:30pm; optional)
🎥 S3: Virtual Memory |
mar 5
Assigned: Project 4A: WeensyOS (step 1-4) |
mar 8
DUE: Project 3 (Caching I/O) (9am AoE)
Assigned: Midterm Quiz (released 9am Eastern) |
mar 9
LEC 13: Page Tables and Address Translation ❓
🎥 S1: Page Table Strawman
🎥 S2: Virtual Address Translation
🎥 S3: Virtual Memory Review |
mar 10 |
mar 11
Midterm completion due
Materials: Open book, notes, laptop, internet, restricted communication
Scope: Lectures 1 through 12, Projects 1, 2, and 3
Timing: released 9am Eastern Monday, due 6pm AoE Thursday |
mar 12
DUE: Lab 5 (Intro to WeensyOS)
Assigned: Lab 6 (Processes) |
mar 15
Block 3: Concurrency and parallel programming |
mar 16
LEC 14: Processes ❓
🎥 S0: PLQ FAQ (Virtual Memory) (optional, 12 min.)
🎥 S1: Process Creation: fork()
🎥 S2: Process Creation: exec()
🎥 S3: Inter-Process Communication (I) |
mar 17 |
mar 18
LEC 15: IPC, Multiprocessing ❓
🎥 S1: Pipes (I)
🎥 S2: Pipes (II)
🎥 S3: Multiprocessing, Concurrency vs. Parallelism |
mar 19
DUE: Project 4A: WeensyOS (step 1-4) |
mar 22 |
mar 23
LEC 16: Threads, Race Conditions, and Atomics ❓
DUE: Lab 6 (Processes)
Assigned: Lab 7 (Threads)
🎥 S1: Threads
🎥 S2: Race Conditions
🎥 S3: Atomics |
mar 24 |
mar 25
LEC 17: Synchronization (I) ❓
🎥 S1: Synchronization Rules
🎥 S2: Mutexes
🎥 S3: Bounded Buffer |
mar 26
DUE: Project 4B: WeensyOS (all steps)
Assigned: Project 5: Vunmo |
mar 29 |
mar 30
LEC 18: Synchronization (II) ❓
Assigned: Lab 8 (RPCs)
🎥 S1: Synchronized Bounded Buffer
🎥 S2: Condition Variables
🎥 S3: Deadlock |
mar 31
Block 4: Distributed systems |
apr 1
LEC 19: Synchronization (III), Networking ❓
🎥 S1: Condition Variables (II)
🎥 S2: Condition Variables (III), Deadlock Avoidance
🎥 S3: Networking |
apr 2
DUE: Lab 7 (Threads) |
apr 5 |
apr 6
LEC 20: Networking, Scalability ❓
🎥 S1: Networking APIs (sockets)
🎥 S2: Key-value Stores
🎥 S3: Scaling a server |
apr 7
DUE: Project 5: Vunmo
Assigned: Project 6: Distributed Store |
apr 8
LEC 21: RPC, Sharding, and Replication ❓
🎥 S1: Thread pool, RPCs
🎥 S2: Scalability, Sharding
🎥 S3: Sharding, Replication |
apr 9
Extended Weekend |
apr 12 |
apr 13
LEC 22: Consistency, Transactions, Real-World Distributed Systems ❓
DUE: Lab 8 (RPCs)
🎥 S1: Consistent Replication
🎥 S2: Transactions
🎥 S3: Real-World Distributed Systems |
apr 14 |
apr 15
LEC 23: Summary and Outlook 🎥
1pm-2:20pm Eastern, no ALRs! |
apr 16
Last day of classes |
apr 19 |
apr 20 |
apr 21
Final quiz completion due
Materials: Open laptop, book, compiler, internet, restricted communication
Scope: Lectures 13 through 23, Projects 4, 5, 6
Timing: released 9am Eastern Sunday, due 6pm AoE Wednesday |
apr 22
DUE: Project 6: Distributed Store |
apr 23 |