Malan accurately distinguishes the architect from the bricklayer, proving that fundamental logic remains the only hedge against AI-driven obsolescence. It is a necessary reality check for a generation that mistakes knowing a framework for understanding a system.
Deep Dive
Prerequisite Knowledge
- No data available.
Where to go next
- No data available.
Deep Dive
Harvard Professor: CS50, What Matters More Than Programming Now, Lecturing Well | David J MalanAdded:
I don't want to get into a whole internet fight here, but this is David Men. He's a Harvard professor famous for transforming CS50 into a worldclass online computer science course. How do you keep people engaged for a 3-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. 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 student actually under Brian Kernneahan.
>> 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. Um, 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. 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 Karnahan, was at the helm uh for just that one year. I was totally hooked. 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.
>> 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 make out. Do you looking back now as 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 two minus two out of probably two points on Hello World.
>> I I actually uh I transcribed it and I tried to compile your program and it didn't compile.
>> Interest. Okay, so now thanks 30 years later.
>> Actually, I I was able to compile. It's kind of interesting, but you have to like kind of force the compiler to do your bidding. It's like void main. Yes.
>> And you're supposed to be like int main typically.
>> Typically now it has since been standardized in C99 which was in my defense a version of C that did not exist in 1996. Um 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. In 1996, >> what was the 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.
Um, 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 cuz I was so determined to project being older um even though I was still just a senior. Um, 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. Um 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 5 years in computer science and then in 2007 when I was finishing up the former professor my own adviser uh 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 um they were interested in having a senior uh uh 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 and that was somehow 19 years ago.
>> When you took over CS50, it feels like the 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?
>> 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. Um the online aspect really started with Harvard Extension School since I was fortunate right place right time um 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 Lightner 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. Um 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 friends and teaching fellows fell asleep during the middle of class. Um so we've aspired to higher production value since but it was really by it happened very organically. So once we started participating in the extension school's online education program for several years uh Apple released the iPod around 2003 or four give or take. And so at the time we were distributing the courses 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 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. 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 uh 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. 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 um 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 we did know that we were starting to see bandwidth problems at the very early days. In the very early days we were using DreamHost uh 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 r the URLs in the RSS file to the new web host 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 uh 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 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 credentiing, the transcript and the credit and so forth. But the knowledge itself um 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. 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. Do you think about how can I you know hook the audience?
Does that ever factor into your your lecture design >> lectures? No. Um some of our social content. Yes. in so far as we are producing in addition to the courses traditional in-classroom content um 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 but we have been very deliberate over the years from the beginning and especially since the age of the MOO in 2012 when Corsera and edex and other platforms were coming around to not steer into this bite-sized 3 minutes, 5 minute chunks. Um that I know there is data to confirm that it drives engagement but not necessarily educational outcomes. Um, we have fairly unusually 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 inerson 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, 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. Um, I think we'd prefer that they meet us halfway. And if you need to take more than 3 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 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 CSS's first lecture, we do this bit where I'll tear a phone book in half um to demonstrate the the performance of something called binary search and algorithms for finding information more quickly than linearly searching the phone book one page at a time. And that's really just to be dramatic. Um it has less and less impact these days because most students uh 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. Um, 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. 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 by a 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 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 in the get-go and so we'll have uh 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 uh to keep folks attention, but really to latch on to 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 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 that 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 um as opposed to being optimized for some technology. 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 uh 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?
>> Absolutely. I mean and 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 cherrypicked 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 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 keystrokes and the debugging and the lower level implementation details. So, we talk about this actually in a paper in a talk we we gave at a 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, you know, 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 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?
>> Yeah, I think it's just the sort of the expression, you got to bring your agame 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. Um 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 uh 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 uh 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 uh poorly rated by all the students and >> with the online education that we can do to 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 take 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?
>> 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 um 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 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 borne by so 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. Um 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. Um 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 um with some of our friends at Oxford and the lifelong learning group there. This is very much still the exception to the rule unfortunately even after 10 plus years of MOO's 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 were that we 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 uh for lack of transport or for lack of safety at the time. 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 at large, for that resource sharing. And I think there should be um 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. Um, 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 leg work and reinventing wheels across school and state lines. the mindset that you said the the computer scientist mindset of getting rid of the redundancies and kind of um consolidating resources. I mean it's immediately logically obvious to me but um what would like let's say there's there's three top courses in America there's like MIT's there's Stanford's 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 who hold these views that there is a concern that maybe we are putting ourselves out of business or there's more of a a school pride and I definitely saw some of that on Harvard's own campus where like no no no like 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. 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 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 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. Um, 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 Marggo Seltzer before that and many other faculty prior to me and them. Um, 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. Um, and certainly u beyond that is zeros and ones which is not going to be fun for anyone. Um, 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 u in particular with some fundament 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 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 hashts and we're talking about how you could construct singly linked doubly linked lists uh hashts and tries uh 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++ with STL and certain other libraries like if you want it you're going to have to build it yourself 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 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. Um, and three, it's a wonderful scaffold to higher level languages because one of my favorite things from week five to six in CS50 is students go from having written the week in week five like their own hashts implementation uh for adding data, retrieving data and so forth, which is like this many lines of code for some font size. And it it gets whittleled down in week six to one line where you just instantiate a Python dictionary. But and you can be productive with a dictionary 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 CS50 among them is not to uh 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. Um, 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 um layers that we use in the class. For this podcast, I produce transcripts for every episode for convenient skimming and I built a custom tool to automate that. Recently, I noticed in the Barbara Liskoff transcript, my simple speechtoext 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 used cursor 3, picked the strongest version of opus 4.7 extra high, and had an agent make a plan to fix that. And while I was waiting, I figured I'd trigger a few more agents for code cleanups and front-end improvements. um 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 um 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 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 like if you if I was just going into the industry and I'm just making web apps that a lot of this um underlying stuff you you might not need and so maybe it's not a good use of time. And I'm curious what you would say to someone that has that 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 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 um 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. Uh 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. Um, 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 is 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 amaz you know basic data structures those types of things bread and butter and then in the end of the course there's the 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 I'm assuming it's a more highle 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-ampus students. Um it coincides by design with uh family weekend when uh first years and juniors uh students parents come to town very frequently. Um and so we do it as a very broad introduction to what everyone is talking about nowadays in the AI space.
Um 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 OpenAI's APIs and Microsoft Azure's web serp um that they're using every day or every week 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 chatbt or Gemini or any number of off-the-shelf AI tools though we don't allow those through policy for the courses assignments. Yeah, I had a conversation with uh uh another professor and specifically about um you know is AI affecting how the kids are learning >> and uh his perspective was it was kind of um and maybe he didn't do it properly and the students were overrelying 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 chat GBT and say honestly just solve the problem for for you as an educator in computer science, what is the ideal uh relationship with AI for your students?
>> Yeah. So, this virtual rubber duck at CS50.AI, which anyone with a free GitHub account can use, um is really meant by design to be a less helpful version of Chat GPT, one that is also more attuned to CS50's own material and syllabus and so forth. Um, 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 chatpt came out. 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 pro uh 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. Um, and that's just because I mean we for better for worse are part of these models in so far as the open 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. Um, so that is 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 autocomplete your whole 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. Um, 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. Um, 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 chatbt before you ask your homework question 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 to end up typing into the prompt."
Whereas I think it's a lot cleaner um if not simpler to know I cannot through policy go to chatpt Gemini copilot 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. Um and that to me is a very healthy line because you know if you're crossing that line if you're pulling up chatgpt.com or gemini.google.com google.com and the like. Um, and at that point, it's a conscious choice to be academically dishonest as we would describe it in CS50's syllabus.
>> When I was going through my CS education, um, cheating was already pretty rampant. Um, I mean, people put their code on GitHub and you kind of paraphrase someone else's code. Well, not me, but other people. And uh I I imagine with the new technology that actually I mean with with anything with cheating it's adversarial. There's people who are cheating and there's people are trying to catch the cheaters, right? I could imagine that the cheating tools are advancing faster than the ability to catch them because you just generate the code. It's not easy to say, "Oh, that was um you know AI generated or whatever." So, uh, I'm curious if you see more cheating on your end and, um, yeah, generally if you're catching more of dishonesty.
>> Statistically, we are not catching more.
I would like to think that the behav the misbehavior has not marketkedly increased if only because we like a lot of intro courses around the world um 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 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 transcribed So we have historically administratively disciplined so to speak between five and 10% of CS50 student body every semester and that's kind of a norm among across peer institutions you know uh upper bound of roughly 10%.
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. Um that said, um we've not seen an uptick in uh in what in detections of academic dishonesty. Um I 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 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 because the AI somewhat pseudo randomly is spitting out an amalgam of these various training inputs. Um, 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 easier to detect behaviors, >> right? 5 to 10% that feels uh spiritually like a lot like one out of 10 students uh 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. I'm just glad it's not higher than that.
>> On the topic of uh AI, a lot of students, they see where these uh 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?
>> 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 uh 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 constantly tell students the course is not about Scratch and C and Python and JavaScript. 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. Um, AI is pretty darn good already at generating code. It's only going to get better. But that's wonderful in so far 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. The 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 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 dotcom 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 um 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 all that alone would be wonderful um 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 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 odd so to speak by chatting back with it that like no 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 human should stay in charge for some time in in today's environment it 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 like what if that 90% becomes 99% or you know maybe it becomes 100%.
Then I think people get scared but you know it's hard to say exactly in the future but in so far as our goal within even a class like CS50 has always been to out 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. I think >> you talked about the enrollment rates and I have this uh 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 um you know there's this trend of kind of enrollment rates going up and then they they tank with the top.com bubble and then they went up as well because of some adjustments that you made and that right now we're kind of in this um 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 uh 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. Uh 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 GPT and similar tooling was sort of omnipresent. So AI has only exacerbated I think that concern. Um but I think what we're going to see if we sort of extrapolate out is that there's going to be these es and flows over the years. Um much like we've seen or the pendulum swinging each uh different way whatever whichever metaphor you prefer.
Um 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 um predictable outcomes that like technology to date has maybe had. You know, I think back even over my 19 years with CS50 and, you know, AR and VR was to be all the rage and then we had blockchain and Bitcoin and uh Google Glass even like excited the imagination like no other technology at the time and all of these things are still with us in some form or some future incarnation and especially with blockchain and bitcoin like 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 react and overreact habitually to these kinds of things until we sort of find a healthier medium where people appreciate the the real value and not just the opportunistic uh value of it all. You're in a unique position because you 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 um some people have the opinion that the important part of college is actually not the education. And it feels like this this um you know inerson version versus the online one is it's 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. So, I'm curious your your thoughts on uh going to college versus getting the worldclass 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 credentiing 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 in academics sometimes to a fault, like is is often secondary. 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 unless those same students are taking the class in their dorm rooms um or at home like like during co. You've taught so many years of this same material.
What is the the most difficult concept that you see people consistently having trouble >> pointers in C? 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 I'll share here. I was in one of the dining halls on campus with my teaching fellow or TF who himself was a a student probably one or two uh 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 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, you know, never quite clicked. Even though I'm sure many people tried to hammer that into me previous to that, 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. Um, to really go down to that level takes some some new thinking and it took me a while. Let's say someone is trying to help someone else grasp a difficult concept. like what's your your best tip on how to really teach someone something that they're really struggling with?
>> My my instinct is to say metaphors and or what we more broadly call memorable moments where it's a phone book where you're trying to teach binary search or even a screenshot of the iOS context app where you're trying to uh introduce the same algorithm. It's during co 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 and creating those binary doors for students I think helps them latch on to a visual that makes a very esoteric topic that frankly who really cares about binary search dayto-day just kind of come alive and you realize at least back in 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. 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 10's place, the hundreds place, and so forth. Hey, guess what? binary is the exact same methodology, but you just have the ones place, the tw's place, the four's 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 uh those more comfortable only.
Open AAI, Enthropic, Curser, and Verscell all use this product to make their lives better. And the problem it solves is when you're building SAS 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 SKIM, there's arbback, there's audit logs. These are all things that take time to integrate, but aren't the main focus of your app. Work OS 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 SAS product and you want to sell to other companies. work OS 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 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 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 you know, let's just say you have someone and you explain a race to them, you know, 100 times and they they kind of don't get the concepts. Do you feel like really you can kind of grow and and learn?
>> I think to an extent. I mean, if you if it's still not sinking in after a hundred 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 giving up after two times, 10 times, 49 times, I'm not quite sure where the cut off 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 jing 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. Um, 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 or 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.
>> TS50 is um 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 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. If you really compare the syllabus from fall of 1996 versus now and 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. Um 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 open courseware after CS50 um earlier courses gentler courses that students can take uh 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. Um 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 uh courses in maths or maths as he says um 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 just take for granted.
Um, beyond that, uh, STEM more broadly is of interest and while we're not expert our experts ourselves, um, working with colleagues of ours in the arts and humanities and trying to bring this form of theatricality and these memorable moments, uh, 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, uh, Khan Academy was like a very popular resource. I I imagine that's still around. And so that would be I guess a competitor.
>> I do think some healthy competition is good is if it drives different courses, different teachers to sort of try new things and teach differently. Um but I think the more the marrier. The world only benefits from more educational resources.
>> And so if those are let's say I'm 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 Academyy's work is that they're um like ours I think is more of a cast of characters at least on video form at least. I know the earliest of um Salan's work was sort of the handwritten style for his niece or nephew um which was wonderfully compelling and engaging. I think we stylistically are just very different 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 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 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 uh 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. 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 wasn't 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 um dramatic arts 101 which was a survey class on theater and writing and uh set design and and acting and pretty much every uh 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 uh 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 I 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 in so far as I've largely stayed in academia, you know, I've never had like a real job, but um as recently as a recent sbatical, I spent a whole semester essentially interning with GitHub as a professor in residence and learning the ropes of a realworld software engineering company and having access to the 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. 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.
>> Did you ship a project or 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, 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 came 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, but hopefully one of my issues underlies some code that's now in the codebase.
>> 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, like just the highlights of, you know, your time running the course, what 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 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 and I hope too in so far as we've been 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 this more people should be sharing leaning on us leaning on them um because I do think that's still a missed opportunity educationally what's your best like technical book recommendation if someone wants to learn programming or if there's maybe some other topic that you you know recommend a book for uh yeah I'd love to hear it >> my favorite book is Hitcher's Guide to the Galaxy and I think everyone should read that or play the terminalbased video game that existed when I was growing up of it. Um, 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. Um, 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. Um, 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. Um, more arcanely, there's a book that we still recommend to students unofficially or if they really want to go pursue something more arcane um, in C called The Hacker's Delight, which is this wonderful hardcover book that just has really neat neat uh, bit trickery and low-level hacks, low-level techniques you can use to make your CC code especially, all the more performant. So, there's a lot of value in a book like that. Um, 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, not the open one? Okay, so that one also has the >> other than having access to a computer and the internet. Um, there's no financial requirements.
>> That's great. I love that idea. Last question for you is, you know, if you could go back to the beginning of your career and kind of give yourself some advice, what would you say?
>> Explore more. I do think I 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. 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.
>> Awesome. Well, thank you so much for your time. I really appreciate 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 Liskov, Mike Stonereaker, 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.
Um, this is in the case, but yeah, we launched on Kickstarter and we hit our goal within 8 hours of launching. I really appreciate it if you were one of the people who grabbed one of the early units. Um, 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
Related Videos
Agentforce NOW AMA: Build with React and Salesforce Multi-Framework
SalesforceDevs
490 views•2026-05-28
How agent o11y differs from traditional o11y — Phil Hetzel, Braintrust
aiDotEngineer
450 views•2026-05-28
WEB TECHNOLOGIES UNIT-2 | Degree 4th sem BCOM Computers web technologies unit-2 full explanation💯✅
LearnwithSahera
1K views•2026-05-29
More tests are always better? How to use AI to identify tests that bring little value
Alliance4Qualification
335 views•2026-05-29
Search Algorithms Explained in 60 Seconds! 🤖💨
samarthtuliofficial
218 views•2026-06-01
People of Game of Thrones using JavaScript DOM
AltCampus
296 views•2026-05-30
Introduction to Problem Solving Part - 1 | Lecture 1 | Intermediate DSA
ascensionix
107 views•2026-05-29
🚀 BCS613C Compiler Design | Module 1 to 5 Schema Evaluation 🔥 | VTU 6th Sem 💯 #VTU #bcs613c #exam
Pranavaa-y4y
104 views•2026-06-02











