Schedule
Everything in this table that occurs in the future is subject to change. Please check the pre-lecture tasks before each class. Project and exam dates should be stable; we will announce clearly if any need to move.
At a glance
| Week | Dates | Project milestones | Exams | Participation |
|---|---|---|---|---|
| 1 | Sep 2 - 4 | Getting set up. Nothing due | ||
| 2 | Sep 7 - 11 | Install session in discussion Project 1 released | ||
| 3 | Sep 14 - 18 | Project 1 checkpoint 1 | ||
| 4 | Sep 21 - 25 | Project 1 checkpoint 2 | ||
| 5 | Sep 28 - Oct 2 | Project 1 due | End of period 1 Wed Sep 30 | |
| 6 | Oct 5 - 9 | Project 1 code review Project 2 released | Midterm 1, Fri Oct 9 | |
| 7 | Oct 12 - 16 | Project 2 checkpoint 1 | ||
| 8 | Oct 19 - 23 | Project 2 checkpoint 2 | Midterm 1 corrections | |
| 9 | Oct 26 - 30 | Project 2 due | ||
| 10 | Nov 2 - 6 | Project 2 code review Project 3 released | Midterm 2, Fri Nov 6 | End of period 2 Wed Nov 4 |
| 11 | Nov 9 - 13 | Project 3 checkpoint 1 | ||
| 12 | Nov 16 - 20 | Project 3 checkpoint 2 | Midterm 2 corrections | |
| 13 | Nov 23 - 27 | Thanksgiving recess. Nothing due | ||
| 14 | Nov 30 - Dec 4 | Project 3 due | ||
| 15 | Dec 7 - 11 | Project 3 code review | End of period 3 Wed Dec 9 | |
| Finals | Dec 14 | Final exam, Mon Dec 14, 12-2pm, CGS 505 |
Participation periods split the attendance portion of your grade into three equal parts, 5% each. Each period holds 18 points of sessions (a lecture is 1 point, a discussion is 2) and you need 16 for full credit, so you have room to miss two lectures or one discussion in each. Points do not carry over between periods, so the dates above are worth knowing. Full details are in the syllabus.
Week by week
This table is wide, so you may need to scroll right to see all columns.
| Date | Lecture | Topic | Due | Discussion |
|---|---|---|---|---|
| Week 1 | No discussion | |||
| Wed Sep 2 | 1 | Welcome: what this course is, and why Rust | ||
| Fri Sep 4 | 2 | Hello shell: talking to your computer | ||
| Week 2 | Mon Sep 7: Labor Day, no class | Install session. Bring your laptop | ||
| Wed Sep 9 | 3 | Hello Rust: your first program, and why it is fast | ||
| Fri Sep 11 | 4 | Hello git: save points for your code | Project 1 released | |
| Week 3 | Git basics | |||
| Mon Sep 14 | 5 | Start to finish: build it, break it, fix it | ||
| Wed Sep 16 | 6 | Variables: types and their properties | ||
| Fri Sep 18 | 7 | Functions: parameters, returns, and expressions | Project 1 checkpoint 1 | |
| Week 4 | Leetcode practice | |||
| Mon Sep 21 | 8 | Control flow: branching and looping | ||
| Wed Sep 23 | 9 | Complexity: how to compare two programs | ||
| Fri Sep 25 | 10 | Sorting: complexity and recursion | Project 1 checkpoint 2 | |
| Week 5 | Project 1 work session | |||
| Mon Sep 28 | 11 | Structs: bundling data with methods | ||
| Wed Sep 30 | 12 | Enums: variants and match | End of participation period 1 | |
| Fri Oct 2 | 13 | Errors: Result, Option, and reading a file | Project 1 due | |
| Week 6 | Project 1 code review | |||
| Mon Oct 5 | 14 | Read and review code: a real repo, and your own | ||
| Wed Oct 7 | 15 | Review: everything before Midterm 1 | ||
| Fri Oct 9 | MIDTERM 1 | Project 2 released | ||
| Week 7 | Mon Oct 12: Indigenous Peoples Day, no class | A sections only: leetcode / extra practice | ||
| Tue Oct 13 | 17 | The stack: frames, and why it is fast | ||
| Wed Oct 14 | 18 | The heap: allocation, and why it is slower | ||
| Fri Oct 16 | 19 | Pointers: references, dereferencing, and unsafe | Project 2 checkpoint 1 | |
| Week 8 | Midterm 1 corrections | |||
| Mon Oct 19 | 20 | Pointer danger: five ways C loses your memory | ||
| Wed Oct 21 | 21 | Ownership: the three rules, moves, and copies | ||
| Fri Oct 23 | 22 | Owning collections: Vec, String, and capacity | Project 2 checkpoint 2 | |
| Week 9 | TBD | |||
| Mon Oct 26 | 23 | Strings: why text is harder than it looks | ||
| Wed Oct 28 | 24 | Borrowing: using data without owning it | ||
| Fri Oct 30 | 25 | Borrow checker: the rules and the errors | Project 2 due | |
| Week 10 | Project 2 code review | |||
| Mon Nov 2 | 26 | Tests: writing them, and what to test | ||
| Wed Nov 4 | 27 | Review: everything before Midterm 2 | End of participation period 2 | |
| Fri Nov 6 | MIDTERM 2 | Project 3 released | ||
| Week 11 | TBD | |||
| Mon Nov 9 | 29 | Traits: shared behavior across types | ||
| Wed Nov 11 | 30 | Generics: one function, many types | ||
| Fri Nov 13 | 31 | Collections: Vec, HashMap, and what they cost | Project 3 checkpoint 1 | |
| Week 12 | Midterm 2 corrections | |||
| Mon Nov 16 | 32 | Heaps: building a collection from a Vec | ||
| Wed Nov 18 | 33 | Linear structures: stacks, queues, ring buffers | ||
| Fri Nov 20 | 34 | Box: recursive types, lists, and trees | Project 3 checkpoint 2 | |
| Week 13 | Wed Nov 25 - Fri Nov 27: Thanksgiving recess | B sections only: leetcode / extra practice | ||
| Mon Nov 23 | 35 | Ship your code: modules, crates, and Python | ||
| Week 14 | TBD | |||
| Mon Nov 30 | 36 | Iterators: closures, laziness, and files | ||
| Wed Dec 2 | 37 | Threads: doing two things at once | ||
| Fri Dec 4 | 38 | Sharing data: Arc, Mutex, and data races | Project 3 due | |
| Week 15 | Project 3 code review | |||
| Mon Dec 7 | 39 | Review: rapid fire across the term | ||
| Wed Dec 9 | 40 | Review: long form, and your questions | End of participation period 3 | |
| Mon Dec 14 | FINAL EXAM, 12:00-2:00pm, CGS 505, both sections together |
Notes
- Tuesday Oct 13 is a Monday schedule. Lecture meets as usual but B discussions don't meet that week.
- Wednesday Nov 11 (Veterans Day) is a regular class day.
- Lecture A discussion sections do not meet during Thanksgiving week.
- The two weeks where only one set of discussion sections meets (Week of Oct 12 and Thanksgiving week) we will run standalone practice sessions that are not tied to that week's lecture material.
- Nothing is due over Thanksgiving break.
- Checkpoints are a week apart, two per project, for all three projects. Project 3 has Thanksgiving between its last checkpoint and the deadline.
- Weeks 1 and 2 have nothing due. They are for getting your tools installed and working, and we will be monitoring your progress via pre-lecture tasks and discussion. By the time Project 1 starts you will have everything you need to work on it.