Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
A Tale of Teaching Rust
Search
Andrew Lilley Brinker
April 10, 2025
Programming
70
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A Tale of Teaching Rust
Andrew Lilley Brinker
April 10, 2025
More Decks by Andrew Lilley Brinker
See All by Andrew Lilley Brinker
Memory Safety and the Future of Vulnerabilities
alilleybrinker
0
86
Hello and Welcome: Documentation in the Rust Ecosystem
alilleybrinker
0
50
Efficient Nimber Calculation in Dots and Boxes
alilleybrinker
0
140
Other Decks in Programming
See All in Programming
AmebaブログはKMPから卒業します
kmars0605
0
210
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
1
290
TechTown - Creating Composable Callables in Contemporary C++
rollbear
0
130
個人開発者よ、Honoを使え(おじさんver)
tanahiro2010
2
270
[ハンズオン]AIへの指示だけで「五目並べ」を作ってみよう
satoshi256kbyte
1
380
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
800
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
Railsバージョンを4倍にした話
optim
0
460
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
170
RAG の “R” を Swift で覗いてみる 〜「意味から探す」検索の仕組み〜
nao_randd
0
170
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
560
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
Technical Leadership for Architectural Decision Making
baasie
3
600
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
Done Done
chrislema
187
17k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
The agentic SEO stack - context over prompts
schlessera
0
970
Designing Experiences People Love
moore
143
24k
Transcript
A Tale of Teaching Rust Andrew Brinker
Hi! I’m Andrew!
I’m here to tell you a story
Act 1: The Idea
In early 2017, I was asked to teach a class
on programming languages
I replaced C with Rust, because it’s 2017
10 weeks long. Enough time for Rust, right?
Normally: Lisp, C, Java, Prolog Me: Haskell, Rust, Java, Prolog
3 weeks for Rust. No time to teach it all!
Act 2: The Pitch
What is Rust’s elevator pitch?
Zero-cost abstractions Move semantics Guaranteed memory safety (without GC) Threads
without data races Trait-based generics Type inference Minimal runtime Optional unsafety And more!
Zero-cost abstractions Move semantics Guaranteed memory safety (without GC) Threads
without data races Trait-based generics Type inference Minimal runtime Optional unsafety And more!
Week 1: Safety without GC = Ownership + borrows
+ lifetimes
Week 2: Threads without data races = Week 1
+ Send + Sync
Week 3: Explain why it matters
Act 3: The Plan
26 upper-division undergrads Wide variety of backgrounds None knew Rust
going in Some heard Rust was hard
What’s the approach?
Be very concrete: Lots of examples Live coding
Potential challenge: this requires the teacher to know Rust well
Suggestions: 1. Do examples beforehand 2. Treat rustc as a
teacher 3. Don’t fake it
Know the ecosystem of tools
Rust Playground The (New) Rust Book Rustlings ❤ Godbolt
Give room & tools to explore
Act 4: The Class
Lab 1: Safety without GC
All data has an owner Ownership can be moved Old
owner can’t use data Simple types can be copied
Students will realize this is painful to work around
Then introduce borrows
Aliasing XOR Mutability
Emphasize the rules Give lots of examples Show some complex
cases
Students will ask how it works
Then introduce lifetimes
Be very explicit: lifetimes are scopes, and all borrows have
one
The compiler tracks them whether they’re explicit or not
You can’t assign a lifetime
Sometimes you need code that’s generic over lifetimes
That’s when you make lifetimes explicit
If you have time (I didn’t), introduce Cell & RefCell
Assignment: do the move semantics Rustlings exercises
Lab 2: Threads w/out data races
Start with de fi nitions
Concurrency: Multiple threads of control Parallelism: Multiple threads of control,
running at once Deadlock: All threads are stopped (dead) Livelock: Threads are live, but not progressing Data race: Non-syncing mutable data across threads Race condition: Result depends on execution order And so on…
Same as before, be concrete
Talk about Send and Sync
Explain why some types implement them, and some don’t
Don’t explain unsafe traits (yet)
Introduce the key stdlib types: Arc, Rc, Mutex, RwLock
Explain why Arc is Sync but Rc isn’t
Make clear that Rust stops data races, not race conditions
Easy parallelism is the best! Show it off! Rayon, Hyper
w/ Tokio, Crossbeam
Assignment: solve the Dining Philosophers problem
Lab 3: Safety & Security
Bold move: Introduce unsafe
Explain Safe Rust & Unsafe Rust
Unsafe functions + unsafe traits: Have requirements the compiler can’t
check The programmer has to check instead
Unsafe blocks + unsafe trait impls: Tell the compiler “I’ve
checked these!” The compiler assumes you did so correctly
Safe Rust must trust Unsafe Rust
Unsafe Rust can’t trust Safe Rust
Safety lies at the module boundary
Safety has an impact on security
Embedded environments often can’t tolerate GC
Lots of old code in C and C++
Lots of common vulns still being written
Assignment: fi nd a CVE that could have been stopped
by Rust
Act 5: The Results
Ended the series with a post-Rust survey
Here’s what my students said:
Students thought the compiler was too picky
And the syntax was weird
A couple said they only liked Rust in comparison to
Haskell, which was too weird
Don’t despair!
Most students wanted to try Rust some more!
Students felt Rust was really powerful
Students felt more con fi dent than they did with
C++
And there are more reasons for optimism
The ergonomics initiative will help new Rustaceans!
Students did way better with ownership, borrowing, and lifetimes than
expected!
Conclusion
Can Rust be taught in 3 weeks? Not quite, but
you can get students excited for more!
Can Rust be taught to newer programmers? You bet!
Can Rust overcome the bad press on its learning curve?
I sure think so!
Thank you very much!
Twitter: @AndrewBrinker Github: @AndrewBrinker Class site: proglangs.com My site: andrewbrinker.com