• The schedule will change as the course progresses, in part based on student interests. If you are particularly interested in some topic not covered here, send mail to the course staff.

  • Submit your answers (and questions) via survey link, and post your questions to colleagues (and staffs) on Piazza.

  • Answers for lecture preparation questions can be found in this Piazza post @55.

  • Join our BlueJeans meeting Here.

Monday Tuesday Wednesday Thursday Friday
Jan 6
First day of class (No class)
Jan 7
LEC 1: Designing Operating Systems
Preparation: Watch "Is It Time to Rewrite the Operating System in Rust?" (Question)
Assignment: Lab 0: Rustlings
Jan 8 Jan 9
LEC 2: Rust 1: Thinking of Rust
Preparation: Read Rusty Types for Solid Safety
Preparation: Watch "A Case for Oxidation: The Rust Programming Language" (Question)
Jan 10
Jan 13 Jan 14
LEC 3: Rust 2: Ownership and Lifetime (1)
Preparation: Read Book: Ch04 and Nomicon:Ch03.
Preparation: Check "The benefits and costs of writing a POSIX kernel in a high-level language" (Question)
Jan 15 Jan 16
LEC 4: Rust 2: Ownership and Lifetime (2)
Preparation: Read Book: Ch04 and Nomicon:Ch03. (Question)
Jan 17
Jan 20
DUE: Lab 0
Martin Luther King, Jr
Jan 21
LEC 5: Introduction to Raspberry Pi 3
Preparation: Watch the founder's take on Rpi 3 (Question)
Assignment: Lab 1: Bootstrapping Raspberry Pi
Jan 22 Jan 23
Hacking Day (recitation only)
Jan 24
Jan 27
DUE: Lab 1
Jan 28
LEC 6: Rust 3: Unsafety
Preparation: Read Nomicon:Ch01 and Ref Ch14.
Preparation: Watch "Writing Linux Kernel Modules in Safe Rust" (Question)
Assignment: Lab 2: Shell and Bootloader
Jan 29 Jan 30
LEC 7: Rust 4: Freestanding/Baremetal Rust
Preparation: A Freestanding Rust Binary
Preparation: implementing RNG (Question)
Jan 31
Feb 3 Feb 4
LEC 8: Rust 5: Generics and Traits
Preparation: Book:Ch10
Preparation: The Common Rust Traits
Preparation: Watch "Traits and You: A Deep Dive" (Question)
Feb 5 Feb 6
LEC 9: Rust 6: Smart Pointer and Container
Preparation: Container cheat sheet
Preparation: Book:Ch15
Preparation: Deref for smart pointer and containers (Question)
Feb 7
Feb 10
DUE: Lab 2
Feb 11
LEC 10: Review: Rust 5/6
Preparation: Watch "Perspectives on OS Foundations" (Question)
Assignment: Lab 3: FAT32 Filesystem
Feb 12 Feb 13
LEC 11: Filesystem/Fat32
Preparation: No Prep (submit questions if you have any)!
Feb 14
Feb 17 Feb 18
LEC 12: Rust 7: Interior Mutability
Preparation: Rc and Cell (Question)
Feb 19 Feb 20
LEC 13: Memory Management and Heap Allocator
Preparation: Heap Allocation (Question)
Feb 21
Feb 24
DUE: Proposal Slides (Upload link)
Feb 25
Proposal Day
Teams#1-20 slides (Here)
Evalution form for Day 1 (Here)
Feb 26 Feb 27
Proposal Day
Teams#21-35 slides (Here)
Evalution form for Day 2 (Here)
Review for Q1
Feb 28
Mar 2
DUE: Lab 3
Mar 3
Guest lecture: Scalable Undefined Behavior Detection for Rust
Assignment: Lab 4: Preemptive Multitasking
Mar 4 Mar 5
Quiz #1. Lab 1-3 (Lec 1-13) (PDF)
Mar 6
Mar 9 Mar 10
LEC 14: Introduction to ARMv8/AArch64
Preparation: Fundamentals of ARMv8-A Ch1. page 4-9 (Question)
Mar 11
Mar 12
Review Q1 (recitation only)
Lab4 Overview
Mar 13
Mar 16
Spring break
Mar 17
Spring break
Mar 18
Spring break
Mar 19
Spring break
Mar 20
Spring break
Mar 23 Mar 24
No class (be safe!)
Mar 25 Mar 26
No class (be safe!)
Mar 27
Mar 30 Mar 31
LEC 15: Interrupt and Exception (Recorded lecture)
Preparation: AArch64 Exception and Interrupt Handling (Question)
Apr 1 Apr 2
LEC 16: Process and Scheduling (Recorded lecture)
Preparation: Scheduling: Introduction (Question)
Apr 3
Apr 6 Apr 7
LEC 17: Virtual Memory (Recorded lecture)
Preparation: ARMv8-A Address Translation (Question)
Apr 8 Apr 9
LEC 18: Synchronization (Recorded lecture)
LEC 19: Rust 9: Concurrency (Watch: Rust's Journey to Async/Await)
Preparation: Watch "Down memory lane: Two decades with the slab allocator" (Question)
Apr 10
Apr 13
DUE: Project video demo (link)
Apr 14
DUE: Project peer evaluation day 1 (Youtube) (Evalution Form)
Assignment: Lab 5: Multicore and Networking (optional)
Apr 15 Apr 16
DUE: Project peer evaluation 2 (Youtube) (Evalution Form)
Apr 17
Apr 20
DUE: Lab 4
Apr 21
Quiz #2. Lab 1-4, Lec 1-17 (not 18/19) (Prep) (PDF)
Apr 22 Apr 23
Final exam week
(No final!)
Apr 24
Final exam week
(No final!)
Apr 27
Final exam week
(No final!)
Apr 28
Final exam week
(No final!)
Apr 29
Final exam week
(No final!)
Apr 30
Final exam week
(No final!)
May 1
DUE: Lab5
DUE: Final project (link)