Welcome to cis1905: Rust! This course is an introduction to the ideas underlying Rust, a new(ish) systems programming language that is gaining ever-increasing adoption in fields ranging from embedded hardware and server applications to data science and computer graphics. Beyond just the syntax and tooling, we'll dive deep into the ideas that make Rust unique, such as ownership, memory-safety, and data-race-free parallel programming. Students will come away not just being able to write Rust code, but with an understanding of the ideas underlying Rust that can be applied when programming in other languages. Additionally, we'll leave some free time at the end of the semester to cover extra topics depending on class interest.
Registration is by admission from the waitlist only. We anticipate (nearly) everyone who wants to take the course getting off the waitlist. If you're serious about taking the course, or are at least interested, make sure to come to the first lecture on Tuesday the 26th.
Course Tools
Rust Quick Links:
Lecture is held on Tuesdays from 3:30-5:00 PM in AGH 200.
Post-lecture quizzes (PLQs) are due by 11:59 PM on the Wednesday following the corresponding lecture. 3/5 credit is given for completion, and 2/5 credit for correctness.
| Date | Section | Topic | Book Ch. | PLQ |
|---|---|---|---|---|
| 8/26 | Basics | "Why Rust?" and Rust Basics | 3 | None |
| 9/2 | Basics | Ownership | 4 | PLQ 2 |
| 9/9 | Basics | Structs, Enums, Errors | 5,6 | PLQ 3 |
| 9/16 | Basics | Generics and Traits | 10.1, 10.2 | PLQ 4 |
| 9/23 | Basics | Modules Collections, Iterators | 8 | PLQ 5 |
| 9/30 | Advanced | Lifetimes, Closures | 10.3, 13 | PLQ 6 |
| 10/7 | Advanced | Smart Pointers, Trait Objects | 15 | PLQ 7 |
| 10/14 | Parallel | Shared Memory | 16 | PLQ 8 |
| 10/21 | Parallel | Message Passing | 16 | PLQ 9 |
| 10/28 | Unsafe | Unsafe | 19.1 | PLQ 10 |
| 11/4 | Parallel | Async Rust | None | None |
| 11/11 | Flex | |||
| 11/18 | Advanced | Guest Lecture | None | |
| 11/25 | No Class (Thursday Schedule) | |||
| 12/2 | Final Project Presentations | |||
| 12/9 | Reading Period | |||
| 12/16 | Final Exams |
Assignments are due 10pm Eastern Time on Fridays. See the syllabus for information about late submissions.
| Title | Due Date |
|---|---|
| Project 0: Warmup | 9/5 |
| Project 1: Theseus | 9/19 |
| Project 2: Links | 10/6 |
| Project 3: Ngram | 11/3 |
| Final Project Proposal | 11/10 |
| Final Project | 12/2 |
The final project is a chance for you to explore a topic of your choosing over a longer time period. Working in groups is encouraged, and every project will be presented to the class during the last lecture. Look out for more information as the semester progresses.
Make sure to check EdStem for office hours announcements (including reschedules and cancellations).
Including Penn emails and ask me anything about...

Paul Biberstein
Instructor
paulbib
Alexander Robertson
Instructor
xanrob