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


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

  1. Debugging Memory Errors in Rust (Assignment 1, Bonus C). –Adam
  2. replace_with – this turned into part of the “unsafe” assignmnent.
  3. Doubly-linked lists and the Rust ownership model.
  4. What exactly are Fn, FnOnce, FnMut? Function types, Closure types, and function traits in Rust. –Zach
  5. Macros –Eric
  6. Anonymous lifetimes in Rust: Elision versus anonymity.
  7. Writing (and explaining) a safe Rust program which leaks memory –Max and Daniel
  8. Type System Abuse: Compile Time Arithmetic in Rust
  9. Sized: Sized and unsized types in Rust. (Also super cool) –Michael and Jackson
  10. Dereference coercions & partial moves –Ross and Luis
  11. Allocators. How can one go about allocating memory in (unsafe) Rust? –Julien and Dan
  12. crossbeam: aturon’s scoped thread library. * You know how threads require 'static inputs? What if they didn’t?
  13. Single Entry Multiple Exit/Static Single Assignment/Dominators take on Non-Lexical Lifetimes.
  14. Associated Type Constructors.
  15. Garbage collection traits.