CS50 AP Newsletter — August 2017

Erin Carvalho

Hello, world! My name is Erin, and this is the first CS50 AP Newsletter for the 2017–2018 school year. Similar to last summer, we had some undergrads from CS50 at Yale and Harvard join us in Cambridge to create some of the tools and resources listed below, and we think there’s a lot of great stuff in here for you and your students!

L-R: Davey, Brian, Hailey, Chad, and Sean

Without further ado, here’s what’s been going down at CS50 R&D this summer as we worked to improve CS50 AP. We hope you like what you see.

Table of Contents

Curriculum Changes and Updates

As some of you already know, CS50 replaced our PHP content with Python content this past fall here at Harvard. CS50 AP 2017–2018 will now reflect these same changes. The CS50 AP portal will be updated with the appropriate resources for the corresponding modules. This past year we also phased out what used to be referred to as “hacker” psets with less-comfy problems and more-comfy problems, geared towards student comfort level. For example, in the CS50 AP problem Mario, we will now have two versions of the problem, more- and less-comfy. Both versions check for understanding of the same concepts, while posing different challenges to students. Students can opt to do a less- or more-comfy problem, for any problem where this occurs (only select problems have less- or more-comfy versions). Students do not need to complete all less-comfy or all more-comfy versions, but can pick assignment to assignment.

If you’ve taught CS50 in the past you’d know that problem specifications tend to be a bit longer and more narrative than most. Now, atop every problem there will be a section labeled tl;dr. For those unfamiliar with the term, it stands for “too long; didn’t read”. This section is intended to show students what the input and output of a program should do, so that they can jump right in, if they feel comfortable enough to do so.

CS50 Puzzle Day Kits

150+ fully packed puzzle day kits

The start of a new school year means one thing at CS50 AP, Puzzle Day! This week, the summer team put together 150+ puzzle day kits for AP teachers. Per teacher estimates, it is predicted that over 8,000 students will participate in this year’s puzzle day (that’s a lot of puzzled students if you ask me!). If you still want to participate in Puzzle Day, no worries, you can find the puzzles, some instructions, and more at cs50.ly/puzzles-2017. Our in-house music expert, Colton Ogden, has also put together a Spotify playlist for this event, which can be found at cs50.ly/puzzle-music. Please send along any pictures you take at your event to cs50.ly/photos.

CS50 AP Portal

Some of you may have heard over the summer, at workshop or through word of mouth that we would be revamping the CS50 AP site to allow even more customization and even allow you to write your own HTML and CSS if you so chose. However, since this is one of the bigger projects we’ve bitten off, it hasn’t reached completion just yet. With that said, all the curricular resources (new and old) will continue to live at cs50.harvard.edu/ap. When the new and improved sites do get launched, we’ll be sure to send out a post showing you how to use it and its various features.

Major CS50 IDE Updates

Check50

We’ve rewritten check50 to make your experience and students’ experience with correctness checking even more efficient and useful. When students run check50, in addition to seeing information about which checks they’ve failed, check50 will also try to advise the student as to why they failed a particular check if the software can detect where the student went wrong. Moreover, at the bottom of the check50 outputs, users will see a cs50.me link that will show a more detailed output of what went wrong, similar to the sandbox link in the original version of check50.

In addition, we’ve made check50 completely open source, so if you’ve written a problem of your own that you’d like to use check50 to grade, you can write your own custom checks for problems of your own design; the tool and checks themselves are written in Python. You can email ap@cs50.harvard.edu for more information on how to do this.

cs50.me

CS50.me is CS50’s grading and submission platform. Once you set up a course on CS50.me (get authorized here!), you’ll be able to invite students to join it. When students join your course, you’ll have the ability to view and comment on any of the assignments that students submit using submit50. When you leave a comment on a submission, students will be immediately notified via email that they have a new comment.

In addition, we’ve integrated CS50.me with check50. Every time a student submits an assignment, CS50.me will automatically run check50 on it and present the results to you, so that you don’t need to run check50 yourself. CS50.me will also automatically input a correctness score into the grade book based on the results of our correctness testing.

Here are a few screencasts from CS50’s Brian Yu to show you how these tools work. We very strongly encourage that your students use CS50.me and submit50 to submit assignments for the 2017–18 school year.

Style50

Style50 received several major improvements this summer, most notably that it now allows for automated style grading against our style guide. This fall, when students submit their code, they will automatically receive both a correctness and style score in CS50.me (you don’t have to run the utilities!). The student experience with style50 has changed quite dramatically as well. When run via the command line, style50 will display the differences between the student’s code and what a correctly styled version of it would look like. To further improve the ergonomics of style checking, style50 will be integrated into the CS50 IDE so that students can get real time feedback on their as they write their code. Furthermore, style50’s language support has expanded dramatically; in addition to C, style50 now supports Python (2 and 3), JavaScript, Java, and C++.

Reference50

If you’ve attended a workshop this past summer you already know that reference50 will be receiving a facelift! The less-comfy pages are being rewritten to present information in a more readable and accessible manner. In addition, reference50 will be expanded to provide documentation on the entire C standard library (of which it currently only covers 11 libraries). Finally, the less-comfy reference50 pages will also feature practice problems such that students can familiarize themselves with functions by using them in a context less complex than a problem set.

Practice50

When I was in high school, bell work was a pretty common practice among my teachers. We’ve gotten several requests in the past to create these bell work type problems to introduce students, all the more gently, to new and complex concepts. We are proud to introduce Practice50. For each of the modules, we’ve written some basic practice problems that allow students to explore a new topic. The idea is to present them with challenges that are fairly simple, and which test their understanding of new concepts in isolation, before moving on to the problems themselves.

The repository, with both practice problems and proposed solutions, can be found here: https://github.com/cs50/practice50. Expect a more friendly, student-facing interface in the coming weeks! Currently, the problems cover chapters 0 through 4, as well as A (managing data).

Python in CS50 AP

As mentioned above, CS50 AP will also be using Python instead of PHP in the coming year. To accompany this transition, there are also several new introductory Python exercises and new problems which will be available to mix in your curriculum. These new problems explore image manipulation, web programming, facial recognition, dynamic programming, and more!

Playbook

CS50’s own Spencer Tiberi worked on a CS50 AP Playbook, a how-to guide for running CS50 at your school. Being a CS50 AP teacher himself, he wanted to document specifics of the course like running events, grading, using course technology, and getting the class off the ground. The playbook includes a curriculum overview, info on AP CSP, grading guidelines, CS50 Events Guidelines and Culture, CS50 Reference Sheets for tools we’ve built, and much, much more.

Project 5050

Project 5050 is an initiative designed to spark discussion of gender and racial imbalances in computer science. Though CS50 is more diverse than national averages (e.g., women earn only 18% of computer and information science degrees, while women represent 36% of CS50 students at Harvard), we still face many of the same challenges in attracting diverse students at the secondary-school level. CS50 itself takes a number of steps to increase a sense of belonging among students, including sorting students into sections by comfort level and providing extra help through daily office hours with teaching staff.

This year, CS50’s production team took these efforts to a new level by way of“Project 5050.” In addition to several events slated for the fall and additional discussion of sectioning techniques, we’ve created a series of interview vignettes with people of diverse backgrounds and roles in Computer Science, ranging from a Latina economics major to a high school computer science teacher from Bangladesh to a Syrian refugee turned engineer for Microsoft, which will begin to release on August 18. In addition to inviting the viewer to see themselves in computer science through the participants, the participants in the videos help break down common stereotypes as they share their personal experiences in computer science. We hope the videos, events, and structural support will help address issues of imbalance and spark discussion in the classroom.

https://www.ncwit.org/infographic/3435

Translations

Translating CS50’s content to other languages has been a popular request over the years. Many motivated students and teachers around the world write to us offering to help with translating the content to their native language. However, managing the contributions of hundreds of people, and vetting the quality of the translations for multiple languages, has been quite a challenge. We were lacking a tool that would allow us to scale this effort. This summer, explored several tools and are focusing our efforts on one of them. This tool, Crowdin, is free to sign up for, and you can start contribution to our project right away at https://crowdin.com/project/cs50/. We hope that by leveraging our large community we can translate material both quickly and accurately.

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 the AP team 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 this school year!

Show your support

Clapping shows how much you appreciated CS50’s story.