FAQs

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 Benedict Brown. Working alongside Dr. Brown and Course Manager Cody Murphey to bring CS50’s culture to life is a team of about 40 undergraduate course assistants (CAs) who hold office hours and teaching assistants (TAs)—undergraduate and graduate—who also lead sections and evaluate 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 2019, 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?

Yep!

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 geared towards non-majors—is not offered, but CPSC 201—Yale’s introductory CS course geared towards majors—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

CS50 officially meets on Thu 8/29 and Thu 9/5 from 4-5:15pm in SSS 114. You are expected to attend both lectures unless you have a conflict with another class. All other lectures are available via video, released weekly in conjunction with problem sets.

You are welcome to sign up for CS50 even if you have another class that conflicts with the Thursday lectures. The course time is listed as “3HTBA” for course registration to make this possible.

Sections

CS50 sections are at the heart of the course. Led by CS50 TAs, sections are either 90 minutes or 110 minutes long to accomodate different comfort levels 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.

Events

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. Every Friday, 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.

difficulty

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.

workload

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

hours

Note that, in Fall 2018, Problem Set 3 proved more time-consuming than intended.