⚠️ This is not the current iteration of the course! Head here for the current offering.

Here is the tentative schedule of lectures and due dates. The lecture material for future lectures may change.

Generally, projects are due at 6pm on Fridays, labs are due at 8pm on Tuesdays.

While the notes and videos published here may help you remember the material discussed, they are not a replacement for attending lectures.

🎥: Lecture Capture  —  ❓: Post-Lecture Quiz (due11:59pm the day before the next lecture).

Code from the lectures and section is available at github.com/csci0300/cs300-lectures.

MondayTuesday WednesdayThursday 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