CS50 AP Newsletter — September 2016

Erin Carvalho

Hard to believe it’s the end of September already. Where did the summer go?

My name is Erin Carvalho. As mentioned in the previous newsletter, Doug has taken on a new role here at CS50 so I will be handling more of the day-to-day efforts regarding CS50 AP. If you are new to CS50 AP, you might not be aware that we do welcome AP teachers and students alike to attend CS50 events here at Harvard and Yale. If you would like to attend this year’s fair, either at Harvard or Yale, RSVP here. Harvard’s fair will be held on Friday, December 9 in Cambridge, MA and Yale’s fair will be held on Monday, December 12 in New Haven, CT.

This might get you started on thinking about how to structure your own CS50 Fair and your students could get a feel for what is possible after completing the course. Please consider posting pictures from your own events and classes here and they could be featured in future newsletters! Pictures of any sort are fine, whether it be from a Puzzle Day, Hackathon, or a typical class day. We’d love to see your CS50 classroom! Here’s a couple from our own Puzzle Day!

CS50 Puzzle Day 2016

Additionally, we are starting to plan for our next workshop season. If you know anyone interested in participating in one of our workshops in late spring or early summer 2017, have them fill out this Google Form.

Without further ado, here are some of the newest updates in the world of CS50 AP:

  • New Content on AP Portal
  • College Board Rubrics for Create and Performance Tasks
  • New at CS50 R&D


New Content on AP Portal

Many of you have been sending us emails about the migration of our curriculum to our new AP portal. While we are still in the process of moving these resources, we have added the programming and writing problems for Chapters 0 and 1 to their respective pages on the portal, and Chapters 2 and 3 are being worked on now. Additionally, you should now see two new resource types: Private for Teachers and Sample Solutions. Rest assured that while students may be able to see these resource types on the resources page, the page will return “No matching records found” unless logged in to a teacher account.

In the “Private for Teachers” section you will find the same grading notes and guidelines that were accessible on the wiki, only updated to match our latest version of the curriculum (Such as the updates to function calls in the CS50 Library, among others). In the “Sample Solutions” section, you can find links to staff solutions for programming problems up through Chapter 4, with more coming soon.

We are also proud to present the first ever batch grader for CS50 AP! Simply download the Python script linked on the portal in the Private for Teachers category (this resource is linked in the Syntax module, where the first programming problem appears).

In your IDE, create a directory entitled “class”, for example, and leave the Python script within that directory. Next, create subdirectories, where each subdirectory is a student’s name/alias/etc. Then navigate into your class directory and execute “chmod 700 ap_grading.py”.

Assuming that each folder houses the program to be graded (ex. hello.c), execute “./ap_grading.py slug” where slug is the check50 prompt minus the check50 part. So to batch grade all of your students’ hello.c submissions, you would put in “./ap_grading.py 1617.chapter1.hello hello.c”. Once the script completes, it will output a file called “output.csv”. From there you can download it to your own computer and open it in excel or whatever LMS you use to do your grading. Please email us with any questions, we’re happy to help!

College Board Rubrics for Create and Performance Tasks

College Board has recently updated their expectations for both the Create and Explore performance tasks. Scoring guidelines for Explore and Create can be found here. You will also find sample responses for what is classified as a “low”, “medium”, and “high” score for these tasks. In the rubrics, you will see references to a submission number in the far left column, for a full description of these view the updated course curriculum framework on page 113.

While the new scoring rubrics are not ideal for viewing how points will be assigned, they do give us a better sense of what components are more heavily weighted in the eyes of College Board. Furthermore, if your students have any questions on the tasks mentioned above, College Board has a student-facing page that they can refer to. Students will submit both tasks to College Board via the AP Digital Portfolio. Be sure to set up your class and familiarize yourself with this tool early, as it may take time to gain access to it through College Board. The teacher user guide can be found here . A student guide is also available.

New at CS50 R&D

With CS50 starting up again here at Harvard, we have revamped the Reference50 page. CS50’s own Luke Jackson redesigned the site to include the recent changes to the names of the functions in the CS50 Library. As before, there is a less comfortable and more comfortable version for some of the pages which can be turned on and off by clicking the checkbox in the corner. This resource can be found here. Not yet included on the site but available in the IDE, is a function called “eprintf”. This is simply a non-buffered version of printf that notifies the user of the line in which the context of eprintf is being used. Helpful for debugging some of those weird corner cases. And for debugging more generally do we have a newly improved interface for the graphical debugger! It can now be run from the Terminal (with IDE version 72+) as by typing

debug50 ./<program> [<command line arguments>]

(for example: debug50 ./mario, or debug50 ./caesar 8). Breakpoints in the code can be set as before, by clicking to the left of a line number. debug50 optimizes over last year’s iteration of the debugger by running on a binary, instead of on a source file, and should generally be more stable now!

Lastly, the team is currently building out a new tool called help50, whose aim is to serve as a virtual teaching fellow, to hopefully help save some of your time dealing with students who are struggling with error messages. If a student doesn’t understand the error message they see when compiling their code, for example, they could preface the command they just ran with help50 to get a “translation” of their errors into something hopefully more human-comprehensible. All a student has to do is type

help50 make <program>

(for example help50 make fahrenheit). The tool is constantly being updated with new help messages, and the tool itself is an open project on GitHub for which we’d welcome you to make submissions and/or report issues for messages you would like to see get “help50”’d. The project lives at https://github.com/cs50/help50.

And if you like programming in Python and want to get involved with helping contribute “matchers” for some errors you see, drop us a line and we’ll give a crash course on how to get involved.

Moreover, we are now releasing Harvard lectures on a new video player. On the lectures page of our website, teachers and students alike can watch post-produced lectures as they are released with a new search feature. In the right hand corner of the player you will find a magnifying glass that when clicked brings up the “chapters” of the given lecture. When expanded you will be able to see the full transcript of that section with clickable times to go to a certain sentence. You can also search these transcripts by keyword in the search box. There is also a “take breaks” feature, which when enabled, pauses the video between chapters and gives you the option to pause or continue right away.

While this may not be of particular interest for teachers who are taking on more of an adapt approach, it could certainly be handy for those using the adopt approach or students who need additional time to absorb content. This resource could also serve as a tool if you are using a flipped classroom approach or if students need to miss class or are absent.


Many teachers have asked about the status of our submission platform with regard to when it will be released. We are nearing completion of our beta test at the college level and will soon be reaching out to folks who are interested in the GitHub based grading workflow. If you are one of those teachers, please drop us a line at ap@cs50.harvard.edu so we can send out more information when it is available!

If you are a new teacher using our curriculum, know that CS50 AP does not impose or recommend a workflow to grading assignments, given that our experience has been that teachers solve this problem in many different ways. We’d encourage you to find a workflow that works best for you, whether it be Dropbox submissions, the collaborate feature on the IDE, render50, the Python grading script or some combination of the above listed or a method of your own.

We also have gotten several inquiries on how best to handle the AP portal with multiple classes. While we don’t have a way for teachers to have multiple classes on one account, the best way to handle this for now, is to create separate accounts for each class. Additionally there have been many inquiries from students and teachers alike about student registration for the portal. Students do not need to (and indeed cannot!) register for the portal. Most of the resources are available without logging in. We have logins simply to restrict access to grading-specific resources such as sample solutions and grading guidelines.

Questions, Comments, Thoughts?

If there are any questions at all about anything you’ve seen in this newsletter or anything else, please reach out — you can reach me and Doug by contacting ap@cs50.harvard.edu; this includes if you want to reach out to us because you’d like to get involved in the CS50 AP program for the first time… perhaps next school year!

This is CS50 AP 1617.

One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.