Case Study 19: CS50 at Harvard: "The Most Rewarding Class I Have Taken...Ever!"


A case study from Game Changers

Katie Vale

A trail of colorful balloons leads from Oxford Street to the Northwest Labs building. As I head downstairs, I exchange greetings with our dean. Someone hands me a tub of popcorn, a squishy ball, and a scavenger hunt list. The room is pulsing to a techno beat, and as I scan the room I can see many of my faculty and staff colleagues, including our university president, who is having an animated discussion with an undergraduate. Is this a party? A film festival? No. This is CS50.

CS50 is Harvard's introductory course in computer science for majors and nonmajors alike. In 2002, CS50 had an enrollment of about 100 students and an uneven reputation as a course that one took with caution.1

In 2007, a new instructor named David Malan set out to reimagine CS50 and, in the course of doing so, set forth a new path for course design. His goal was to increase excitement for the discipline of computer science through improvements in both "perception and design" of the course. While the course generally received reasonable evaluations, the consensus seemed to be—regardless of which faculty member had been teaching the course a given semester—that it was demanding and not particularly inspiring.

For the new version of the course, Malan set out to retain the demanding aspects of the course, but to amp up the inspiration factor via clear educational expectations; extensive online and human-support resources; engaging, real-world problems to solve; and an atmosphere of fun both in and out of the classroom.

Around the same time that Malan took over responsibility for CS50, Harvard College was adopting a new undergraduate curriculum in general education. "Gen Ed," as it is known, seeks to connect Harvard students to their lives outside and after college. It was in this spirit that Malan designed a new CS50 that would appeal not only to CS concentrators, but also to any students who wanted to know a little more about the technologies they use every day. Thus, CS50 counts for both the Gen Ed requirement in Empirical and Mathematical Reasoning and for the computer science concentration (the term Harvard uses in lieu of majors). Recitation sections are formed by students who self-select into tracks for the more comfortable, less comfortable, and in the middle. Indeed, the new syllabus assures students that newcomers have nothing to fear about taking the course alongside lifelong nerds:

Know that CS50 draws quite the spectrum of students.... However, what ultimately matters in this course is not so much where you end up relative to your classmates but where you, in Week 12, end up relative to yourself in Week 0.2

The class is not graded on a curve, nor are there specific numeric cutoffs for grades. Each student's grade is determined after input from the teaching fellows (or TFs, the term Harvard uses in lieu of teaching assistants), who grow to know students well over the duration of the semester. CS50 may be taken either for a letter grade or Pass/Fail. The syllabus spells out the topics to be covered in every class session; explains assignment and quiz due dates, grading, and weight; and provides detailed information on how to seek help.

It is not surprising that a computer science course would make use of technology for teaching, but it is rare to see a face-to-face course invest as much in online resources as CS50 has done. Key to CS50's success has been its use of a spectrum of digital tools, including the course website; lecture, section, and seminar videos; virtual office hours; "anonymized" bulletin boards; TF-scribed lecture notes; tablet PCs for grading; an evening telephone-help hotline; FAQs; and curated links to helpful materials such as APIs, free software, and dozens of online tutorials.

The course website,, serves as the hub of all this activity. Unlike the standard-course LMS page, which is updated primarily before the semester even starts, the CS50 site provides up-to-the-minute information on assignments, sections, quizzes, and seminars. CS50 employs two multimedia producers who record lectures, sections, and guest speaker seminars; teaching fellows also record their homework-help "code walkthrough" sessions. All videos are made available on the course website within 24 hours of recording, along with lecture notes, the source code shown during the presentation, the instructor's slides and demos, and even links to the music played at the beginning and end of class.

In 2006, the enrollment for CS50 was 132 students. In 2011, after four years of reinvention and refinement, the enrollment is now at 614 students. It is the second-largest course at Harvard College and meets in the biggest auditorium on campus. Though the Computer Science Department has been thrilled with the course's expansion, Professor Malan has had to manage that growth carefully in order to preserve the "apprenticeship model"3 that ensures every student receives sufficient individual attention and coaching. As such, CS50 has a huge support staff. While Malan lectures to the entire class twice a week, fifty-one TFs hold weekly sections of twelve students. Each TF acts as a mentor for those same twelve students throughout the semester and provides extensive comments on assignments through the use of tablet PCs for grading.4 The TFs receive help from another forty-one student-course assistants (CAs) who do not lead sections but who provide additional support to students in help sessions, walkthroughs, and during the final project "Hackathon." Two head teaching fellows organize and lead the TFs and CAs, while a team of five graders, video producers, and systems administrators round out the course staff.

As part of his quest to make CS50 accessible to a wider range of undergraduates, Malan decided to increase the opportunities for students to obtain just-in-time help. Beyond the standard options of drop-in help sessions, scheduled office hours, e-mail and discussion forums, he also utilized a third-party application to permit students to approach TFs in real time via chat and VoIP. The application, Elluminate, also allowed TFs to view and edit the students' screens to provide remote troubleshooting as needed. Using Elluminate, students can log in and virtually "raise their hand"; the instructor or TF can see the order in which students arrived and handle the queue fairly. While only around 15 percent of CS50 students avail themselves of the virtual office hours, the consensus of those who have was that the system is convenient and works especially well for shorter questions.5

Malan noted that students who had grown up using iPods, e-mail, Nintendo, and texting were less than enthused by the traditional "Hello World" coding assignments. So, he set out to make the coursework more interesting and challenging for these "Digital Native"6 students by asking students to solve real problems using a variety of programming languages.7 For the first assignment, students use Scratch, a programming language developed at the MIT Media Lab. Scratch is a drag-and-drop, low-barrier, easy-to-learn language that allows new coders to create animations, interactive stories, and simple applications.8 While Scratch may appear deceptively simple, it affords an opportunity for learners to begin discussing traditional beginning-computer-science topics such as variables and loops without having to worry (yet) about syntax errors.

After mastering a first Scratch assignment and gaining some confidence, the students proceed into six weeks on the fundamentals of the C programming language. Later in the semester, the class covers web programming, mobile applications, and a brief overview of compilers and assembly language.9 Each assignment comes in a "standard edition" or "hacker edition." Students with a stronger background in computer science are invited to push themselves via the hacker-level problem sets.

These problem sets ask students to try solving problems or "reverse engineering" items that they encounter every day. These range from validation of credit card numbers to decoding forensic images of photos deleted from a flash drive, to creation of E*Trade–style financial systems to GIS mashups using Google APIs. For final projects, students are allowed to come up with their own ideas based on their particular level of comfort. To aid them, Malan provides access to as much real-world data as possible to encourage problem-based learning (PBL). He has worked with university IT staff and data providers to obtain access to resources such as dining menus, shuttle schedules, and APIs for iSites (Harvard's LMS), so that students can try their hands at writing applications that will benefit the Harvard community, such as lost-and-found applications, student organization databases, and so on. The CS50 website also has links to dozens of open APIs, data feeds, and tutorials.

To further support students working on final projects (as well as to continue their indoctrination into "geek"/CS culture), the class hosts an annual Hackathon all-nighter for students and course staff. The event begins on a Friday evening at 8 p.m.; students who choose to participate must set three goals for that evening in terms of what they want to achieve during the Hackathon. During the evening, students consult with course staff and each other in designing their final projects.

Food is served at 9 p.m. and 1 a.m., and anyone still awake at 5 a.m. is treated to a pancake breakfast at IHOP. For the past two years, the Hackathon has been generously hosted by the Microsoft New England Research Center (NERD) here in Cambridge, Massachussetts. According to one teaching fellow, the ability to spend the evening within the company's facility and chat with some of the Microsoft staff has cemented several students' decisions to continue studying computer science after CS50 is over.10

At the end of the semester, students are required to demonstrate their finished projects at the CS50 Fair, described at the beginning of this piece. This is not a course in which a student works on a final project alone, submits it to a lone grader, receives a score, and is done. On the contrary, the expectation for all CS50 students is that their project should be something to show to complete strangers, their friends, other professors, and even the president of Harvard. During the fair, students stand at a trade-show–style booth and give demonstrations of their project to all comers. Visitors to the fair can win door prizes if they visit a prescribed number of booths. Both students and visitors are plied with food and candy, and students have the opportunity to mingle with recruiters from technology companies including Google, Facebook, and Activision that are seeking summer interns. The CS50 Fair is now recognized as an annual "big event" and is eagerly attended by students, faculty, and staff.11

Student response to the reinvention of CS50 has been dramatic. Student course evaluations from 2010 gave the course a mean overall rating of 4.2/5, despite acknowledgement that the workload was heavier than in other courses.12 Sample comments from students make note of not only what they feel they have learned, but how much their confidence in their ability to tackle new opportunities has improved.13

Most well-organized course ever. So many resources on and such a good help support system that it was sometimes overwhelming.
It inspires and challenges like no other course.
In just a semester, I feel that I'm able to understand all sorts of things about computer science and have the tools to explore any number of avenues in the future.
Please take this class. Do not leave Harvard without taking it because the experience—the professor, the community, the liveliness, the pain, the triumph, the panic before Friday 7 p.m., the Fair, the Hackathon—is truly phenomenal.

Before Malan took over the course in 2007, CS50 had an enrollment of 132, 34 percent of whom were female. In the span of four years, class enrollment has soared to over 600 students, although the rough gender split of 65/35 still exists.14 Although the male/female ratio has stayed roughly the same, huge growth has been seen in the number of students—particularly female students—choosing computer science as a primary or secondary concentration. In the class of 2006, twenty-five students chose computer science as a primary concentration, with two marking it as a secondary. Of these, only three were women. For the class of 2013, fifty-one students have chosen computer science as a primary concentration, twenty-one of them (41 percent) women. (Secondary concentration data for the class of 2012 and 2013 is not yet available, but the figure was 40 percent for the class of 2011.) As a result, the department has seen increased enrollment in CS51, the follow-up course to CS50, and has also begun developing new next steps for students who have taken CS50.15

The wider campus, too, has seen what we have dubbed "The CS50 Effect." Pragmatic changes to the IT and classroom infrastructure have occurred due to the needs of the course. In Fall 2011 wireless connectivity was increased in areas that included dining halls, house (dormitory) lounges, and even Harvard Yard to accommodate the fifty-plus class sections of CS50 as well as other subjects. New initiatives in learning-space design have been launched both to support CS50 and to afford other faculty opportunities to experiment with active- and problem-based learning. A student group, HackHarvard, has begun a January-term course on extending one's CS50 project into an actual product; the group receives support from HUIT Academic Technology and the Harvard Business School Innovation Lab.

To sum up, CS50 achieved this turnaround not through the mere adding on of a particular educational technology, but through Professor Malan's careful reimagination of the course, beginning with clear pedagogical goals and a desire to include those not formerly nerds. He achieved this through

  • lectures, sections, seminars, and help sessions videotaped and made available online;
  • inclusion of enabling technologies for online office hours and grading via tablet PCs;
  • provision of extensive online open educational resources and tutorials;
  • use of problem-based learning, real-world examples, and apprenticeship models to motivate and support students of different backgrounds; and
  • fostering a sense of excitement, camaraderie, and encouragement within the course through events such as the Hackathon and CS50 Fair.

At Harvard at least, it is clear that CS50 is changing the game of what a course can—indeed, should—be.


  1. David J. Malan, "Reinventing CS50" (in proceedings of the 41st ACM Technical Symposium on Computer Science Education, Milwaukee, Wisconsin, March 10–13, 2010), Gary Lewandowski, Steven Wolfman, Thomas J. Cortina, Ellen L. Walker, and David R. Musicant, eds. (New York: Association for Computing Machinery): 152–56.
  2. CS50 Syllabus,, 1.
  3. David J. Malan, "Grading Qualitatively with Tablet PCs in CS 50" (paper presented at the Workshop on the Impact of Pen-Based Technology on Education, Blacksburg, Virginia, October 12–13, 2009).
  4. Ibid.
  5. David J. Malan, "Virtualizing Office Hours in CS50," ACM SIGCSE Bulletin 41, no. 3 (paper presented at the 14th Annual ACM Conference on Innovation and Technology in Computer Science Education, Paris, France, July 2009).
  6. J. Palfrey and U. Gasser, Born Digital (New York: Basic Books, 2008).
  7. S. Ahlfeldt, S. Mehta, and T. Sellnow, "Measurement and Analysis of Student Engagement in University Classes Where Varying Levels of PBL Methods of Instruction Are in Use," Higher Education Research & Development 24, no. 1 (February 2005): 5–20.
  8. M. Resnick, J. Maloney, A. Monroy-Hernández, N. Rusk, E. Eastmond, K. Brennan, A. Millner, E. Rosenbaum, J. Silver, B. Silverman, and Y. Kafai, "Scratch: Programming for All," Communications of the ACM, November 2009.
  9. Malan, "Reinventing CS50," 154.
  10. David Kosslyn (Harvard '10), conversation with author, December 10, 2010.
  11. "CS50 Fair,"
  12. David J. Malan, Fall 2010's Q Guide Results,
  13. Ibid.,
  14. CS50 Enrollment,
  15. Malan, "Reinventing CS50," 156.

Katie Vale is Director of Academic Technology in the HUIT organization at Harvard University, as well as co-chair of the Harvard Teaching and Learning Consortium. Prior to her current role, she was Assistant Director in the MIT Office of Educational Innovation and Technology. She is a 2012 Frye Fellow.

© 2012 Katie Vale

Download Resources