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 A4 out, A3 due
09-30 Smart Pointers I: Boxes, Recursive Data  
10-02 Smart Pointers II: Rc<T> and RefCell<T> A5 out, A4 due
10-07 Theory III: Blocks and Lifetimes  
10-09 Theory IV: Tuples and Paths A6 out, A5 due
10-14 NO CLASS Indigenous Peoples' Day
10-16 Concurrency I: Message Passing A6 due
10-21 Concurrency II: Asynchronous Programming  
10-23 Midterm Exam A7 out
10-28 Theory V: Conditionals  
10-30 Theory VI: Linear Typed Lambda Calculus FP outline out, A7 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: Smart Pointers

Meeting 10

Week 6: Theory

Meeting 11

Meeting 12

  • Title: Tuples and Paths

Week 7: Concurrency

Meeting 13

  • Title: Message Passing

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