Teaching the Beauty and Joy of Computing Curriculum

The Teaching the Beauty and Joy of Computing (BJC) Curriculum online professional learning course 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 course 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 https://bjc.berkeley.edu/summer-pd. Ideally, BJC teachers will be able to both attend a BJC Institute and use this course to further their preparation.

Much of this course 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 BJC looks like in practice;
  • Help you learn about the specific BJC labs 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 course about teaching the BJC curriculum 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 course 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 course 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 course that 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 resources from which you can select as needed to support your own BJC teaching.
  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.

Course Objectives

  • Understand the AP CSP Framework Big Ideas and Computational Thinking Practices that are at the core of the BJC curriculum.
  • Understand the BJC curriculum content and pedagogy.
  • Learn about the Snap! programming language and how it enables students to learn programming through creation and experimentation.
  • Understand what BJC looks like in practice, through student videos, and how you can best guide your students' learning, through expert videos and peer discussions.
  • Prepare to implement the BJC student-driven, inquiry-based learning approach in your classroom.
  • Learn how to prepare your students for the AP CSP multiple choice exam and for the required "Create" (creating a computer program or other computer artifact) and "Explore" (explaining the impact of a selected innovation) performance tasks.

Learn More

Beauty and Joy of Computing

Online Professional Learning for Educators

The development of the Teaching the Beauty and Joy of Computing Curriculum online professional learning course is funded by the National Science Foundation under grant number 1441075 to Education Development Center, Inc. (EDC). Any opinions, findings, and conclusions or recommendations expressed in this material are those of the authors and do not necessarily reflect the views of the National Science Foundation.

Beauty and Joy of Computing by the University of California, Berkeley and Education Development Center, Inc. is licensed under Creative Commons license Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

The Teaching the Beauty and Joy of Computing Curriculum online professional learning course has been developed by the NC State University Friday Institute for Educational Innovation and the Department of Computer Science, under contract to Education Development Center, Inc., and is licensed under Creative Commons license Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).

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

In this session, you will be introduced to the course and the BJC curriculum 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 course 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: Making and Using Lists

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 course 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: The Number Guessing Game: Variables and Algorithms

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: Preparing Students for the AP Exam

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.

Participants who fulfill certain requirements can obtain a certificate of completion from NC State University that they can submit to their local agency to request Continuing Education Units (CEUs) for 25 hours of professional development. Granting of CEUs will be subject to the policies and procedures of your state or local agency. If you have questions about how CEUs are granted, please check with your local agency.

To obtain a certificate of completion, you must meet the following requirements:

  1. Participate in the discussion by posting at least one original post and one reply to a colleague's post in the discussion forum for each of five sessions.
  2. Submit, via the course discussion forum in at least two sessions, your analysis of one or more videos of students' work in which you describe:
    1. What programming concepts, Big Ideas, and Computational Thinking Practices you observe the students using or learning;
    2. Your observations of what the students know and are yet to learn;
    3. How you would guide the specific students at the end of the video: questions you would ask; problem-solving strategies you would discuss; hints you would provide; information you would present; additional challenges you would give them, etc.
  3. Complete the end-of-course and session surveys.
  4. Certify that you have spent at least 25 hours engaged in the course professional learning activities.

Friday Institute Online Professional Learning Courses provide a scalable, accessible, and flexible approach that is aligned with the principles of effective professional learning. Our approach is grounded in authentic, active, and collaborative professional learning activities. The approach builds upon the following key design principles:

  1. Self-directed, job-connected, personalized learning, to enable you to focus your time and attention on what you will find most valuable, whether you want to learn more about the Big Ideas and Computational Thinking Practices of computer science, the Snap! programming language, understanding how students approach the BJC labs, preparing your students for the Advanced Placement performance tasks, or many other topics relevant to successfully teaching the BJC curriculum.
  2. Multiple perspectives, including opportunities to learn from leaders in computer science education, experienced BJC teachers, and high school students.
  3. Peer-supported learning, to enable you to learn from other teachers and to share your ideas, questions, and experiences with your online colleagues.
  4. Anywhere, anytime learning, so that you can use this course as you teach the BJC curriculum and continue your learning as you go.

You are invited to use this course in any way that helps you become a successful BJC teacher!

Future Start Date(s) TBA
Duration 7 sessions
End Date 06/30/2023
Cost Free
Primary Audience Grade 9-12 Teachers
Certificate Available Yes
Certificate Hours 25
Certificate Requirements Due 06/30/2023