DAVID J. MALAN: Hello, world. This is CS50. And this is CS50's office hours, an opportunity to have some questions and answers or Q&A with me, David and CS50's own Carter Zenke. So we are here today on a bit of a special day. What is today and behind us? CARTER ZENKE: Today, I think is commencement. And we have a lot of schools undergoing activities. We also have a lot of rain going on right now. DAVID J. MALAN: Yeah, indeed. And for those unfamiliar, commencement is Harvard's word for graduation, when all of the seniors and graduate students actually finish their studies here at Harvard. And indeed, it's just started raining and even thundering and lightning, so they've rather sent a lot of people inside. For the curious, the way Harvard's graduation has been structured for years is there was a morning ceremony. And the rain held during that, so all was well. And thousands of people gather in Harvard Yard. They put up literally thousands of folding chairs. And all of the dignitaries, and deans, and presidents are up on the stage presenting students sort of verbally with their degrees. But then in the afternoon, all of the undergraduates at least go back to their dormitories or their houses, as they're called here. And then on a much smaller scale, a few hundred students at a time actually receive their diplomas. And each of the graduate schools go back to their own campuses as well. So where is this that we are right now, Carter? CARTER ZENKE: Well, we're at the SEC, the Science and Engineering Complex, which is over in Allston. Apart from Cambridge, a lot of things are happening right now. DAVID J. MALAN: Yeah, so this is actually a pretty new building. It opened during COVID times. And it's where computer science and a bunch of other folks recently moved. So through these windows and over by that stadium, if you can kind of see it in the background and even past that is Cambridge, Massachusetts. And that's where Harvard's original campus is. But it turns out Harvard has a lot of land here in Allston, which is a neighborhood of Boston, Massachusetts. And so over the next few decades, Harvard's probably going to grow all the more here. And indeed, engineering is growing. We're actually in a pretty empty space. We're in this massive building. But this building, this room that we're in, is actually all concrete and columns still. They haven't even finished building out the entire campus here. CARTER ZENKE: Yeah. Can I ask you what your commencement was like? DAVID J. MALAN: My own commencement? Yeah, so I graduated from the college in 1999. I don't remember too much of it, but I remember that you wake up very early at, like, 5:00 AM, 6:00 AM. And I think we-- I mean, this is very silly, but I think we had, like, champagne and strawberries as a special treat, the downside being had to wake up at, like, 5:00 or 6:00 AM for this. And everyone put on their black gowns at the time. And then I think we probably-- I think we professed to the church in Harvard Yard, which is called Memorial Church. And in there, there was some kind of benediction or speeches just to get folks thinking about the morning and the ceremony. And then we went outside. And on a per house or a per dormitory basis, we all sat together in clusters. And then all of the other students gathered. I don't really remember anything after that other than being grumpy most of the day because everyone wanted to take photos. And this wasn't even with cell phones. This was old school cameras. And it was film, and so you had to get the picture just right, so everything took forever. So I'm not really-- I have not really been back since my own graduation. It was pretty tiring, honestly. And you, at least, kind of lucked out in that you had a virtual commencement. CARTER ZENKE: Yeah. Mine was unique, for better or for worse, where it was a virtual commencement. And I remember we had pre-recorded these hello videos that were going to play on the slideshow. And I had filmed mine on this DSLR. And those [INAUDIBLE] on their phones. I think they cropped my face in a weird way, so it's like my face was like this [INAUDIBLE]. DAVID J. MALAN: And yours should look the best with that kind of camera. CARTER ZENKE: Yeah, but it was really funny. I got a big laugh out of it. It was really kind of fun. DAVID J. MALAN: Did you say, hello, world in your video? CARTER ZENKE: I don't know if I did, but I should have. That would have been a good one. DAVID J. MALAN: Well, this is actually Carter's last office hours with us, sadly. He's moving on to the real world. And Carter, it's been so wonderful having you involved in CS50 full time. And rest assured, Carter's still going to be heading our SQL class, our new and new and coming forthcoming course on our programming as well, so he's not really going away. He's just going elsewhere. What do you have in mind for the real world? CARTER ZENKE: So joining a startup that focuses on computer science curriculum. And they're focused more on K-12, so excited to see what it looks [INAUDIBLE] excited about computer science even earlier in their lives too. DAVID J. MALAN: Well, wonderful. Well, we definitely wish you the best. And much like Brian and Colton before him still will be in CS50's ecosystem, so you'll continue, I'm sure, to see Carter online. CARTER ZENKE: Most definitely. DAVID J. MALAN: In the meantime, I think we have a whole palette of questions. And in fact, if you're tuning in live to the office hours and you would like to, one, say hello to the world yourself, and perhaps, what country or city you're from in the world, please feel free to say hi to classmates. And two, if you have additional questions, I'd love to see what's on folks' minds. Office hours here on campus, more traditionally, is meant to be an opportunity for students and professors or students and teaching assistants, or TAs, just to talk about courses' material. And while it's probably not the best use of all of our time to talk about bugs you're specifically having and problem sets, may be more broadly about CS50, computer science, the real world. Happy to take any of those questions as well. And you also kindly submitted a bunch of questions in advance via comments, so we'll pluck off some of those too. CARTER ZENKE: Yeah. [INAUDIBLE] kind of apt for today. People are graduating with their degrees in computer science, for instance, is a reflection on undergraduate education in computer science. Somebody was asking, there's a lot of disciplines in computer science, like machine learning, AI systems, and so on. To what extent do you think the degree kind of has too much in it right now and should be split apart? Or [INAUDIBLE] it's actually pretty good as it is right now? DAVID J. MALAN: That's a good question. And this has actually come up a lot lately in the context of artificial intelligence, which actually came up in that other question. And should AI be its own major or concentration, as Harvard calls it here? And I don't really think so. I mean, this has already happened to some extent. Depending on the university that you're at or the community college that you're at, it might be called computer science. It might be computer engineering, electrical engineering. There's physics, more proper. And there's certainly other areas that probably are offshoots of computer science that exist. I'm not sure it really matters, though. Like, at the end of the day, what matters is what you study and not what you call it. And I think, frankly, as a catch all calling the field and the subfields computer science is a pretty strong signal, anyway. I think if we start to make things too niche by calling it a specialization in artificial intelligence, then it kind of does a disservice to all of the fundamentals that you would acquire on your way toward learning more about AI because underlying AI, of course, is algorithms, and data structures, and so many of the computational ideas that would be in CS itself. So I'm not sure it really matters. CARTER ZENKE: Yeah. I agree with that. And I think some of that work is done by the undergraduate degree, the master's degree, the PhD degree because they give you more specialization as you go on in school, right? DAVID J. MALAN: I think that's a good answer. CARTER ZENKE: Yeah. Makes sense. All right. One we had here too is, what's the biggest mistake you see people make when they start out in CS? DAVID J. MALAN: What's the biggest mistake? Honestly, it's not allocating enough time or thinking that it will go more quickly more easily than it actually will. And sadly, among our undergraduate population here, no matter how many times I feel we say this at the start of the semester, no matter how many times we remind them of this during this semester, there's still frequently, I think, this frustration, this disappointment with oneself that they just don't feel good at it, or it's taking too long, or it's too hard. And at least for me, personally, when it comes to programming in particular, if I can't clear out a big block of time, I just don't enjoy it. I mean, I would hate the idea of trying to do one of our own problem sets under pressure under a deadline because it takes the fun, the delight out of actually doing it. And it turns it into more of a slog. So I think the best thing people can do in general and the best thing to do to avoid that mistake is just clear your schedule, or start early, or do whatever it is so that you're not bumping up against a deadline. CARTER ZENKE: Yeah. I agree. And to your point about being difficult and time consuming, I think one mistake I see people doing frequently is going at it alone saying, this is a thing that I need to learn by myself. And one thing I value is CS50's community that we've built up over the past few years, like many years of people who help each other out online and ask questions and respond to them. So it's really, I think, an important part of learning computer science, that community. DAVID J. MALAN: Yeah. No, I do agree. It's funny. What also comes to mind here too, because not everyone is like me, certainly. And I'm reminded of CS50's own Tommy MacWilliam, one of our former head teaching fellows. Some of you might remember him from some of the videos we've filmed online. And Tommy had this incredible knack for being able to make optimal use of his time so much so that when we were traveling to a conference once, sitting in the boarding area of an airport waiting for an airplane, he was able to sit on top of his suitcase, take out his laptop, and write code for 15 minutes. And he sort of got in and got out of that mental headspace. And honestly, I just am not capable of doing that, unless it's something silly like fix a typographical error or change some aesthetics on a web page. I need to clear my morning and not have some deadline I'm bumping up against because otherwise, I just can't get into that zone. CARTER ZENKE: Yeah. When I was first starting in undergrad, this idea kind of resonated with me of this idea of deep work, which is you have to set aside at least an hour to do something deeply and actually get into their right mind space. DAVID J. MALAN: There's a word for this, deep work. See? Carter actually went to Education School. CARTER ZENKE: Yeah. So I've tried to structure my days or have at least a little bit of time for deep work, but it doesn't always happen, right? [INAUDIBLE] DAVID J. MALAN: Well, that's the flip side is you probably know, I mean, there's certain software projects that I, myself, have been working on because I want to. And they just kind of linger, and linger, and linger because something always comes up. And if it interferes with my ideal work scenario, I think to a fault, I postpone it. CARTER ZENKE: Yeah. That's fair. DAVID J. MALAN: Well, I think we have a bunch of other questions that have come in. For instance, next up-- let's see. Why don't we go ahead and pluck off data science? So one of our students online has asked, any tips for people who want to pursue data science? And I ask you because, of course, your interest in SQL and in R, which are very germane to that world. CARTER ZENKE: Yeah. So I see data science as being a combination of different disciplines, one being math and statistics and the other being computer science. And so I think you could really think about entering both those disciplines at once and picking out which pathways you want to take within both of those. So for instance, if you want to learn computer science, how it relates to data science, You could take a course like our own Introduction to Programming with R, which gives you this tool set in this language called R to learn how to do the kinds of programming you might do in data science. But you'll probably still want to learn about the math and statistics behind that field, so take courses in math and statistics. And learn what you can learn to then implement it then in code which you might learn in R, for instance. DAVID J. MALAN: And this CS50 course on R I keep hearing so much about, when does it launch? CARTER ZENKE: July 1. DAVID J. MALAN: Nice. So you can go to actually cs50.edx.org/r in order to tune in to that. Well, we also had a question about AI and ChatGPT, which is germane to startups. And someone asks, in the near future, like, two to three years, can we use AI, like ChatGPT, as a co-founder of an actual startup? CARTER ZENKE: Interesting. I think I've actually seen maybe a LinkedIn post or two about somebody who's tried to use ChatGPT to generate a startup idea and then implement it. And they'll go back to ChatGPT and say, here's the results. What do you think we should do? And it actually gives pretty good advice about what to do when you're building a startup. At least, this one person found not one instance. I don't know if that's a reliable way to go about it, but an interesting example, I think. DAVID J. MALAN: Yeah. I do think if you have a friend, a colleague, an acquaintance who has some skill set that you, yourself, don't have and there's an opportunity to actually collaborate with a human, at least, for now, that's probably the better bet. But who knows down the road? CARTER ZENKE: Yeah. And I think to add on to that, a new model like GPT-- what is it 4.0, for instance? Yeah, that can do a whole lot of-- you can just talk to it, and you can get back a verbal response. I think it's really cool. DAVID J. MALAN: Yeah. Makes sense. Well, the pace that students should be taking CS50, this is a question that's come up before because we described the class as self paced. But what does that mean? And what would your advice be when it comes to actually successfully starting and finishing the class? CARTER ZENKE: Yeah. Well, I think to go back to what you were saying earlier about this, just taking time to learn. When we say self paced, I would say move on when you think you've mastered the concepts for that particular week. So when you feel like you have solved the problem set and the best design you can, maybe that's your cue to go on and try something new. Here on campus, of course, it's, like, one week of content per one actual week in person here, but that doesn't have to be the case when you go off and do it on your own either. DAVID J. MALAN: Yeah. That makes sense. And when it comes to building one's final project-- this is a very open-ended question because it's a very open-ended project. Do you have any tips for folks on how to do that well? CARTER ZENKE: I'm curious what you think too. But one thing I think I've-- maybe two things. One, again, carving out time to work on it can be really helpful, like, just take a full hour to say, this is my final project time and maybe two, I think just picking out things that you find are problems in your own life. Things you could automate, things you could use computer science to help solve, that can give you some motivation to actually spend the time on it because it's solving a real problem that you, yourself, had, so yeah. DAVID J. MALAN: And if we circle back to AI, definitely a frequently asked question nowadays is one that was explicitly asked here, which was, what should we be focusing on to avoid getting replaced by artificial intelligence? I heard that cybersecurity, says this student, is a good sector that's relatively safe from AI. CARTER ZENKE: Yeah, potentially. I got to listen in to Sam Altman's talk here at Harvard not too long ago. And one thing that Sam was talking about is we tend to think early-- underestimate how much better AI is going to get, at least, in his mind. And I think that is kind of a good point to take with you. And I wonder if maybe the solution or one step in the right direction is to try to learn all you can about AI, how it works, how you can use it to be the person who's using the AI and not being replaced by it, if that makes sense. DAVID J. MALAN: Nice. And let me ask our friends, Max here. Max, we're seeing reports of folks having trouble hearing audio. Is that, in fact, fixed? All right. So hopefully, you can now hear us again. And we'll fix the audio you might have missed later on when we post the video after the fact. All right. So Carter, what questions do you have, as you like to say? CARTER ZENKE: Let's see. So ones-- I'm trying to figure [INAUDIBLE] our chat here. Any-- actually, let's go based on what we had from-- DAVID J. MALAN: Oh. Carter, actually, as someone notes in the chat, R is fairly easy. CARTER ZENKE: Oh, R is fairly easy. DAVID J. MALAN: If anyone is wondering, so why would you teach R if it's so easy, Carter? CARTER ZENKE: Well, there are parts of R that are certainly a little bit less easy and I think are helpful to do in a more structured way with a community, where the group is helping you learn those things. But actually, R is easy if you want to do certain analysis. Like, it is easy to do basic statistics with it, easy to do-- representing data with it, which is kind of by design for this language called R. People made it to be able to work easily with data. So if you want to learn how to do that easily, you should learn R. DAVID J. MALAN: Yeah. But I think there's something to be said, as folks will see when they actually take the class, if they do, online, that understanding some of the primitives and the design decisions underlying R is probably helpful for just wrapping your mind around what it should be able to do, how it does it, what the data structures are in memory so that it's not a complete abstraction. CARTER ZENKE: I agree. DAVID J. MALAN: Yeah. So in the chat here, someone notes that recently the founder of NVIDIA said that AI will make learning code irrelevant and kids should focus elsewhere. Your thoughts? CARTER ZENKE: An interesting take. I've seen it repeated around various platforms. I think it remains to be seen. I do like the idea of maybe eventually, we move away from writing a lower level language like C and more thinking in terms of this higher level English-like language to do the work of programming. But I also think it's still useful to learn these underlying primitives, underlying ideas because it helps you understand why things are working the way they work. Yeah. It's kind of where I would stand on that. I don't know what you think too. DAVID J. MALAN: I mean, I would note that NVIDIA is in the business of selling hardware to facilitate AI, so I'm not sure how objective that is. And history is littered with examples of famous people making bold claims all the way back to Bill Gates and technology and the like that are then refuted or contradicted just some years later. I do think the reality is that we hopefully won't be writing code in exactly the same way because frankly, there's a lot of TDM to it. It's annoying to have to look things up or to have to try to remember, oh what is that function, or what's the signature of that function? And then there's a lot of plumbing that needs to be done, unit tests that need to be written and so forth. So as much as even I, like, programming, there's just so much baggage that comes with it, that takes away from the germ of an idea that you're trying to solve. So I certainly hope that AI changes what programming is. And frankly, in an ideal world, I, and you, and hopefully, others would often be programming, in some sense, by just using our voice and getting natural language, processing, or NLP to actually be where you would have long hoped it would be, even though the voice assistants of today are still only just so-so. But the reality is computer science, certainly as we presented in CS50, has never been about programming in C or in Python, even though as of 2024, those are two of the languages we use. It really is about problem solving. And we say that in, like, week zero of the class because what you're learning is how to think more methodically, more algorithmically, how to be and act as a smarter person. And so sure, if all you're doing is picking up a book on programming in Python, maybe that's not the best use of time. But that's just an implementation detail when it comes to studying a field. And so I don't think AI is going to replace the value of being an educated, smart person anytime soon. CARTER ZENKE: I agree. And a related question here I think is somebody who might be a junior in the industry, they feel like they're being replaced by AI. Their skills are being replaced by AI. What would you recommend for them getting into the industry like software development or working in AI? DAVID J. MALAN: Yeah. I mean, I would first disclaim that I think no one knows exactly what's going to happen or how quickly it's going to happen. But I think it's only to one's benefit to move and learn quickly, to be willing to and determined to adapt. I think if you find yourself doing a lot of the same thing again and again, even if you really like it, like making lots of HTML, lots of CSS, or just writing tests for a company, anything wherein you're doing a lot of repetition, that's kind of ripe for disruption, so to speak, by AI because it can probably be pretty readily automated. We've seen examples of this before. I've mentioned before that I think about this question in the context of, indeed, HTML in how back in the day, I used to write HTML by hand, line by line, character by character. And then tools like Dreamweaver came around, downloadable software that click, click, click, and it generates the HTML. Nowadays, we have things like Wix and Squarespace that you don't even need to download anything. It's in the browser. And soon enough, it'll be even more abstracted than that. But once you've done that once, twice, 10 times, 20 times, like for a lot of us, the fun starts to dissipate, and it just gets a little monotonous. So I think if you find yourself doing anything monotonous, even admittedly, if you like it quite a bit, just be willing to continue to adapt and evolve because I think if you don't, then you will be left behind as technology advances. But otherwise, if you're keeping up as a human, there's only going to be more exciting stuff on the horizon. CARTER ZENKE: Yeah, I think learning the right skills, like you've mentioned, is really a good point. And I think just getting into the industry itself, like finding a job, just trusting the process of applying, trying again, trying again. I think if you're doing the right things, it will eventually work out. And so you should just keep giving it that, try giving it that try. If it takes six months, a year, longer, it is what it is. It's going to work out at some point. DAVID J. MALAN: Yeah. I think a term in English is upskilling, which sort of refers to just upgrading, enhancing your own human skills. And I mean, case in point, I only ever formally studied things like C a little bit of C Plus Plus when it comes to programming in college. And then after that, I taught myself SQL. And I taught myself PHP. I taught myself Python with a lot of help from other people, but I didn't take classes on this. And so in the sense of upskilling, I just continued to learn new things. And so that's kind of kept me abreast of the latest trends in industry. It's opened up interesting problem solving opportunities. So just don't stay comfortable with where you're at. CARTER ZENKE: And speaking of upskilling, do you think there are any new features to be added to the duck debugger to upskill, let's say, the duck? DAVID J. MALAN: No. Yes. Well, hopefully, the duck will only get better and better. Honestly, even if we don't do anything, thanks to standing on the shoulders of folks like Microsoft Azure and OpenAI on whose APIs the duck is built, we've long talked for years now within CS50 about complementing check50 and style50 with a third tool, design50 so that not only the assessment of the course, but also the pedagogical feedback is entirely automatable in addition to any humans we might also have on staff. And so a design50 tool in my mind would be sort of already implemented by the duck now, whereby if you just ask the duck for some advice about specific code you've written, it might very well be able to give you that feedback. But it's not automated. We don't use it for assessment. And you have to do a bunch of the legwork, literally the copying and pasting yourself. So I think that will start to help. I'd like to see more tight integration with VS Code. And these are features we've actually deliberately turned off where you get little squiggles under things that could be better or little notifications in the gutter of the editor. I think we could just have the duck more omnipresent. And honestly, as we've seen from OpenAI recently, I think just being able to talk to the duck is going to get pretty compelling soon. Browsers make this a little hard to do audio in two directions. It's not impossible, but it just adds some complexity. And so we don't have that plumbing in place just yet. But I think if you could talk to or have the duck talk back at you, that's just going to add another vector and aid with accessibility, because everything has to be typed at a keyboard as well. CARTER ZENKE: I think that opens the interesting question of, what would the duck's voice sound like? [INTERPOSING VOICES] DAVID J. MALAN: [INAUDIBLE]. Yeah, I don't know. I mean, at that point, you could probably choose your own virtual animal to moo at you or bark at you. CARTER ZENKE: That's really interesting. Maybe a question to switch gears a little bit, for folks who really like this field, want to perhaps teach it, how can they become a teacher, like you, like us, who are teaching computer science? DAVID J. MALAN: That's a good question. I mean, for me, it kind of happened accidentally or organically. The way I tell the story in CS50 is-- or to people who ask is when I was in college, I ran for student government, or the undergraduate council, as it was called here. And I lost. And among my shortcomings I felt at the time were my inability to publicly speak well. And so I wanted to fix that. And I signed up for Harvard's Computer Society, which is the group of really geeky kids on campus, myself included, who were just involved in computer things. And the thing I chose to get involved with was their seminar series. And so I had an opportunity to teach my classmates about HTML. And I don't know if CSS even existed at the time, but HTML at least how to make web pages. And then that evolved into an opportunity my senior year of college to be a teaching assistant, or TA, for a class called Computer Science E1 Introduction to Computers and the Internet. So this was 1998, so we were still introducing people to computers and the internet. And then right place, right time, I had the fortunate opportunity, thanks to Professor Henry Leitner here at Harvard, to teach that same class as the instructor. So it was me and a bunch of 100 or so adults. I think I was definitely the youngest one in the room so much so, that I was so determined not to look like the youngest person in the room, that I wore. Not only a suit, but also suspenders. I have not worn suspenders since 1999. But I wore suspenders because I remember thinking my childhood physician always wore suspenders, and he looked old, so I should therefore wear suspenders. And I don't know if it worked. But anyhow, I really got a taste for teaching. And on the scale of being a courses lecturer, I'd been tutoring classmates in some form for many years off and on. But this really kind of took the opportunity to the next level. And so after that, at least here in the US, in higher education, a lot of doors tend to be closed to you as an instructor, unless you have a higher advanced degree, like a master's degree in something or a PhD, as in my case, in computer science. So I pursued that so as to keep those doors open to me. CARTER ZENKE: And maybe similar to what you were doing as an undergrad, thinking you don't have to know everything to teach somebody something. You can know what you know. And people will be grateful to know what if you can teach it to them. So take what you know. Try to teach it to help somebody out. See what you can teach them. DAVID J. MALAN: Yeah, I think just practicing. And I think, frankly, a wonderful side effect of teaching is ideally just being able to communicate effectively. So even if you go off into the business world and you need to give a pitch, or you're trying to convince someone to invest in your company, or you're just trying to convince colleagues to come on board with some idea you have, it's all about public speaking at the end of the day. So just getting rid of those nerves, I think, is a wonderful feature of going that route. CARTER ZENKE: Most definitely. And just scrolling through here to see if we can find other questions for us. DAVID J. MALAN: Do you look up syntax when working on a project? CARTER ZENKE: Oh, absolutely. All the time. I look up a lot of R syntax to teach this course. But I think that is a habit you can reduce with time. As you learn a new language, you can look those things up. Maybe intentionally try to learn them, so the next time you encounter that same question of what was that syntax, just try to remember it. And if you can't, go look it up. But I think if you just go through the process of trying it, and trying it, and trying it, you'll eventually-- it comes to you eventually. DAVID J. MALAN: Yeah, because suffice it to say, the syntax aspects of programming languages is generally not the intellectually interesting part. If you don't know the syntax, you're just slowing yourself down. And so there's this intrinsic motivation, I think, to just get good at the syntax because you'll save yourself time. And programming is no fun if you're literally tabbing back and forth, back and forth, looking every darn thing up. But yeah, I do this all the time. And honestly, I have found ChatGPT, for instance, to be especially helpful because frankly, it's hard to Google syntax because you're typing in weird characters. And sometimes they come up with results on Stack Overflow or the like. But really, it's hard to express the question sometimes. And there's certain languages. Bash comes to mind. Perl comes to mind, a little bit of Ruby that are just so arcane in their syntax. I don't remember it. And even code, I've written-- literally the other day, I had a copy of a line of bash code, some kind of regular expression, plus some other stuff and asked ChatGPT, what does this line of code do? Because I don't even remember myself. So those kinds of things, I think, are especially-- it's especially useful to be able to ask some smart human or barring that computer. CARTER ZENKE: Yeah. And speaking of ways of getting help online by googling or through some AI, a question here is, if it was a conscious decision to limit the amount of text you can put into a chat bot like CS50.ai? DAVID J. MALAN: Yeah, short answer, yes. It's partly cost, honestly. So the APIs, or Application Programming Interfaces that we, ourselves, use, which borrow features from OpenAI, and Microsoft Azure, and similar such tools, they cost money. And we're fortunate to be supported by OpenAI, and Microsoft, and others who make it possible for CS50x students and teachers around the world to use these services for free. But there is a computational cost, right? There are servers somewhere running. There is electricity somewhere being used. There's internet bandwidth somewhere being used. And all of that adds up. And so we do try to minimize our utilization thereof, so that we can maximize just how many students and teachers can use it per day, for instance. And the reality is there's probably diminishing returns of being able to paste a bigger, and a bigger, and bigger, and bigger chunk of text certainly relevant sometimes for code. But honestly, if you think about how you would interact with a human like on Stack Overflow, are you really going to post pages, and pages, and pages of code? No human is going to bother giving you the time of day if you overwhelm them with information. Now, ChatGPT might be a lot friendlier when it comes to that. But presumably, the quality of results might be better if you help focus the AI on your actual problem and not just paste a big blob of text. CARTER ZENKE: Yeah, I agree. And speaking not just of the quantity of text, but let's say, the number of messages you might send over the course of an hour, what do you think is maybe best for students who are beginners versus those who are more advanced as they talk to these AI tools? DAVID J. MALAN: Yeah, it's a good question because this is something we've limited to. As you might know, there's a heart system, like HP, like Zelda or other games whereby you can only ask so many questions per unit of time. And then the hearts regenerate, and you can ask more questions. That, too, is partly for cost, but it's also for pedagogical reasons whereby when we looked at this past summer at the distribution of questions, most people were asking a, let's call it a healthy number of questions. And I don't know what that number is, but it feels reasonable. But then there was this long tail where there were hundreds of questions being asked. And we made this judgment call that if we think about the real world and like a real world class, a student might go up to ask a teacher a few questions. And admittedly, that might not be enough. So in an ideal world, a student would ask a teacher even more questions. But if you're occupying the teacher for 200-plus questions, odds are you're not really synthesizing or reflecting on the answers that are being given. And at some point, you should go back to your desk and think about the problem. And I'm specifically thinking of one of my high school teachers who used to send me back to my desk when I'm asking too many questions. So I think the upside of AI in software is that we can now empower humans to ask more questions than social conventions or real world time constraints allow. But I don't think that should be to the detriment of actually helping a learning student find the sweet spot between asking, answering, and thinking about the same. CARTER ZENKE: I agree. Other ones here. DAVID J. MALAN: Well, along those lines, let's push a little harder. As Isaac asks here, is there a limit to how much is appropriate to use the duck AI independent of our own hearts? CARTER ZENKE: Yeah, that's interesting. I think it really depends on the context such that I have a hard time giving a concrete answer of saying you should ask no more than 10 questions per hour, for instance. I think for myself, I can kind of get a good conversation going with a tool like ChatGPT. And I find that I do want to ask more questions than sometimes I perhaps should, so maybe having a little bit of self-restraint is helpful sometimes. Say, maybe I could figure this out on my own. I don't have to just ask a question, ask a question, ask a question. DAVID J. MALAN: Yeah, I feel like there's probably some self-policing there because you want to solve the problem. You don't want to just have an endless conversation. And presumably, you enjoy the programming part, not the asking questions part. So I feel like there should be some intrinsic pressure on tabbing away from the AI at some point. CARTER ZENKE: I think there is a natural inclination, at least for me, where I don't want to bother a human with 20 questions all at once. But I can do that with an AI. That's kind of a benefit to using a tool that is not a human. But at the same time, there is maybe a limit to myself. I can self-police. DAVID J. MALAN: It occurs to me. I should caution that once you move on from CS50's full-time team, you become sort of like the ghost version of the Jedi in Star Wars. So we might still call on you once in a while via Slack or text message with questions, as Brian, and Colton, and Tommy, and others know all too well. So I hope that's OK. CARTER ZENKE: Absolutely. DAVID J. MALAN: But we will turn to the duck when we don't want to bother Carter, for sure. So there was an interesting question here. And the chat asked about why Python is less used in back end development than JavaScript. That may or may not be true. I don't know the statistics, but that sounds like a reasonable conjecture. But whether or not it's factually true, why might that be? CARTER ZENKE: Yeah. I have to say I don't know exactly why. I could give a hypothesis. I might say we use a lot of JavaScript for front end development for making things interactive on a web page. I wonder if for folks who are designing web pages if it just made sense. They already knew Javascript. Just take that language, and do it on the back end as well. Do you have other ideas? DAVID J. MALAN: I think that's a big one because then if you think about it strategically from a company's perspective, your team only needs to know the one language. And there's just an economy of scale there. It's easier to onboard, recruit people, probably. Pedagogically, though-- I'll take the CS50 perspective. I just think Python is easier and more accessible for web development, at least, in the sense that we want to do it. I actually love JavaScript. And of the languages out there, I kind of actually prefer programming, only because there's just some intellectually interesting stuff there. If you're using a so-called single-threaded model, but you therefore need to write asynchronous code, you either need to use things like callback functions or promises. Or there's a slightly newer syntax like async, await. But you have to understand the sophistication of what's going on inside of the computer, whereas Python just kind of does what you intend. And there's a value to that. But JavaScript is just kind of interesting. But when we thought about whether or not, for instance, we should introduce even more JavaScript server side into CS50, I just don't think we can do it justice in the time we have. And honestly, it escalates too quickly. I mean, so many of the students who've taken CS50, CS50x literally started programming, what, three months, six months before in Scratch. And that's just-- at some point, it's too much and too many ideas. And I'd much rather students get their footing with a more procedurally-oriented language like Python, even though it has functional aspects than context switch too much. CARTER ZENKE: Yeah. And it's partially why we have courses like Brian's webcourse that dives even more deeply into Python as a backend language, but also JavaScript too. DAVID J. MALAN: Yeah, indeed. I think we have time for a few more questions here. Let's see. Feel free to pluck anything off what you see as well. CARTER ZENKE: One-- let's see. Oh. Maybe related to the changing of the field and all these new things happening, what keeps your interest in the field after you've been doing it for as long as you have? DAVID J. MALAN: Oh. That's a good question. Honestly, it continues to evolve. Certainly, CS50 and CS50x in turn itself are continually evolving. I think we focus much more on the human aspect of things, right? It's not just the teaching and the execution of the courses' curriculum. It's the communities. We, just a few weeks back, spent a week in Indonesia in Jakarta working with almost 300 teachers who will now go back to their own classrooms, be it at middle school or high school levels, and teach computer science to their own students. And so there's that social aspect to it. We've done a lot of that within the US and elsewhere in the world. And so for me, it really has been that community aspect. And if I think we were just doing more of the same for all of these years, then it wouldn't be nearly as fun. CARTER ZENKE: Yeah, I agree. I think it's the social aspect that keeps me going for this kind of-- DAVID J. MALAN: Yeah. And even technologically, I mean, being a geek, the course has evolved. Even though fundamentally, if you peel back the packaging of it and the implementation details of the languages and the problem sets and so forth, the syllabus, the backbone is still really the same, but the libraries are changing and the techniques that you can use. And therefore, teaching things have been getting easier for students and teachers alike, thanks to just advancements in coding platforms and frameworks. So that keeps the geek in me interested too. CARTER ZENKE: Yeah, absolutely. DAVID J. MALAN: Do you have a favorite language? CARTER ZENKE: Hmm, favorite language. I've really liked learning R and teaching it recently. If I had to have a go-to language, I would say that's probably still Python just because it's so high level, very easy to use. I do like C for its ability to get a little more low level. I feel like you can just kind of learn the entire language. You can't often do with other languages. So I guess, I would appreciate each one for its own merits if I had to say. DAVID J. MALAN: OK And when you-- for those unfamiliar, Carter did his graduate education in Education School. And for those, particularly those who asked earlier about teaching itself, what does one learn in Education School that you don't in school, school? CARTER ZENKE: Sure. So it takes a more reflective approach to your own educational experiences and thinking through what works and what doesn't. And to that end, there are lot of directions you can go in. One that I really like thinking about is just human development and how do people learn things. And once we know that, we can know a lot more about how to deliver an effective lesson or create an effective experience. I think one thing that I took away that I think is maybe useful for those who are just beginning is thinking maybe less of teaching as I told somebody something and they learned it and more about trying to create, I don't know, conditions and structures to help support learning in a long-term way, so checking for understanding, asking questions, getting students to give you feedback on your own teaching is really valuable as you're going off and doing things like education. DAVID J. MALAN: And one other question that's come up in the chat a few times is about a different sort of engineering, prompt engineering. What is that? And is this something students now need to learn? CARTER ZENKE: Yeah, so prompt engineering refers to writing a prompt to some AI, like ChatGPT, like the duck, for instance, that helps it behave in the way you want it to behave. And so we actually did some prompt engineering ourselves to create the CS50 doc to have it be built on top of a model like GPT-4, but then say, for instance, you should behave like a duck would, like a teacher would. And so I think it's a good skill if you want to be able to use AI appropriately thinking of what prompts you can use to get the AI to do what you want to do successfully. DAVID J. MALAN: Yeah. I think our friend, Rongxin, just the other day, put it in a way that I really liked, which is that prompt engineering, it's not really engineering. I mean, it really is using English or whatever human language to just, with higher probability, get the AI to do what it is you want it to do. But in that sense, it's really just about asking good questions or giving good instructions. And ironically, that's arguably what computer science is all about, or at least, the algorithms in computer science is all about. And so it's not really a skill one should be putting on LinkedIn. It's not really something that one should be taking courses in. Frankly, I do think AI, as it advances in the coming months and years, is only going to get more tolerant of us humans being bad at prompt engineering. And it's just going to tolerate free form English. And we see this already in CS50. I mean, you would be surprised to see just how terse some of the questions that are asked of the-- case in point, someone copy and pastes a bunch of text. And then the question is, any thoughts? CARTER ZENKE: Any thoughts. DAVID J. MALAN: But this is a real question. And amazingly, the duck can handle sometimes questions like that and infer from context what it is the student is probably asking about. That is not a good example of prompt engineering. But I do think this is sort of a short-lived term of art that I'd be surprised if we're still living with it before long. CARTER ZENKE: I agree. And maybe one to close us out on this same theme, do you get tired of hearing of AI all the time? DAVID J. MALAN: That's a good question. No. I got more tired of hearing about blockchain and Bitcoin for a while. I got more tired of hearing about cloud computing as though it was suddenly invented when really it was just a very clever branding and abstraction on top of outsourcing, and servers, and renting things, and so forth. But AI does feel a little different, at least, to me. Like, this has happened quicker and sooner than I would have expected, having something like ChatGPT in the wild. It is better in its first, well, version 3.5 and now 4.0 than I would have expected. And it's been impactful, really, overnight. I'm reminded of other flashes in the pan, so to speak, like Google Glass, which the whole world was talking about. And then it completely went away. But it didn't really move the needle or do anything fundamentally game changing, at least, in the time. But AI in this form and large language models in particular have kind of done that already so much so, that CS50, within the span of months from November 2022 to the late spring of 2023, we steered the ship that is CS50 in the direction of AI and the CS50 duck. And that's pretty unprecedented for us curricularly, I mean, even a change from PHP to Python, which is a different kind of change. But we talked about that for years before finally deciding, OK, now the time is right. But we pivoted fast. And to me, that just reinforces what is already my instinct that yes, there's something different here. So I'm not tired of hearing about it, but I am very excited to see where it's going. I feel like we might actually live like the Jetsons in our own lifetime. DAVID J. MALAN: Yeah. Check back in a year. CARTER ZENKE: Indeed. DAVID J. MALAN: Well, Carter, thank you so much, not only for today, but also for the past several years in CS50. So glad you'll remain in CS50's family online through CS50's SQL class, this new R class, which everyone should register for if of interest. But thank you so much from us all. CARTER ZENKE: Thank you. And thank you to the team. And thank you to all of you who've supported me in this role and helped me contribute something, I hope, to your own education. DAVID J. MALAN: Should we end it on a fun note? CARTER ZENKE: Yeah, sure. DAVID J. MALAN: Why is the CS50 profile pic a cat? CARTER ZENKE: This? In my three years here, I haven't figured out. DAVID J. MALAN: Well, I can answer that. So back in, like, 15-plus years ago when we signed up for YouTube and other accounts, we needed a profile picture, and I certainly wasn't going to use my face. And so happy cat was a very popular meme at the time, who sadly doesn't really get talked about much anymore. And he's even a little hard to google, even though knowyourmeme.net or whatnot has a bio on him. He's just a very happy, adorable cat. And so we used his face for some time. And now that we've done it for so long, it feels like, well, that is the mascot. And it's only because of rubber duck debugging that the AI took on the persona of a duck. But otherwise, a cat is probably the de facto mascot, even though the duck seems to be eclipsing it now. CARTER ZENKE: Cats are great. DAVID J. MALAN: Yeah. It was close. The duck was almost a cow, I will say, because we know-- you might recall that in CS50's Python class and now CS50, we introduce cowsay, a sort of older school program that with ASCII art lets a cow say something out of its mouth virtually. And I thought that would be kind of a cute version because the Android and iOS emoji for a cow is actually super cute too, the big face one. So that would have worked well. And in fact, ironically, the duck emoji isn't quite apt because it tends to be depicted as a mallard. I wish they would change that to a rubber duck. CARTER ZENKE: You could petition the consortium. DAVID J. MALAN: We could. We do know someone within the Unicode group that we could ask, but I don't know if that's going to happen anytime soon, but thus was born the CS50 cat, and thus was born Carter's years with us. I'm so happy again to have had you with us. CARTER ZENKE: Yeah, me as well. DAVID J. MALAN: All right. Well, this was CS50. If you're new to the community, go to cs50.edx.org. To register for the R class in particular, add a /R to the end of that URL. This then was CS50.