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."
|1||1/15 to 1/19||No Readings||No Lecture||No Lab||Welcome to CS10!||
|Welcome and Abstraction||1. Welcome to Netsblox!|
|2||1/22 to 1/26||
Introduction to Abstraction
Learning to Code!
Is Abstraction the Key to Computing?
Scratch: Programming for All
|Building Blocks||2. Build Your Own Blocks||The Power of Binary (Solutions)|
|Numbers and Abstraction||3. Conditionals and Reporters|
|3||1/29 to 2/2||
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
|Lists and Scoping||4. Abstraction||All About Lists (Solutions)|
|4||2/5 to 2/9||
The Story of Alan Turing & His Machine
BtB Chapter 1
|Algorithmic Complexity||6. Algorithms||Algorithmic Complexity, Paradigms, and Quest Review (Solutions)|
|Programming Paradigms||7. Algorithmic Complexity|
|5||2/12 to 2/16||No Readings||Quest- In Lecture||HW2 Work Session||Scoping, Mutability, and HW3 Intro (Solutions) (Demo)|
|Testing + HW3||8. Testing + HW3|
|6||2/19 to 2/23||
The End of Moore's Law
eWeek at 30: Multicore CPUs Keep Chip Makers in Step with Moore's Law
|No Lecture||HW3 Work Session||Concurrency and Mutability Review (Solutions)|
|Concurrency (Lecturer Schuyler Ross)||9. Concurrency|
|7||2/26 to 3/2||
Alan Kay: Doing with Images Makes Symbols - 4:04 to 9:20
Present Shock - When Everything Happened Now
Addicted to Apps
|Social Implications of Computing I||10. Tic-Tac-Toe, Boards||Introduction to Recursion|
|Recursion I||11. Trees and Fractals Using Recursion|
|8||3/5 to 3/9||
BtB Chapter 2, pg. 19-29, 36-42
Rest of BtB Chapter 2
|TBA||Midterm Project Work Session||More Recursion|
|Recursion II||12. Recursive Reporters|
|9||3/12 to 3/16||
As We May Think
||Procedures as Data - Higher Order Procedures||13. Functions as Data and HOFs||Functions as Data + Midterm Review|
|TBA||Midterm Project Work Session|
|10||3/19 to 3/23||No Readings||Midterm Exam Part I||Online Midterm||Social Implications|
|Midterm Exam Part II||14. Finch Lab|
|11||3/26 to 3/30||No Readings||No Lecture||No Lab||No Discussion|
|No Lecture||No Lab|
|12||4/1 to 4/6||
Why Python is a Great First Language
The GNU Manifesto Turns Thirty
Python vs. COBOL parody
|Python I||15. Besides Blocks: Welcome to Python||Introduction to Python||
|Python II||16. Besides Blocks: Data Structures in Python|
|13||4/9 to 4/13||
A World Without Work
Humans Need Not Apply
CS8 Lecture 1
|TBA||Final Project Work Session||More Python||
|Python III||17. Besides Blocks: Text Processing in Python|
|14||4/16 to 4/20||
How to Start Thinking Like a Data Scientist
Correlation does not imply causation
|TBA||Final Project Work Session||More Python||
|TBA||18. Besides Blocks: Data Science with Python|
|15||4/23 to 4/27||
What is Quantum?
What's Exciting About Quantum Computers?
BtB Chapter 6
BtB pg. 305-316
|Limits of Computing||Final Project Work Session||Farewell + Final Review||
|Conclusion||In-Lab Final Exam|
|16||4/30 to 5/4||No Readings||No Lecture||No Lab||No Discussion|
|No Lecture||No Lab|
Paper Final Exam
Tuesday, 5/8/18, 8-11AM
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%|
|Homework 1 (Word Guessing)||10||2%|
|Homework 2 (Encryptify)||20||4%|
|Homework 3 (2048)||30||6%|
|Final Programming Project||75||15%|
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.