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

Episode Date: May 11, 2026

David 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 in...cluding in cheating/academic dishonesty.• My ergonomic keyboard project I mentioned, you can follow along here: https://read.compose.llc/𝗣𝗼𝗱𝗰𝗮𝘀𝘁 𝗹𝗶𝗻𝗸𝘀:• YouTube: https://youtu.be/bB2o81DnKHk• Apple: https://podcasts.apple.com/us/podcast/the-peterman-pod/id1777363835• Transcript: https://www.developing.dev/p/harvard-professor-cs50-what-matters𝗧𝗵𝗮𝗻𝗸 𝘆𝗼𝘂 𝘁𝗼 𝘁𝗵𝗶𝘀 𝗲𝗽𝗶𝘀𝗼𝗱𝗲'𝘀 𝘀𝗽𝗼𝗻𝘀𝗼𝗿𝘀 𝗳𝗼𝗿 𝘀𝘂𝗽𝗽𝗼𝗿𝘁𝗶𝗻𝗴 𝗺𝘆 𝘄𝗼𝗿𝗸:• Cursor 3: a unified workspace for building software with agents, check it out at https://cursor.com/• WorkOS: makes your app Enterprise Ready with easy to use APIs to add SSO, SCIM, RBAC, and more in just a few lines of code, check them out at https://workos.com/𝗧𝗶𝗺𝗲𝘀𝘁𝗮𝗺𝗽𝘀:0:00 - Intro1:09 - Getting into computer science3:27 - Becoming the professor of CS5011:19 - How to lecture well14:25 - Depth vs engagement in education18:11 - Why don't we consolidate educational resources23:20 - Why start with C31:51 - The ideal use of AI in education34:54 - Cheating and AI38:21 - Should we really learn CS still?45:24 - College vs online education47:06 - The most difficult concept to learn51:00 - Growth vs fixed mindset52:35 - The future of CS5055:56 - Biggest career regret1:00:29 - Top book recommendations1:02:36 - Advice for his younger self1:03:35 - Outro𝗪𝗵𝗲𝗿𝗲 𝘁𝗼 𝗳𝗶𝗻𝗱 𝗗𝗮𝘃𝗶𝗱:• Personal website: https://cs.harvard.edu/malan/• Facebook: https://www.facebook.com/dmalan• Github: https://github.com/dmalan• Instagram: https://www.instagram.com/davidjmalan/• LinkedIn: https://www.linkedin.com/in/malan/• Reddit: https://www.reddit.com/user/davidjmalan/• X/Twitter: https://x.com/davidjmalan• Threads: https://www.threads.com/@davidjmalan𝗪𝗵𝗲𝗿𝗲 𝘁𝗼 𝗳𝗶𝗻𝗱 𝗥𝘆𝗮𝗻:• Newsletter: https://www.developing.dev/• X/Twitter: https://x.com/ryanlpeterman• LinkedIn: https://www.linkedin.com/in/ryanlpeterman/• Threads: https://www.threads.com/@ryanlpeterman• Instagram: https://www.instagram.com/ryanlpeterman• TikTok: https://www.tiktok.com/@ryanlpeterman𝗥𝗲𝗳𝗲𝗿𝗲𝗻𝗰𝗲𝗱 𝗶𝗻 𝘁𝗵𝗶𝘀 𝗲𝗽𝗶𝘀𝗼𝗱𝗲:• His first program for CS50: https://x.com/davidjmalan/status/1432538424590929920• Paper about CS50 improvements: https://cs.harvard.edu/malan/publications/fp310-malan.pdf• Hitchhiker's Guide to the Galaxy: https://en.wikipedia.org/wiki/The_Hitchhiker%27s_Guide_to_the_Galaxy• How Computers Work book (not affiliate link): https://www.amazon.com/How-Computers-Work-Evolution-Technology/dp/078974984X

Transcript
Discussion (0)
Starting point is 00:00:00 I don't want to get into a whole internet fight here, but... This is David Maylin. He's a Harvard professor, famous for transforming CS50 into a world-class online computer science course. How do you keep people engaged for a three-hour lecture? 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. 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. If you're going to call yourself an engineer, you should be understanding everything that's happening among those layers.
Starting point is 00:00:34 We also discuss how AI is impacting cheating and enrollment. It's harder for us now to hand to the Administrative Board of Harvard or the Honor Council, so to speak, a smoking gun. Maybe programming will be useless in the future. Here's the full episode. You posted this photo of your first assignment in CS50, not as the teacher, but as the same. student actually under Brian Curnahan. What was your experience like getting into computer science? 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
Starting point is 00:01:22 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. That was my favorite class in high school. 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 like follow some friends, I think, into the CS50 classroom that day, when this very well-reputed computer scientist, Brian Carnahan, was at the helm for just that one. year, I was totally hooked and it was the first time in like 19 years that homework was fun,
Starting point is 00:02:09 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. And I saw on that assignment, it says minus two and there's a little note there that I actually couldn't quite make out. Do you, looking back now, is this, the teacher, like, why did you get a minus two there? It was something stupid and very easily redressable, but I did not start off computer science or CS50 on the best foot. I got minus two out of probably two points on Hello World.
Starting point is 00:02:44 What was the story behind you going from a student to the teacher eventually? I had an opportunity, my senior year of college, to teach a 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 a habit of introducing people to computers and the Internet, as opposed to taking it for granted more so nowadays. And it was me in a room full of 100 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.
Starting point is 00:03:25 but that really wet my appetite in turn, not only for more computer science, even though that was very introductory and more technology focused for teaching. And over time, 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 C.S. 50 and I somehow talked my way into the job. 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
Starting point is 00:04:08 to fill in for just one year until they found someone else and that was somehow 19 years ago. 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. changes, or was that a process over time? 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,
Starting point is 00:04:42 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, the very first year I taught at 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 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
Starting point is 00:05:20 friends and teaching fellows fell asleep during the middle of class. So we've aspired to higher production value since, but 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 four, give or take. And so at the time, we were distributing the course's videos via real video and or real audio, which are older technologies now, but were state of the art for streaming at the time. 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,
Starting point is 00:06:13 because at the time, even though it was very progressive to have streaming, it was a little knowing that you needed a constant internet connection. The 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.
Starting point is 00:06:36 A year or two later, Apple released the video iPod. 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. 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 in the very early days. 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.
Starting point is 00:07:14 And we kept hitting the threshold. And so what we would do is sign up for another dream host account, another dream host account, another dream host account. And we would use like DNS trickery to just reroute the URLs and the RSS file to the new web post to keep up. 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. 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. 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. But the knowledge. itself, it does society no good to withhold that, 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.
Starting point is 00:08:28 Let's say you're scrolling on Instagram, that first seconds 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, do you think about how can I, you know, hook the audience? Does that ever factor into your lecture design? Lectures, no. Some of our social content, yes, and so far as we are producing in addition to the course's traditional in classroom content, things that are designed clearly for social media, whether it's interviews, for instance, whether it is excerpts from CS50s fair, this exhibition of final projects, whether it's steering in the directions of some popular
Starting point is 00:09:09 meme just to sort of catch the attention of our own students or new students. 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 three minutes, five-minute chunks that I know there is data to confirm that it drives engagement, but not necessarily educational outcomes. We have fairly unused. We have fairly unused usually in recent years, stuck to the more traditional model of like CS50's 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
Starting point is 00:09:53 for something, open another tab, go down this intellectual rabbit hole or rewind to figure out what did some detail you missed. I mean, I can't even count how many times in college, high school, school more generally that I'm sure I zoned out. 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. But it's not designed for scrolling type consumption, I would say. Right. What about in the
Starting point is 00:10:36 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? 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 all 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. And that's really just to be dramatic. It has less and less impact these days because most students if school age
Starting point is 00:11:18 are no longer familiar with the technology known as a phone book, but it's literally analogous to the digital form in iOS or an 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. When we get to searching algorithms and sorting algorithms, we very often have a student come up on stage, for instance, and 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. And it's an opportunity
Starting point is 00:11:54 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. But we use them as these pedagogical tools to explore 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 to make worthwhile the whole process
Starting point is 00:12:27 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. 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.
Starting point is 00:12:57 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, okay, all right, I remember like 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 remember 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, but that is very much to engage any learner present or remote as opposed to being
Starting point is 00:13:38 optimized for some technology. One thing that I wonder, because computer science is such a dense topic where I guess there could be a trade-off with, imagine another style lecture is, you know, there's a chalkboard, and you're up there kind of blandly writing out all of the information. I could imagine you could go through much more depth in that case. Do you feel like there's any trade-off there? Absolutely. I mean, this is a criticism we get from some students,
Starting point is 00:14:10 particularly those with prior background or among those more comfortable, where do we really need 10 minutes on linear search or 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-pick topics that we do think lend themselves to this theatricality
Starting point is 00:14:32 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 week's assignment and to help them see sort of the forest for the trees, like what is actually important and meaningful and fun about this? Because it's probably not the key,
Starting point is 00:14:51 and the debugging and the lower level implementation details. So we talk about this actually in a paper and 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. Like if it's just someone reciting words or worse writing things down in ways.
Starting point is 00:15:21 that aren't at all interactive. Like, do we really need to be all in this room together? Like, that doesn't seem like the best 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?
Starting point is 00:15:47 Yeah, I think it's just sort of the expression. You've 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. 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. go because then they can decide for themselves if they feel that same emotion, if they too look
Starting point is 00:16:25 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. 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
Starting point is 00:17:10 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. And with the online education that we can do today, I mean, like CS50, all the resources are available, I could imagine 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, and 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
Starting point is 00:17:55 best resources to every situation? 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. There's so much meta work involved in education that probably doesn't need to be born by so
Starting point is 00:18:38 many people that the computer scientist in me, like 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. 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. More recently, we've been doing this with some of our friends at Oxford in the Lifelong Learning Group there. This is very much still the exception to the rule, 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.
Starting point is 00:19:25 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. And I could get no one on campus to get on board with this idea of may be 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 and I think there should be. I don't think there should be one computer science course,
Starting point is 00:20:14 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 adopters. We say adapt some of our own resources and treat education is 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. The mindset that you said, the computer scientist's mindset of getting rid of the redundancies and kind of consolidating resources, I mean, it's immediately logically obvious to me.
Starting point is 00:20:59 but what would like let's say there's there's three top courses in america there's like mITs there's stanfords and there's harvards and you know they want to give that to other institutions like i don't know other other colleges what would what would stop those colleges from taking an objectively better set of resources and giving that to their students 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. We're 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 to
Starting point is 00:21:48 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. And it seems silly to me, not too, 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, 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
Starting point is 00:22:31 these courses. It means we can do a better job offering what resources we do have, 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? Sure. So it was not picked by me per se, but I chose to keep see 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,
Starting point is 00:23:05 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, I think for most people, almost everyone, perhaps.
Starting point is 00:23:26 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 constructs that are now fundamental to those kinds of languages, loops and conditions and functions and variables and return values and so forth. It's sort of 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.
Starting point is 00:24:02 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. And we're talking about how you could construct singly link, doubly linked lists, hash tables and tries, trees, abstract data types like stacks and cues 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++ plus with STL and certain other libraries. Like if you want it, you're going to have to build it yourself.
Starting point is 00:24:34 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. And three, it's a wonderful scaffold to higher level languages because one of my favorite things from week five to six in CS50
Starting point is 00:25:14 is students go from having written in week five 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 and many courses do teach programming by way of Python alone
Starting point is 00:25:36 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 CS50 among 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 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
Starting point is 00:26:11 Python layers that we use in the class. For this podcast, I produced transcripts for every episode for convenient skimming, and I built a custom tool to automate that. Recently, I noticed in the Barbara Liskov transcript, my simple speech-to-text tool was getting a lot of things wrong. For instance, the Clue programming language is spelled all caps, CLU, not Clue. So to fix this, I use Cursor 3, picked the strongest version of Opus 4.7 extra high, and had an agent make a plan to fix that.
Starting point is 00:26:43 And while I was waiting, I figured out trigger a few more agents for code cleanups and front-end improvements. It generated a reasonable plan with rich system diagrams. It applied all the changes within minutes and worked on the first try. So if you want to build something with the flexibility of sending off a bunch of agents with frontier models of your choice, you can go to cursor.com to try out cursor 3. This is not my perspective. But I was doing research and I saw it. YouTube video said whatever you do don't take CS 50 clickbait whatever yeah so I watched the
Starting point is 00:27:17 video and the person's 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 the stuff that you don't really need to know if you were like a full stack engineer or something 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 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. 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 of full stack, you should be understanding everything that's happening among those
Starting point is 00:28:02 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. 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, 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.
Starting point is 00:28:43 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. 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
Starting point is 00:29:28 an engineer and not just say a coder, which is a distinction that some folks might make. I was looking at the syllabus and there's C, obviously, and there's all the 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. 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 a family weekend when first years and juniors students' parents come
Starting point is 00:30:13 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 wet their appetite, but also give them some context for the very tools we're using in CS50. We have this virtual rubber duck that's built on top of open AIs. APIs and Microsoft Azure's Web API service that they're using every day or every week,
Starting point is 00:30:39 certainly throughout CS50. So among the goals pedagogically is to help them understand what are the tool, 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 because, for instance, for CS50's final project, students are encouraged and welcome to use Claude or ChatGBT or Gemini or any number of off-the-shelf AI tools, though we do don't allow those through policy for the course's assignments.
Starting point is 00:31:06 Yeah, I had a conversation with another professor and specifically about 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 check. chatGBT and say, honestly, just solve the problem for me.
Starting point is 00:31:36 For you as an educator in computer science, what is the ideal relationship with AI for your students? Yeah, so this virtual rubber duck at CS50.a, which anyone with a free GitHub account can use, is really meant by design to be a less helpful version of chat GPT, 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. has been true for several years, even before the fall of 2022 when ChatGyPT came out. I mean, we were looking closely at GitHub co-pilot for some time because if you created an empty text file and BS code called Mario.C, which is the file name we use for one of CS50s problem
Starting point is 00:32:17 sets. And if you so much as type, I think, hash and then I for include, you pretty much get a suggestion to auto-complete the entirety of that particular problem set. And that's just because, I mean, we, for better for worse, are part of these models. And so far as the open-corps, courseware 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. 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
Starting point is 00:32:55 way through it. I see. So there's like a system prompt or some scaffolding that says, don't answer the question, but help me figure it out. 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 sands of students because you could approximate this duck by just telling students, hey, everyone, go copy paste this system prompt, as you describe, into chat GPT before you ask your homework question. And no one's going to do that and it's going to drift out of date and it just feels too clunky. Students are just going to end up typing into the prompt. Whereas I think it's
Starting point is 00:33:39 a lot cleaner. If not simpler to know, I cannot, through policy, go to chat GPT, Gemini, co-pilot, any of these things, but I can go to and use as much as I want CS50.aI 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 chatchipt.com or Gemini.com.com.com. and the like. And at that point, it's a conscious choice to be academically dishonest, as we would describe it in CS50s syllabus. 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,
Starting point is 00:34:28 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? 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. And yeah, generally, if you're catching more of dishonesty. statistically we are not catching more I would like to think that the misbehavior has not markedly increased if only because we like a lot of
Starting point is 00:35:11 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 and like we have tools that cross compare all of student submissions against each other, against GitHub repositories of past submissions that we have, of YouTube videos that have been described. So we have historically, administratively disciplined, so to speak, between 5 and 10 percent of CS50 student body every semester. And that's kind of a norm across peer institutions, you know, upper bound of roughly 10%. There's certainly probably some
Starting point is 00:35:49 percentage of students who have been cheating in some form of 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, 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. That said, we've not seen an uptick in 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, a smoking gun. Like, here is the URL from which this code was copied
Starting point is 00:36:33 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 CS50s problem sets 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 the sophistication with which they're solving a problem or the incorrectness with which they're solving the problem. 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
Starting point is 00:37:14 easier to detect behaviors. Right. Five to 10 percent, that feels spiritually like a lot, like one out of 10 students doing something. But I mean, you have the... Yeah, I mean, 20 years ago, I probably would have agreed. After seeing it year after year after year after year, I'm just glad it's not higher than that. On the topic of AI, a lot of students, they see where these agenic 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. If an anxious student comes to you and says, I don't know if I should be learning
Starting point is 00:38:03 computer science, what would you say? 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 fields in which there's still going to be problems, just different types of problems. And there too is why we constantly tell students the course is not about scratch and C and Python and JavaScript. 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
Starting point is 00:38:41 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. 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
Starting point is 00:39:10 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 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. And the other reassurance I would give students nowadays is like the world
Starting point is 00:39:43 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 dot-com 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. 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.
Starting point is 00:40:23 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. 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, are 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,
Starting point is 00:40:56 but I don't need to keep repeating that kind of exercise again and again. But at least in the near term case and 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. But like this is why the humans should stay in charge for some time. And 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,
Starting point is 00:41:41 it gets even better? Like what if that 90% becomes 99% or, or maybe it becomes 100%, then I think people get scared. But it's hard to say exactly in the future. 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,
Starting point is 00:42:09 like all of that is valuable whether or not we have robots doing work for us in our future, I think. You talked about the enrolable. rates and I have this little screenshot because you had written this I think this paper from a 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 com bubble and then they went up as well because of some adjustments that you've made and that right now we're kind of in this you know AI is really shifting things how if you were to
Starting point is 00:42:46 continue this graph forward, is enrollment and interest in computer science declining because of the AI? 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. And that was before at GPT 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
Starting point is 00:43:26 years, much like we've seen or the pendulum swinging each different way, whatever, whichever metaphor you prefer. Just as humans have a tendency, I do think, especially in tech to overreact to things, both positively and negatively. 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 technology to date has maybe had. But I think back even over my 19 years with CS50 and, you know, AR and VR and VR was to be all the rage. And then we had blockchain and Bitcoin and Google Glass even, like excited the imagination like no other technology at the time. And all of these things are still with us in
Starting point is 00:44:14 some form or some future incarnation. And especially with blockchain and Bitcoin, like there's some resiliency there and AR and VR are 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. You're in a unique position because you teach it 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 the
Starting point is 00:44:56 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. class education, yet the outcomes are very different. So I'm curious your thoughts on going to college versus getting the world class education for free. 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,
Starting point is 00:45:42 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, in academics, sometimes to a fault, like is often secondary. But when it comes to knowledge and learning outcomes and practical skills,
Starting point is 00:46:00 I mean, I'd like to think that you're getting as good, if not better, in 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, down this intellectual rabbit holes in ways that a traditional campus is just not designed to support unless those same students are taking the class in their dorm rooms or at home 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? Poiners in C. And that was true for me 30 years ago,
Starting point is 00:46:36 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 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 and this beautiful old school sort of Harvard-esque room. 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 never quite clicked, even though I'm sure many people tried to hammer that
Starting point is 00:47:15 into me previous to that, but it's just hard. Memory stuff is hard, especially if computers to students from the get-go is very much this black box, this abstraction itself, to really go down to that level take some new thinking.
Starting point is 00:47:28 And it took me a while. 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. My instinct is to say metaphors or what we more broadly call memorable moments where it's a phone book
Starting point is 00:47:48 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
Starting point is 00:48:06 that the prop shop had kindly developed for us so that we could play that same game of using not lockers, but physical doors. And creating those binary doors for students, I think, helps them latch onto a visual that makes a very esoteric topic 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,
Starting point is 00:48:26 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 helps students realize that even the seemingly most arcane topics, are still very much within their grasp and perhaps not so dissimilar. Even when we talk about binary for students, we like to show them that, hey, here's a number like 123.
Starting point is 00:48:49 Well, why is it 123? Because there's the one's 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 two's 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
Starting point is 00:49:14 more comfortable only. Open AI, Anthropic, Cursor, and Versal all use this product to make their lives better. And the problem it solves is when you're building SaaS or an AI product and you want to sell to other companies, there's all these requirements you need to meet. There's SSO, there's SCIM, there's ARBAC, there's audit logs. These are all things that take time to integrate, but aren't the main. main focus of your app. WorkOS is an API layer that lets you meet all of these requirements in just a few lines of code. So let's say you have a new SaaS product and you want to sell to
Starting point is 00:49:49 other companies, WorkOS will solve all of these critical feature gaps for you. You can check them out at WorkOS.com to learn more and get started. And I appreciate them for supporting my work and sponsoring this podcast. For people who struggle, I mean, this idea of growth mindset versus you're kind of born with some innate talent. And you've seen so many students that I feel like you probably have a perspective on this. But 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.
Starting point is 00:50:33 And they kind of don't get the concepts. do you feel like really you can kind of grow and learn? I think to an extent, I mean, 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. But if you're struggling and you're thinking of being up after two times, 10 times,
Starting point is 00:51:04 49 times. I'm not quite sure where the cutoff is. 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 assistants, 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. 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 can't quite 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. 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 continuing the same curriculum for the next decade or will things change? Yeah, I think CS50 itself will continue to evolve as it long has. I do think it'll continue to change
Starting point is 00:52:15 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. 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.
Starting point is 00:52:53 What we have been doing in recent years, though, is steering in the direction of developing all the more of a complete curriculum. So courses that students can take for free online through OpenCourse, where 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 we might otherwise
Starting point is 00:53:36 just take for granted. Beyond that, STEM more broadly is of interest. And while we're not experts ourselves, working with colleagues of ours and 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. When you mentioned 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 Khan Academy was like a very popular resource. I imagine that's still around. And so that would be, I guess, a competitor. 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.
Starting point is 00:54:16 But I think the more, the merrier, the world only benefits for more educational resources. And so if those are, let's say I'm a, okay, let's say I'm a parent and I'm deciding should I put my, high schooler in the Khan Academy learning track of math or what you plan to offer. From what I've seen, certainly, of Khan Academy's work is that their, like ours, I think, is more of a cast of characters, at least on video form. At least I know the earliest of Sal 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.
Starting point is 00:54:52 And I think we try across CS50s courses traditionally to have a, a shared aesthetic, a shared pedagogical style, a shared lecturing style, 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. Coming to the end, like when you look back on your career, what is your biggest regret? 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
Starting point is 00:55:35 on a sheet of paper all 32 courses I thought I was going to take at Harvard, which did not come to pass. But it really led me astray in some way the first year and a half of school in that I was really focused on crossing requirements off the list, taking the courses I thought I should. And it It was until 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. And I finally understood aspects of English and Spanish retroactively that I never really had mastered when taking those same classes. I took a course on Dramatic Arts 101, which was a survey class on theater and writing and set design and acting.
Starting point is 00:56:22 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 archaeology, which was so much fun, so much so I had this existential crisis thinking, maybe I should have gone to a PhD in archaeology instead, but I stayed with CS. And I just wish someone had told me to calm down early on
Starting point is 00:56:47 and sort of explore more, particularly areas in which I'd, 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 like a real job. But as recently as a recent sabbatical, I spent a whole semester essentially interning with GitHub as a professor in residence and learning the ropes of the real world software engineering company. and having access to the internal issues and bug reports
Starting point is 00:57:25 and feature requests and sitting in as a fly on the wall to some of the team meetings and design chats. 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.
Starting point is 00:57:48 Did you ship a project or like, what was that time at GitHub like? What was the... 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,
Starting point is 00:58:03 especially in the design of certain products and to at least speak up on behalf 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. so I don't think you'll find any code that I wrote,
Starting point is 00:58:24 but hopefully one of my issues underlies some code that's now in the code base. What about looking back on your time doing CS50? If you were to just reflect on what went well and what didn't go well, just the highlights of your time running the course, what would you say? I think it's been very meaningful, so much so that it's become our mission organically to have this now tradition of open courseware
Starting point is 00:58:52 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
Starting point is 00:59:10 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. And I hope too, in so far as we've been a bit unusual,
Starting point is 00:59:29 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 this, more people should be sharing, leaning on us, us leaning on them, because I do think that's still a missed opportunity educationally. What's your best technical book recommendation of Sol wants to learn programming or if there's maybe some other topic that you
Starting point is 00:59:51 recommend a book for, you'd love to hear it. My favorite book is Hitchhackers' 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. Funny enough, within CS50s 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, to be. needing a textbook for the course.
Starting point is 01:00:19 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 an 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. 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 more arcane in C called The Hackers Delights, which is this wonderful
Starting point is 01:01:01 hardcover book that just has really neat, neat bit trickery and low-level hacks, low-level techniques you can use to make your C-code, especially all the more performant. 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. Is there an official textbook for the Harvard CS50,
Starting point is 01:01:43 Not the open one? Okay, so that one also has the... Other than having access to a computer and the internet, there's no financial requirements. That's great. I love that idea. Last question for you is, if you could go back to the beginning of your career
Starting point is 01:01:58 and kind of give yourself some advice, what would you say? 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
Starting point is 01:02:28 would have gone off to industry for some amount of time. 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 and tech have lived. Awesome. Well, thank you so much for your time. I really appreciate
Starting point is 01:02:49 David. Yeah, thanks so much. Hey, thank you for watching this podcast. If you liked it and you want to see the show grow, please support with a comment or a like. Also, if you have any recommendations for people you want me to bring on, please drop a comment. Guests like Barbara Liskoff,
Starting point is 01:03:05 Mike Stonebreaker, Mark Brooker, These were all people that I brought on because someone left a comment. On another note, aside from the podcast, I'm working on building the ergonomic keyboard that I wish existed. Here's a glance at the prototype. It's a split keyboard. So there's two sides. This is in the case. But yeah, we launched on Kickstarter and we hit our goal within eight hours of launching.
Starting point is 01:03:27 I really appreciate it if you were one of the people who grabbed one of the early units. We're now working on the long journey of building the tooling now. And so if you still want to pick one up, I've left the. late pledges open on Kickstarter so you can grab one there i'll put a link in the description thank you again for watching the podcast and i'll be

There aren't comments yet for this episode. Click on any sentence in the transcript to leave a comment.