Home
Welcome to CIS 1905: Rust at the University of Pennsylvania!
Course Description
Rust is a new, practical, community-developed systems programming language that "runs blazingly fast, prevents almost all crashes, and eliminates data races" (rust-lang.org). Rust derives from a rich history of languages to create a multi-paradigm (imperative/functional), low-level language that focuses on high-performance, zero-cost safety guarantee in concurrent programs. It has begun to gain traction in industry, showing a recognized need for a new low-level systems language. In this course, we will cover what makes Rust so unique and apply it to practical systems programming problems. Expected topics covered include: the Rust type system (structs, enums, traits, generics), memory management (safety, ownership, borrowing, and lifetimes), functional programming (closures, higher order functions), parallelism and concurrency, and advanced topics (macros, constant functions, async/await, Rust for the web, future of Rust, etc.)
Enrolling in CIS 1905
Any student that wants to enroll in CIS 1905 must have already completed CIS 1200, with strongly recommended experience in CIS 2400 or equivalent courswork.
This course will use the CIS Waitlist with a few screening questions to determine eligibility. In order to be considered for CIS 1905, you will need to request permission for the recitation section (201) in Path@Penn (screen recording on how to do that), and then you will be added to the waitlist for the course.
Schedule
Date | Topic | Rustbook Chapters |
---|---|---|
1/23/2024 | Introductions and Rust Basics | 1-3, 5-6, 8, 18 |
1/30/2024 | Ownership, Result/Options, and Error Handling | 4, 9 |
1/31/2024 | Add/Drop Deadline | |
2/4/2024 | HW1: CLI App Due | |
2/6/2024 | Cargo, Modularization, and Testing | 7, 11 |
2/13/2024 | Generics, Traits | 10.1-10.2 |
2/20/2024 | Lifetimes | 10.3 |
2/22/2024 | HW2: Markov Model Due | |
2/27/2024 | Drop Deadline | |
2/27/2024 | Smart Pointers | 15 |
3/2-3/10/2024 | Spring break | |
3/12/2024 | Concurrency | 16 |
3/19/2024 | Concurrency(cont.) | |
3/25/2024 | Final Project Proposals Due | |
3/26/2024 | Futures | library-specific docs |
4/2/2024 | HW3: Tetris Tournament Check-in | |
4/2/2024 | Macros | (Supplemental) 20 |
4/9/2024 | HW3: Tetris Tournament Check-in | |
4/9/2024 | Practical Rust (cont.) | |
4/15/2024 | HW3: Tetris Tournament Due | 19.5 |
4/16/2024 | Tetris | |
4/23/2024 | Advanced Topics + Tetris Tournament | |
4/30/2024 | Final Project Presentations |
Note: course logistics and deadlines are subject to change.
Syllabus
For a list of assignments and when they are due check the course schedule.
Meetings
Course meetings will be every Tuesday from 5:15-6:45pm ET. Office hours will be held weekly unless announced otherwise. Details can be found in our logistics Ed post.
Course Materials
Rust’s official book, The Rust Programming Language (RPL), is the reference we will use for this course. It is free, available online, and a great way to learn the programming language!
In addition, this course supplements the theoretical knowledge with more practical Rust, such as its common libraries and applications.
Grading
- 50% Homework
- 40% Final Project
- 10% Participation
Homework assignments will consist of 4 medium-size projects that lead students through the implementation and application of concepts and tools discussed in lectures, and will be graded on correctness and completeness. An open-ended final project will give students the chance to showcase an interesting project using tools discussed in the course.
Homework assignments will be due Monday night at 11:59pm ET. Homework assignments can be submitted late, up to the start of the next class, for a 10% penalty per day late.
Extra Credit: The homework assignments will have optional extra credit. Some are designed to introduce you to common Rust libraries, design patterns, and application. These will be worth up to 10% of your final grade.
Collaboration Policy: All homeworks are meant to be completed individually, with the exception of HW3: Tetris Tournament and the Final Project, where you can work in groups of 1-2.
Academic Honesty
This course will abide by the University’s Code of Academic Integrity.
For this course, you may not view, share or edit another student’s homework assignment. However, you are allowed (and strongly encouraged) to use the internet when completing homework assignments. Being able to read Open Source documentation and Stack Overflow posts is a crucial skill in being a developer. That being said, you are not allowed to make any posts online asking for help. Reading existing posts is allowed, but any questions should be asked during Office Hours or on Ed.
Staff
We're super excited to be teaching this course! If you have any questions, please feel free to reach out to us.
Instructor
Name | Office Hours | ||
---|---|---|---|
Joy Liu | joyliu@seas | OH (TBD) | cargo fast 🚗 |
Teaching Assistants
Name | Office Hours | ||
---|---|---|---|
Thomas Shaw | tlshaw@sas | OH (TBD) | rust vs javascript (next world war) |
Thomas Urey | turey@seas | OH (TBD) | sorry guys i'm a little rusty |