Throughout the unit, students learn to "package" a script by building a custom block (procedure) and how to add input parameters. This is the beginning of a yearlong focus on abstraction. The unit also introduces the design elements of the curriculum itself: Green boxes ("For You To Do") are for exercises; orange boxes are important text that even text-skippers should read; yellow boxes are for text that students can safely skip, but that point to side paths or reinforce the main points. Blue boxes ("If There Is Time") are additional exercises that are useful, not simply redundant, but that can be skipped without leaving students unprepared for later pages. It's up to you to decide which of these to assign to the class. Purple boxes ("Take It Further") are differentiated learning for the fastest and most interested students; our intention is that they be self-assigned, not assigned by you to the entire class. They have little handholding and can take quite a long time. Encourage individual students to do them at home. The pink boxes at the top of lab pages give very short overviews, for students, of the plan of the entire lab and of the individual page. Don't dwell on these, but certain students' learning styles will benefit from advance notice of what they're working toward on a page. Grey boxes (we chose the neutral color deliberately as a subtle hint that these aren't part of the beauty and joy we strive for elsewhere) are for AP exam vocabulary words. Encourage students not to spend time reading them in class, but to come back to them for vocabulary review. Please resist any temptation to make a big fuss about vocabulary.
Encourage students to experiment with Snap!: playing with inputs, trying out blocks before they have been formally introduced, and modifying and extending the assigned tasks. Creativity is a Big Idea of AP CS Principles and a core element of BJC.
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.
A primary goal of the BJC curriculum is to attract new students, especially those traditionally underrepresented in computer science, to the joys and life opportunities that come with programming and CS through rigorous, accessible, and enjoyable content. BJC aims to foster the engagement of diverse students through project-based learning activities, opportunities for personalization, and discussions of the social implications of computing.
Computer Scientists @ Work curriculum elements are designed to support students' sense of belonging by representing diverse individuals in the field. Each box highlights a different individual and their contribution to computer science and includes an additional link where students can learn more about the individual and their work. This curriculum feature also serves to educate all students about the contributions of diverse individuals and some of the challenges these individuals have faced.
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 AP CSP course.
Like BJC, CSP's specific goal is to attract students in groups that are historically underrepresented in computer science. BJC is an AP curriculum 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."
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 addition to the AP goals and curriculum framework, BJC has one more goal: for students to come away 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.
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 BJC, 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 year of materials on time.
All of the required materials for this curriculum are available online at no cost. There are the labs (at bjc.edc.org) and the textbook (at bitsbook.com/excerpts). Any computer that runs a modern browser (not Internet Explorer; Edge is fine) is fine.
The title "lab" is used to emphasize the laboratory style—experimentation, discussion, interaction—both in programming and in the analysis of social implications.
Both types of labs involve classroom discussion. Read more about Facilitating a Classroom Discussion.
Social Implications: In the social implications labs, students confront difficult issues in computing in depth. By contrast, the daily Computing in the News is a brief presentation of current events. Social Implications labs also address the College Board's requirement for “Opportunities to Investigate Computing Innovations.”
Often it's best to introduce a topic with some facts, but most of the time should be spent in small group discussions. In whole-class discussions, a few students often dominate while the rest of the class misses out, whereas in small group discussion, everyone participates. Resist the urge to lecture, as then nobody is discussing.
Some labs include multiple choice, formative, ungraded "Self Checks" (suggestions on effective student feedback messages appreciated). You do not have to collect and review these. Regular projects offer plenty of opportunity for formative feedback for teachers and students, and formal exams will provide summative information.
Brian, is this a note to yourself? Can you please resolve it? --MF, 5/23/20
Luis von Ahn (born in 1978), one of the pioneers of crowdsourcing, is a Guatemalan computer scientist and entrepreneur. If you've ever had to click a box or identify images to confirm you are not a robot, you've used technology based on the work of Ahn's digital security company reCAPTCHA. reCAPTCHA protects websites from fraud and abuse with minimal disruption to user experience. After selling reCAPTCHA to Google in 2009, he co-founded the popular language learning platform Duolingo, which as of 2020 had over 500 million learners across 39 languages.
Computer Scientists @ Work boxes feature diverse individuals and their contributions to computer science. The example to the right is from Unit 4 Lab 2 Page 4, "Who Cares About Encryption?"
In the Classroom
As students work through the curriculum, they will come across and read the text in the Computer Scientists @ Work boxes naturally, and you don’t necessarily have to do anything specific to support them. Should you wish to encourage students to engage further with the text and additional links, here are some options:
There are also many ways to use these features as part of a project, lesson, or lesson sequence. Keep in mind that these activities, much like the Optional Projects at the end of each unit, will take one or more class periods, and should only be used if you're on pace to complete the course content. Here are three options:
Connecting with Local Computer Scientists
Another way to support students in seeing themselves as computer scientists is to invite speakers from a local company and/or college into your classroom. This can be done virtually or in person depending on your location and your school and district policy around classroom visitors. Consider doing some research on the comapny/insitution first and, if possible, identify a specific individual to reach out to (e.g., someone doing interesting work or of a background students can connect with) instead of reaching out to the company at large. Below is an email template you can use.
Subject line: Speakers Wanted for High School Computer Science Class
I hope this message finds you well.
[name of school] is looking for local technology experts to speak to students in our computer science class. We’re hoping that this would be an opportunity for students to learn more about local companies and opportunities in CS as well as to help students see themselves in a computer science role in the future.
Our computer science class consists of [number of students] and meets [regular schedule]. We anticipate that presentations will last about 30 minutes and provide an overview of what the presenter’s current role is as well as a bit about their career trajectory. Afterwards, we’ll budget about 15 minutes for Q&A. However, the format is flexible.
Please let me know if you are interested in presenting.
Thank you for taking the time to consider, and I very much look forward to hearing from you soon.
If the visit goes well, maintain the relationship in hopes of having them speak again in the future.
The BJC student materials have several design elements that are visually distinguished by color, each to serve a specific purpose:
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.
The following two boxes have hidden information. Click on the heading to expose the contents. Both are for differentiated learning.
Teachers have asked us for additional activities, and teachers have also reported having trouble fitting the entire curriculum into a year.
In response to this feedback, we have created a variety of additional supports available on each unit's Teacher Guide overview page that include vocabulary activities, formative assessment questions, and AP CSP preparation prompts that support the Create Task. Nevertheless, we recommend that, except for the five minutes of Computing in the News, students spend the entire period, every class period, working on the labs. (Social Implications labs may require small discussion groups, but ideally in the programming labs, students get straight to work without your help. Your idea role is walking around the room, looking over shoulders, and dealing with question.) The BJC curriculum is paced for this class format.
In addition, this curriculum is designed to support students in finding the beauty and joy in actively doing computer science and reflecting on its social implications rather than feeling like they are jumping through hoops with worksheet and supplemental documents. We encourage teachers not to collect student lab work, either directly or through secondary forms. BJC assessment and grading occurs at the end of each unit, roughly once a month.
Any given student may find any particular lab challenging, and that can create enough anxiety without grade anxiety. And the goals of encouraging nontraditional CS students isn't helped by insisting that everyone learn at exactly the same speed.
Because BJC students are always working in pairs and pairs are encouraged to talk to other pairs, the BJC classroom format allows students to help each other over the humps. But even with all these opportunities for support, any given students may not understand some lab until they've had time to go over it at home, too late for an end-of-period assessment.