Your Navigation Bar didn't load. Overview News Calendar Staff Grades Resources

UC Berkeley


Fall 2009 students work together using pair programming

Fall 2009 students pair programming in Scratch.

   CS10, The Beauty and Joy of Computing, is an exciting new course offered by the UC Berkeley EECS Dept. 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 BYOB (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.

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!

   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. Last fall (2010) was a 90-person pilot and 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!

Student feedback from Fall 2010.

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

   We are delighted to announce that this course was recently chosen as one of the 5 National pilots by the CollegeBoard (the folks that offer Advanced Placement exams) as a model for an exciting new First Course in Computing: Computer Science : Principles. Our intent is to provide this entire course, through Creative Commons, to the global community. As an example, all of our lecture webcasts are available, our readings are all free (linked from our calendar), and our labs and homework are publicly available via our Moodle server (also linked from our calendar). We'll package the whole thing into a single zip file at the end of the Fall 2010 semester. We'll even provide High Definition lecture videos with extra cool content! As well, we've been working closely with three local high school computer science teachers to develop this course, and they may run variants of this course at their school in the near future:

   λ  Josh Paley of Gunn High School in Palo Alto, CA
   λ  Eugene Lemon of Ralph Bunche High School in Oakland, CA
   λ  Ray Pedersen of Albany High School in Albany, CA


 Feedback Forms

CS10 Feedback Form CS10 Summer 2011 Pre-Course Survey


2011-08-15 Moodle server content now available
You can now download the content of our class Moodle server for import into your own setup. This will work on Moodle 1.9.x but may not work on Moodle 2.

2011-06-24 Summer 2011 website up, but we'll be using Piazzza for all News
Welcome to the class, everyone! Please use Piazzza for all news...


Webcasts of our lectures are freely available online!


Orientation Videos

Summer Schedule

Week Days in 2011 Weekend













HW, Exams & Projects

1 06-27 to 07-01 (see Piazza post) Abstraction
Video + Notes
Broadcast, Animations, Music
3D Graphics
Video + Notes
Loops and Variables
Video Games
Video + Notes
Random, If and Input
Video + Code
First week check-in
Homework Week 1
2 07-04 to 07-08 No Class, Independence Day Programming Paradigms
Video + Notes
Lists I
Video + Notes
Algorithmic Complexity
Video + Notes
Lists II
Lists, Algorithms, and Quest review Homework Week 2
3 07-11 to 07-15 Quest
Exam (solutions, histogram)
Algorithmic Complexity
Video + Notes
Recursion I
Video + Notes
Recursion I
Recursion II
Video + Notes
Recursion II
Concurrency, Recursion & Project Introduction Homework Week 3
4 07-18 to 07-22 Social Implications I
Video + Notes + Webcast
Recursion III
Social Implicatinos II
Video + Notes + Webcast
Project work
Applications that Changed the World
Video + Notes
Project Work
Saving the World with Computing
Video + Notes
Project Work
Recursion, Social Implications, Project Help Midterm Project
5 07-25 to 07-29 How Twitter Works
Video + Notes
Applications that Changed the World
Video + Notes
Lambda + HOFS I
Lambda + HOFs I
Lambda + HOFS II
Lambda + HOFs II
HOF, Lambda, Midterm Review Midterm
6 08-01 to 08-05 Distributed Computing
Video + Notes
Distributed Computing
Cloud Computing
Video + Notes
Project brainstorm, partners chosen
Video + Notes
Project Work
Game Theory
Video + Notes
Project Work
Parallel Processing, AI, Project Help Blog
7 08-08 to 08-12 Limits of Computing
Video + Notes
Project Work
Future of Computing
Video + Notes
Project Work
Tree Recursion
Video + Notes
Project Work
Summary and Farewell
Video + Notes
Project Work
Final Project Help Final Project
8 08-15 to 08-19 None Final Project Celebration Final Exam + Reflection Mapping the course to the AP Principles Big Ideas and Computational Thinking Practices Mapping the course to your high school Reflection, Summary, Next Steps  



Dan Garcia (bio)
777 Soda, (510) 517-4041

Brian Harvey (bio)
781 Soda, (510) 642-8311

Teaching Assistants

Head TA Luke Segars (bio)

Navin Eluthesen (bio)

Glenn Sugden (bio)
Discussion: Fri 10am-noon PST

Jonathan Kotker (bio)
Discussion: 8am-10am


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 Course Points Percentage of Total Grade
Weekly Quizzes and Homework 60 15%
Blog 60 15%
Midterm Project 60 15%
Final Project 60 15%
Quest 20 5%
Midterm 60 15%
Final Exam 80 20%

How We'll Calculate Your Grade

Your letter grade will be determined by total course points, as shown in the table below. There is no curve; your grade will depend only on how well you do, not on how well everyone else does. 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
390-400 A+
370-389 A  
360-369 A- 
350-359 B+
330-349 B  
320-329 B- 
310-319 C+
290-309 C  
280-289 C- 
240-279 D  
< 240 F  


   λ BYOB : Build Your Own Blocks
   λ Scratch Forums
   λ Blown to Bits
   λ Debugging Rules!
   λ UC Berkeley
   λ College of Engineering
   λ Department of Electrical Engineering & Computer Sciences
   λ Webcast archive of 2010Fa lectures
   λ Solutions to Lab Exercises

Contact Webmaster | 2011-08-15@18:00:36 PDT
Creative Commons License

This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License