Introduction to Teacher Guide

Mary, this link should be on the right as it usually is. Go dig up that formatting and correct this. --MF, 11/18/19

Teacher Guide home

Welcome to the Teacher Guide for the Beauty and Joy of Computing (BJC) AP Computer Science Principles (CSP) course. This guide is designed to support high school CSP teachers with timing and activities for the BJC student materials. We start this guide by presenting our three goals: including student groups typically underrepresented in computing, preparing students to pass the AP CS Principles exam, and conveying the beauty and joy that we see in computer science.

Goals: Equity and Inclusion

A primary goal of this course is to attract new students, especially those traditionally underrepresented in CS, to the joys and life opportunities that come with programming and computer science and to make rigorous computer science accessible and enjoyable. Please note any ways this curriculum does not meet your students' needs and any ideas you have for meeting them better, and tell the research team by using the blue feedback button.

BH, I took out "surveys" because as the project winds down, that won't be relevant. Also, we should discuss the fact that NO ONE EVER READS the blue button feedback. That's a problem in our process that we've never resolved. --MF, 11/17/19
Resources for Recruiting Female and Underrepresented Minority Students from the College Board

AP CSP "Big Ideas":

CRD: Creative Development
DAT: Data
AAP: Algorithms and Programming
CSN: Computing Systems and Networks
IOC: Impact of Computing

AP CSP "Computational Thinking Practices":

1 Computational Solution Design
2 Algorithms and Program Development
3 Abstraction in Program Development
4 Code Analysis
5 Computing Innovations
6 Responsible Computing

Goals: AP Computer Science Principles

Several curricula satisfy the framework for the new (starting 2020-2021) AP CS Principles exam. BJC is one. Most AP courses have specific curricula taught in similar ways at every high school where they are offered. CS Principles is different because it is equivalent to a college breadth course rather than a first course for CS majors, and there is no uniformity in how colleges teach such a course. In particular, the exam is meant to be "language agnostic," meaning that any programming language can be used in the course.

Like BJC, CSP's specific goal is to attract students in groups that are historically underrepresented in computer science. BJC is an AP course for tactical reasons: it's much easier to get high schools across the country to introduce an AP course than a non-AP course. But keep in mind that the goal is to attract students who may not view themselves as "AP kids."

Brian, I had a little trouble understanding the previous paragraph and with it's tone, and I made some edits to improve clarity and the impression it makes. Please ensure that I haven't disrupted your intended meaning, and then remove this comment. --MF, 11/17/19

The College Board CSP Framework sets minimum standards for each of the "Big Ideas" and "Computational Thinking Practices" listed to the right, but each curriculum has its own emphasis. BJC puts a heavy emphasis on Algorithms and Programming and the Impact of Computing. As an AP-endorsed curriculum, we cover every detail of the Framework, but no CSP curriculum follows the order of topics listed in the Framework. Instead, many Framework topics are spread throughout BJC. In this Teacher Guide, there is a teacher page for each student lab, and the last thing on each teacher page is a list of which Skills of the Computational Thinking Practices, Learning Objectives, and Essential Knowledge are found in that lab. A description of how each unit addresses the Big Ideas and the Skills of the Computational Thinking Practices is included on the Teacher Guide page for each of the first five units (Unit 1, Unit 2, Unit 3, Practice Create Task, Unit 4, Unit 5). Please note that the BJC Teacher Guide should be considered a support and that the official AP CSP Curriculum Framework is the definitive source of information about the standards, performance tasks, exam, and requirements of the course.

In the previous paragraph, I updated the names of what BJC weights heavily to match the new framework, refined (and generalized to all providers) the language about the order of topics in the Framework, and added a disclaimer. --MF, 11/17/19

Goals: Beauty and Joy

In addition to the AP goals and curriculum framework, BJC has one more goal: for students to come away from the course loving programming and wanting to do more of it. This doesn't mean they all have to be professional programmers or computer science majors. But everyone on the BJC team has had the experience of learning to love programming. As teachers, we've seen kids who hate school turned around by discovering programming.

Most of us started by seeing computer programs as a means to an end. Our focus was on the result of running the program, rather than on the program itself. We came to see programs as potentially beautiful in themselves when we learned the technique of recursion, in which a procedure calls itself as a subprocedure. So, starting right in Unit 1, we sneak simple examples of recursion into the labs. We don't make a fuss about them, and it's not until Unit 7 (after the AP exam) that we make a serious formal presentation of the idea.

"Beauty and Joy" isn't just poetry. We want the class to be a joyous experience for students. We want to make it hard for any student to feel like a failure. So we offer built-in differentiated instruction, in the form of "hints" that are not shown initially, but with a link that a student can choose to click in order to get a more scaffolded activity. (As always, in a heterogeneous class, we don't want to limit the activities to what the weakest student needs; we think most students will prefer to skip the hints once they see that they can do the work without them. Also, we have multiple-choice review questions, often mirroring the kind of question they'll see on the AP exam, but in our questions, if a student gives an incorrect answer they get a response with a hint about why that answer can't work, and they can try again as often as they need until they get it right.

Please help us achieve this goal: Do not mingle assessment activities with learning activities! At the end of each unit, we provide assessment activities. If you can't stand waiting a month to assess students, make Friday quiz day. But don't grade the labs, and don't give daily quizzes. The learning should be low-pressure; it's hard to learn when you're afraid.

A Typical BJC Class Day

First five minutes: Computing in the News. You or a student read one or two stories from today's paper about computing in society. No discussion.

Rest of class: Students work on the lab. You go around the room helping individuals.

Bell rings: Nobody wants to leave. But you sadly remind them that other students are waiting to use the room.


Teaching any curriculum for the first time takes a lot more time and effort than repeated teaching of the same curriculum. Unanticipated events (snow-days, absences, school issues) can also interfere with any teacher's schedule.

To help you make decisions when pacing gets difficult, the Teacher Guide marks some pages with an asterisk. While all of the BJC pages (except for "Optional Projects" at the end of each unit) are part of the essence of BJC (all part of learning the beauty, the joy, and the computing) if you must adjust your schedule, these are the pages that are safe to skip (safe, in that students will still be able to do later pages and will still be safe for the AP).

Units 1 through 5 cover the basic AP content and therefore must be finished before the AP exam. Units 6-8 expand on some of the beautiful and powerful ideas of computer science that are rarely if ever seen in other AP CSP courses.

Please do not stand in front of the room talking! Teachers, especially good teachers, feel that they're not doing their job if they don't make handouts and lecture slides for each class meeting. In this course, the curriculum itself does that kind of teaching. Your job is to walk around the room, look over shoulders, and get kids unstuck, preferably by asking questions rather than by suggesting code. Every minute you spend in front of the room is a minute in which the class isn't learning the curriculum. This is one of the main reasons teachers have trouble completing the course on time.

Experience before formality: In particular, please do not try to explain a key idea of a lab page in the abstract, before the class has had the experience of working with the idea. In our pedagogy, such abstract presentations come after the activities that give rise to the need for an idea. (This is the pedagogic equivalent to the key computer science idea of abstraction!)

Student Materials:

All of the required materials for this course are available online at no cost. There are the labs (at and the textbook (at Consider requiring students to bring an empty notebook in which to write journal entries. Any computer that runs a modern browser (not Internet Explorer; Edge is fine) is fine.

Design Elements

The BJC student materials have several design elements that are visually distinguished by color, each to serve a specific purpose:

Yellow boxes contain additional information for optional reading.
  1. Students should Work with a Partner
  2. As much as possible, every pair should complete all For You To Do problems.
    • If some problems are too much for your students, please provide feedback to the developers using the blue feedback button in the lower right corner of every page of this Teachers' Guide.
    • The teacher guide suggests places where, if time is tight, you can skip problems.
  3. Click this link to learn about hint boxes.
    • As a form of differentiated learning, we sometimes provide extra scaffolding for an exercise in the form of a "hint" that we expect most students not to need. Encourage students to do their best to solve a problem on their own first.
    • We also use this click-to-open mechanism, sometimes marked with the book icon, for extra information that's interesting but a digression from the activity. Students who read quickly will get a deeper understanding by clicking those links.
: Driver and Navigator

In pair programming, the driver is the one with hands on the keyboard and mouse; the navigator is the one reading the lab instructions and suggesting what the driver should do next.

Vocabulary boxes are used both for words that are important in BJC itself and for words that are important in the CS Principles Framework. If there's a conflict, the box will explain that.

Please don't have vocabulary quizzes! Students should have plenty of exposure to the vocabulary words in the labs themselves. Vocabulary quizzes are the paradigmatic not-joyous school activity.

These boxes are for things that students need only for the AP exam. This includes the pseudo-programming-language notation in which the College Board presents programming problems, and occasionally AP vocabulary that downright contradicts what we think and say. (Don't worry; there aren't many of those.)

Both kinds of gray boxes are things students can skip in the heat of doing the lab and come back to later for review. It's up to you whether you want to encourage that, or instead to encourage them to stop what they're doing and write down the vocabulary words in their notebooks.

Alphie: These are scripts for short skits that model some aspect of computational thinking.
Betsy: You can have students read them out loud, if most of the class is in the same place in the lab at the same time.
Students should act out the italic stage directions instead of reading them out loud. (Or an audience member can narrate as they act it out.)
Gamal: Mix it up! Students can read these dialogues in small groups or in front of the class (maybe even have two groups read in turn to increase retention), or teachers can assign them as a homework assignment and have students record a video or podcast of their reading.
Encourage participation, of course, but also be sensitive to students who, for one reason or another, are too anxious at first to present in front of others.
These orange boxes highlight important information and ways of thinking.

The following two boxes have hidden information. Click on the heading to expose the contents. Both are for differentiated learning.

  1. These problems are comparable in difficulty to the main "For You to Do" activities.
  2. Their numbering is part of the same sequence as the main activities, so there is no ambiguity in referring to an activity by number.
  3. Our plan is that these activities be self-assigned by students themselves. They are worthwhile, not "solve these 50 equations" mindless repetition, but they aren't required, either for the AP or for our ideas about a complete CS course.
  4. If a student pair finishes a lab page early, they can work on these instead of jumping to the next page. But don't let students rush through the main activities to get to these; they should take the time to understand what they're doing and why.
  5. All of the If There Is Time activities are "hinted" so that they don't make the page feel infinitely long to students still working on the main lesson.
  1. These problems are valuable and encouraged, but students can proceed to next lessons without doing these. In that sense, they are optional.
  2. Like the "If There Is Time" activities, these are best when self-assigned. Students should be prepared to have their minds stretched by these, and should enjoy (or learn to enjoy) that feeling.
  3. They are lettered rather than numbered to emphasize that they're not part of the "regular" course work.
  4. You can use them as differentiation for students who move faster.
  5. Or assign them for homework.
  6. Some of them can also become the basis for student projects.
  7. Tough Stuff
  8. Some of the Take It Further activities are especially challenging. They are marked with the "Tough Stuff" road sign. Do not assign them to the class!

Related Resources from External Sources: