Schedule, Slides, & Assignments
Logistics
The class is embedded within CS 189: Programming Practicum, but will only occur duing the second half of the Fall semester. Interested students should attend the first CS 189 session for a brief class pitch, but will otherwise have no obligations until after Fall Break.
One class begins we will meet during Programming Practicum’s typical timeslot: 4:15 - 5:30, Tuesdays, in Shanahan 3460. There will also be frequent office/lab hours:
- 7:00 - 8:00 pm Monday, Shanahan B470
- 3:00 - 4:00 pm Sunday, by the Cafe
- 11:00 - 12:00 am Friday, Shanahan B454
Schedule
Week | Date | Topic | Slides | Assignment | Due Date |
---|---|---|---|---|---|
09/07 | Memory Management and Rust | slides | – | – | |
0 | 10/17 | Getting Acquianted With Rust | slides | Warm Up | 10/25 |
1 | 10/25 | The Ownership System | slides | A Linked List | 11/1 |
2 | 11/1 | Ownership: Ramifications | slides | Expressions | 11/8 |
3 | 11/8 | Lifetimes | slides | A Baby Database | 11/15 |
4 | 11/15 | Unsafe | slides | The Wild West | 11/22 |
5 | 11/22 | Send, Sync, & Threads | slides | Git-rs(Optional) | 11/29 |
6 | 11/29 | NLL & Project Kickoff | slides | Graphs! | ?? |
7 | 12/6 | Presentations | Continue Graphs! | 12/15 |
Presentation Schedule
It can be found here
Potential Presentation Topics
- Debugging Memory Errors in Rust (Assignment 1, Bonus C). –Adam
replace_with
– this turned into part of the “unsafe” assignmnent.- Doubly-linked lists and the Rust ownership model.
- What exactly are
Fn
,FnOnce
,FnMut
? Function types, Closure types, and function traits in Rust. –Zach - Macros –Eric
- Anonymous lifetimes in Rust: Elision versus anonymity.
- Writing (and explaining) a safe Rust program which leaks memory –Max and Daniel
- Type System Abuse: Compile Time Arithmetic in Rust
Sized
: Sized and unsized types in Rust. (Also super cool) –Michael and Jackson- Dereference coercions & partial moves –Ross and Luis
- Allocators. How can one go about allocating memory in (unsafe) Rust? –Julien and Dan
crossbeam
: aturon’s scoped thread library. * You know how threads require'static
inputs? What if they didn’t?- Single Entry Multiple Exit/Static Single Assignment/Dominators take on Non-Lexical Lifetimes.
- Associated Type Constructors.
- Garbage collection traits.