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.
Course Tools
Rust Quick Links:
Lecture is held on Tuesdays from 3:30-5:00 PM in Towne 337.
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/27 | Basics | "Why Rust?" and Rust Basics | 3 | PLQ 1 |
9/3 | Basics | Ownership | 4 | PLQ 2 |
9/10 | Basics | Structs, Enums, Errors | 5,6 | PLQ 3 |
9/17 | Basics | Generics and Traits | 10.1, 10.2 | PLQ 4 |
9/24 | Basics | Modules Collections, Iterators [code] | 8 | PLQ 5 |
10/1 | Advanced | Lifetimes, Closures [code] | 10.3, 13 | PLQ 6 |
10/8 | Advanced | Smart Pointers, Trait Objects | 15 | PLQ 7 |
10/15 | Parallel | Shared Memory [code] | 16 | PLQ 8 |
10/22 | Parallel | Message Passing [code] | 16 | PLQ 9 |
10/29 | Unsafe | Unsafe | 19.1 | PLQ 10 |
11/5 | No class (election day) | |||
11/12 | Parallel | Async Rust | None | |
11/19 | Advanced | Common Crates and Final Project Help | None | |
11/26 | No Class (Th. Schedule) | |||
12/3 | Final Project Presentations | |||
12/10 | Reading Period | |||
12/17 | 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/6 |
Project 1: Theseus | 9/22 |
Project 2: Links | 10/8 |
Project 3: Ngram | 11/8 |
Final Project Proposal | 11/11 |
Final Project | 12/3 |
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
TA
xanrob