Skip to content

Schedule

Week ⇅ Date Topic Links
1
Aug 25 Tuesday

LEC Building an Operating System, and Your First Rust

Aug 27 Thursday

EXERCISE Setup session · 00r hello_rust

SUBMIT 00r
Aug 28 Friday

EXERCISE 01r control_flow

SUBMIT 01r
2
Sep 1 Tuesday

LEC Ownership and Borrowing

Sep 3 Thursday

EXERCISE 02r ownership

SUBMIT 02r
Sep 4 Friday

EXERCISE 03r borrowing

SUBMIT 03r
3
Sep 8 Tuesday

LEC Structs, impl, Enums, and match

Sec01: Recording
Sep 10 Thursday

EXERCISE 04r structs_impl

SUBMIT 04r
Sep 11 Friday

EXERCISE 05r enums_match

SUBMIT 05r
4
Sep 15 Tuesday

LEC Collections, Traits, Errors, and Your First Command

Sec01: Recording
Sec02: Recording
Sep 17 Thursday

EXERCISE 06r collections · 07r traits

SUBMIT 06r, 07r
Sep 18 Friday

EXERCISE 08r errors · 10c echo

SUBMIT 08r, 10c
5
Sep 22 Tuesday

LEC Streams of Bytes: cat, wc, and grep

Sec01: Recording
Sec02: Recording
Sep 24 Thursday

EXERCISE 11c cat

SUBMIT 11c
Sep 25 Friday

EXERCISE 12c wc · 13c grep · extra credit 14c head

SUBMIT 12c, 13c · 14c extra credit
6
Sep 29 Tuesday

LEC Below Rust: Assembly, unsafe, and no_std

Sec01: Recording
Sec02: Recording
Oct 1 Thursday

EXERCISE 20a asm_bridge — QEMU deadline

SUBMIT 20a
Oct 2 Friday

EXERCISE 21r unsafe_bridge · 30k kernel_basics

SUBMIT 21r, 30k
7
Oct 6 Tuesday

LEC From Reset to Page Tables: Boot, the Free List, and Sv39

Sec01: Recording
Sec02: Recording
Oct 8 Thursday

EXERCISE 31k boot · 32k physical_memory

SUBMIT 31k, 32k
Oct 9 Friday

EXERCISE 33k paging

SUBMIT 33k
8
Oct 13 Tuesday

LEC Week 9's lecture: Processes, the Context Switch, and Scheduling

Sec01: Recording
Oct 15 Thursday

EXAM MIDTERM 1 — Module 1 + kernel through 33k paging

Oct 16 Friday

NO CLASS No class — exam week

9
Oct 20 Tuesday

NO CLASS Fall Break — no class

Oct 22 Thursday

EXERCISE 34k processes

SUBMIT 34k
Oct 23 Friday

EXERCISE 35k context_switch · 36k scheduling

SUBMIT 35k, 36k
10
Oct 27 Tuesday

LEC Locks, Semaphores, and Turning the MMU On

Oct 29 Thursday

EXERCISE 37k spinlocks · 38k semaphores

SUBMIT 37k, 38k
Oct 30 Friday

EXERCISE 39k virtual_memory

SUBMIT 39k
11
Nov 3 Tuesday

LEC Files, Boot Order, and Traps

Nov 5 Thursday

EXERCISE 40k filesystem · extra credit 41k devices

SUBMIT 40k · 41k extra credit
Nov 6 Friday

EXERCISE 42k boot_to_life · 43k traps · 44k interrupts

SUBMIT 42k, 43k, 44k
12
Nov 10 Tuesday

LEC The Console, the Shell, and User Mode

Nov 12 Thursday

EXERCISE 45k console · 46k shell · extra credit 47k file_commands

SUBMIT 45k, 46k · 47k extra credit
Nov 13 Friday

EXERCISE 48k user_mode

SUBMIT 48k
13
Nov 17 Tuesday

LEC Midterm 2 Review

Nov 19 Thursday

EXAM MIDTERM 2 — 34k processes through 48k user mode

Nov 20 Friday

NO CLASS No class — exam week

14
Nov 24 Tuesday

LEC Week 15's first lecture: exec and File Descriptors

Nov 26 Thursday

NO CLASS Thanksgiving — no class

Nov 27 Friday

NO CLASS Thanksgiving — no class

15
Dec 1 Tuesday

LEC fork, wait, and the User Shell

Dec 3 Thursday

EXERCISE 49k exec · 50k file_descriptors

SUBMIT 49k, 50k
Dec 4 Friday

EXERCISE 51k fork_wait · 52k userland · 53k ship_your_commands · extra credit 54k elf_loader

SUBMIT 51k, 52k, 53k · 54k extra credit
16
Dec 8 Tuesday

EXAM FINAL EXAM — cumulative, weighted toward 49k–53k

How this course runs

Tuesday is lecture. Thursday and Friday are exercise sessions. Every line of code in this course is written in the room, on the classroom network — join cs326 and sign in once per laptop at signin.cs326. Read the Prep page before each session. The session's exercise is released when the session starts; run oslings submit before you leave, passed or not. SUBMIT lists what each session releases.

Each week's Lecture is linked on its Tuesday row and is about that week's Thursday and Friday exercises: read its Essentials before Tuesday. Week 9's lecture is given on Tue Oct 13, before fall break, and its sessions link back to it.

An Explainer on an exercise row is an interactive page, on claude.ai, about what that session works with: its exercise, or the ulib code it builds on. Most walk through code, for review; Week 7's show the machine's state and no solution code, and are for before the lecture and the session, in the order Watch first gives on the lecture's row. An explainer opens without a Claude account, and it is for use outside a session: the cs326 network does not reach it. A Video is a narrated walk through an explainer, served from this site, but it too is for use outside a session.

Did not finish? Complete it at a make-up session — office hours, on the cs326 network — for three quarters of the exercise half, or anywhere else for half, until the solution ships with the next session.


Last updated: October 13, 2026