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

[Intro and logistics]

Rust Book, Ch 1-3

Thu, Aug 27

Ownership; struct and enum types

Rust Book, Ch 4-6

Fri, Aug 28

Counter statistics lab

Lab repo

2 Tue, Sep 01

Modules; error handling; traits and generics

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

Thu, Sep 03

Memory; smart pointers; ownership revisited

Rust book, Ch 15

Fri, Sep 04

Process registry lab 1

Lab repo

3 Mon, Sep 07

HW 1 check-in (delayed one day)

Tue, Sep 08

Testing; Cargo; functional features

Rust book, Ch 11, 13-14

Thu, Sep 10

Dynamic traits; advanced Rust features

Rust book, Ch 18, 20

Fri, Sep 11

Process registry lab 2

4 Mon, Sep 14

HW 1 due

Tue, Sep 15

Profiling and optimization

Release HW 2
CSAPP3e, Ch 5

Thu, Sep 17

Modern memory architecture

CSAPP3e, Ch 6

Fri, Sep 18

Lab on profiling and memory tuning

5 Mon, Sep 21

HW 2 check-in

Tue, Sep 22

Locality and data structure tuning

Evening prelim

Thu, Sep 24

Compilation, linking, loading, build systems

CSAPP3e, Ch 7

Fri, Sep 25

Lab on FFIs for C + viewing assembly

6 Mon, Sep 28

HW 2 due

Tue, Sep 29

The Unix file interface; pipes; virtualization

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