Ferris the Crab 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

DateTopicRustbook Chapters
1/23/2024Introductions and Rust Basics1-3, 5-6, 8, 18
1/30/2024Ownership, Result/Options, and Error Handling4, 9
1/31/2024Add/Drop Deadline
2/4/2024HW1: CLI App Due
2/6/2024Cargo, Modularization, and Testing7, 11
2/13/2024Generics, Traits10.1-10.2
2/20/2024Lifetimes10.3
2/22/2024HW2: Markov Model Due
2/27/2024Drop Deadline
2/27/2024Smart Pointers15
3/2-3/10/2024Spring break
3/12/2024Concurrency16
3/19/2024Concurrency(cont.)
3/25/2024Final Project Proposals Due
3/26/2024Futureslibrary-specific docs
4/2/2024HW3: Tetris Tournament Check-in
4/2/2024Macros(Supplemental) 20
4/9/2024HW3: Tetris Tournament Check-in
4/9/2024Practical Rust (cont.)
4/15/2024HW3: Tetris Tournament Due19.5
4/16/2024Tetris
4/23/2024Advanced Topics + Tetris Tournament
4/30/2024Final 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

NameEmailOffice Hours
Joy Liu
Joy Liu
joyliu@seasOH (TBD)cargo fast 🚗

Teaching Assistants

NameEmailOffice Hours
Thomas Shaw
Thomas Shaw
tlshaw@sasOH (TBD)rust vs javascript (next world war)
Thomas Urey
Thomas Urey
turey@seasOH (TBD)sorry guys i'm a little rusty