CS 10: The Beauty and Joy of Computing
UC Berkeley, Spring 2026
A gentle but thorough introduction to computer science.
Announcements: Friday, April 3
- Midterm 3 will be released today at 4 PM and will stay open until Sunday, 4/5, at 11:59 PM.
- Project 4: Peer Feedback + Comments are due 4/10.
Instructor: Teaching Professor Dan Garcia
Instructor’s OH: Monday @ 3–4 PM in 777 Soda Hall
Lectures: Monday, Wednesday, Friday @ 10–11 AM in 60 Evans Hall
Labs: Tuesday, Thursday @ 3–5 PM in 430 Soda Hall
Discussion: Thursday @ 11 AM–12 PM in 430 Soda Hall
OH Queue: oh.cs10.org
CS10 Calendar
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 1 | Mon 1/19 | HOLIDAY | |||
| Tue 1/20 | |||||
| Wed 1/21 |
Lec 1. Welcome + Abstraction (Recording) (Slides 1) (Lecture Quiz 1) |
||||
| Thu 1/22 | Lab 1: Welcome to Snap! |
Disc 1. Welcome to CS 10! |
|||
| Fri 1/23 |
Talk 1. Fun "Ask me anything", abstraction, using Snap! (but NOT making blocks) (Recording) |
||||
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 2 | Mon 1/26 |
Lec 2. Functions (Recording) (Slides 2) (Lecture Quiz 2) |
Proj 1: Wordleâ„¢ Lite Released |
||
| Tue 1/27 | Lab 2. Build Your Own Blocks |
||||
| Wed 1/28 |
Lec 3. Abstraction II (Recording) (Slides 3) (Lecture Quiz 3) |
||||
| Thu 1/29 | Lab 3. Conditionals, Reporters, & Testing |
Disc 2. Number Rep & Control Structures | |||
| Fri 1/30 |
Talk 2. Conditionals, Truth Tables, Predicates, Binary/Dec/Hex conversion (Recording) |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 3 | Mon 2/2 |
Lec 4. Iteration NEW (Recording) (Slides 4) (Lecture Quiz 4) |
|||
| Tue 2/3 | Lab 4. Iteration NEW |
||||
| Wed 2/4 |
Lec 5. Variables, Lists, Scope, HOFs (Recording) (Slides 5) (Lecture Quiz 5) |
Proj 1 DUE | |||
| Thu 2/5 | Lab 5. Lists & HOFs |
Disc 3. Domain/Range, Scoping, Iteration, Lists | |||
| Fri 2/6 |
Talk 3. HOFs (Recording) |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 4 | Mon 2/9 |
Lec 6. Algorithms (Recording) (Slides 6) (Lecture Quiz 6) |
Proj 2 Released | ||
| Tue 2/10 | Lab 6. Algorithms |
||||
| Wed 2/11 |
Lec 7. Algorithmic Complexity (Recording) (Slides 7) (Lecture Quiz 7) |
||||
| Thu 2/12 | Lab 7. Algorithmic Complexity |
Disc 4. Quest Practice | |||
| Fri 2/13 |
Talk 4. Quest 1 Preview (Recording) |
QUEST 1 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 5 | Mon 2/16 | HOLIDAY | |||
| Tue 2/17 | Lab 8. Boards |
||||
| Wed 2/18 |
Lec 8. Recursion I (Functional) (Recording) (Slides 8) (Lecture Quiz 8) |
||||
| Thu 2/19 | Catch-up Session (Optional) | Disc 5. Recursion I + Nested Lists | |||
| Fri 2/20 |
Talk 5. Quest 1 Review |
QUEST 2 | |||
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 6 | Mon 2/23 |
Lec 9. Recursion II (Fractals) (Recording) (Slides 9) (Lecture Quiz 9) |
Proj 2 Due | ||
| Tue 2/24 | Lab 9. Trees & Fractals |
||||
| Wed 2/25 |
Lec 10. Recursion III (Count Change) (Recording) (Slides 10) (Lecture Quiz 10) |
||||
| Thu 2/26 | Lab 10. Recursive Reporters |
Disc 6. Recursion II | |||
| Fri 2/27 |
Talk 6. Quest 2 Review |
QUEST 3 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 7 | Mon 3/2 |
Lec 11. Testing + 2048 (Recording) (Slides 11) (Lecture Quiz 11) |
Proj 3 Released | ||
| Tue 3/3 | Lab 11. Testing + 2048 |
||||
| Wed 3/4 |
Lec 12. Practice Midterm (Zone 5-11) (Recording) (Slides 12) (No Lecture Quiz) |
||||
| Thu 3/5 | Lab 12. Functions as Data, HOFs |
Disc 7. HOFs, Lambdas, Debugging | |||
| Fri 3/6 |
Talk 7. Practice Midterm (Zone 12 & With Snap!) (Recording) |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 8 | Mon 3/9 |
Lec 13. Guest Lecture: Saving the World with Computing (Recording) (Slides 13) (Lecture Quiz 13) |
|||
| Tue 3/10 | Midterm Practice (no code) |
||||
| Wed 3/11 |
Lec 14. Computing in Education (Recording) (Slides 14) (Lecture Quiz 14) |
Proj 4 Released | |||
| Thu 3/12 | Midterm Practice (code) |
Disc 8. Midterm Preview | |||
| Fri 3/13 |
Talk 8. Midterm 1 Preview (Recording) |
MIDTERM 1 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 9 | Mon 3/16 |
Lec 15. Higher-Order Functions (Recording) (Slides 15) (Lecture Quiz 15) |
Project 3 Due | ||
| Tue 3/17 | NO LAB | ||||
| Wed 3/18 |
Lec 16. Programming Paradigms (Recording) (Slides 16) (Lecture Quiz 16) |
||||
| Thu 3/19 | (Optional) Lab 13. OOP in Snap! |
Disc 9. OOP | |||
| Fri 3/20 |
Talk 9. Midterm 1 Review |
MIDTERM 2 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 10 | Mon 3/23 | HOLIDAY | |||
| Tue 3/24 | HOLIDAY | ||||
| Wed 3/25 | HOLIDAY | ||||
| Thu 3/26 | HOLIDAY | ||||
| Fri 3/27 | HOLIDAY | ||||
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 11 | Mon 3/30 |
Lec 17. Python I - Intro (Recording) (Slides 17) (Lecture Quiz 17) |
|||
| Tue 3/31 | Lab 14. Welcome to Python |
Proj 4 Due | |||
| Wed 4/1 |
Lec 18. Python II - Data Types & Structures (Recording) (Slides 18) (Lecture Quiz 18) |
Final Projects Released | |||
| Thu 4/2 | Lab 15. Data Structures in Python |
Proj 4 Presentations | Proj 4 Presentations | ||
| Fri 4/3 |
Talk 10. Midterm 2 review (Recording) |
MIDTERM 3 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 12 | Mon 4/6 |
Lec 19. Concurrency (Recording) (Slides 19) (Lecture Quiz 19) |
Final Project Proposals Due | ||
| Tue 4/7 | Lab 16. Concurrency | Final Project Proposal Meetings | |||
| Wed 4/8 |
Lec 20. Gen AI (Recording) (Slides 20) (Lecture Quiz 20) |
Final Project Proposal Meetings | |||
| Thu 4/9 | Catch-up Session (Optional) | Disc 10: Data Structures in Python + Concurrency | Final Project Proposal Meetings | ||
| Fri 4/10 |
Talk 11. Python live coding (Recording) |
Proj 4 Comments Due Proj 4 Makeup Presentations Due |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 13 | Mon 4/13 |
Lec 21. Guest Lecture: Human-computer interaction (HCI) (Recording) (Slides 21) (Lecture Quiz 21) |
|||
| Tue 4/14 | Lab 17. Text Processing in Python | ||||
| Wed 4/15 |
Lec 22. Ethics in AI (Recording) (Slides 22) (Lecture Quiz 22) |
||||
| Thu 4/16 | Postterm Practice | Disc 11: Postterm Practice | |||
| Fri 4/17 |
Talk 12. POSTTERM 1 PREVIEW (Recording) |
POSTTERM 1 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 14 | Mon 4/20 |
Lec 23. Python III - Game Theory (Recording) (Slides 23) (Lecture Quiz 23) |
|||
| Tue 4/21 | Lab 18. Linear Recursion in Python | ||||
| Wed 4/22 |
Lec 24. Python IV – OOP (Recording) (Slides 24) (Lecture Quiz 24) |
||||
| Thu 4/23 | Lab 19. FUN Data Science | Disc 12. Review | |||
| Fri 4/24 |
Talk 13. POSTTERM 1 REVIEW (Recording) |
POSTTERM 2 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Week 15 | Mon 4/27 |
Lec 25. Alumni Panel (Recording) (Slides 25) (Lecture Quiz 25) |
|||
| Tue 4/28 | Lab 20. Snap + Python Libraries (Optional) | ||||
| Wed 4/29 |
Lec 26. Conclusion and Farewell (Recording) (Slides 26) (Lecture Quiz 26) |
||||
| Thu 4/30 | Project Work Session (Optional) | Disc 15: Review | |||
| Fri 5/1 |
Talk 14. POSTTERM 2 REVIEW (Recording) |
POSTTERM 3 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| RRR Week | Mon 5/4 | ||||
| Tue 5/5 | |||||
| Wed 5/6 | |||||
| Thu 5/7 | |||||
| Fri 5/8 |
| Week | Date | Lecture | Lab | Discussion | Assignment / Exam |
|---|---|---|---|---|---|
| Finals Week | Mon 5/11 | ||||
| Tue 5/12 | |||||
| Wed 5/13 | |||||
| Thu 5/14 | |||||
| Fri 5/15 |