Your Navigation Bar didn't load.
Overview News Calendar Staff Grades /sp19/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 has tons of 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 midterm and final projects 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. We are proud that we regularly have more than 50% female enrollment (with a high of 60% in the Spring of 2017), and the national exposure the course has received in the New York Times, KQED, NPR's All Things Considered, USA Today, San Jose Mercury News, San Francisco Chronicle, and many others.

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."

18 student testimonials about CS10!

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 Dates Readings Lectures Labs Discussion Due Dates/Notes
1 1/21 to 1/25 No Readings No Lecture No Lab Welcome to CS10!
  • HW0 due 1/27
Welcome and Abstraction 1. Welcome to Snap!
2 1/28 to 2/1 Reading Quiz 1: first lab of the week

Introduction to Abstraction
Learning to Code!
Is Abstraction the Key to Computing?
Scratch: Programming for All

Reading Quiz 1

2. Build Your Own Blocks
Number Representation
Numbers and Abstraction 3. Conditionals and Reporters
3 2/4 to 2/8 Reading Quiz 2: 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
Lists and Scoping

Reading Quiz 2

4. Abstraction
Domain, Range, Lists, & HOFS
Algorithms 5. Lists
4 2/11 to 2/15 No Readings Quest: In Class 6. Algorithms No Discussion
Algorithmic Complexity HW2 Work Session
5 2/18 to 2/22 Reading Quiz 3: second lab of the week

Algorithmic Complexity and Big-O Notation
Blown to Bits: Chapter 1
No Lecture 7. Algorithmic Complexity Scoping, Mutability, Algorithmic Complexity
Testing + HW3

Reading Quiz 3

8. Testing + HW3
6 2/25 to 3/1 Reading Quiz 4: first lab of the week

eWeek at 30: Multicore CPUs Keep Chip Makers in Step with Moore's Law
E-Waste Republic
The End of Moore's Law
UN Report: Time to seize opportunity, tackle challenge of e-waste

Reading Quiz 4

HW3 Work Session

Guest Lecture: Maxson Yang

Computing and the Environment
9. Concurrency
7 3/4 to 3/8 Reading Quiz 5: first lab of the week

Connected, but alone?
Recursion I

Reading Quiz 5

10. Tic-Tac-Toe, Boards
Intro to Recursion
Programming Paradigms 11. Trees and Fractals Using Recursion
8 3/11 to 3/15 Reading Quiz 6: first lab of the week

Addicted to Apps
Present Shock -- When Everything Happened Now
Recursion II

Reading Quiz 6

Midterm Project Work Session
Midterm Review
Social Implications of Computing: Education 12. Recursive Reporters
9 3/18 to 3/22 No Readings Lecture: In-Lecture Midterm Review; Midterm Exam 7-9PM In-Lab Midterm Exam Social Implications
  • Midterm Project due 3/22 (spec) (submit)
  • Midterm Exam 3/18 7-9pm
No Lecture Midterm Project Work Session
10 3/25 to 3/29 No Readings No Lecture No Lab No Discussion
No Lecture No Lab
11 4/1 to 4/5 Reading Quiz 7: second lab of the week

Why Python is a Great First Language
Python vs. COBOL parody
Python I: Basics of Python 13. Finch Lab Intro to Python
Python II: Built in Types

Reading Quiz 7

14. Besides Blocks: Welcome to Python
12 4/8 to 4/12 Reading Quiz 8: second lab of the week

The Design of Everyday Things (Ch1)
Python III: Higher Order Functions 15. Besides Blocks: Data Structures in Python List Comprehensions & Python Data Structures

Guest Lecture: Amy Pavel

Human-Computer Interaction

Reading Quiz 8

16. Besides Blocks: Functions as Data and HOFs
13 4/15 to 4/19 Reading Quiz 9: first lab of the week

StarCraft II-playing AI AlphaStar takes out pros undefeated
Python IV: Tree Recursion and Game Theory

Reading Quiz 9

Final Project Work Session
HOFs, Lambdas, Tree Recursion

Guest Lecture: Kaylee Burns

Artifical Intelligence
17. Besides Blocks: Text Processing in Python
14 4/22 to 4/26 Reading Quiz 10: first lab of the week

What is Data Science?
How to Start Thinking Like a Data Scientist
Data 8 Lecture 1
Spurious Correlations

Guest Lecture: Kathy Yellick

Saving the World with Computing

Reading Quiz 10

Final Project Work session
Farewell & Final Review

Guest Lecture: Murtaza Ali

Limits of Computing
18. Besides Blocks: Data Science with Python
15 4/29 to 5/3 Reading Quiz 11: first lab of the week

The Secret History of Women in Coding
Alumni Panel

Reading Quiz 11

Final Project Work Session
No Discussion
Conclusion In-Lab Final Exam
16 5/6 to 5/10 No Readings No Lecture No Lab No Discussion
  • Extra Credit BJC Artwork due at the Final
No Lecture No Lab
17 Paper Final Exam
Wednesday, 5/15, 7-10PM, 105 Stanley
Good luck!

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 (Mastermind I) 10 2%
Homework 2 (Mastermind II) 20 4%
Homework 3 (2048) 30 6%
Midterm Project 75 15%
Explore Post 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