The Peterman Post
The Peterman Pod
Harvard Professor: CS50, What Matters More Than CS, Lecturing Well | David J Malan
0:00
-1:04:30

Harvard Professor: CS50, What Matters More Than CS, Lecturing Well | David J Malan

David J. Malan is a Harvard professor known for turning CS50 into a popular online computer science course. We discussed the story behind CS50, how to lecture well, and how AI is changing CS education including in cheating/academic dishonesty.

Check out the episode wherever you get your podcasts: YouTube, Spotify, Apple Podcasts.

Timestamps

1:09 - Getting into computer science

3:27 - Becoming the professor of CS50

11:19 - How to lecture well

14:25 - Depth vs engagement in education

18:11 - Why don’t we consolidate educational resources

23:20 - Why start with C

31:51 - The ideal use of AI in education

34:54 - Cheating and AI

38:21 - Should we really learn CS still?

45:24 - College vs online education

47:06 - The most difficult concept to learn

51:00 - Growth vs fixed mindset

52:35 - The future of CS50

55:56 - Biggest career regret

1:00:29 - Top book recommendations

1:02:36 - Advice for his younger self

Transcript

1:09 — Getting into computer science

David:

[1:09] Yeah, it’s a really good question. So I was that problem set. My first hello World program was in September of 1996 when I first stepped foot in a class called CS50. I was a sophomore at the time and hadn’t honestly gotten up the nerve until sophomore year to even consider taking the class. Like when I came into college first year. And this is a story I tell at the very start of CS50. Most years I really gravitated toward fields that were more familiar, more comfortable for me and I share with students that I really liked Constitutional law, like that was my favorite class in high school.

[1:41] And I figured that meant when you get to college I should probably major or concentrate as we say at Harvard, in government. And so for the first year, year and a half, I was heads down focused on studying government. But when I finally got up the nerve to follow some friends, I think into the CS50 classroom that day when this very well reputed computer scientist Brian Kernahan was at the helm for just that one year, I was totally hooked.

[2:05] And it was the first time in like 19 years that homework was fun. So much so that when the week’s problem sets or assignments would come out, I would look forward to going back to my dorm on Friday evenings to work through the night on my CS50 problem sets. So I felt like that was a sign that I’m supposed to study computer science.

Ryan:

[2:22] And I, I saw on that assignment it says minus two and this little there’s a little note there that I actually couldn’t quite quite make out. Looking back now as the teacher, why did you get a minus two there?

David:

[2:35] It was something stupid and very easily redressible. But I did not start off computer science or CS50 on the best foot. I got -2 out of probably 2 points on hello World.

Ryan:

[2:46] I transcribed it and I tried to compile your program and it didn’t compile interest.

David:

[2:52] Okay, so thanks, 30 years later I learn it should’ve been minus 3.

Ryan:

[2:55] Actually I was able to compile. It’s kind of interesting, but you have to kind of force the compiler to do your bidding. It’s like void main and you’re supposed to be like int main typically.

David:

[3:09] Typically. Now it has since been standardized in C99, which was in my defense a version of C that did not exist in 1996. And nowadays we use C11 or newer in CS50, so you probably had default compiler settings on that did not like that old fashioned main signature. In my defense, that part was correct.

3:27 — Becoming the professor of CS50

Ryan:

[3:27] In 1996, what was the the story behind you going from a student to the teacher?

David:

[3:34] Eventually I had an opportunity my senior year of college to teach an introductory course in computer science at Harvard’s Extension School, which is the continuing ed program largely for adults. The course was literally called Introduction to Computers and the Internet, because in 1999 we were still in the habit of introducing people to computers and the Internet as opposed to taking it for granted more so nowadays.

[3:54] And it was me. In a room full of hundred or so adults, I was easily the youngest person in the room at like 21 years old. The story I usually share is that that was the first and last time I wore suspenders because I was so determined to project being older even though I was still just a senior. But that really whet my appetite in turn not only for more computer science, even though that was very introductory and more technology focused for teaching.

[4:19] And over time I real over the next few years I realized that doors would be closed to me if I wanted to teach at a place like Harvard College. And I eventually returned to Harvard to do my PhD for five years in computer science. And then in 2007 when I was finishing up, the former professor, my own advisor, was moving on to be dean of the school. And so there was this vacancy at the helm of CS50 and I somehow talked my way into the job.

[4:43] They were interested in having a senior faculty member take over the course. I guess they weren’t able to find someone that first year, so I was meant to fill in for just one year until they found someone else.

Ryan:

[4:57] when you took over CS50. It feels like the course completely changed when you got into it. Was your first thought, I want to take this online and kind of make all these major changes, or was that a process over time?

David:

[5:14] Very much a process. And so what people see now is really a evolution of the class, as opposed to some overnight revolution, so to speak. The online aspect really started with Harvard Extension School, since I was fortunate right place, right time to be teaching that extension school course my senior year, when distance education, so to speak, was becoming a thing. And my mentor and boss, Henry Leitner at Harvard, offered me the opportunity not only to teach this class, but also to put it online, I think in the year 2000, give or take.

[5:43] The very first year I taught it, spring of 1999, we were still filming the class, but on VHS. And fun fact, at the time, it was the course’s teaching fellows who were, in fact, my friends, who were also undergraduates at the time, who, who were doing the filming and operating a tripod with a camera. And I swear to God, we still have footage, probably on some VHS tape of one of the cameras going when one of my dear friends and teaching fellows fell asleep during the middle of class.

[6:08] So we’ve aspired to higher production value since, but it was really, it happened very organically. So once we started participating in the extension school’s online education program for several years, Apple released the iPod around 2003 or 4, give or take. And so at the time, we were distributing the course’s video via real video and or real audio, which are older technologies now, but were state of the art for streaming at the time.

[6:35] We figured out a way how to sort of download all of those bits for redistribution as MP3s initially and put them on itunes, which back in the day you could upload, and maybe still today, your own RSS file, which is a flavor of xml, which is kind of similar to HTML, but more custom, that just describes what and where your audio files are. And we made this available primarily for our own Harvard Extension School students, because at the time, even though it was very progressive to have streaming, it was a little annoying that you needed a constant Internet connection.

[7:03] Buffering hadn’t really been invented yet. Certainly downloading those videos was, by design not possible. But with podcasting, of course, you could download the assets in advance. And for our own students, the vision was that they could listen to the class only on audio at the gym or during their commute and just generally make the educational Content a little more accessible. A year or two later, Apple released the video ipod.

[7:24] And so we very much steered into that and downloaded those same assets, but in video form, to make them available on the video ipod and people’s Macs and later PCs. And we were fortunate around that time, early 2000s, where Wired magazine took notice and noted for us that we were among the most popular podcasts in some category. And it was kind of news to us that people cared. We did know that we were starting to see bandwidth problems at the very early days.

[7:50] In the very early days, we were using Dreamhost to host the MP3 files. And Dreamhost had, I think, free accounts, but only up to some number of megabytes per month. And we kept hitting the threshold. And so what we would do is sign up for another DreamHost account, another DreamHost account, another Dreamhost account. And we would use, like, DNS trickery to just reroute the URLs in the RSS file to the new web host to keep up.

[8:14] And so that’s when all of our attention sort of was drawn to the possibilities and that we can make available this content not just for our own students, but for anyone else who either geographically, socioeconomically, couldn’t access that same kind of class.

Ryan:

[8:29] I see. So the idea was it was a supplementary material for people who had paid for the Harvard Extension School and then. But other people just open on the Internet could listen if they wanted.

David:

[8:41] Yeah. And that alone was a touchy subject on campus at first, because here we were giving away the very thing that other people were paying for. But at the end of the day, what people are paying for is the additional support structure you get in a more traditional environment, the more traditional credentialing, the transcript and the credit and so forth. But the knowledge itself, it does society no good to withhold that.

Ryan:

[9:01] I think so. I think this is a brutal reality of making content on the Internet. There’s so much competition for attention that all the content has to kind of hook people. Let’s say you’re scrolling on. On Instagram. That first second’s really got to capture someone, otherwise you’re going to go to the next one. And I’m curious, because you are making content for the Internet with these lectures that you post online.

[9:27] Do you think about, how can I, you know, hook the audience? Does that ever factor into your. Your lecture design lectures?

David:

[9:35] No. Some of our social content, yes. Insofar as we are producing, in addition to the courses traditional in classroom content, things that are designed clearly for social media, whether it’s interviews, for instance, whether it is excerpts from CS50‘s Fair, this exhibition of final projects, whether it’s steering in the directions of some popular meme just to sort of catch the attention of our own students or new students.

[9:58] But we have been very deliberate over the years from the beginning and especially since the age of the MOOC in 2012 when Coursera and EDX and other platforms were coming around to not steer into this bite sized 3 minutes, 5 minute chunks that I know there is data to confirm that it drives engagement but not necessarily educational outcomes. We have fairly unusually in recent years stuck to the more traditional model of like CS50.

[10:27] Lectures are like three hours long. And there are downsides to that. Absolutely. But ironically, online you avoid some of the in person downsides because you can pause and rewind and fast forward, you can search for something, open another tab, go down this intellectual rabbit hole or rewind to figure out what it some detail you missed. I mean I, I can’t even count how many times in college, high school, more generally that I’m sure I zoned out.

[10:51] And it’s too often the case that if you miss some detail you’re now you might as well leave the class at that point. And like online solves that for you. And I haven’t seen a need pedagogically for us to break up the content into such small pieces and to sort of take that ownership away from the students. I think we’d prefer that they meet us halfway. And if you need to take more than three hours to watch the lecture, that’s totally fine.

[11:15] But it’s not designed for scrolling type consumption I would say.

11:19 — How to lecture well

Ryan:

[11:19] Right. What about in the, in the idea of like a long video, there’s still this concept that you kind of want to keep people engaged. And so how do you keep people engaged for a three hour lecture?

David:

[11:30] Yes. So that we are very conscious of and the way we’ve generally described that is trying to create memorable moments. And this is not for social media. This is as much for the in person audience as it is for the online audience. And by memorable moments I mean in like CS50‘s first lecture we do this bit where I’ll tear a phone book in half to demonstrate the performance of something called binary search and algorithm for finding information more quickly than linearly searching the phone book one page at a time.

[11:55] And that’s really just to be dramatic. It has less and less impact these days because most students of school age are no longer familiar with the Technology known as a phone book. But it’s literally analogous to the digital form in iOS or in Android, of course. And so it doesn’t take a huge leap for someone to realize, okay, this is the physical incarnation of that, and it’s just kind of fun, even though it’s getting harder and harder to find the actual phone books.

[12:19] When we get to searching algorithms and sorting algorithms, we very often have a student come up on stage, for instance, and for sorting or for searching, we have a whole bunch of like gym lockers, small versions thereof, that we put numbers in, either on printed paper or little plastic numbers. And the goal is to have a student like, find the number 50 or some other number that we’ve hidden behind the doors.

[12:38] And it’s an opportunity just to talk about either searching the doors linearly, left to right, right to left, maybe randomly, maybe more methodically as via binary search. If the numbers are sorted, that then leads us to opportunities to talk about bubble sort and selection, sort and insertion sorts. Algorithms that you probably wouldn’t bother implementing or using in the wild because there’s more performant ones certainly.

[12:59] But we use them as these pedagogical tools to explore the. The problem to be solved, which is, all right, I can only use binary search if the data is sorted, so how do I sort it? And how expensive is that going to be worthwhile, the whole process in the get go? And so we’ll have eight students come up on stage and sort themselves physically and really perform in certain ways. And there’s so many examples of that through CS50, we try to do at least one such thing every class.

[13:25] I mean, not unlike the way John Oliver, for instance, ends last week. Tonight we’re trying to do some big song and dance, which ironically is always at the end as the hook. We do try to put it maybe toward the beginning of lecture or in the middle, but that’s not just for engagement and not to make, to keep folks attention, but really to latch onto their memories so that even if you’re in the weeds of this introductory computer science course, there’s so much new information, it’s the proverbial fire hose hitting you in the face you can cling to.

[13:52] Okay, all right. I remember like my. My roommate was literally the one on stage acting out bubble sort. And you can kind of picture in your mind’s eye what was happening. Or that phone book example is a perfect one that years after leaving Harvard, we have alumni coming up to us and saying, oh, I still REM the phone book demo. And those memorable Moments, ideally theatrical in nature, I think are what brings material, whether it’s CS or something else, to life.

[14:16] But that is very much to engage any learner, present or remote, as opposed to being optimized for some technology.

14:25 — Depth vs engagement in education

Ryan:

[14:25] One thing that I, I wonder because computer science is such a dense topic where I guess there could be a trade off with, imagine another style of lecture is, you know, there’s a chalkboard and you’re up there kind of blandly writing out all of the information. I, I could imagine you could go through much more depth in that case. Do you feel like there’s any trade off there?

David:

[14:52] Absolutely. I mean, this is a criticism we get from some students, particularly those with prior background or among those more comfortable where do we really need 10 minutes on linear search or you know, another 15 minutes on binary search? And the answer is quite clearly no for those students. And even for most students, I would say we do spend a disproportionate amount of time on certain cherry picked topics that we do think lend themselves to this theatricality for really getting students interested in fundamentally and excited by the material to help motivate them the rest of the week when they’re going to be spending 5, 10, 15, 20 plus hours on some weeks assignment and to help them see sort of the forest for the trees, like what is actually important and meaningful and fun about this.

[15:34] Because it’s probably not the keystrokes and the debugging and the lower level implementation details. So we talk about this actually in a paper, in a talk we gave at a CS education conference a few years back, trying to find that balance between the theatricality and the density of material. But to your question about dryness, I mean, I would like to think that dryness really has no place in most forms of education because then it could have been a book or it could have been an email if it’s just someone reciting words, worse, writing things down in ways that aren’t at all interactive, like do we really need to be all in this room together?

Ryan:

[16:13] design to me in my research. And looking at the reception of CS50 and people’s perspective on how you are as an educator, they absolutely love your energy and like your delivery. Do you rehearse that or is that something that you always had as an educator?

David:

[16:31] Yeah, I think it’s just sort of the expression you got to bring your A game when you get up onto stage. And I think a lot of it honestly comes from a place of insecurity. Like I really don’t want to be the one on stage in front of a bored audience, like no one wants to be in that situation. And so I think a lot of the energy that I try to bring to bear and the excitement I show is really meant to one, make sure people want to be and stay there for the duration of the class, whether it’s short or long.

[16:56] And also help them see the excitement in and the possibilities of, and the applicability of a field that I myself have fell in love with so many years ago. Because then they can decide for themselves if they feel that same emotion, if they too look forward to going home to their dorm or their home on Friday nights and working on programming assignments, of all things. But I feel like we certainly owe them, and I think teachers owe students more generally educationally, the opportunity to make that decision for themselves and to put forward our best foot, or to present the field in the most exciting, inspiring way that we can, if indeed we think it’s important that other people after us study and research and apply these fields.

Ryan:

[17:40] I noticed this dichotomy in education when I was going to ucla, which was there were roughly two types of professors that I had. There was one type of professor that was beloved by the students and really passionate at educating and kind of involved. And then there’s this other type of professor which was really they might have been really incredible and impressive as researchers, but their classes were really poorly rated by all the students.

18:11 — Why don’t we consolidate educational resources

[18:11] And with the online education that we can do today, I mean, like CS50, all the resources are available. I could imagine that objectively we could take the people who are most passionate about teaching and give it to everyone, rather than having some teachers that are not excited kind of consolidate. Imagine taking the world’s best instructor and giving that to everyone. Why doesn’t consolidation happen if we have all the technology for spreading literally the world’s best resources to every situation?

David:

[18:41] Yeah, that’s a good question, since I think our own goal is certainly not to put out of business other educators, other classes. However, as a computer scientist, I would be among the first to notice that there’s a huge inefficiency in the way education broadly works, not only in this country, but presumably internationally as well, whereby you have hundreds, thousands of teachers essentially all doing the same thing in parallel, and not necessarily the meaningful part of interacting with and uplifting and mentoring students, but like preparing their presentations or their lecture notes, or writing the assignments, or grading that work.

[19:17] There’s so much meta work involved in education that probably doesn’t need to be borne by so many people that the computer scientist in me invariably wants to factor that out somehow. And so I absolutely think that we, educationally, as universities, as schools, should be leaning on each other much more. I’d like to think that’s a lot of what drives us in terms of CS50‘s own mission and the work that we do.

[19:39] But we too have encountered frictions along the way. It was very unusual, for instance, for 10 years that we were collaborating with our friends down the road in New Haven at Yale University where we were offering CS50 on both campuses in parallel. And more recently we’ve been doing this with some of our friends at Oxford and lifelong learning group there. This is very much still the exception to the rule.

[19:59] Unfortunately, even after 10 plus years of MOOCs massive open online courses, I dare say a lot of institutions, a lot of faculty are very set in their ways. In fact, one of my regrets of the COVID era was that we had this unprecedented opportunity now and almost mandate to move everything online. And we therefore had this opportunity to say, hey to Harvard students, why don’t you take this Stanford course or this UCLA course or this Yale course, or this MIT course that you couldn’t necessarily take in person for lack of transport or for lack of safety at the time.

[20:32] And I could get no one on campus to, to get on board with this idea of maybe offering one computer science course on this campus and let the other students take it. Then you offer, as we did at Yale, like a digital humanities class on some other campus and let the Harvard students take it. And there’s just not much of an appetite, I dare say, in higher education, if not education writ large for that resource sharing.

[20:54] And I think there should be, I don’t think there should be one computer science course, introductory course. I think some healthy competition is a good thing. I don’t think there need to be thousands, probably not hundreds, maybe dozens, from some of the best teachers. The best schools would probably benefit us all if those same teachers then were not put out of work, but then could lean on each other, use some of the materials we’ve created, adopt or as we say, adapt some of our own resources and treat education as a buffet of educational materials that you can then make your own without having to do so much of the same legwork and reinventing wheels across school and state lines.

Ryan:

[21:32] The mindset that you said, the computer scientist mindset of getting rid of the redundancies and kind of consolidating resources, I mean, it’s immediately logically obvious to me. But what would like, let’s say there’s three top courses in America. There’s like MIT‘s, there’s Stanfords and there’s Harvards and they want to give that to other institutions, like, I don’t know, other colleges. What would stop those colleges from taking an objectively better set of resources and giving that to their students?

David:

[22:10] I sense, but I would defer to others who hold these views that there is a concern that maybe we are putting ourselves out of business or there’s more of a school pride. And I definitely saw some of that on Harvard’s own campus where like, no, no, no, no. We should be offering courses to our students that we have created and that we are teaching and not lean, for instance, on our friends down the road at MIT who have and have for decades had a larger, richer course catalog than us, simply by nature of being a bigger place, at least for computer science.

[22:40] And it seems silly to me not to lean on each other. Maybe each of us can specialize a bit more. Maybe each of us can offer slightly different modes of instruction for students. Maybe that’s a little more intimate on this campus versus that so as to really leverage shared resources. I mean, this is done endlessly in research, having cross campus collaborations and there’s something very personal about or very fundamentally threatening.

[23:07] I think about leaning on each other educationally. And I wish people would move away from this mindset because it doesn’t mean some failure of the institution to offer these courses. It means we can do a better job offering what resources we do have.

23:20 — Why start with C

Ryan:

[23:20] I would like to think in designing the curriculum for CS50, how did you pick C for instance? Because I think a lot of people would look at that decision and think, I’m not going to use C in my day to day full stack job, so why do I need to learn this?

David:

[23:36] Sure. So it was not picked by me per se, but I chose to keep C in the course certainly since as far back as 1996 when Brian was teaching it, Professor Margo Seltzer before that and many other faculty prior to me and them. It is a wonderful foundation on which to build your understanding of how a computer works and how software is built. It’s about as close as you can get to the hardware before things devolve, at least aesthetically into assembly code, which is much scarier looking code.

[24:07] I think for most people, almost everyone perhaps, and certainly beyond that is zeros and ones, which is not going to be fun for anyone. So C kind of strikes, I think pedagogically this really nice balance of having English like syntax and abstractions on top of lower level primitives that allow you to explore procedural programming in particular with some fundamental constructs that are now fundamental to those kinds of languages.

[24:34] Loops and conditions and functions and variables and return values and so forth. It’s sort of got, it’s got everything, but it’s also a pretty small language and unless you download third party stuff, there’s not a very large standard library in fact. So most anything you want, you need to build yourself. And so we leverage this significantly in CS50. So much so that by mid semester in week five of the class, students are building their own hash tables.

[24:56] And we’re talking about how you could construct singly linked, doubly linked lists, hash tables and tries trees, abstract data types like stacks and queues and so many more. And what I think is especially meaningful about C is that you can’t just instantiate one of those data structures if you want one, like you can in Java and C with STL and certain other libraries. Like if you want it, you’re going to have to build it yourself.

[25:18] And I think that alone is a good educational exercise. Not because you’re going to need to build that thing again, but because there’s value, I think, in really understanding from the bottom up what is going on inside of that device. So that one, you can make more informed decisions as to how you want to engineer and design your own data structures down the line. Two, you can diagnose problems by reasoning through first principles what could possibly go wrong because you understand how the data is being stored and what the algorithms are that are performing on that data.

[25:50] And three, it’s a wonderful scaffold to higher level languages because one of my favorite things from week 5 to 6 in CS50 is students go from having written in week 5 like their own hash tables implementation for adding data, retrieving data and so forth, which is like this many lines of code for some font size and it gets whittled down in week six to one line where you just instantiate a Python dictionary and you can be productive with a dictionary.

[26:17] And many courses do teach programming by way of Python alone. And we too have done it for some of our audiences. But you really never get around to understanding what’s going on underneath the hood. And our goal in CS50among them is not to output programmers, but engineers and educated citizens and folks who really understand from first principles how technology works. And so C for instance, strikes I think, just that right balance.

[26:42] And for those students who want to go even deeper in a systems class, they can go learn about assembly and compilers and so forth. But those students who want to go on to web programming or data science stuff or AI nowadays can just build on top of the C and then in turn Python layers that we use in the class.

Ryan:

[27:50] This is not my perspective, but I was doing research and I saw a YouTube video. It said, Whatever you do, don’t take CS50, clickbait, whatever. Yeah. So I watched the video and the person. So it worked. Yeah, it got me. It got me. And the perspective of the author of this video was that CS50 teaches you all this stuff that you don’t really need to know if you were like a full Stack engineer or something.

[28:15] If you, if I was just going into the industry and I’m just making web apps that a lot of this underlying stuff you might not need and maybe it’s not a good use of time. And I’m curious what you would say to someone that has that mindset that you don’t need to actually know how the computer works.

David:

[28:35] I don’t want to get into a whole Internet fight here, but I think that is absolutely the wrong mindset, certainly for a full stack engineer. I mean, by definition a full stack, you should be understanding everything that’s happening among those layers. So I think the better formulation isn’t that you don’t need to know these things, but rather you won’t need to use these things. Use in a literal sense.

[28:56] Like I don’t. My C is a very popular language, even according to some rankings each year it’s, you know, the number one, number two language in terms of its omnipresence still to this day because it’s very highly performant, albeit more challenging to write than some languages. I only use C for five weeks during CS50 itself, but that doesn’t mean that it hasn’t helped me understand higher level languages.

[29:19] What is going on inside of a system, how you can improve the performance of or the design of some system by understanding again those first principles. I don’t use Scratch except for one week out of the year. I do use Python more frequently and I use JavaScript and some HTML and CSS. But I think if you’re going to call yourself an engineer, you should absolutely have mastery of and knowledge of those underlying building blocks if you want to not just output something that frankly AI could output nowadays, but you can understand and you can create the next thing or the solution to some other problem that we haven’t even yet solved.

[29:57] I think that’s the better mindset to appreciate. Yes, I’m not going to need to use Scratch or C or maybe some of the other things we touch on in CS50, but the knowledge and the principles that we extract from those implementation details are incredibly valuable if you want to be an engineer and not just say a coder, which is a distinction that some folks might make.

Ryan:

[30:18] I was looking at the syllabus and there’s C obviously, and there’s all the amazing, you know, basic data structures, those types of things, bread and butter. And then in the end of the course there’s a week on artificial intelligence, which I was surprised to see in an intro course because it’s kind of like there’s no way that you could teach AI in a week. So I’m assuming it’s a more high level introduction.

David:

[30:44] It is. It’s only for an hour and it technically temporarily, it’s offered in the middle of the semester for the on campus students. It coincides by design with family weekend when first years and juniors students, parents come to town very frequently. And so we do it as a very broad introduction to what everyone is talking about nowadays in the AI space. There are full fledged classes of course at Harvard and other institutions that students can take and it’s really meant to whet their appetite but also give them some context for the very tools we’re using in CS50.

[31:14] We have this virtual rubber duck that’s built on top of OpenAI‘s APIs and Microsoft Azure’s web API service that they’re using every day or every week certainly throughout CS50. So among the goals pedagogically is to help them Understand how do the tools work that you yourself have been using. Two, to help them understand what is it that the world is talking about nowadays. And three, prepare them to use these tools more effectively by the end of the semester.

[31:38] Because for instance, for CS50‘s final project, students are encouraged and welcome to use Claude or ChatGPT or Gemini or any number of off the shelf AI tools, though we don’t allow those through policy for the course’s assignments.

31:51 — The ideal use of AI in education

Ryan:

[31:51] Yeah, I had a conversation with another professor and specifically about, you know, is AI affecting how the kids are learning? And his perspective was it was kind of maybe he didn’t do it properly and the students were over relying on it. And I think that is a concern that a lot of people have, is that students these days can be more brain dead. Like you could just go to ChatGPT and say, honestly just solve the problem for me.

[32:21] For you as an educator in computer science, what is the ideal relationship with AI for your students?

David:

[32:28] Yeah, so this virtual Rubber Duck at CS50AI, which anyone with a free GitHub account can use, is really meant by design to be a less helpful version of ChatGPT, one that is also more tuned to CS50‘s own material and syllabus and so forth. And that’s because all of these tools off the shelf can pretty much do your homework for you. And this has been true for several years, even before the fall of 2022 when ChatGPT came out.

[32:52] I mean we were looking closely at GitHub Copilot for some time because if you created an empty text file in VS code called Mario C which is the file name we use for one of CS50‘s problem sets. And if you so much as type I think hash and then I for include, you pretty much get a suggestion to autocomplete the entirety of that particular problem set. And that’s just because, I mean we, for better for worse are part of these models insofar as the OpenCourseWare has presumably been slurped up, as with the rest of the Internet, as part of the training data, so to speak, for these AI models.

[33:23] So that has both good and bad. And that’s why we set out to make our own sort of duck themed version of these tools that puts downward pressure on that willingness of the tools to be too helpful. And we’ve tried to attune the duck to be more akin to a good teacher or tutor that leads you to the solution, but certainly doesn’t auto complete your whole way through it. I see.

Ryan:

[33:42] So there’s like a system prompt or some scaffolding that says, don’t answer the question but help me figure it out.

David:

[33:50] Pretty much. And it’s much easier to do this now than it was in 2022 and 2023 when we first rolled this out. Which is to say there’s a lot of tools, even commercial tools, that faculty can use to do the same kind of thing for their own course. For us, it was important to draw a clean line in the sand to students because you could approximate this duck by just telling students, hey, everyone, go copy paste this system prompt as you describe into ChatGPT before you ask your homework question.

[34:16] And no one’s going to do that. And like it’s going to drift out of date and it just feels too clunky. Students are just going end up typing into the prompt. Whereas I think it’s a lot cleaner, if not simpler to know. I cannot, through policy, go to ChatGPT, Gemini, Copilot, any of these things, but I can go to and use as much as I want CS50AI or the plugin we have in VS code of the same. And that to me is a very healthy line because, you know, if you’re crossing that line, if you’re pulling up chatgpt.

[33:50] com or gemini. google. com and the like. And at that point, it’s a conscious choice to be academically dishonest, as we would describe it in CS50‘s syllab.

34:54 — Cheating and AI

Ryan:

[34:54] When I was going through my CS education, cheating was already pretty rampant. I mean, people put their code on GitHub and you kind of paraphrase someone else’s code. Well, not me, but other people. And I imagine with the new technology that actually, I mean, with anything with cheating, it’s adversarial. There’s people who are cheating and there’s people who are trying to catch the cheaters. Right.

[35:19] I could imagine that the cheating tools are advancing faster than the ability to catch them because if you just generate the code, it’s not easy to say, oh, that was, you know, AI generated or whatever. So I’m curious if you see more cheating on your end.

David:

[35:41] of dishonesty, statistically, we are not catching more. I would like to think that the, the misbehavior has not markedly increased, if only because we, like a lot of intro courses around the world, have a tradition of looking for academic dishonesty, plagiarism, code that was copied and pasted off the Internet or YouTube video. And we within CS50, like a lot of peer institutions are very good at catching that.

[36:08] And like, we have tools that cross compare all of students submissions against each other against GitHub repositories of past submissions that we have of YouTube videos that have been just transcribed. So we have historically administratively disciplined, so to speak, between 5 and 10% of CS50 student body every semester. And that’s kind of a norm among across peer institutions, you know, upper bound of roughly 10%.

[36:31] There’s certainly probably some percentage of students who have been cheating in some form all these years and never have been detected. But just based on the rigor with which we go through this, the messaging throughout the course, like I’d like to think that a good 90% of students are behaving in the way that they should, at least when the boundaries are set through not only policy, but course culture and through the support structure that we provide to students.

[36:56] That said, we’ve not seen an uptick in detections of academic dishonesty. What has gotten harder is the so called prosecution of those cases in the sense that it’s harder for us now to hand to the administrative board of Harvard or the Honor Council, so to speak, be a smoking gun. Like, here is the URL from which this code was copied, because it’s not really coming from a URL or a YouTube video, it’s coming from the composition of all of the URLs out there and all of the YouTube videos about CS50‘s problem sets.

[37:26] Because the AI, somewhat pseudo randomly is spitting out an amalgam of these various training inputs. That said, when you’ve been doing this long enough, like you can tell that this is not the work of this particular student either in comparison to past work that they submitted or, or the sophistication with which they’re solving a problem or the incorrectness with which they’re solving the problem.

[37:49] And there’s often telltale signs like this is not this year’s problem set, this is last year’s. And so clearly this did not come from you alone. So we certainly are able to detect the easier to detect behaviors, right?

Ryan:

[38:02] 5 to 10%. That feels spiritually like a lot like 1 out of 10 students doing something. But I mean, you have the.

David:

[38:12] Yeah, I mean, 20 years ago I probably would have agreed after seeing it year after year after year. I’m just glad it’s not higher than that.

38:21 — Should we really learn CS still?

Ryan:

[38:21] On the topic of AI, a lot of students, they see where these, these agentic tools are going. They’re generating code that is superhuman in many cases. And I think it gives people this sense of dread. Like imagine you’re spending all this time getting better at programming and you think that maybe programming will be useless in the future. You know, if an anxious student comes to you and says, I don’t know if I should be learning computer science, what would you say?

David:

[38:50] I wouldn’t worry about getting better at programming. The whole point of so many of these courses has been about getting better at problem solving. And like that is a life skill, whether you’re going to stay in CS or tech more generally, or leave it for some other field in which there’s still going to be problems, just different types of problems. And there too is why we, we constantly tell students the course is not about Scratch and C and Python and JavaScript.

[39:14] Like these are all implementation details. And while they definitely have and consciously have pedagogical value, that’s why they’re in the syllabus. The goal is not to teach students Scratch and C and Python and JavaScript, but how to solve problems and to give them representative tools with which they can solve those problems and also an understanding of those same first principles from which they can reason about some symptom they’re seeing or some problem they are ultimately trying to solve.

[39:39] AI is pretty darn good already at generating code. It’s only going to get better. But that’s wonderful insofar as it’s going to save us humans from the stuff that was never very fun to begin with. Even I am guilty of never really writing as many like unit tests for my code to test the correctness automatically. That stuff can be very easily and robustly generated nowadays. What I don’t want the computer to take from me is sort of the fun part of that.

[40:03] The fun part that’s always been there, which is the designing of the system itself. Maybe thinking about what the UX should be so that you can optimize for the user experience, or what the database design might be or what data you want to collect in pursuit of some business problem. Because you know you’re going to need to analyze or mine it for some valuable insight later on. Like that stuff’s probably not going away anytime soon.

[40:25] And the other reassurance I would give students nowadays is like the world is only getting more technological. And we’ve kind of seen this pattern before. Where I took CS50, for instance, at really the peak of the so called. com era era, so 1996. And then sort of the world started trending down when all the startups were going out of Business and students were exiting computer science. But like then, the pendulum swung back and I don’t think we have saturated the world in terms of technology.

[40:50] Every business, small and large is probably going to keep using it more and more. We in our personal lives are only going to keep needing it more and more. And so, like, those are problems to be solved. And yes, I don’t think we’ll need as many humans to write HTML and CSS anymore, which was, at the risk of picking another fight, never that much fun anyway. And maybe we won’t really need to use C or Python anymore, but we can start programming like a pm, a product manager, using our voice, using our words in English or some other human language, but that alone would be wonderful.

[41:20] Case in point, I was playing with Claude this morning to just help me prototype something, and it was wonderful for me to be able to just think about the problem and sort of the engineering side of it and say, all right, Claude, much like an intern, please go implement this for me. Because I really don’t want to go reading the documentation, which was never that intellectually interesting. I could if I wanted to, and I understand how it’s structured, but I don’t need to keep repeating that kind of exercise again and again.

[41:44] But at least in the near term, case in point, Claude came back very confidently with a solution that was like 90% correct. And I had to convince Claude, so to speak, by chatting back with it that, like, no, no, no, no, like this is not possible per the API docs at this URL. So of course you get the apologetic response from the LLM and this kind of error rate or hallucination will decrease with frequency.

[42:08] But, like, this is why the human should stay in charge for some time.

Ryan:

[42:12] In today’s environment, we can relatively confidently say, these tools empower us and they don’t replace fully yet. But I think a lot of people are worried about, okay, but what if, you know, it gets. What if it gets even better? What if that 90% becomes 99% or maybe it becomes 100%? Then I think people get scared, but it’s hard to say exactly in the future.

David:

[42:39] But insofar as our goal within even a class like CS50 has always been to output a more educated citizenry, to teach students how to teach themselves, to teach them how to be more methodical, more algorithmic and problem solving, like all of that is valuable, whether or not we have robots doing work for us in our future.

Ryan:

[42:59] I think you talked about the enrollment rates and I have this little screenshot because you had written this, I think, this paper from long time ago about redesigning CS50. And you kind of, I’ll put this overlay this in the video, but you know, there’s this trend of kind of enrollment rates going up and then they tank with the top convobole and then they went up as well because of some adjustments that you’ve made.

[43:25] Right now we’re kind of in this. You know, AI is really shifting things. How if you were to continue this graph forward, is enrollment and interest in computer science declining because of the AI?

David:

[43:39] Oh, lately that absolutely seems to be the case. And that was preceded, I think over the past few years really by the downturn in tech offerings. I mean, we were seeing this in the recruiting pipeline on campus where there were just fewer opportunities and there was less of an appetite among some of the big tech companies to even bother coming to campus if they just didn’t have many entry level roles for students.

[43:58] And that was before ChatGPT and similar tooling was sort of omnipresent. So AI has only exacerbated, I think, that concern. But I think what we’re going to see if we sort of extrapolate out is that there’s going to be these ebbs and flows over the years, much like we’ve seen, or the pendulum swinging each different way, whichever metaphor you prefer. Just as humans have this tendency, I do think, especially in tech, to overreact to things both positively and negatively.

[44:24] And while AI is absolutely here to stay, I do think it’s going to become equivalent in our minds to just what technology is. AI is a nice sort of buzzword and way to distinguish it from some of the more deterministic or predictable outcomes that like technology to date has maybe had. But. But I think back Even over my 19 years with CS50 and AR and VR was to be all the rage. And then we had blockchain and bitcoin and Google Glass even excited the imagination like no other technology at the time.

[44:56] And all of these things are still with us in some form or some future incarnation. And especially with blockchain and bitcoin. There’s some resiliency there. And AR and VR still very omnipresent in games. But it’s just been fascinating to watch the world, the tech world, especially the VC world, sort of react and overreact habitually to these kinds of things. Until we sort of find a healthier medium where people appreciate the real value and not just the opportunistic value of it all.

45:24 — College vs online education

Ryan:

[45:24] You’re in a unique position because you teach the in person Harvard class and then you also do the massively online version as well. And I think it’s an interesting case study because some people have the opinion that, that the important part of college is actually not the education. And it feels like this in person version versus the online one is kind of proof of that, which is that you could not go to Harvard but get a world class education, yet the outcomes are very different.

[46:01] So I’m curious your thoughts on going to college versus getting the world class education for free?

David:

[46:09] Yeah, I think it depends on your goals. I think there’s absolutely value of places like Harvard really because of that credentialing. And also it’s a filter from the get go. I mean these admissions departments are already identifying strengths among people and sort of the audience you then end up with is very similar along certain axes, certainly along academic abilities and whatnot. But the value of places like Harvard I do think has long been the networking opportunities, the connections you make, the life experiences you might have and academics sometimes to a fault like is often secondary.

[46:39] But when it comes to knowledge and learning outcomes and practical skills, I mean I’d like to think that you’re getting as good, if not better an experience taking a class like CS50 online, if only for the simple technological reasons that you can pause and fast forward and rewind and open multiple tabs, go down this intellectual rabbit holes in ways that a traditional campus is just not designed to support.

[47:02] Unless those same students are are taking the class in their dorm rooms or at home.

47:06 — The most difficult concept to learn

Ryan:

[47:06] Like during COVID You’ve taught so many years of this same material. What is the most difficult concept that you see? People consistently having trouble pointers in C.

David:

[47:19] And that was true for me 30 years ago. So much so that I’m always very weirdly excited to tell students in class nowadays that I still remember where I was on campus the day I finally got pointers and and I’ll share here. I was in one of the dining halls on campus with my teaching fellow or TF who himself was a student probably one or two years older than me. We were sitting at the back of the dining hall on these wooden tables in this beautiful old school sort of Harvard esque room.

[47:47] And somehow or other something he said that day, after weeks of struggling, that light bulb went off for me and I’m like oh, it’s just an address which you know, never quite clicked. Even though I’m sure many people tried to hammer that into me previous to that. But. But it’s just hard like memory Stuff is hard, especially if computers to students from the get go is very much this black box, this abstraction itself.

[48:09] To really go down to that level takes some, some new thinking. And it took me a while.

Ryan:

[48:15] Let’s say someone is trying to help someone else grasp a difficult concept. Like, what’s your best tip on how to really teach someone something that they’re really struggling with?

David:

[48:26] My instinct is to say metaphors, or what we more broadly call memorable moments, where it’s a phone where you’re trying to teach binary search, or even a Screenshot of the iOS context app where you’re trying to introduce the same algorithm. It’s during COVID for instance, we worked with a local theater and we had seven physical doors on a stage that were from previous plays that they had put on. And we put fuzzy little numbers behind that the prop shop had kindly developed for us so that we could play that same game of using not lockers, but physical doors.

[48:56] And creating those binary doors for students, I think helps them latch onto a visual that makes a very esoteric topic that, that frankly, who really cares about binary search day to day just kind of come alive and you realize, at least back in the day of actual phone books, like, oh, I’ve been using this the whole time. I just didn’t know what to call it. And I think that’s very empowering to use metaphors to create memorable moments that help students realize that even the seemingly most arcane topics are still very much within their grasp and perhaps not so dissimilar.

[49:28] Even when we talk about binary for students, we like to show them that, hey, here’s a number, like 123. Well, why is it 123? Because there’s the ones place, the tens place, the hundreds place, and so forth. Hey, guess what? Binary is the exact same methodology, but you just have the ones place, the twos place, the fours place, and so forth. And helping people realize, like, oh, like that’s all it is, I think is very empowering because suddenly they feel like they’re part of the conversation and they actually know what they’re talking about all the more, even when they thought that was a domain for those more comfortable only.

51:00 — Growth vs fixed mindset

Ryan:

[51:00] I’m curious if you think that there’s anyone that’s just born that can’t learn computer science, and that’s not the world that I want to live in, but let’s just say you have someone and you explain a race to them a hundred times, and they kind of don’t get the concepts. Do you feel everyone can grow and learn computer science?

David:

[51:25] I think to an extent. I mean, if you, if it’s still not sinking in after 100 times, like, I mean, frankly, I think good educational advice would be like, maybe this isn’t the field for you, and this is how you’ve been empirically figuring that out. If it’s just not clicking in a way that’s exciting you, that’s making you happy, then, okay, stop beating yourself up. Like, find something else that’s of interest to you.

[51:43] But if you’re struggling and you’re thinking of being up after 2 times, 10 times, 49 times, I’m not quite sure where the cutoff is. Like, you should probably continue to try to power through, not necessarily by taking that same approach, but find some other class, some other professor, some other teaching assistant, some other book to try a different perspective or angle on it. Because maybe you’re just not jiving with, like, the form of instruction or the style of the teacher, myself included.

[52:10] So I wouldn’t give up thinking it’s you alone. And I do think, too, that’s really the secret ingredient. Is time. Like, fine, if you don’t. If you can’t quite finish the course in 12 weeks, take 24, take 52. Like, that’s perfectly fine. Especially if you’re juggling other things. This isn’t necessarily your primary focus. I think time is a perfectly reasonable knob to turn. And I think that puts it well within reach of so many other people.

52:35 — The future of CS50

Ryan:

[52:35] CS50 is beloved. People have. The reception online is so overwhelmingly positive, and you’ve been doing it for so long. What is next with CS50? Like, do you see yourself kind of of continuing the same curriculum for the next decade, or will things change?

David:

[52:54] Yeah, I think CS50 itself will continue to evolve as it. As it long has. I do think it’ll continue to change both in terms of tooling and concepts, as AI sort of permeates our lives and technology all the more. That said, I think it’s always meant to be this introductory course in problem solving. So I think there will be this backbone that remains and has been there even since my day. Even though the problem sets are very different nowadays, the style of the lectures is very different.

[53:18] If you really compare the syllabus from fall of 1996 versus now and what will be fall 2026 like, they’re not that fundamentally different. They’re just packaged very differently and stylized, I think very differently. But there’s a lot of knowledge and conceptual framework and practical skills that are very invariant over the years. What we have been doing in recent years, though, is steering in the direction of developing all the more of a complete curriculum.

[53:43] So courses that students can take for free online through OpenCourseWare after CS50. Earlier courses, gentler courses that students can take before CS50 itself, or even instead of CS50 itself, depending on the goals that they have and the background that they’re bringing to bear. The plan in the near term is to branch out beyond computer science, working with a colleague of ours, Tom Crawford, at the University of Oxford, on courses in maths, or maths, as he says, in all sorts of fields, so as to help uplift students who are taking, say, computer science courses, but don’t have the requisite math background that might be ideal to have, so that you don’t struggle with certain things that, that we might otherwise just take for granted.

[54:22] Beyond that, STEM more broadly is of interest. And while we’re not experts ourselves, working with colleagues of ours in the arts and humanities and trying to bring this form of theatricality and these memorable moments to a stage, but with far more people and subjects than me and mine.

Ryan:

[54:38] When you mention math and these other subjects, it kind of reminds me, I mean, I haven’t been in the schooling system for a long time, but that Khan Academy was like a very popular resource. I, I imagine that’s still around. And so that would be, I guess, a competitor.

David:

[54:53] I do think some healthy competition is good, as if it drives different courses, different teachers to sort of try new things and teach differently. But I think the more the merrier. The world only benefits from more educational resources.

Ryan:

[55:05] And so if those are, let’s say I’m okay, let’s say I’m a parent and I’m deciding, should I, I put my high schooler in the Khan Academy learning track of math or what you plan to offer?

David:

[55:18] From what I’ve seen, certainly of Khan Academy’s work is that they’re like ours, I think is more of a cast of characters, at least on video form, at least. I know the earliest of Saul Khan’s work was sort of the handwritten style for his niece or nephew, which was wonderfully compelling and engaging. I think we stylistically are just very different. And I think we try across CS50‘s courses traditionally to have a shared aesthetic, a shared pedagogical style, a shared lecturing style.

[55:47] So that when you take a CS50 course, so to speak, you sort of know what you’re getting because it’s very similar in spirit to the others in the ecosystem.

55:56 — Biggest career regret

Ryan:

[55:56] Coming to the end, when you look back on your career, what is your biggest regret?

David:

[56:01] I would say I wish someone had told me, or I wish I had known to just calm down. Like, at least when I was in university, I was one of these students who again came in thinking I was going to major in something else, government, in my case. I was one of those students who went to my first RA meeting, proctor meeting, advisor meeting with probably on a sheet of paper, all 32 courses I thought I was going to take at Harvard, which did not come to pass.

[56:25] But it really led me astray in some way the first year and a half of school, and that I was really focused on crossing requirements off the list, taking the courses I thought I should. And it wasn’t till sophomore year that I took CS50, which was eye opening and allowed me to start to pivot. But even then I hadn’t broken out of that mold probably until senior fall, senior spring, when I finally took an Introduction to Latin course, which was just for fun and was just so interesting and eye opening.

[56:51] And I finally understood aspects of English and Spanish retroactively that I never really had mastered when taking those same classes is I took a course on Dramatic Arts 101, which was a survey class on theater and writing and set design and acting. And pretty much every elemental aspect of theater was introduced in this class. And I wish I had thought to take a class like that. And even in graduate school I was Only gradually learning this lesson finally audited essentially a course in archeology which was so much fun, so much so I had this existential crisis, thinking maybe I should have gone to a PhD in archeology instead.

[57:26] But I stayed with CS and I just wish someone had told me to calm down early on and sort of explore more, particularly areas in which I thought I’d be less comfortable. And that’s at least a message I try to give to students nowadays. As for professional regrets, thankfully relatively few come to mind, if anything. You know, I used to joke, even with some of our own TAs, that insofar as I’ve largely stayed in academia, you know, I’ve never had a like a real job, but as recently as a recent sabbatical, I spent a whole semester or essentially interning with GitHub as a professor in residence and learning the ropes of a real world software engineering company and having access to the internal issues and bug reports and feature requests and sitting in as a fly on the wall to some of the team meetings and design chats.

[58:14] And it was so much fun to actually live the life that we’ve been teaching about for so long. And there too, I wish I had done that earlier or at least in parallel had done maybe more consulting opportunities or done a little bit more in the real world before coming back to school and then staying in school.

Ryan:

[58:32] Did you ship a project or like what was that time at GitHub? Like, what was the.

David:

[58:36] It wasn’t. I don’t think I contributed code. I definitely contributed issues and bug reports and feature requests. My sort of role was to be this educational voice at the table, especially in the design of certain products and to at least speak up on behalf of of educational use cases. Give teachers a voice at the table when it comes to certain features that would really make the student experience better, particularly in tools like VS code, albeit on the Microsoft side, or some of the internal GitHub tooling.

[59:05] So I don’t think you’ll find any code that I wrote, but hopefully one of my issues underlies some code that’s now in the code base.

Ryan:

[59:13] What about looking back on your time doing CS50? Like if you were to just reflect on what went well and what didn’t go well, just the highlights of, you know, your time running the course. What, what would you say?

David:

[59:28] I think it’s been very meaningful. So much so that it’s become our mission organically to have this now tradition of OpenCourseWare that wasn’t certainly our own idea. It was really inspired by our friends down the road at MIT who really championed this decades ago, but very happy with how that has evolved because it’s made the work all the more meaningful in ways that go beyond just education, but helping, as we’ve heard anecdotally from some of our students out there, very professional impacts, life impacts, being able to better care for your family or to pivot professionally into a field that you didn’t think was for you like that has just been very meaningful and rather makes it all worthwhile.

[1:00:09] And I hope too, in so far as we’ve been a bit unusual both with our production value and openness, trying to sort of offer an example that others could follow that, hey, maybe more people should be doing, doing this, more people should be sharing, leaning on us, us leaning on them. Because I do think that’s still a missed opportunity educationally.

1:00:29 — Top book recommendations

Ryan:

[1:00:29] What’s your best technical book recommendation? If someone wants to learn programming or if there’s maybe some other topic that you recommend a book for, I’d love to hear it.

David:

[1:00:38] My favorite book is Hitchhiker’s Guide to the Galaxy and I think everyone should read that or play the terminal based video game that existed when I was growing up of it. It funny enough, within CS50‘s courses it’s been a few years since we officially recommended any books. This is partly consistent with our commitment to openness and for everything being free so that there isn’t some financial barrier to someone out there to needing a textbook for the course.

[1:01:04] That said, over the years and to this day, some of my favorite tech books, even though they’re increasingly outdated, are this brilliantly colorful, picturesque, easy to understand and accessible book called How Computers Work, which we used in that course I first taught in 1999 and how the Internet Works. And I think they eventually stopped updating them some years ago. But they were such wonderful educational tools.

[1:01:31] I think every subject should have a book that looks quite like that. More arcanely, there’s a book that we still recommend to students unofficially or if they really want to go pursue something, something more arcane in C called the Hacker’s Delight, which is this wonderful hardcover book that just has really neat bit trickery and low level hacks, low level techniques you can use to make your C code especially all the more performant.

[1:01:56] So there’s a lot of value in a book like that. But I think back years ago to when I was learning some stuff in technology and like the four Dummies books was great. I think for some time we might have recommended one of the Complete Idiots Guides or something like that, which doesn’t have the best semantics. But the reality is they are by design written for a very broad, accessible audience, and I think that has a lot of value as opposed to the more traditional textbook where you sort of have to have taken the class in order to understand the book.

Ryan:

[1:02:24] Is there an official textbook for the Harvard CS50? Not the open one. Okay, so that one also has the.

David:

[1:02:31] Other than having access to a computer and the Internet, there’s no. No financial requirements.

1:02:36 — Advice for his younger self

Ryan:

[1:02:36] That’s great. I love that idea. Last question for you is if you could go back to the beginning of your career and kind of give yourself some advice, what would you say?

David:

[1:02:46] Explore more. I do think I wish I had more jobs under my belt early on, which I think was the result of my being pulled back into choosing to go back into academia. I think it would have been healthy if I had allowed myself maybe another year or two in between undergrad and graduate school. Or it probably would have worked out well if CS50 hadn’t opened up for me right as I was finishing my PhD, because then I probably would have gone off to industry for some amount of time.

[1:03:16] That said, not sure I would have gotten the job if I had wandered off campus at that point. So it probably worked out for the best. But I had such fun when I was interning, interning, so to speak, at GitHub, that it would be fun to live more of the lives that some of my friends in tech have lived.

Ryan:

[1:03:31] Awesome. Well, thank you so much for your time. I really appreciate it. David.

David:

[1:03:34] Yeah, thanks so much.

Discussion about this episode

User's avatar

Ready for more?