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 [PDF] | |
| Thu, | Aug 27 | Ownership; struct and enum types [PDF] | ||
| Fri, | Aug 28 | Counter statistics lab [PDF] | ||
| 2 | Tue, | Sep 01 | Modules; error handling; traits and generics [PDF] |
Release HW 1Rust book, Ch 7-10, 19 |
| Thu, | Sep 03 | Memory; smart pointers; ownership revisited [PDF] | ||
| Fri, | Sep 04 | Process registry lab 1 [PDF] | ||
| 3 | Mon, | Sep 07 |
HW 1 check-in (delayed one day) |
|
| Tue, | Sep 08 | Testing; Cargo; functional features [PDF] | ||
| Thu, | Sep 10 | Dynamic traits; advanced Rust features [PDF] | ||
| Fri, | Sep 11 | Process registry lab 2 [PDF] | ||
| 4 | Mon, | Sep 14 |
HW 1 due |
|
| Tue, | Sep 15 | Performance, ILP, and memory [PDF] |
Release HW 2CSAPP3e, Ch 5 |
|
| Thu, | Sep 17 | Profiling and optimization [PDF] |
CSAPP3e, Ch 6 |
|
| Fri, | Sep 18 | Lab on profiling and memory tuning [PDF] | ||
| 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] | ||
| 6 | Mon, | Sep 28 |
HW 2 due |
|
| Tue, | Sep 29 | The Unix file interfaces [PDF] |
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 |