Lecture 1 - Welcome: what this course is, and why Rust
What today will look like
- Screen-free space
Agenda
- What is this course, and why Rust?
- Why are you taking it?
- Who we are, and how the class runs
- Grading, projects, and exams
- Syllabus review activity
Everything in 210 is in the service of (at least one of):
- Code development skills - tools and best practices
- Programming in Rust
- Systems concepts (memory, performance, types)
- Data structures and algorithms (to be continued in DS 320)
Why coding development skills matter
- Often never taught explicitly, can be tricky to self-teach
- Vitally important in "the real world", when you'll need to:
- Get out of a "detached head" state without losing your head
- Collaborate with others on code across space and time
- Work on massive codebases and data warehouses
- The more AI takes over the coding part, the more the layer around it matters
Why Systems Programming Matters
Knowing enough to answer
- Why is my code slow?
- Why is my app crashing?
- Why did we get hacked?
Or better yet... not having to answer those questions as often!
Why data structures and algorithms?
Knowing enough to answer
- Why is my model producing weird results?
- Is there a smarter way to do this than brute-force?
- How is this ever going to scale?
And inventing whole net new ways of working with data.
Also -
- Technical interviews
- Intellectual joy
Why are we doing this in Rust?
- A second language
- A compiled language
- A systems programming language
- A modern language
- An increasingly popular language
But why are YOU taking it?
I just want to say - I hear you. Here's my job...
Logistics
What have you heard about the course?
New(ish) Course Changes
- Local dev and focus on development skills
- Mastery vs coverage
- In-class activities in every lecture
- Close alignment between lectures, projects, and exams
- Three exams and code reviews to measure learning w/o AI policing
- Data structures and algs integrated, not tacked on
Why the shift to "active learning"?
- A meta-analysis of 225 studies found students in traditional lecture courses are 1.5 times more likely to fail compared to active learning environments.
- Active learning produces consistent effect sizes of 0.47-0.49 standard deviations, or half a letter grade improvement.
- Active learning reduces achievement gaps between underrepresented and majority students by 33-45%.
Our Teaching Staff
- Instructor: Lauren Wheelock
- Course assistants: Kesar Narayan, Lingjie Su
- A discussion TAs: Matt Morris (A2), Gabriel Burr (A3, A4)
- B discussion TAs: Emir Tali (B2), Kristen Bestavros (B3), Nia Naresh Kumar (B4)
Two things to know about me...
- I am your advocate.
- It's us against the material
- No gotchas
- Lots of practice and review in class
- Please share feedback
- I want to know who you are (coffee chats!)
- If you are struggling, please reach out early so we can help
- I have high expectations for you.
- Grading on an absolute scale (I try not to curve)
- Less weight on autograders, more on exams and code review
- When you're here, you're HERE (no laptops, activities, cold calling, print-outs)
- We will practice being uncomfortable and not knowing
- You CAN learn this stuff!
What this means for grading
50% exams: 15% midterm 1, 15% midterm 2, 20% final
20% active engagement: 15% in-class activities, 5% pre-work and surveys
15% code reviews: 5% each, three projects
15% autograded work: 5% each, three projects
Another way to look at it
35% is about EFFORT: participation, pre-work, coding to pass tests
65% is about MASTERY: exams and code reviews
Half of every project is a conversation
The code review is worth as much as every automated test combined.
Working code you can't explain, in this era, isn't worth much.
We'll share more and help you prepare as we go.
Attendance runs in three periods
- Period 1: Lectures 1-12, Discussions 1-3
- Period 2: Lectures 13-27, Discussions 4 and 7
- Period 3: Lectures 29-40, Discussions 9 and 11 and the skew-week
You can miss up to two lectures or one discussion per period for "free" - no need to explain or email me.
We use a bunch of tools for this: activity sheets, Gradescope tasks, cold-calling, headcounts
Exam dates, so you can check for conflicts
| Midterm 1 | Friday, October 9 | in class, your own section |
| Midterm 2 | Friday, November 6 | in class, your own section |
| Final | Monday, December 14, 12:00-2:00pm | CGS 505, both sections together |
Please check your finals schedule this week
The full finals schedule for all courses is published.
Look for two things:
- A direct conflict, two exams at the same time
- Three exams in a 24-hour window
If you find #1 or if 210 is the middle exam for #2 tell me (or your other instructors) ASAP.
Lectures
Mondays, Wednesdays, Fridays here in 871 Commonwealth Ave, CGS 505
- A1: 11:15am - 12:05pm
- B1: 12:20pm - 1:10pm
Lecture content will be the same, but you must attend the lecture you're registered for.
Discussion Sections
Section A - Wednesdays, 871 Commonwealth Ave CGS 525
- A2: 1:25 - 2:15pm, Matt
- A3: 2:30 - 3:20pm, Gabriel
- A4: 3:35 - 4:25pm, Gabriel
Section B - Tuesdays
- B2: 11:00 - 11:50am, MCS B31, Emir
- B3: 12:30 - 1:20pm, MCS B31, Kristen
- B4: 2:00 - 2:50pm, CDS 164, Nia
Section B discussions only run 50 min, underfilling the official slot, EXCEPT on code review days
You will:
- Get technical support and project help
- Attend code reviews and exam corrections
- Review material and get extra practice for exams
Discussions count towards attendance/participation and you must attend your assigned one.
Syllabus Review Activity
Instructions
In groups of 2-3, spend time answering the worksheet questions on paper.
Please turn in one sheet per group that includes all your names
Wrap up
Any questions from the activity you want to ask before Friday?
By Friday
Please fill out the intro survey linked in the email if you haven't so I can get to know you.
Your first pre-lecture task is due at 11am Friday.
Bring your laptop and come prepared to work with the shell next class!