Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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

WeekDatesProject milestonesExamsParticipation
1Sep 2 - 4Getting set up. Nothing due
2Sep 7 - 11Install session in discussion
Project 1 released
3Sep 14 - 18Project 1 checkpoint 1
4Sep 21 - 25Project 1 checkpoint 2
5Sep 28 - Oct 2Project 1 dueEnd of period 1
Wed Sep 30
6Oct 5 - 9Project 1 code review
Project 2 released
Midterm 1, Fri Oct 9
7Oct 12 - 16Project 2 checkpoint 1
8Oct 19 - 23Project 2 checkpoint 2Midterm 1 corrections
9Oct 26 - 30Project 2 due
10Nov 2 - 6Project 2 code review
Project 3 released
Midterm 2, Fri Nov 6End of period 2
Wed Nov 4
11Nov 9 - 13Project 3 checkpoint 1
12Nov 16 - 20Project 3 checkpoint 2Midterm 2 corrections
13Nov 23 - 27Thanksgiving recess. Nothing due
14Nov 30 - Dec 4Project 3 due
15Dec 7 - 11Project 3 code reviewEnd of period 3
Wed Dec 9
FinalsDec 14Final 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.

DateLectureTopicDueDiscussion
Week 1No discussion
Wed Sep 21Welcome: what this course is, and why Rust
Fri Sep 42Hello shell: talking to your computer
Week 2Mon Sep 7: Labor Day, no classInstall session. Bring your laptop
Wed Sep 93Hello Rust: your first program, and why it is fast
Fri Sep 114Hello git: save points for your codeProject 1 released
Week 3Git basics
Mon Sep 145Start to finish: build it, break it, fix it
Wed Sep 166Variables: types and their properties
Fri Sep 187Functions: parameters, returns, and expressionsProject 1 checkpoint 1
Week 4Leetcode practice
Mon Sep 218Control flow: branching and looping
Wed Sep 239Complexity: how to compare two programs
Fri Sep 2510Sorting: complexity and recursionProject 1 checkpoint 2
Week 5Project 1 work session
Mon Sep 2811Structs: bundling data with methods
Wed Sep 3012Enums: variants and matchEnd of participation period 1
Fri Oct 213Errors: Result, Option, and reading a fileProject 1 due
Week 6Project 1 code review
Mon Oct 514Read and review code: a real repo, and your own
Wed Oct 715Review: everything before Midterm 1
Fri Oct 9MIDTERM 1Project 2 released
Week 7Mon Oct 12: Indigenous Peoples Day, no classA sections only: leetcode / extra practice
Tue Oct 1317The stack: frames, and why it is fast
Wed Oct 1418The heap: allocation, and why it is slower
Fri Oct 1619Pointers: references, dereferencing, and unsafeProject 2 checkpoint 1
Week 8Midterm 1 corrections
Mon Oct 1920Pointer danger: five ways C loses your memory
Wed Oct 2121Ownership: the three rules, moves, and copies
Fri Oct 2322Owning collections: Vec, String, and capacityProject 2 checkpoint 2
Week 9TBD
Mon Oct 2623Strings: why text is harder than it looks
Wed Oct 2824Borrowing: using data without owning it
Fri Oct 3025Borrow checker: the rules and the errorsProject 2 due
Week 10Project 2 code review
Mon Nov 226Tests: writing them, and what to test
Wed Nov 427Review: everything before Midterm 2End of participation period 2
Fri Nov 6MIDTERM 2Project 3 released
Week 11TBD
Mon Nov 929Traits: shared behavior across types
Wed Nov 1130Generics: one function, many types
Fri Nov 1331Collections: Vec, HashMap, and what they costProject 3 checkpoint 1
Week 12Midterm 2 corrections
Mon Nov 1632Heaps: building a collection from a Vec
Wed Nov 1833Linear structures: stacks, queues, ring buffers
Fri Nov 2034Box: recursive types, lists, and treesProject 3 checkpoint 2
Week 13Wed Nov 25 - Fri Nov 27: Thanksgiving recessB sections only: leetcode / extra practice
Mon Nov 2335Ship your code: modules, crates, and Python
Week 14TBD
Mon Nov 3036Iterators: closures, laziness, and files
Wed Dec 237Threads: doing two things at once
Fri Dec 438Sharing data: Arc, Mutex, and data racesProject 3 due
Week 15Project 3 code review
Mon Dec 739Review: rapid fire across the term
Wed Dec 940Review: long form, and your questionsEnd of participation period 3
Mon Dec 14FINAL 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.