The Beauty and Joy of Computing

The Beauty and Joy of Computing (BJC) is an introductory computer science curriculum developed at the University of California, Berkeley, intended for non-CS majors at the high school junior through undergraduate freshman level. It was one of the five initial pilot programs for the AP CS Principles course being developed by the College Board and the National Science Foundation. We offer it as CS 10 at Berkeley.

This web site is the repository for materials to help teachers who have adopted or are considering adopting the BJC curriculum.

This material is based upon work supported by the National Science Foundation under Grant No. 1138596. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.

Skip ahead to links to materials.

Privacy Policy
For research purposes, this site uses Google Analytics to collect aggregate information about, e.g., how often the site is used and what links are followed from it. We do not collect personally identifiable information, but if you have a Gmail account or have ever Googled yourself from your own computer, then, despite their assurances to the contrary, Google does collect such information. We recommend that you use AdBlock Plus and/or Privoxy to protect your browsing privacy. (You might also consider the tracking-free DuckDuckGo search engine.)

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 teaches 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 focus on some of the "Big Ideas" of computing, such as abstraction, design, recursion, concurrency, simulations, and the limits of computation. We 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 is emphasized: relevance to the student and to society. As an example, the final project is 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. We are especially excited about bringing computing (through this course) to traditionally under-represented groups in computing, i.e., women and ethnic minorities.

(click on the image of the flyer below to download the pdf that can be printed nicely onto a single, double-sided 11x17 handout)

 

 

 

Course materials for online interaction or download

  • Videos of Dan going meta about CS Principles in the big scheme of things, and Brian trying to teach recursion and higher order functions but actually mostly fighting with really really bad teleconferencing software. (Try the video lectures above instead.)

    Our "FRABJOUS CS" (Framing a Rigorous Approach to Beauty and Joy for Outreach to Underrepresented Students in Computing at Scale) NSF-funded project: one-page summary and full proposal.              
    "And, has thou slain the Jabberwock?
      Come to my arms, my beamish boy!
    O frabjous day! Callooh! Callay!"
      He chortled in his joy.