Class Central is learner-supported. When you buy through links on our site, we may earn an affiliate commission.


Teaching the Beauty and Joy of Computing Curriculum

Friday Institute and North Carolina State College of Education via MOOC-ED


The Teaching the Beauty and Joy of Computing (BJC) Curriculum Massive Open Online Course for Educators (MOOC-Ed) provides professional development and support for teachers of the BJC high school computer science curriculum.

The BJC curriculum is endorsed by the College Board as an Advanced Placement Computer Science Principles (AP CSP) course for high school students. While this MOOC-Ed will help prepare you to teach BJC, the online course alone does not meet the requirements to become a College Board certified AP teacher; attending a summer BJC Professional Development workshop is required for that certification. Information about those workshops is available at Ideally, BJC teachers will be able to both attend a BJC Institute and use this MOOC-Ed to further their preparation.

Much of this MOOC-Ed is built around short videos of pairs of students working together to solve BJC curriculum programming challenges. These videos demonstrate students' — often very clever — problem solving, while also highlighting some common mistakes your students may make, misconceptions they may have, and misdirections they may take. These student videos serve several important purposes in this course for teachers, including to:

  • Provide you with a concrete sense of what BJClooks like in practice;
  • Help you learn about the specific BJClabs used in the videos to inform your own teaching;
  • Show how different student pairs work together and learn as they develop, test, and debug their ideas;
  • Learn how the curriculum incorporates the Big Ideas and Computational Thinking Practices that are at the core of BJC(and other CSP curriculum) through seeing students actively engage with them;
  • Demonstrate how Snap!provides an easy-to-use and powerful tool for students' learning and creativity; and
  • Seed discussions among you and your peers in this MOOC-Ed about teaching the BJCcurriculum and guiding your students' learning.


We build upon the student videos to provide programming insights materials about the Snap! language and to discuss effective teaching practices to help you develop your pedagogical content knowledge and be a successful BJC teacher. In addition, you will hear computer science experts discuss the central ideas of the curriculum and experienced BJC teachers discuss what they have learned and their recommendations for teaching BJC. Throughout this course, you will have opportunities to learn with and from your peers, and to help them learn, through the discussion forum.

The MOOC-Ed focuses on the early units of the curriculum to help you begin to teach it successfully and to prepare your students for the Advanced Placement Computer Science Principles exam; the content of the full BJC curriculum goes well beyond the AP requirements. This course also introduces you to the Snap!programming language. Many who have not programmed before are surprised at how easy and enjoyable it is to create simple programs with this visual programming language that was designed to support teaching and learning.

The MOOC-Ed is designed to be flexible to allow you to select the resources and activities that best serve your professional learning needs — whether you are a computer science expert or a novice at computer programing, and whether you are experienced at guiding project-based, student-driven activities or new to those approaches. You can use it in the following ways:

  1. As an online coursethat you work through in sequence, on your own or with local or online colleagues. By completing a required set of activities, you can earn a certificate of completion that most teachers can submit to their local agency to obtain continuing education units (CEUs).
  2. As a set of on-demand resourcesfrom which you can select as needed to support your own BJC
  3. As resources to enhance other BJC professional development activities, which may, for example, use the student videos to stimulate discussions about how teachers can best facilitate students' learning.



Session 1: Welcome to the BJC Curriculum: Student and Teacher Perspectives

In this session, you will be introduced to the MOOC-Ed and the BJCcurriculum through the perspectives of students and teachers. Videos of pairs of students working on different parts of a BJC programming lab and of expert teachers sharing their approaches to teaching BJC will provide insights into what BJC looks like in practice and how you can successfully guide your students' learning. Expert teacher panels discuss strategies for facilitating both the programming labs and teaching students about the global impact of computing through the social implications labs and Computing in the News activities.

Session 2: Introducing the Snap! Programming Language

In this session, you will explore coding concepts central to all programming languages and begin to learn about the Snap! programming language and environment, from learning how to set up an account to experimenting by revising or extending a starting script. As a self-directed learning experience, this session should be approached differently by those who are new to computer programming, those who have programming experience but are new to the Snap! language, and those who already know Snap!

Session 3: Getting Started: Creating the Click Alonzo Game

This session invites you to delve into a simple programming project and then to view examples of ways to extend the lab to give students opportunities to develop their own variations, learning more about programming as they do so. You will have an opportunity to observe videos of students, discuss your observations with other MOOC-Ed participants, and learn more about Snap! programming and specific computer science concepts in the process. A panel of expert teachers offer insights into pair programming and effectively managing it in your classroom.

Session 4: Programming with Text: Lists and List Processing

In this session, you will explore a lab in which students learn how to create lists of data, select data from those lists, and combine data in new ways. As in the previous session, you will observe pair programming through student videos and discuss your observations with other participants. You will also observe videos of students working on a more advanced lab using lists of data and list processing programming commands. A panel of expert teachers offers suggestions about teaching the first few labs to help your students establish a strong foundation for the rest of the BJC curriculum.

Session 5: Polygons and Patterns: Abstracting by Creating Blocks

In this session, you will explore a lab that is designed to help students understand important programming concepts such as variables, loops, and inputs while they explore creating shapes on the screen. They learn to create new blocks (e.g., for drawing a polygon with any number of sides) that can then be used within their programs, thereby learning about the concept and process of abstraction. As in previous sessions, you will observe pair programming through student videos and discuss your observations with other MOOC-Ed participants. A panel of expert teachers offers suggestions for helping students understand the difference between local and global variables, and the related Big Idea of abstraction and Computational Thinking Practice of abstracting.

Session 6: Multiple Sprites and Types of Variables: The Number Guessing Game

In this session, you will explore labs that expand students' understanding of local and global variables and engage them in more complex programming challenges. As in previous sessions, you will observe videos of students engaged in pair programming with both a simple and a more complex programming challenge, and discuss your observations with other participants. A panel of expert teachers offers suggestions for helping students debug programs and for engaging more advanced students in both their own projects and in helping their classmates.

Session 7: Wrapping Up

In the final session, you will look toward the Advanced Placement Computer Science Principles exam and its "Explore" and "Create" performance tasks. Additional resources are provided to help you prepare students for the AP exam. You will hear advice from both teachers and students about preparing students for the written exam and the performance tasks. A final online discussion with your peers focuses on how you can best prepare students for this assessment focused on application to ideas and the impact of computer innovations.



Start your review of Teaching the Beauty and Joy of Computing Curriculum

Never Stop Learning.

Get personalized course recommendations, track subjects and courses with reminders, and more.

Someone learning on their laptop while sitting on the floor.