This schedule should be considered tentative and subject to change, at least until it actually takes place! If you have access to a printer, feel free to print (and maybe add your name to) the template for class sheets.

Week Day Date Topic and links HW
1 Tue, Aug 25 Rust fundamentals [PDF]

[Intro and logistics][Intro and logistics (PDF)]

Rust Book, Ch 1-3

Thu, Aug 27 Ownership; struct and enum types [PDF]

Rust Book, Ch 4-6

Fri, Aug 28 Counter statistics lab [PDF]

Lab repo

2 Tue, Sep 01 Modules; error handling; traits and generics [PDF]

Release HW 1
Rust book, Ch 7-10, 19

Thu, Sep 03 Memory; smart pointers; ownership revisited [PDF]

Rust book, Ch 15

Fri, Sep 04 Process registry lab 1 [PDF]

Lab repo

3 Mon, Sep 07

HW 1 check-in (delayed one day)

Tue, Sep 08 Testing; Cargo; functional features [PDF]

Rust book, Ch 11, 13-14

Thu, Sep 10 Dynamic traits; advanced Rust features [PDF]

Rust book, Ch 18, 20

Fri, Sep 11 Process registry lab 2 [PDF]

Lab repo

4 Mon, Sep 14

HW 1 due

Tue, Sep 15 Performance, ILP, and memory [PDF]

Release HW 2
CSAPP3e, Ch 5

Thu, Sep 17 Profiling and optimization [PDF]

CSAPP3e, Ch 6

Fri, Sep 18 Lab on profiling and memory tuning [PDF]

Lab repo

5 Mon, Sep 21

HW 2 check-in

Tue, Sep 22 Locality and data structure tuning [PDF]

Evening prelim

Thu, Sep 24 Compilation, linking, loading, build systems [PDF]

CSAPP3e, Ch 7

Fri, Sep 25 Lab on FFIs for C + viewing assembly [PDF]

Lab repo

6 Mon, Sep 28

HW 2 due

Tue, Sep 29 The Unix file interfaces [PDF]

Release HW 3
CSAPP3e, Ch 10

Thu, Oct 01 The virtual memory abstraction; segments; mmap and memory-mapped I/O

CSAPP3e, Ch 9

Fri, Oct 02 Lab on memory-mapped I/O
7 Mon, Oct 05

HW 3 check-in

Tue, Oct 06 Processes and IPC with sockets; signals

CSAPP3e, Ch 8

Thu, Oct 08 Processes and IPC cont; processes vs threads
Fri, Oct 09 Lab - process management, Unix pipelines
8 Tue, Oct 13 Fall break
Thu, Oct 15 Intro to TCP socket programming

(Bindel away)

CSAPP3e, Ch 11
Beej's Guide

Fri, Oct 16 Lab - ping-pong programs and measurement
9 Mon, Oct 19

HW 3 due

Tue, Oct 20 Message-based concurrency in Rust

Release HW 4
Rust book, Ch 16
CSAPP3e, Ch 12

Thu, Oct 22 Rust scoped threads, ownership and closures, Send and Sync traits, etc
Fri, Oct 23 Lab - a small multi-threaded web service
10 Mon, Oct 26

HW 4 check-in

Tue, Oct 27 Shared memory concurrency in Rust; races, Arcs, Mutexes, RwLock
Thu, Oct 29 Atomics; condition variables and monitors
Fri, Oct 30 Lab - practice with shared memory data structures
11 Mon, Nov 02

HW 4 due

Tue, Nov 03 Conditions for deadlock and livelock

Release HW 5

Thu, Nov 05 Multi-threaded network programming - RPC, RESTful APIs
Fri, Nov 06 Lab - building a web service with actix-web
12 Mon, Nov 09

HW 5 check-in

Tue, Nov 10 Programming with async/await and futures

Rust book, Ch 17

Thu, Nov 12 Run-times and work-stealing
Fri, Nov 13 Lab - playing with async-await
13 Mon, Nov 16

HW 5 due

Tue, Nov 17 Events, select loops, and state machines

(Bindel away)

Release HW 6

Thu, Nov 19 Service performance, reliability, consistency

(Bindel away)

Fri, Nov 20 Lab - performance modeling and testing of a sample service
14 Mon, Nov 23

HW 6 check-in

Tue, Nov 24 Model checking and testing
Thu, Nov 26 Thanksgiving
Fri, Nov 27 Thanksgiving
15 Tue, Dec 01 Special topics
Thu, Dec 03 Review for final (systems programming)
Fri, Dec 04 Review for final (Rust)
16 Mon, Dec 07

HW 6 due