CAS CS 392

Table of Contents

Rust, in Practice and in Theory
Boston University
Fall 2025

This is a course about the programming language Rust, and, for better or for worse, this can mean a lot of things. Part of what making Rust fascinating (and what makes this course a pain to teach) is that it has a lot to offer. You might be coming to this course with an interest in systems programming (an unreasonbly broad term), or PL design (ditto). Regardless, our goal is not just to program in Rust, but also to understand the theoretical underpinnings of the language. So in reality you'll probably need to have at least a passing interest in both perspectives.

We'll spend the first half of this course learning how to program in Rust, and the second half working on a self-defined project in Rust or an adjacent topics.

Links

Calendar

Date Topic Notes
09-02 Basics I: Introduction, Installation, Cargo  
09-04 Basics II: Common Programming Concepts A1 out
09-09 Data I: Stack, Heap, References  
09-11 Data II: Struct, Enums, Collections A2 out, A1 due
09-16 Theory I: Straight Line Programs (salt0)  
09-18 Theory II: Variables and References (salt1) A3 out, A2 due
09-23 Functions I: Generics and Traits  
09-25 Functions II: Closures and Iterators  
09-30 Basics III: Boxes, Recursive Data  
10-02 Basics IV: Lifetimes A4 out, A3 due
10-07 Theory III: Mutable References (salt2)  
10-09 Theory IV: Mutable References (salt2) A5 out, A4 due
10-14 NO CLASS Indigenous Peoples' Day
10-16 Smart Pointers: Rc<T> and RefCell<T> A5 due
10-21 TBD  
10-23 Midterm Exam A6 out
10-28 Theory V: Conditionals  
10-30 Theory VI: Linear Typed Lambda Calculus FP outline out, A6 due
11-04 Advanced I: TBD  
11-06 Project Meetings FP outline due
11-11 Advanced II: TBD  
11-13 Project Meetings FP check-in 1
11-18 Advanced III: TBD  
11-20 Project Meetings FP check-in 2
11-25 Advanced IV: TBD  
11-27 NO CLASS Thanksgiving
12-02 Advance V: TBD  
12-04 Final Project Presentations  
12-09 Final Project Presentations FP due

Week 1: Basics ✓

Meeting 1

Meeting 2

Week 2: Data ✓

Meeting 3

Meeting 4

Week 3: Theory ✓

Meeting 5

  • Title: salt0: Straight Line Programs
  • Material:

Meeting 6

  • Title: salt1: Mutable Variables, Immutable References
  • Material:
  • Assignment:

Week 4: Functions ✓

Meeting 7

Meeting 8

Week 5: Basics ✓

Meeting 10

Week 6: Theory ✓

Meeting 11

  • Title: Mutable References

Meeting 12

Week 7: Smart Pointers

Meeting 13

Week 8: Midterm

Meeting 14

  • Title: Asynchronous Programming

Meeting 15

  • Title: Midterm Examination

Week 9: Theory

Meeting 16

  • Title: Conditionals

Meeting 17

  • Title: Linear Typed Lambda Calculus

Week 10: TBD

Meeting 18

  • Title: TBD

Meeting 19

  • Title: Project Meetings

Week 11: TBD

Meeting 20

  • Title: TBD

Meeting 21

  • Title: Project Meetings

Week 12: TBD

Meeting 22

  • Title: TBD

Meeting 23

  • Title: Project Meetings

Week 13: TBD

Meeting 24

  • Title: TBD

Week 14: Final Project

Meeting 25

  • Title: TBD

Meeting 26

  • Title: Final Project Presentations

Week 15: Final Project

Meeting 27

  • Title: Final Project Presentations