Schedule
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 |
|
| Thu, | Aug 27 | Ownership; struct and enum types |
||
| Fri, | Aug 28 | Counter statistics lab |
||
| 2 | Tue, | Sep 01 | Modules; error handling; traits and generics |
Release HW 1Rust book, Ch 7-10, 19 |
| Thu, | Sep 03 | Memory; smart pointers; ownership revisited |
||
| Fri, | Sep 04 | Process registry lab 1 |
||
| 3 | Mon, | Sep 07 |
HW 1 check-in (delayed one day) |
|
| Tue, | Sep 08 | Testing; Cargo; functional features |
||
| Thu, | Sep 10 | Dynamic traits; advanced Rust features |
||
| Fri, | Sep 11 | Process registry lab 2 |
||
| 4 | Mon, | Sep 14 |
HW 1 due |
|
| Tue, | Sep 15 | Profiling and optimization |
Release HW 2CSAPP3e, 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 3CSAPP3e, 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 11Beej'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 4Rust book, Ch 16CSAPP3e, 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 |
||
| 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 |