Your Navigation Bar didn't load.
Overview News Calendar Staff Grades /fa17/resources

Quick Links


Please check this section for important updates!


Fall 2009 students work together using pair programming

Fall 2009 students pair programming in Scratch.

Our new Mac lab

Our labs are held in the Apple Orchard, which is not only the newest lab on campus with the fastest machines, but also has the most natural light!

CS10: The Beauty and Joy of Computing, is an exciting new course offered by the UC Berkeley EECS Department. Computing has changed the world in profound ways. It has opened up wonderful new ways for people to connect, design, research, play, create, and express themselves. However, just using a computer is only a small part of the picture. The real transformative and empowering experience comes when one learns how to program the computer, to translate ideas into code. This course will teach students how to do exactly that, using Snap! (based on Scratch), one of the friendliest programming languages ever invented. It's purely graphical, which means programming involves simply dragging blocks around, and building bigger blocks out of smaller blocks.

But this course is far more than just learning to program. We'll focus on some of the "Big Ideas" of computing, such as abstraction, design, recursion, concurrency, simulations, and the limits of computation. We'll show some beautiful applications of computing that have changed the world, talk about the history of computing, and where it will go in the future. Throughout the course, relevance will be emphasized: relevance to the student and to society. As an example, the final project will be completely of the students' choosing, on a topic most interesting to them. The overarching theme is to expose students to the beauty and joy of computing. This course is designed for computing non-majors, although interested majors are certainly welcome to take the class as well! We are especially excited about bringing computing (through this course) to traditionally under-represented groups in computing, i.e., women and ethnic minorities.

Some context: in the Fall of 2009, we piloted a 2-unit version of this course as the freshman/sophomore seminar CS39N: The Beauty and Joy of Computing to 20 students. It was such a success that we decided to move ahead to make this course our new computing course for non-majors, replacing the venerable CS3L and CS3S . Since then, this has been one of the most popular courses in EECS. Don't believe us? See for yourself! We're continuing to grow the course as word spreads to more students. We're continually replacing the weakest parts of the curriculum and hope you'll enjoy!

We will be using Pair Programming, described best by Laurie Williams, a computer science professor at North Carolina State University: "Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. On demand, the two programmers can brainstorm any challenging problem. Because the two programmers periodically switch roles, they work together as equals to develop software."

Assignment Calendar

Semester Schedule (subject to change)

Reading Assignments Key:
  • Non-italicized readings are required,
  • Italicized readings are optional but recommended. Note that these readings are NOT tested.
Week Date Lecture Lab/Discussion Readings Due Dates/Notes
1 8/21
No Lecture No Readings
HW0 due 8/25 - submit
1. Welcome & Abstraction Lab 1: Welcome to NetsBlox!
Discussion 1: Welcome to CS10!
2 8/28
2. Building Blocks Lab 2: Build Your Own Blocks Quiz 1 - First Lab of the Week
Introduction to Abstraction
Learning to Code!
Is Abstraction the Key to Computing?
Scratch: Programming for All
HW1 due 9/6 - spec - submit
3. Numbers & Abstraction Lab 3: Conditionals & Reporters
Discussion 2: The Power of Binary
3 9/4
No Lecture - Enjoy Labor Day! Lab 4: Abstraction Quiz 2 - Second Lab of the Week
The Story of Alan Turing & His Machine
BtB Chapter 1
HW2 due 9/20 - spec - submit
HW2 Party 9/18 - 8-10pm
310 Soda
4. Lists & Scoping Lab 5: Lists
Discussion 3: All About Lists
4 9/11
5. Algorithms (Yifat Amir) Lab 6: Algorithms Quiz 3 - First Lab of the Week
What is an Algorithm?
How Algorithms Shape Our World
Algorithms are Great and All, But They Can Also Ruin Lives
Hacker News Comments on "Algorithms are Great and All..."
The 10 Algorithms That Dominate Our World
The real 10 algorithms that dominate our world
6. Algorithmic Complexity (Lara McConnaughey) Lab 7: Algorithmic Complexity
Discussion 4: Algorithmic Complexity & Quest Review
5 9/18
Quest - In-Lecture Lab Work Session No Readings - Study for the Quest! HW3 due 10/6 - spec - submit
HW3 Party 10/2 - 8-10pm
310 Soda
Midterm Project Proposal
due 10/7 - spec - submit
7. Testing + HW3 (Steven Traversi) Lab 8: Testing + HW3
Discussion 5: Scoping, Mutability & HW3 Introduction(demo)
6 9/25
8. Concurrency Lab 9: Concurrency Quiz 4 - First Lab of the Week
The End of Moore's Law
eWeek at 30: Multicore CPUs Keep Chip Makers in Step with Moore's Law
9. Programming Paradigms HW3 Work Session
Discussion 6: Concurrency & Paradigms
7 10/2
10. Recursion I Lab 10: Tic-Tac-Toe & Boards Quiz 5 - First Lab of the Week
Alan Kay: Doing with Images Makes Symbols - 4:04 to 9:20
Present Shock - When Everything Happened Now
Addicted to Apps
11. HCI (Eric Paulos) Lab 11: Recursion with Trees & Fractals
Discussion 7: Introduction to Recursion(demo)
8 10/9
12. Privacy (Gerald Friedland) Midterm Project Work Session Quiz 6 - First Lab of the Week
BtB Chapter 2, pg. 19-29, 36-42
Rest of BtB Chapter 2
Midterm Project Proposal
due 10/7 - spec - submit
Midterm Project
due 10/20 - spec - submit
Midterm Project Party
10/15 - 4-6pm - 310 Soda
13. Recursion II Lab 12: Recursive Reporters
Discussion 8: More Recursion(demo)
9 10/16
14. Cyberpolitics (Jobel Vecino) Midterm Project Work Session Quiz 7 - First Lab of the Week
How an Entire Nation Became a Test Lab for Cyberwar
Cyberspace After Snowden
15. Computers in Education Midterm Project Work Session
Midterm Review Session 10/19
8-10pm - 160 Kroeber
Discussion 9: Midterm Review(demo)
10 10/23
Midterm Exam Part I - In-Lecture In-Lab Online Midterm No Readings - Study for the Midterm!
Midterm Exam Part II - In-Lecture Lab 13: Finches!
Discussion 10: Social Implications
11 10/30
16. Procedures as Data - Higher Order Functions Lab 14: Procedures as Data - Higher Order Procedures Quiz 8 - First Lab of the Week
Why Python is a Great First Language
The GNU Manifesto Turns Thirty
Python vs. COBOL parody
Explore Post
due 11/8 - spec - submit
Explore Post Comments
due 11/12 - submit
Final Project Proposal
due 11/10 - spec - submit
17. Python I Lab 15: Besides Blocks - Welcome to Python
Discussion 11: Introduction to Python (demo)
12 11/6
18. Python II Lab 16: Besides Blocks - Data Structures in Python Quiz 9 - First Lab of the Week
How to Start Thinking Like a Data Scientist
Correlation does not imply causation
Spurious Correlations
19. Python III Lab 17: Besides Blocks - Text Processing in Python
No Discussion - Enjoy Veteran's Day!
13 11/13
20. Artificial Intelligence (Pat Virtue) Final Project Work Session Quiz 10 - First Lab of the Week
A World Without Work
Humans Need Not Apply
CS8 Lecture 1
Final Project Proposal
due 11/10 - spec - submit
Final Project Milestone
due 11/19 - submit
Final Project
due 12/1 - spec - submit
21. CS10 Alumni Panel Lab 18: Besides Blocks - Data Science with Python
Discussion 12: More Python
14 11/20
22. Limits of Computing Final Project Work Session Quiz 11 - First Lab of the Week
The Rise of Human-Computer Cooperation
P vs. NP and the Computational Complexity Zoo
As We May Think
No Class - Enjoy Thanksgiving!
15 11/27
23. Saving the World With Computing
(Kathy Yelick)
Final Project Work Session Quiz 12 - First Lab of the Week
What is Quantum?
What's Exciting About Quantum Computers?
BtB Chapter 6
BtB pg. 305-316
24. Conclusion In-Lab Final Exam
Discussion 13: Farewell, Recap & Feedback (slides)
16 12/4
CS Ed Day
Tuesday, December 5
RRR Week No Readings Study for the Final!
Final Review Session
17 12/11
Paper Final Exam
Wednesday, December 13, 7-10 PM
245 Li Ka Shing
Good luck on your finals. Have a great Winter Break!

Weekly Schedule

This calendar displays the class schedule for the current week. Click on any event to see the building location on a map.



Teaching Assistants


Lab Assistants


Grade Breakdown

For the most part, we would prefer to teach this course without grades. What a wonderful concept, learning for learning sake! However, even though we can't change the "system" overnight, we can create grading policies that support learning as much as possible. The various course activities will contribute to your grade as follows:

Activity Points Percent of Total Grade
Weekly Reading Quizzes 20 4%
Lab Check-Offs 30 6%
Homework 1 (Word Guessing) 10 2%
Homework 2 (Encryptify) 20 4%
Homework 3 (2048) 30 6%
Midterm Project 75 15%
Innovation Blog 40 8%
Final Programming Project 75 15%
Quest 25 5%
Midterm 75 15%
Final Exam 100 20%
Total Points 500 100%

How We'll Calculate Your Grade

Your letter grade will be determined by total course points, as shown in the table below. Incomplete grades will be granted only for dire medical or personal emergencies that cause you to miss the final exam, and only if your work up to that point is satisfactory.

Points Grade
485-500 A+
460-484 A
450-459 A-
440-449 B+
420-439 B
400-419 B-
375-399 C+
360-374 C
350-359 C-
300-349 D
< 299 F