CIS 1905: Rust Programming

Course Details

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.

Resources

Syllabus

Course Tools

Rust Quick Links:

Lectures

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.

DateSectionTopicBook Ch.PLQ
8/27Basics"Why Rust?" and Rust Basics3PLQ 1
9/3BasicsOwnership4PLQ 2
9/10BasicsStructs, Enums, Errors5,6PLQ 3
9/17BasicsGenerics and Traits10.1, 10.2PLQ 4
9/24BasicsModules Collections, Iterators [code]8PLQ 5
10/1AdvancedLifetimes, Closures [code]10.3, 13PLQ 6
10/8AdvancedSmart Pointers, Trait Objects15PLQ 7
10/15ParallelShared Memory [code]16PLQ 8
10/22ParallelMessage Passing [code]16PLQ 9
10/29UnsafeUnsafe19.1PLQ 10
11/5No class (election day)
11/12ParallelAsync RustNone
11/19AdvancedGuest Lecture: Joe Devietti on interfacing Rust with other languages [code1, code2]None
11/26No Class (Thursday Schedule)
12/3Final Project Presentations
12/10Reading Period
12/17Final Exams

Assignments

Assignments are due 10pm Eastern Time on Fridays. See the syllabus for information about late submissions.

TitleDue Date
Project 0: Warmup9/6
Project 1: Theseus9/22
Project 2: Links10/8
Project 3: Ngram11/8
Final Project Proposal11/10
Final Project12/3

Final Project

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.

Office Hours

Make sure to check EdStem for office hours announcements (including reschedules and cancellations).

Course Staff

Including Penn emails and ask me anything about...

Paul Biberstein

Paul Biberstein

Instructor

paulbib
Running and baking
Alexander Robertson

Alexander Robertson

TA

xanrob
Bitcoin and guitar