What is CS50/CPSC 100?

CS50 is an introduction to the intellectual enterprises of computer science and the art of programming. It is run jointly with Harvard. Although it is officially listed as CPSC 100 here at Yale, we typically refer to the course as CS50. The course is designed for majors and non-majors alike, with or without prior programming experience. Topics include abstraction, algorithms, data structures, encapsulation, machine learning, resource management, security, software engineering, and web development. Languages include C, Python, SQL, and JavaScript, plus CSS and HTML.

Which languages will I learn?

Rather than teach just one language, CS50 introduces students to a range of “procedural” programming languages, each of which builds conceptually atop another, among them Scratch, C, Python, and SQL. Via the course’s end-of-term “tracks” will you learn a bit about Java, JavaScript, Lua, and/or Swift (each of which can be described as an “object-oriented” language). Via one of the course’s end-of-term tracks can you also learn a bit of HTML and CSS (which are languages but not programming languages). The goal, ultimately, is for students to feel not that they “learned how to program in X” but that they “learned how to program.”

Who teaches CS50?

CS50 is led by Harvard Professor David J. Malan, who has taught the course at Harvard since 2007, and Yale Lecturer Ozan Erat. Working alongside Dr. Erat and Course Manager Cody Murphey to bring CS50’s culture to life is a team of about 40 undergraduate learning assistants (ULAs) who hold office hours, lead sections, and assist in evaluating students’ work.

Should first-years take CS50?

Yes, if they would like! First-years regularly compose a plurality of CS50’s student body. We simply encourage all students—including first-years—to be mindful of CS50’s workload (12+ hours per week) and of the number of problem set-based courses in their schedule.

I’m a grad student. May I take CS50?

Thank you so much for expressing your interest in CS50—we’d certainly love to have you in the course! Graduate and professional students are allowed to officially enroll in CS50 and receive credit towards their degrees; however, in most graduate and professional schools, students may only receive credit if said course credit has been authorized in advance by one of their deans. Thus, we highly recommend that you reach out to your school’s administration now just to double check that you’re all good to go!

In terms of credit for your degree, Yale College courses typically carry 4 units of credit (at least that’s the case at SOM). In addition, enrollment in undergraduate courses typically requires additional work for the graduate and professional students of the course. In CS50’s case, the “additional work” we expect of these students is that they complete a project whose scope is 50% greater than what is expected of undergraduate students. (Final project information is discussed in the syllabus and will be outlined in even greater detail during the latter half of the course.) This requirement for graduate and professional students, we have found, often aligns nicely with some of their reasons for taking the course; namely, that they’ll learn some of the foundational computer science and programming skills necessary to implementing an idea they’ve developed while at school.

Please also remember that this is an introductory undergraduate course, which means it has a steady workload of weekly problem sets. Collaboration is more restricted than in most graduate courses, so be sure to pay close attention to the Academic Honesty policy on the course syllabus. We will typically allow graduate students one free extension on a pset, but you must email heads@cs50.yale.edu in advance to request it. Last-minute and after-the-deadline requests will normally be denied unless you have documentation of an emergency. We will respond more positively to extension requests if you have a track record of strong participation, including completing work, and attending section and office hours regularly.

If you have any additional questions, please don’t hesitate to ask!

What about EMBA students?

We’re happy to have you in the class if you are going to be able to come to one of the sections on a weekly basis and will be able to attend some office hours regularly. In Fall 2023, sections will be at a range of times throughout the day on Tuesday and early on Wednesday mornings. There will be office hours available many afternoons and evenings during the week, and limited office hours on weekends. Lectures are delivered online, so you can watch them any time, anywhere.

If you are not based in the New Haven area and able to participate in the class throughout the week, we strongly encourage you to investigate the free, self-paced edX version of CS50. We won’t be able to offer you additional support over the online version and will need to hold you to much stricter deadlines. You will therefore likely be better served taking a different course for your EMBA program and taking CS50 on your own.

What are CS50’s prerequisites?

None. You may take CS50 regardless of previous computer science experience, inside or outside a classroom. In fact, over 2/3 of CS50 students have never taken a CS course before!

Does CS50 fulfill a QR credit?


Can students take CS50 Credit/D/Fail?

Definitely! Taking CS50 Credit/D/Fail is a great way to gain a strong foundation in CS without feeling as much of the pressure surrounding letter grades.

What about CPSC 112 and CPSC 201?

In the Fall, CPSC 112 — Yale’s introductory CS course in the object-oriented programming language Java - is not offered, but CPSC 201 — Yale’s introductory CS course geared towards those with significant incoming programming experience — is offered. Unlike CS50, both courses are offered in the Spring. Many students choose to take CS50 in the Fall, followed by CPSC 201 in the Spring.

If you’re not sure whether to take CS50 or jump straight into 201, shop both. If you have some programming background and feel that 201 is in reach, we encourage you to take the plunge; you’ll still learn a lot in CS50, but you have to balance this against the extra upper-level elective you’d otherwise take down the road.

What’s it like to take CS50?


Lectures are online and asynchronous. They will be posted weekly to the course web site. You are required to watch them ahead of your section.


CS50 sections are at the heart of the course. Led by CS50 TAs, sections are 110 minutes long and take place at a variety of times and days during the week. The TAs who lead your section will also evaluate your weekly problem sets and serve as a go-to resource for any and all questions, comments, or concerns.

Office Hours

CS50’s office hours are opportunities for you to receive additional guidance on course material and problem sets from the course’s TAs and Heads, as well as to work in a communal environment with your peers! Office hours take place on multiple afternoons and evenings throughout the week.


CS50 hosts a number of exciting events throughout the fall that will allow you to better connect with your peers and the course’s staff as well as dive more deeply into the world of computer science. CS Lunches bring together students, staff, and our friends in companies throughout the industry. CS50 Puzzle Day at the start of the term, the CS50 Hackathon (an epic all-nighter!), and the CS50 Fair at term’s end help make the course an unforgettable experience.

What do students say about the course?

“Best class I have taken at Yale. 100% would do it again. It teaches computer science in an engaging and interesting way, making problem solving sexier than traditional computer science courses. The support system is great (TAs, professors, and assistants).”

“A time­consuming but extremely rewarding course. Will make you love computer science, despite the long and arduous [problem] sets. This course doesn’t just teach programming, it teaches computer science. I would absolutely recommend it because if you want to do well you have all the resources you need: from discussion forums to nightly office hours with outstanding TAs, this course gives you so much support.”

“CS50 is a fantastic class, appropriately challenging, and harnesses the most positive characters of the student body towards a collaborative and social learning experience that is both efficient and rewarding.”

“Definitely take—it’s very important to have coding/comp sci skills, and this is the best class to teach you.”

How difficult is CS50?

For many students, CS50 is simply more time-consuming than it is difficult. Starting each week’s problem set early, then, makes things easier! And the course’s difficulty was also recalibrated back in 2016, per the data from Harvard below.


How much work is CS50?

Although the course’s workload had been on the rise in recent years, the course’s workload was recalibrated back in 2016, per the data from Harvard below.


By mid-semester, most students spend 10+ hours per week on the course’s problem sets, but it definitely varies by problem set, per the below data from Harvard, and student.