This shall be CS50 2016

David J. Malan

CS50
CS50
Aug 25, 2016 · 11 min read

Fall 2016 marks my tenth (!) year teaching CS50. And while each year we roll out changes to the course, with this tenth anniversary comes ̶d̶i̶a̶m̶o̶n̶d̶ ̶j̶e̶w̶e̶l̶r̶y̶! some of the biggest yet.

Background

Enrollment

To accommodate the growth in enrollment have we grown the course’s support structure proportionally, nearly each year recruiting more teaching fellows (TFs) and course assistants (CAs) to hold sections and office hours, approximately maintaining a TF:student ratio of 1:12. But the course’s demographics have been changing. Whereas in 2008 only 34% of CS50's students described themselves as “less comfortable” (with computers, the Internet, the mere idea of being in CS50, etc.), in 2015 as many as 58% described themselves as such, per the below.

Students’ Comfort Level

At the same time has attendance at office hours been rising, the result, perhaps, not only of changing demographics but of our own popularization thereof. Whereas in 2011, attendance at office hours peaked at 120 students per night (20% of 607 students), attendance in 2014 (as best I recall) topped 350 (42% of 825 students), more than might attend a week’s lectures. To be fair, not necessarily a bad problem to have, since working alongside classmates and staff on actual problems is arguably time better spent than merely listening to CS50 together in lecture. But even with as many as 30 TFs and CAs on duty at once, students might still need to wait upwards of an hour for help, since even if we spend (unrealistically) just 5 minutes per student, each of us can only help 12 students per hour.

Moreover, even with comfort levels in equilibrium in recent years, the course’s weekly workload has (unintentionally) been rising, per the below.

Weekly Workload

And noticeably fewer students have been describing the course’s assignments as “excellent,” per the below, even though 2015’s problem sets (psets) weren’t all that different from 2011's.

Assignments

But they weren’t identical. Indeed, nearly each year have we added something more to the course, particularly its problem sets, whether a new problem or resource or video. And it’s occurred to me in this, my tenth year, that we’ve never really removed anything from the course! In 2012 alone we integrated into some problem sets a series of shorts as well as check50, a command-line tool via which students can now check the correctness of their code prior to submission. Not only do those shorts take some time to watch, check50 may very well be driving students to spend more time on problem sets, since they now know (before their TF finds out!) whether bugs remain. As before, not necessarily bad problems to have, since students do find the shorts helpful and check50 useful. But, after ten years, the problem sets have put on some weight. Our own freshman 15 … or more hours per week, perhaps?

And so our new (school) year’s resolution has been to get back into shape. Indeed, this past spring, we went back to first principles, rethinking every aspect of the course’s design, taking no feature for granted, ultimately preserving what (we think!) works and changing what hasn’t. And we also focused all the more this summer on R&D, creating and experimenting with new curricula, new technologies, new experiences, and new workflows, thanks to our biggest summer team yet!

Here’s a (non-exhaustive) look of what’s new for Fall 2016.

What’s New and Why

Lectures

If only there were a way to pause or rewind! Simple though those features may be, I daresay we’ve been nearing the point for some time whereby it’s a better educational experience to watch CS50's lectures online than attend them in person. Indeed, with pause and rewind buttons accompanied by searchable full-text transcripts of lectures, variable playback speed, and hyperlinks to related resources, all of which lend themselves to more active engagement with the course’s lectures, it’s hard to argue that sitting and listening live in a theater is better. With that said, I do think there’s something to be said for the emotional engagement, if not excitement, that a shared experience affords. After all, consider the difference between attending a concert and listening to a̶ ̶C̶D̶ Spotify. (That we’ve played music in past years’ lectures is just a coincidence.) But after that initial engagement, the downsides start to kick in. Indeed, many students just want to get down to work, which, online, they can do at their own pace.

Moreover, CS50 has long been a “MW” course, meeting most every Monday and Wednesday for roughly twelve weeks. Yet those Wednesday lectures have always been awkwardly timed. Each necessarily introduces material for the following week’s pset, even though students are focused on the current week’s still. And, so, many students, rationally, simply don’t attend them. Indeed, a favorite chart from Fall 2010, thanks to Sam Moulton, is that term’s self-reported attendance, below. Notice the spikes. And how dare we hold class that one Friday!

Fall 2010

To be fair, we could become an “M” course, with twice-as-long lectures on Mondays, but odds are that would only exacerbate the effect of missing or misunderstanding some detail mid-lecture. In fact, for that same reason did we actually start to shorten in Fall 2013 CS50's twice-weekly lectures from 90 to 60 minutes each, factoring out 102 coding examples for which Sanders never felt like an optimal venue for mastery. But a side effect is that lectures since have been perceived by students as lighter, with that material no longer part of a contiguous narrative.

It’s worth noting that most students who don’t attend Wednesdays in person do watch them online. (And some do both.) And increasingly do students watch Mondays online too. Contrast the first 18 lectures (for which we have self-reported data) of Fall 2014 and Fall 2015, per the below, which captures that trend. As before, attending in person and watching (again) online are not mutually exclusive.

Fall 2014
Fall 2015

Incidentally, it’s worth noting that we appear to have data to suggest that 4% of Harvard students overstate their attendance, seeing as Fall 2015’s second lecture (week0f) took place in New Haven. Ahem. Fall 2015’s eighth lecture (week3w) was shot in a studio at Harvard (because of a scheduling change), though, so that lecture’s 0% is as expected.

The fall of blue and rise of red between 2014 and 2015 is the result, we suspect, of multiple factors (one of which could certainly be me). In filming that second lecture at Yale (so as to connect the two campuses at term’s start), we introduced more students more quickly to the course’s own videos, explicitly messaging that watching online is okay (if not superior), and more students than usual latched on to that medium. And CS50's official allowance of “simultaneous enrollment” was by then in its second year, with all the more students aware that watching lectures online is not only allowed but encouraged. Much as I missed Fall 2014’s taller blue bars, though, there continues to be little evidence to suggest that attending CS50's lectures in person improves outcomes (as we’ve long reassured in supporting simultaneous enrollment), at least as per quiz scores. Indeed, Fall 2015’s distributions of quiz scores at both Harvard and Yale were essentially the same, and only one of those campuses was local to Sanders. This finding appears to corroborate an independent finding by HILT, who looked at CS50's Fall 2010 data on simultaneous enrollment in 2012.

This is all to say that there are quite a few reasons to do things differently and, we think, better in Fall 2016.

And so in Fall 2016 will students only be asked to attend in person the course’s first lecture and last lecture, aka Week 0 and Week 11, respectively, for the shared experiences thereof. (Though students with conflicts can still watch those lectures online.) Each of Weeks 1 through 10 will be filmed a few days earlier than usual, still in Sanders, with students welcome but not expected to attend. (The onus will be on me to keep things interesting, but the team and I have practiced!) For lectures that lend themselves to audience participation will students be invited to sign up in advance if they’d like to partake. Each of CS50's twelve weeks will now comprise just one (longer, sometimes denser but pausable) lecture, the video of which will be released on a Friday to coincide perfectly with a pset’s release.

Wednesdays, meanwhile, we will reclaim, repurposing them for walkthroughs of the current week’s pset, which I’ll lead still in Sanders but down in the orchestra section. (At Yale will be similar walkthroughs on Thursdays.) The effect, we hope, will be more intimate quality time than Sanders’ stage traditionally allows. For students who are not able (or ready) to attend will we continue to embed (new and improved versions of!) Zamyla’s own walkthroughs in the psets themselves.

Problem Sets

Much of the weight that psets have packed on in recent years will also be shed, with psets rewritten to be no less rigorous but still trimmer, with less front matter like shorts and less tl;dr. And instead of a “standard edition” and “Hacker Edition,” problem sets will now offer a mix of “less comfortable” and “more comfortable” problems from which students can choose, depending on their own comfort therewith. In years past the editions were mutually exclusive, whereby starting and potentially not finishing a Hacker Edition was an unnecessary gamble.

Sections

In Fall 2016 will sections now be offered on Mondays, Tuesdays, and Wednesdays, thereby allowing students at least a full weekend to watch the week’s lecture, with office hours additionally available thereafter.

Office Hours

In Fall 2016 will course-wide office hours be offered on Wednesdays and Thursdays at night (after all sections have wrapped) and on Sundays during the day, thereby concentrating more staff at once on fewer days and nudging end-of-week opportunities for help toward less stressful afternoon hours. And the course will now offer lower-key office hours nearly every day atop HSA in Burke-McCoy Hall, where students will be able to drop in for help with a pset (a la the Math Question Center) from an on-duty CS50 TF or CA, particularly between classes, when all they might need is an answer or two in order to unblock an otherwise productive afternoon or evening of psetting.

Source: HSA

CS50 IDE

CS50 Coding Contest

Python

In Fall 2016, we’ll preserve that overall arc but replace PHP with Python, with Problem Set 0 focused on Scratch, Problem Sets 1 through 5 focused on C, Problem Set 6 focused on Python, Problem Set 7 focused on Python and SQL, and Problem Set 8 focused on JavaScript. It’s time.

CS50 VR

kthxbai

FAQs

Acknowledgements

And special thanks to CS50's friends at Cloud9, DCE, Facebook, HackerRank, HCL, HSA, Microsoft, Nokia, Oculus, RED, SEAS, TECH, and Yale for their support of all this and more.

CS50

Written by

CS50

Harvard’s introduction to the intellectual enterprises of computer science and the art of programming.