UC Berkeley EECS 
Overview
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.
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 nonmajors, although interested majors are certainly welcome to take the class as well! We are especially excited about bringing computing (through this course) to traditionally underrepresented groups, i.e., women and ethnic minorities. Enrollment for the Fall 2010 pilot offering will be limited to 90 freshmen and juniortransfer students. Enrollment will be opened up to everyone in the Spring of 2011.
Some context: in the Fall of 2009, we piloted a 2unit 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 nonmajors, replacing the venerable CS3L; however, we still offer the selfpaced course CS3S for those interested in learning to program in Scheme. This Fall 2010 is a 90person pilot, since it will be the first time some of the material will be seen by students. We've kept the best elements of CS39N and added new material that we 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 sidebyside, 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
News
20110112 
Survey Results from Fall 2010 students (N = 59) Here are the % of students who did not disagree with the following statements (i.e,. SA + A + N), where SA = Strongly Agree, A = Agree, N = Neutral (SA + A + N breakdown). "The course ..."

20101221 
Final Exam Statistics The mean for the Final Exam was 48.3, with a standard deviation of 15.1. Here is the histogram. 
20101123 
Final Project Presentations (lunch included)! We'll be holding final project presentations on Monday, December 6 from 10:30am  2pm in 306 Soda Hall. Lunch will be provided to all presenters. 
20101029 
Midterm Statistics The mean for the Midterm was 38.3, with a standard deviation of 9.3. Here is the histogram. 
20101001 
Quest Statistics The mean for the Quest was 63.7, with a standard deviation of 10.8. Here is the histogram. 
20100827 
Potluck! We will be having a potluck on Friday, August 27, from 5PM to 7PM, in 430 Soda (the Wozniak lounge). Drop by for food and games with the course staff! 
20100806 
BYOB 3.0 Released! We're pleased to announce the release of BYOB 3.0, the Build Your Own Blocks Scratch offshoot we've been working on with Jens Mönig. Be sure to check it out in the "Resources" section below. Thanks to everyone involved, but there's still a lot of work to do! Contact us to get involved, no matter who you are! 
Calendar
Hour  Monday  Tuesday  Wednesday  Thursday  Friday  

10:00am  Office Hours (Luke Segars) 200 Sutardja Dai 

10:30am  
11:00am  Lecture 155 Donner Lab 
Lecture 155 Donner Lab 

11:30am  
12:00pm  Lab 11 (Luke Segars) 200 Sutardja Dai 
Office Hours (Jonathan Kotker) 751 Soda 
Lab 11 (Luke Segars) 200 Sutardja Dai 
Discussion 101 (Luke Segars) 320 Soda 

12:30pm  
1:00pm  Office Hours (Luke Segars) 283E Soda Hall 

1:30pm  
2:00pm  Lab 12 (Luke Segars) 200 Sutardja Dai 
Lab 12 (Luke Segars) 200 Sutardja Dai 
Office Hours (Dan Garcia) 200 Sutardja Dai 

2:30pm  
3:00pm  Office Hours (Jonathan Kotker) 200 Sutardja Dai 
Discussion 102 (Luke Segars) 310 Soda 
Office Hours (Jonathan Kotker) 711 Soda 

3:30pm  
4:00pm  Lab 13 (Jonathan Kotker) 200 Sutardja Dai 
Office Hours (Brian Harvey) 781 Soda 
Lab 13 (Jonathan Kotker) 200 Sutardja Dai 
Discussion 103 (Jonathan Kotker) 310 Soda 

4:30pm  
5:00pm  
5:30pm  Office Hours (Brian Harvey) 781 Soda 

6:00pm 
Week  Days in 2010  Readings (Sa/Su)  Lecture 1 (M)  Lab 1 (M)  Lecture 2 (W)  Lab 2 (W)  Discussion (F)  HW, Exams & Projects 

1  0823 to 0827  Scratch: Programming for All (CACM), AP CS Principles Rationale, Big Ideas, and Practices  No Class  Welcome, gettoknoweachother activities,
expectations Potluck! Friday 5PM7PM, 430 Soda 
Homework 0 : Minibiography 

2  0830 to 0903  BtB (5560), Is Abstraction the key to Computing? (CACM)  BH : Abstraction  Broadcast, Animations, Music  DG : 3D Graphics  Loops and Variables  Anatomy of a Computer  Homework 1 due 0908 
3  0906 to 0910  What does a Video Game mean, anyway?, Violence in Video Games, St. Louis Court Brief, Prof. Jenkins Goes to Washington, Eight Myths About Video Games Debunked, Designing GWAP (CACM), more...  No Class, Labor Day  DG : Video Games  Random, If, & Input  Video Games  Homework 2 due 0913 

4  0913 to 0917  BtB chapter 1  BH : Functions  BYOB  DG : Programming Paradigms 
Lists I  Lists  Homework 3 due 0917 
5  0920 to 0924  None  Quest (solutions) (inclass exam) 
TA Luke Segars : Algorithms part I  Lists II  Lists, Algorithms, and Games 
Homework 4 due 0929 

6  0927 to 1001  Free Lunch is Over, Spending Moore's dividend (CACM)  TA Jon Kotker : Algorithms part II, Orders of Growth 
Algorithm Complexity  DG : Concurrency  Concurrency  Project Introduction  
7  1004 to 1008  BtB (3242)  BH : Recursion Part I  Recursion I  BH : Social Implications I  Project Work  Recursion  
8  1011 to 1015  BtB (249251)  BH : Recursion Part II  Recursion II  BH : Social Implications II  Project Work  Social Implications of Computing  
9  1018 to 1022  BtB (120138, 145156) 
DG : Applications that Changed the World  Recursion III  Raffi Krikorian : How Twitter Works 
Applications that Changed the World  Recursion  Project due 1022 
10  1025 to 1029  None  Prof Kathy Yelick : Saving the World with Computing (CS + X)  Simulations (Sharks and Fish)  Prof Björn Hartmann : HCI  None  Project Demos  
Midterm (Info) (solutions)  
11  1101 to 1105  None  BH : Lambda + HOFs I  Lambda + HOFs I  BH : Lambda + HOFs II  Lambda + HOFs II  HOF + Lambda  
12  1108 to 1112  A Berkeley View of Cloud Computing  DG : Distributed Computing 
Distributed Computing  Prof Armando Fox : Cloud Computing  Project brainstorm, partners chosen  Parallel Processing Paradigms  Paper due 1112 
13  1115 to 1119  What is IBM's Watson?, The First Church of Robotics, The Great Robot Race (NOVA), Computers Solve Checkers  It's a Draw  BH : AI  Project Work  DG : Game Theory  Project Work  AI  
Beyond Blocks, Session 1
(Python: Tuesday 1116, Scheme: Wednesday 1117) 

14  1122 to 1126  Quantum Leap  BH : Limits of Computing  Project Work  DG : Future of Computing  Project Work  No Class, Thanksgiving  
Beyond Blocks, Session 2
(Scheme: Monday 1122, Python: Tuesday 1123) 

15  1129 to 1203  BtB:
Conclusion (no reading quiz) 
DG : Tree Recursion  Project Work  BH + DG : Summary and Farewell  Project Work Online Final Exam (Answers w/code) 
Final Thoughts  Final Project due 1203 
HOF Review Night (Tuesday, 8:30pm  10:30pm, 306 Soda Hall) (Practice Questions, Solutions, Slides) 

16  1206 to 1210  Final Project Presentations 20101206 10:30am  2pm 306 Soda 
Beyond Blocks, Session 3
(Python: Tuesday 127, Scheme: Wednesday 128) 
RRR Week  
17  1213 to 1217  Final Exam Review Notes  Solutions 
Paper Final Exam (Answers incl.) 
Staff
























Grading
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% 
Paper  60  15% 
Midterm Project  60  15% 
Final Project  60  15% 
Quest  20  5% 
Midterm  60  15% 
Final Exam  80  20% 
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 

390400  A+ 
370389  A 
360369  A 
350359  B+ 
330349  B 
320329  B 
310319  C+ 
290309  C 
280289  C 
240279  D 
< 240  F 
Resources
λ 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
This work is licensed under a Creative Commons AttributionNoncommercialShare Alike 3.0 Unported License