1 00:00:00,000 --> 00:00:01,130 DAVID MALAN: Hello, world. 2 00:00:01,130 --> 00:00:02,090 My name is David Malan. 3 00:00:02,090 --> 00:00:04,608 And these are CS50's office hours, so to speak. 4 00:00:04,608 --> 00:00:06,650 Traditionally, on campus at a place like Harvard, 5 00:00:06,650 --> 00:00:08,900 office hours are these opportunities for students 6 00:00:08,900 --> 00:00:12,357 to visit professors' offices or teaching assistants' offices 7 00:00:12,357 --> 00:00:15,440 and ask them questions about the course, ask them questions about homework 8 00:00:15,440 --> 00:00:16,482 assignments and the like. 9 00:00:16,482 --> 00:00:19,310 For us, CS50, with so many students around the world online, 10 00:00:19,310 --> 00:00:22,220 we thought we'd use these office hours, as we have in weeks past, 11 00:00:22,220 --> 00:00:24,140 to just be an opportunity to ask questions 12 00:00:24,140 --> 00:00:28,640 about computer science, about CS50, about college, about Massachusetts, 13 00:00:28,640 --> 00:00:30,300 really anything of interest. 14 00:00:30,300 --> 00:00:32,450 But if it's specific to homework assignments, best 15 00:00:32,450 --> 00:00:35,660 to ask those questions online, because all we have here are our cell phones, 16 00:00:35,660 --> 00:00:38,010 and can't really see questions related to code. 17 00:00:38,010 --> 00:00:41,000 So we're here indeed outside of Harvard University 18 00:00:41,000 --> 00:00:43,280 and outside of the Biological Laboratory. 19 00:00:43,280 --> 00:00:46,400 So this is where all the science students on campus spend a lot of time. 20 00:00:46,400 --> 00:00:50,090 I myself only took bio, biology, in ninth grade, 21 00:00:50,090 --> 00:00:51,270 so it's been quite a while. 22 00:00:51,270 --> 00:00:53,603 But this is actually one of my favorite parts of campus. 23 00:00:53,603 --> 00:00:54,950 There's just a beauty back here. 24 00:00:54,950 --> 00:00:56,893 It's nice and quiet and tranquil. 25 00:00:56,893 --> 00:00:59,060 I mean, I'm literally standing on a volleyball court 26 00:00:59,060 --> 00:01:00,990 that the students can use out here. 27 00:01:00,990 --> 00:01:03,190 And it's especially ornate on the building. 28 00:01:03,190 --> 00:01:07,170 In fact, if we walk over here, you can see along the top of the Bio Labs 29 00:01:07,170 --> 00:01:12,010 is all of these carvings of various animals and the names thereof. 30 00:01:12,010 --> 00:01:15,060 And that spans the entire building, which is several stories tall. 31 00:01:15,060 --> 00:01:17,400 And fun fact, back when I was a freshman, 32 00:01:17,400 --> 00:01:21,000 like way back when in university, I actually explored this part of campus. 33 00:01:21,000 --> 00:01:21,750 I still remember. 34 00:01:21,750 --> 00:01:24,180 And I somehow got into the building, went to the top floor 35 00:01:24,180 --> 00:01:26,250 where there's this beautiful greenhouse where 36 00:01:26,250 --> 00:01:29,590 they were doing lots of growing of things, experiments, and the like. 37 00:01:29,590 --> 00:01:33,390 So even now, all these years later, I have really fond memories of that. 38 00:01:33,390 --> 00:01:37,530 I'm going to be joined in just a bit by my teammates, CS50's own Carter 39 00:01:37,530 --> 00:01:42,360 Zenke, with whom I've just been playing some volleyball in this very 40 00:01:42,360 --> 00:01:42,930 here court. 41 00:01:42,930 --> 00:01:44,138 Now that's not actually true. 42 00:01:44,138 --> 00:01:45,388 We're just kind of pretending. 43 00:01:45,388 --> 00:01:47,190 And Carter didn't even throw me that ball. 44 00:01:47,190 --> 00:01:48,690 And in fact, this isn't even a volleyball. 45 00:01:48,690 --> 00:01:49,410 It's a soccer ball. 46 00:01:49,410 --> 00:01:51,993 But we thought this would be a nice bridge by which we can now 47 00:01:51,993 --> 00:01:55,080 take a stroll over here and introduce Carter, who's 48 00:01:55,080 --> 00:01:56,923 kindly been awaiting us playing here. 49 00:01:56,923 --> 00:01:58,590 CARTER ZENKE: Oh, hey David, nice catch. 50 00:01:58,590 --> 00:01:59,160 DAVID MALAN: On the court. 51 00:01:59,160 --> 00:02:00,270 Nice to see you, Carter. 52 00:02:00,270 --> 00:02:01,353 It's a great match before. 53 00:02:01,353 --> 00:02:02,145 CARTER ZENKE: Yeah. 54 00:02:02,145 --> 00:02:03,050 DAVID MALAN: Yeah. 55 00:02:03,050 --> 00:02:06,230 Well, so I was just reminiscing with everyone 56 00:02:06,230 --> 00:02:10,460 about my favorite part of campus this year, the Bio Labs, 57 00:02:10,460 --> 00:02:15,120 and got me thinking about biology, which I myself didn't take since ninth grade. 58 00:02:15,120 --> 00:02:17,300 So that was quite a bit of time ago. 59 00:02:17,300 --> 00:02:18,905 How much science did you ever study? 60 00:02:18,905 --> 00:02:22,880 CARTER ZENKE: I think I did some biology, maybe in ninth grade, 61 00:02:22,880 --> 00:02:23,850 did some chemistry too. 62 00:02:23,850 --> 00:02:25,100 DAVID MALAN: OK, yeah, me too. 63 00:02:25,100 --> 00:02:26,720 CARTER ZENKE: And then I did some physics, 64 00:02:26,720 --> 00:02:28,040 which I actually really enjoyed a lot. 65 00:02:28,040 --> 00:02:28,790 DAVID MALAN: I did like physics. 66 00:02:28,790 --> 00:02:29,665 It was very physical. 67 00:02:29,665 --> 00:02:32,330 And I actually think about my physics class a lot 68 00:02:32,330 --> 00:02:36,103 when we try to come up with new ideas for CS50 and doing things on stage. 69 00:02:36,103 --> 00:02:38,270 We haven't quite ever done anything with explosions, 70 00:02:38,270 --> 00:02:41,420 but I do have such fond memories of high school and even in college 71 00:02:41,420 --> 00:02:45,410 or maybe grad school where I audited a physics class with Professor David 72 00:02:45,410 --> 00:02:48,587 Morin here at Harvard, who taught Physics 15A at the time. 73 00:02:48,587 --> 00:02:51,170 And it was just like every week was a different demonstration. 74 00:02:51,170 --> 00:02:54,890 I remember he was lying on a bed of nails to demonstrate, I think, 75 00:02:54,890 --> 00:02:58,075 how you can distribute force by just having a very large surface area. 76 00:02:58,075 --> 00:03:01,075 So it didn't actually hurt, even though of course it looked a bit scary. 77 00:03:01,075 --> 00:03:03,690 CARTER ZENKE: Yeah, I had a teacher named Mr. Price in high school 78 00:03:03,690 --> 00:03:04,590 who did the very same thing. 79 00:03:04,590 --> 00:03:06,060 I think he stood on a bed of nails. 80 00:03:06,060 --> 00:03:07,890 And we were all super shocked when he didn't get 81 00:03:07,890 --> 00:03:09,010 pierced through with a piece of nail. 82 00:03:09,010 --> 00:03:09,718 DAVID MALAN: Yes. 83 00:03:09,718 --> 00:03:12,360 And I feel like I see on Instagram and the like all the time 84 00:03:12,360 --> 00:03:16,380 these physics professors now who have a really big cannonball or something 85 00:03:16,380 --> 00:03:17,520 really heavy on a rope. 86 00:03:17,520 --> 00:03:20,955 And they let go of it and it swings away from them, but they stay very still 87 00:03:20,955 --> 00:03:22,830 and it doesn't actually hit them in the face, 88 00:03:22,830 --> 00:03:25,782 because of conservation of energy. 89 00:03:25,782 --> 00:03:27,240 I don't remember my physics either. 90 00:03:27,240 --> 00:03:27,940 CARTER ZENKE: I think you're right there. 91 00:03:27,940 --> 00:03:28,740 DAVID MALAN: OK, something like that. 92 00:03:28,740 --> 00:03:30,300 Google that later, folks. 93 00:03:30,300 --> 00:03:33,210 We should probably focus more on computer science with Carter 94 00:03:33,210 --> 00:03:35,280 and I are more expert in. 95 00:03:35,280 --> 00:03:37,740 If you'd like to ask us some questions via the chat, 96 00:03:37,740 --> 00:03:41,760 please do, again, on CS50 Computer Science University. 97 00:03:41,760 --> 00:03:44,580 Or life more generally, have any questions been coming in? 98 00:03:44,580 --> 00:03:45,810 CARTER ZENKE: Yeah, I think a related one here, 99 00:03:45,810 --> 00:03:48,360 we have a question from Siraj, who's a chemical engineering 100 00:03:48,360 --> 00:03:49,695 major at the University of Illinois. 101 00:03:49,695 --> 00:03:51,362 DAVID MALAN: OK, that escalated quickly. 102 00:03:51,362 --> 00:03:54,210 CARTER ZENKE: They're asking, should they perhaps minor in CS. 103 00:03:54,210 --> 00:03:56,565 Or what do you think is the usefulness of CS for something like chemistry? 104 00:03:56,565 --> 00:03:58,065 DAVID MALAN: Oh, that's interesting. 105 00:03:58,065 --> 00:04:02,522 So I majored in CS, which meant I took 12 or more courses, 106 00:04:02,522 --> 00:04:04,230 and then also went on to graduate school. 107 00:04:04,230 --> 00:04:06,230 But to minor in computer science, if unfamiliar, 108 00:04:06,230 --> 00:04:09,150 means to take fewer courses, so it depends on the university. 109 00:04:09,150 --> 00:04:12,598 But it might be for courses in computer science, maybe six courses, 110 00:04:12,598 --> 00:04:13,140 give or take. 111 00:04:13,140 --> 00:04:14,820 It probably varies by school. 112 00:04:14,820 --> 00:04:18,480 But it's an opportunity to go beyond your own primary interest, 113 00:04:18,480 --> 00:04:20,399 your so-called major, and study something 114 00:04:20,399 --> 00:04:23,520 that's secondarily of interest, like computer science. 115 00:04:23,520 --> 00:04:25,230 I think if it's of interest, absolutely. 116 00:04:25,230 --> 00:04:28,560 If you can fit it into your schedule, if you can do it 117 00:04:28,560 --> 00:04:31,500 without it being to the detriment of your other studies or activities, 118 00:04:31,500 --> 00:04:33,030 I think that's super compelling. 119 00:04:33,030 --> 00:04:36,030 Those fields, chemical engineering and computer science, 120 00:04:36,030 --> 00:04:39,870 are probably intersectional in the sense that they're both part of STEM-- 121 00:04:39,870 --> 00:04:41,910 Science, Technology, Engineering, and Math. 122 00:04:41,910 --> 00:04:46,140 So I mention this because I would generally typically encourage 123 00:04:46,140 --> 00:04:48,870 students to consider a minor in computer science if they're 124 00:04:48,870 --> 00:04:52,020 majoring in something very different for which there aren't already 125 00:04:52,020 --> 00:04:56,580 opportunities to take classes in CS or in computing, more generally. 126 00:04:56,580 --> 00:04:58,680 For instance, if you're majoring in the arts, 127 00:04:58,680 --> 00:05:01,160 the humanities, the social sciences, 128 00:05:01,160 --> 00:05:04,280 I think minoring in something like CS just 129 00:05:04,280 --> 00:05:06,770 gives you all the more of a mental model for other ways 130 00:05:06,770 --> 00:05:10,830 to solve problems and other skills, like actual practical programming skills. 131 00:05:10,830 --> 00:05:13,640 So in short, I see no reason not to minor in computer science, 132 00:05:13,640 --> 00:05:16,490 but I would especially encourage it if your field of study 133 00:05:16,490 --> 00:05:17,705 is not itself already STEM. 134 00:05:17,705 --> 00:05:19,580 CARTER ZENKE: Yeah, I had a friend in college 135 00:05:19,580 --> 00:05:22,790 who was focused on chemistry and on drug discovery, how it could 136 00:05:22,790 --> 00:05:24,470 try to prevent things like cancer. 137 00:05:24,470 --> 00:05:26,030 And he actually did a lot with computer science, 138 00:05:26,030 --> 00:05:28,230 trying to help discover new drugs kind of programmatically. 139 00:05:28,230 --> 00:05:29,150 So it was very interesting to me to learn. 140 00:05:29,150 --> 00:05:29,660 DAVID MALAN: Interesting. 141 00:05:29,660 --> 00:05:30,380 Yeah, cool. 142 00:05:30,380 --> 00:05:31,630 Yeah, thanks for the question. 143 00:05:31,630 --> 00:05:35,430 CARTER ZENKE: Yeah, another question here is shifting gears a little bit. 144 00:05:35,430 --> 00:05:39,740 But they're asking about AI and asking about their take 145 00:05:39,740 --> 00:05:43,380 on how AI can help programmers nowadays is in the past we had to use Google, 146 00:05:43,380 --> 00:05:46,130 but now it takes less than a minute to use something like ChatGPT. 147 00:05:46,130 --> 00:05:48,110 So how could we use these tools to help us? 148 00:05:48,110 --> 00:05:50,193 DAVID MALAN: Yeah, I mean, I think for programmers 149 00:05:50,193 --> 00:05:53,330 it's poised to be a very good productivity boost. 150 00:05:53,330 --> 00:05:57,080 Like a buddy of ours, Colton Ogden, who teaches CS50's Introduction to Game 151 00:05:57,080 --> 00:06:00,960 Development, he actually attests to having used GitHub Copilot, which 152 00:06:00,960 --> 00:06:05,610 is one of the AI-based software tools nowadays for programmers, in such a way 153 00:06:05,610 --> 00:06:09,450 that it boosts his productivity, he claims, by like 20%, 30%, 154 00:06:09,450 --> 00:06:13,290 so specifically by just helping him write code faster and help 155 00:06:13,290 --> 00:06:15,720 him avoid having to google things or go to Stack Overflow 156 00:06:15,720 --> 00:06:17,820 or read the actual documentation. 157 00:06:17,820 --> 00:06:20,850 Even I haven't played with GitHub Copilot or similar tools 158 00:06:20,850 --> 00:06:24,130 that much, since I don't write that much code, ironically, myself. 159 00:06:24,130 --> 00:06:28,980 But when I have, I mean, it certainly has helped me figure out new APIs 160 00:06:28,980 --> 00:06:32,040 or SDK Software Development kits where the traditional approach would 161 00:06:32,040 --> 00:06:36,240 be to go to the official documentation, look at all of the function signatures, 162 00:06:36,240 --> 00:06:39,550 look at the return values, figure out what it does and how it works 163 00:06:39,550 --> 00:06:40,120 and so forth. 164 00:06:40,120 --> 00:06:40,787 And that's fine. 165 00:06:40,787 --> 00:06:42,390 And that's the right way to do it. 166 00:06:42,390 --> 00:06:44,010 But it's also very time consuming. 167 00:06:44,010 --> 00:06:46,770 And by contrast, nowadays in recent months, 168 00:06:46,770 --> 00:06:51,990 if I want to figure out how do I make an HTTP GET request using the Request 169 00:06:51,990 --> 00:06:57,120 library in Python, totally googleable, totally lookable in documentation. 170 00:06:57,120 --> 00:07:01,080 But honestly, if I just ask something like ChatGPT or GitHub Copilot 171 00:07:01,080 --> 00:07:03,810 and just start my thought or ask the question-- boom, 172 00:07:03,810 --> 00:07:05,260 I have the code that I want. 173 00:07:05,260 --> 00:07:06,180 So it just saves time. 174 00:07:06,180 --> 00:07:07,965 And I'm finding that personally as well. 175 00:07:07,965 --> 00:07:11,430 CARTER ZENKE: I think I'm impressed buy these tools that work within an IDE 176 00:07:11,430 --> 00:07:12,760 where you actually edit code. 177 00:07:12,760 --> 00:07:14,220 So you don't have to go outside of it to find 178 00:07:14,220 --> 00:07:15,300 some information you're looking for. 179 00:07:15,300 --> 00:07:17,758 I find it helps me actually focus and get into a flow state 180 00:07:17,758 --> 00:07:20,100 more versus switching between tabs and going to Google 181 00:07:20,100 --> 00:07:21,730 and back to my code and vice versa. 182 00:07:21,730 --> 00:07:22,560 DAVID MALAN: Yeah, for sure. 183 00:07:22,560 --> 00:07:24,840 I think it's a nice evolution of what's been around for a while, 184 00:07:24,840 --> 00:07:26,220 like Google and Overflow. 185 00:07:26,220 --> 00:07:28,860 But it is indeed putting it all right in situ 186 00:07:28,860 --> 00:07:32,340 for you, in the place that you're at using VS Code or some similar tool. 187 00:07:32,340 --> 00:07:33,390 And it speeds things up. 188 00:07:33,390 --> 00:07:36,330 And that said, I would say that I would avoid, especially 189 00:07:36,330 --> 00:07:40,020 if you're learning programming for the first time via CS50 or some other class 190 00:07:40,020 --> 00:07:44,430 or experience, to avoid the temptation to overly rely on these tools too soon. 191 00:07:44,430 --> 00:07:47,190 Because honestly, if GitHub Copilot or similar tools 192 00:07:47,190 --> 00:07:49,770 are autocompleting a lot of the code you're writing 193 00:07:49,770 --> 00:07:52,110 and you don't actually understand it, you're not 194 00:07:52,110 --> 00:07:54,210 doing yourself a good service there. 195 00:07:54,210 --> 00:07:56,010 I mean, one, the code could be wrong, even 196 00:07:56,010 --> 00:07:59,190 though I do think longer term that will be less and less of a concern 197 00:07:59,190 --> 00:08:00,390 probabilistically. 198 00:08:00,390 --> 00:08:03,900 But two, you should have ownership I think 199 00:08:03,900 --> 00:08:06,720 intellectually and in terms of responsibility for what it is you're 200 00:08:06,720 --> 00:08:07,290 creating. 201 00:08:07,290 --> 00:08:09,480 And frankly, you can think of it as a teacher. 202 00:08:09,480 --> 00:08:12,360 It's helping you more quickly pick up some new skills. 203 00:08:12,360 --> 00:08:16,260 But I think you should still take those moments to actually understand or even 204 00:08:16,260 --> 00:08:19,807 ask something like ChatGPT how does that work or what does that mean. 205 00:08:19,807 --> 00:08:22,890 CARTER ZENKE: And I think switching gears a little bit to another question 206 00:08:22,890 --> 00:08:25,093 here, we have a question from-- 207 00:08:25,093 --> 00:08:27,510 don't have the name quite here, but they're asking about-- 208 00:08:27,510 --> 00:08:30,930 they talk about having a in-person conference for CS50 or something 209 00:08:30,930 --> 00:08:33,093 that brings folks to campus in any way. 210 00:08:33,093 --> 00:08:34,510 DAVID MALAN: It's a good question. 211 00:08:34,510 --> 00:08:37,343 And we've thought about this for some time and talked about it a lot 212 00:08:37,343 --> 00:08:39,240 internally, particularly before COVID. 213 00:08:39,240 --> 00:08:41,585 And then COVID put that vision on hold. 214 00:08:41,585 --> 00:08:43,710 Carter and I should probably talk about that again, 215 00:08:43,710 --> 00:08:47,970 because it has been of interest to bring CS50 ex-students and teachers to campus 216 00:08:47,970 --> 00:08:51,360 perhaps for a series of talks or workshops or the like. 217 00:08:51,360 --> 00:08:53,700 We do already for teachers specifically host 218 00:08:53,700 --> 00:08:56,963 an annual workshop in the summer to which we do bring teachers 219 00:08:56,963 --> 00:08:57,880 from around the world. 220 00:08:57,880 --> 00:08:59,005 But that's a smaller group. 221 00:08:59,005 --> 00:09:02,800 And it indeed it's folks who are already typically teachers themselves. 222 00:09:02,800 --> 00:09:05,820 But we've also thought about generalizing it away from CS50. 223 00:09:05,820 --> 00:09:10,470 I've always found it inspiring to sit in on other professors, other teachers 224 00:09:10,470 --> 00:09:11,100 classes. 225 00:09:11,100 --> 00:09:13,620 I still think back fondly on David Morin's class 226 00:09:13,620 --> 00:09:16,470 in physics, which was just so visual and "theatrical," 227 00:09:16,470 --> 00:09:18,925 which is a word we use a lot to describe CS50 nowadays. 228 00:09:18,925 --> 00:09:22,050 And I think it would be great fun to just bring students and teachers alike 229 00:09:22,050 --> 00:09:25,620 to delight in really cool educational ideas and applications, 230 00:09:25,620 --> 00:09:27,930 even if it's just lightning talks or five minutes 231 00:09:27,930 --> 00:09:31,080 here or there, because I think we can all certainly learn from other fields 232 00:09:31,080 --> 00:09:31,780 as well. 233 00:09:31,780 --> 00:09:33,440 So hold that thought. 234 00:09:33,440 --> 00:09:35,610 We'll give it some more thought. 235 00:09:35,610 --> 00:09:37,060 This is definitely of interest. 236 00:09:37,060 --> 00:09:38,070 CARTER ZENKE: And in the absence of being 237 00:09:38,070 --> 00:09:41,040 able to invite folks to campus, which requires a lot of logistics and flights 238 00:09:41,040 --> 00:09:44,190 and travel, I really enjoyed the online events we've been hosting recently. 239 00:09:44,190 --> 00:09:45,540 And we got a question here about Ready Player 240 00:09:45,540 --> 00:09:47,280 50, which is are we planning to do that again 241 00:09:47,280 --> 00:09:49,010 or something similar to that in the future. 242 00:09:49,010 --> 00:09:50,510 DAVID MALAN: That's a good question. 243 00:09:50,510 --> 00:09:53,310 For those unfamiliar, Ready Player 50 was this online game 244 00:09:53,310 --> 00:09:56,820 written by our friends at Lakera, which is an AI-based company with whom we 245 00:09:56,820 --> 00:09:58,530 got friendly over the past few months. 246 00:09:58,530 --> 00:10:02,150 And they a few months back had a game online 247 00:10:02,150 --> 00:10:05,508 called Gandalf, which went viral in the sense that lots of people 248 00:10:05,508 --> 00:10:06,800 started playing around with it. 249 00:10:06,800 --> 00:10:10,765 And what the game is is a series of levels whereby 250 00:10:10,765 --> 00:10:12,140 each one is progressively harder. 251 00:10:12,140 --> 00:10:16,070 And each one is a challenge to try to figure out what the secret word is, 252 00:10:16,070 --> 00:10:17,360 the secret password. 253 00:10:17,360 --> 00:10:19,610 But it's an exercise ultimately in what's 254 00:10:19,610 --> 00:10:22,160 nowadays called prompt engineering, like trying 255 00:10:22,160 --> 00:10:24,110 to engineer good prompts, good questions, 256 00:10:24,110 --> 00:10:27,410 in English or some other language, to get an AI to do something. 257 00:10:27,410 --> 00:10:29,840 But it also was an opportunity to explore 258 00:10:29,840 --> 00:10:33,620 a thread called prompt injection attacks which, are similar in spirit actually 259 00:10:33,620 --> 00:10:37,340 to SQL injection attacks, if you're familiar with those from CS50 260 00:10:37,340 --> 00:10:40,970 or Carter's new SQL class itself, whereby 261 00:10:40,970 --> 00:10:43,100 you try to trick the AI into doing something 262 00:10:43,100 --> 00:10:45,500 that the original programmer did not intend 263 00:10:45,500 --> 00:10:47,900 or that the AI itself is not supposed to do. 264 00:10:47,900 --> 00:10:50,682 So wonderfully our friends at Lakera wrote all of the challenges. 265 00:10:50,682 --> 00:10:52,640 They integrated some very CS50-specific themes, 266 00:10:52,640 --> 00:10:54,320 the duck being the biggest one of them. 267 00:10:54,320 --> 00:10:55,290 So, so much fun. 268 00:10:55,290 --> 00:10:56,690 And we're so appreciative. 269 00:10:56,690 --> 00:11:01,560 I'm not sure we want to ask more of them to come up with yet more levels. 270 00:11:01,560 --> 00:11:05,340 And I do think the art of prompt engineering, 271 00:11:05,340 --> 00:11:09,075 the process of trying to implement these injection attacks, I do think, frankly, 272 00:11:09,075 --> 00:11:11,700 is going to change for the better probably in the coming months 273 00:11:11,700 --> 00:11:12,700 and certainly year. 274 00:11:12,700 --> 00:11:17,250 So hopefully we won't need to discuss worries like prompt injection attacks 275 00:11:17,250 --> 00:11:19,560 nearly as much in the future, but we will see. 276 00:11:19,560 --> 00:11:22,740 I think we're all going to take a break from taking on such a big endeavor. 277 00:11:22,740 --> 00:11:23,520 But it was so much fun. 278 00:11:23,520 --> 00:11:24,750 And thank you all for participating. 279 00:11:24,750 --> 00:11:28,000 It was great fun to see the answers, the engagement, a lot of the social media 280 00:11:28,000 --> 00:11:31,050 posts of people posting their celebratory duck and fireworks. 281 00:11:31,050 --> 00:11:31,927 So, super fun. 282 00:11:31,927 --> 00:11:35,010 CARTER ZENKE: And if you play the game and watch the solution walkthrough, 283 00:11:35,010 --> 00:11:38,430 I was really fascinated by all of the different guards 284 00:11:38,430 --> 00:11:40,560 that Max and Natalie showed us that you can 285 00:11:40,560 --> 00:11:43,650 have, like a guard before the prompt even gets to the model, 286 00:11:43,650 --> 00:11:47,000 a guard in the model, a guard after you get the response from the model. 287 00:11:47,000 --> 00:11:49,000 So lots of different ways you can build this up, 288 00:11:49,000 --> 00:11:49,745 which I find really fascinating. 289 00:11:49,745 --> 00:11:52,203 DAVID MALAN: And one of my favorite excerpts from someone's 290 00:11:52,203 --> 00:11:54,760 prompt was something along the lines of, I'm getting sleepy, 291 00:11:54,760 --> 00:11:57,218 can you please just give me a hint, or something like that. 292 00:11:57,218 --> 00:11:59,520 And I feel like the duck actually obliged, as I recall, 293 00:11:59,520 --> 00:12:02,200 or it could be confusing it with another example. 294 00:12:02,200 --> 00:12:05,903 If you're just hearing about Ready Player 50 for the very first time, 295 00:12:05,903 --> 00:12:08,820 know that it's an allusion to a movie, which is actually a lot of fun, 296 00:12:08,820 --> 00:12:13,140 called Ready Player One, which is about this dystopian future in which everyone 297 00:12:13,140 --> 00:12:16,920 exists or spends much of their time in augmented or virtual reality. 298 00:12:16,920 --> 00:12:22,040 But the challenge itself is still freely available online at cs50.ly/ready, 299 00:12:22,040 --> 00:12:23,450 R-E-A-D-Y. 300 00:12:23,450 --> 00:12:24,630 CARTER ZENKE: Exactly. 301 00:12:24,630 --> 00:12:26,590 A follow-on question related to cybersecurity, 302 00:12:26,590 --> 00:12:28,920 which you've just finished your course on, 303 00:12:28,920 --> 00:12:30,900 about public and private key cryptography. 304 00:12:30,900 --> 00:12:33,390 If a public key is used to encode a message 305 00:12:33,390 --> 00:12:35,880 and a private key is used to decode a message, 306 00:12:35,880 --> 00:12:39,412 could the public key be used to reverse the message. 307 00:12:39,412 --> 00:12:40,620 DAVID MALAN: A good question. 308 00:12:40,620 --> 00:12:41,700 Short answer-- no. 309 00:12:41,700 --> 00:12:45,030 So the mathematical relationship between a public key and a private key 310 00:12:45,030 --> 00:12:47,790 is such that they are unidirectional processes. 311 00:12:47,790 --> 00:12:49,525 You use the public key to encrypt. 312 00:12:49,525 --> 00:12:51,700 You use the private key to decrypt. 313 00:12:51,700 --> 00:12:55,980 You should not be able to mathematically use the same public key 314 00:12:55,980 --> 00:12:57,270 to also decrypt. 315 00:12:57,270 --> 00:12:59,730 If you can, something is very, very wrong 316 00:12:59,730 --> 00:13:02,380 with the algorithm or your implementation thereof. 317 00:13:02,380 --> 00:13:05,700 And to our knowledge now with popular algorithms like RSA, 318 00:13:05,700 --> 00:13:09,660 with Diffie-Hellman, with others, there are no known such issues 319 00:13:09,660 --> 00:13:13,500 there if you're using them correctly and using correct implementations thereof. 320 00:13:13,500 --> 00:13:17,100 That said, you can use the public key in a different way. 321 00:13:17,100 --> 00:13:19,740 If you've not taken CS50's Introduction to Cybersecurity, 322 00:13:19,740 --> 00:13:25,530 one of the topics we do talk about is called digital signatures, whereby 323 00:13:25,530 --> 00:13:29,160 you can use your private key to digitally sign 324 00:13:29,160 --> 00:13:33,210 some documents, some files, some piece of data, and then someone else 325 00:13:33,210 --> 00:13:36,760 can use your public key to verify that signature. 326 00:13:36,760 --> 00:13:40,920 So it's like you are reversing the encryption and decryption process, 327 00:13:40,920 --> 00:13:42,283 but it's still asymmetric. 328 00:13:42,283 --> 00:13:44,950 You use one key for one process and the other key for the other. 329 00:13:44,950 --> 00:13:46,283 You can't use the same for both. 330 00:13:46,283 --> 00:13:48,283 CARTER ZENKE: One thing I like about that course 331 00:13:48,283 --> 00:13:49,600 is that it's more conceptual. 332 00:13:49,600 --> 00:13:51,030 So there's less actual programming, but you 333 00:13:51,030 --> 00:13:53,580 understand the basics behind security and how it actually 334 00:13:53,580 --> 00:13:55,470 works mathematically. 335 00:13:55,470 --> 00:13:58,410 And a question here is somebody asking about a coding bootcamp. 336 00:13:58,410 --> 00:14:01,950 So I think you learn how to program in those, maybe not so much 337 00:14:01,950 --> 00:14:03,670 as conceptually oriented as well. 338 00:14:03,670 --> 00:14:05,690 But what are your thoughts on the usefulness 339 00:14:05,690 --> 00:14:08,190 of coding bootcamps and their role in becoming a programmer? 340 00:14:08,190 --> 00:14:09,607 DAVID MALAN: It's a good question. 341 00:14:09,607 --> 00:14:11,640 I've never experienced one personally, so 342 00:14:11,640 --> 00:14:13,920 take all of this with a grain of salt, and ask people who have maybe 343 00:14:13,920 --> 00:14:15,630 done it if it was valuable for them. 344 00:14:15,630 --> 00:14:19,810 My sense of a lot of bootcamps in the US, at least in recent years, 345 00:14:19,810 --> 00:14:22,500 maybe a little less so now, is that there were so many of them 346 00:14:22,500 --> 00:14:24,480 and they were so darn expensive, honestly. 347 00:14:24,480 --> 00:14:27,510 Like in the US, like thousands of dollars. 348 00:14:27,510 --> 00:14:30,930 That said, they're typically very immersive whereby 349 00:14:30,930 --> 00:14:33,810 you spend several days, several weeks, maybe even several months, 350 00:14:33,810 --> 00:14:38,670 working alongside of others, being mentored by folks more experienced 351 00:14:38,670 --> 00:14:39,460 than you. 352 00:14:39,460 --> 00:14:42,297 And so I think it depends on, one, the reputation 353 00:14:42,297 --> 00:14:44,880 of the bootcamp you're considering and, two, what it is you're 354 00:14:44,880 --> 00:14:46,350 actually paying for. 355 00:14:46,350 --> 00:14:50,543 Probably the most valuable thing to pay for would be actual human support. 356 00:14:50,543 --> 00:14:53,460 So you'd want there to be some good ratio between the number of paying 357 00:14:53,460 --> 00:14:57,330 students and the number of teaching teachers, whether they're the staff 358 00:14:57,330 --> 00:14:59,660 or they're teaching assistants or course assistants 359 00:14:59,660 --> 00:15:02,300 or however they're called, because I think that's probably 360 00:15:02,300 --> 00:15:03,410 the most valuable thing. 361 00:15:03,410 --> 00:15:06,050 If I were to pay Carter to tutor me essentially, 362 00:15:06,050 --> 00:15:08,720 that's a similar analog where I'm hopefully 363 00:15:08,720 --> 00:15:10,850 getting a lot out of that one-on-one interactions. 364 00:15:10,850 --> 00:15:12,090 He knows me, I know him. 365 00:15:12,090 --> 00:15:14,970 I can ask him very specific questions instead of just googling. 366 00:15:14,970 --> 00:15:19,460 But if the bootcamp is much more hands off where you're left on your own, 367 00:15:19,460 --> 00:15:21,770 where you aren't very easily able to talk 368 00:15:21,770 --> 00:15:26,000 to other humans who are more experienced than you, 369 00:15:26,000 --> 00:15:29,030 it's probably not worth paying very much for. 370 00:15:29,030 --> 00:15:32,338 I think that's how you should think about the value. 371 00:15:32,338 --> 00:15:34,630 CARTER ZENKE: And a follow-on question we got here was, 372 00:15:34,630 --> 00:15:38,110 do we think it takes 10,000 hours to be a pro at something like programming. 373 00:15:38,110 --> 00:15:38,520 DAVID MALAN: Oh my god. 374 00:15:38,520 --> 00:15:39,800 CARTER ZENKE: And I think my take on that 375 00:15:39,800 --> 00:15:43,208 is it's not so much the number of hours as it is the kinds of practice you get, 376 00:15:43,208 --> 00:15:44,750 the kinds of relationships you build. 377 00:15:44,750 --> 00:15:48,110 I think it's one thing to learn from a book on your own, 378 00:15:48,110 --> 00:15:50,302 but another thing to go out and actually talk 379 00:15:50,302 --> 00:15:52,010 with people who are in the field to learn 380 00:15:52,010 --> 00:15:55,070 from them in this hands-on environment, and can help you become a pro I 381 00:15:55,070 --> 00:15:57,950 think much, much faster than just learning on your own in some ways. 382 00:15:57,950 --> 00:15:59,325 DAVID MALAN: Yeah, I do think so. 383 00:15:59,325 --> 00:16:02,340 That sounds like a really high number certainly and arbitrary. 384 00:16:02,340 --> 00:16:06,820 And for what it's worth, I learned how to program in a university environment. 385 00:16:06,820 --> 00:16:09,810 So I literally took CS50 25 some years ago. 386 00:16:09,810 --> 00:16:11,700 Then I took really one other software class 387 00:16:11,700 --> 00:16:14,500 called CS51, which is not freely available online, 388 00:16:14,500 --> 00:16:17,040 but there are analogs to it online, surely, 389 00:16:17,040 --> 00:16:19,650 that teaches us about functional programming, which 390 00:16:19,650 --> 00:16:22,650 is a different type of program that we scratch the surface of in CS50, 391 00:16:22,650 --> 00:16:25,340 but not very much, and object-oriented programming. 392 00:16:25,340 --> 00:16:27,090 And those were really the only two courses 393 00:16:27,090 --> 00:16:30,270 in which someone else taught me languages in particular. 394 00:16:30,270 --> 00:16:34,000 In fairness, I took one other very software-centric class years later, 395 00:16:34,000 --> 00:16:36,870 which was on operating systems, where you essentially build pieces 396 00:16:36,870 --> 00:16:38,730 of a Linux-like operating system. 397 00:16:38,730 --> 00:16:42,030 But what was valuable about that course was that you work with a partner. 398 00:16:42,030 --> 00:16:46,110 So a friend of mine and I, we teamed up, as did other pairs of students. 399 00:16:46,110 --> 00:16:49,920 And it was my first opportunity to learn how to collaborate 400 00:16:49,920 --> 00:16:51,300 with someone else on code. 401 00:16:51,300 --> 00:16:52,230 And it was funny. 402 00:16:52,230 --> 00:16:54,000 We got along wonderfully well. 403 00:16:54,000 --> 00:16:56,847 It was a perfect marriage in terms of partnership, 404 00:16:56,847 --> 00:16:59,430 because he and I would meet at like the beginning of the week. 405 00:16:59,430 --> 00:17:01,638 We'd literally go into a classroom with a chalkboard. 406 00:17:01,638 --> 00:17:04,349 We'd talk about the APIs, Application Programming Interfaces, 407 00:17:04,349 --> 00:17:05,430 that we want to design. 408 00:17:05,430 --> 00:17:07,950 And we would then have a to-do list. 409 00:17:07,950 --> 00:17:11,276 Like, OK, I'm going to go back home for the week and work on these functions. 410 00:17:11,276 --> 00:17:13,859 He's going to go back to his room and work on those functions. 411 00:17:13,859 --> 00:17:16,454 And then amazingly, all these years later, I'm still amazed 412 00:17:16,454 --> 00:17:17,579 we actually got this right. 413 00:17:17,579 --> 00:17:20,079 Five-plus days later we'd get back together. 414 00:17:20,079 --> 00:17:22,050 And he had implemented his code. 415 00:17:22,050 --> 00:17:23,310 I had implemented my code. 416 00:17:23,310 --> 00:17:24,869 And therefore I could just call his functions. 417 00:17:24,869 --> 00:17:25,994 He could call my functions. 418 00:17:25,994 --> 00:17:27,609 And we meshed very well. 419 00:17:27,609 --> 00:17:29,770 But that was a hugely valuable experience. 420 00:17:29,770 --> 00:17:32,010 So it's not just a matter of hours spent. 421 00:17:32,010 --> 00:17:35,520 It's not just a matter of getting stuck in tutorial hell where all you're doing 422 00:17:35,520 --> 00:17:37,620 is taking lessons, taking lessons. 423 00:17:37,620 --> 00:17:40,000 Like you really do want to apply it. 424 00:17:40,000 --> 00:17:44,430 And so long story short, I took formally three software classes. 425 00:17:44,430 --> 00:17:46,500 And everything else since has been self-taught. 426 00:17:46,500 --> 00:17:48,570 I don't think I'm necessarily a great programmer. 427 00:17:48,570 --> 00:17:51,610 I feel like I always am embarrassed by code I wrote last year. 428 00:17:51,610 --> 00:17:54,068 So hopefully that means I'm just getting better and better. 429 00:17:54,068 --> 00:17:58,215 But this is 25-some years in, so that's probably not uncommon for folks 430 00:17:58,215 --> 00:18:00,215 to hopefully feel that way too, making progress. 431 00:18:00,215 --> 00:18:03,090 CARTER ZENKE: I think it's a very good example of how much of computer science 432 00:18:03,090 --> 00:18:05,040 is not just programming, like actually sitting down and talking 433 00:18:05,040 --> 00:18:07,207 to somebody else and whiteboarding things and trying 434 00:18:07,207 --> 00:18:10,124 to design a system is very important part of computer science as well. 435 00:18:10,124 --> 00:18:13,082 DAVID MALAN: And funny enough, it doesn't even have to be a whiteboard. 436 00:18:13,082 --> 00:18:15,180 So Kareem Zidane, whom some of you might remember, 437 00:18:15,180 --> 00:18:17,070 is one of our former staff members. 438 00:18:17,070 --> 00:18:20,113 Took CS50x online from home in Egypt years ago, 439 00:18:20,113 --> 00:18:22,530 but then he spent several years with us here in Cambridge. 440 00:18:22,530 --> 00:18:25,480 And he and I actually used to be in very good shape. 441 00:18:25,480 --> 00:18:27,480 And we would go jogging along the Charles River, 442 00:18:27,480 --> 00:18:30,000 which is a very well-known river and beautiful place 443 00:18:30,000 --> 00:18:31,680 to jog and walk and bike here. 444 00:18:31,680 --> 00:18:35,220 And we would have some of our most rigorous design discussions, 445 00:18:35,220 --> 00:18:38,130 things for which we didn't necessarily need a whiteboard and visuals. 446 00:18:38,130 --> 00:18:41,867 But we could argue with each other or talk through design possibilities. 447 00:18:41,867 --> 00:18:44,700 And at least for me, it was a great way to trick me into exercising, 448 00:18:44,700 --> 00:18:48,000 because I'd be so distracted by the argument he and I are having verbally 449 00:18:48,000 --> 00:18:49,750 that I didn't even realize that we already 450 00:18:49,750 --> 00:18:52,030 just ran a mile or two along the way. 451 00:18:52,030 --> 00:18:53,408 So yeah, we agree. 452 00:18:53,408 --> 00:18:55,200 CARTER ZENKE: A comment here, it's related. 453 00:18:55,200 --> 00:18:57,030 Somebody who says they feel sometimes scared 454 00:18:57,030 --> 00:18:58,710 to collaborate with somebody because they often 455 00:18:58,710 --> 00:19:00,000 feel like they don't know as much. 456 00:19:00,000 --> 00:19:01,860 Do you have any advice for how to collaborate 457 00:19:01,860 --> 00:19:05,160 with people who might know more than you or might be more experienced than you? 458 00:19:05,160 --> 00:19:08,772 DAVID MALAN: My gut wants to tell me, avoid it, it's too stressful. 459 00:19:08,772 --> 00:19:11,730 No, I definitely feel that way with some of my more experienced friends 460 00:19:11,730 --> 00:19:14,130 who are full-time professional software engineers 461 00:19:14,130 --> 00:19:16,290 and surely know more than I do. 462 00:19:16,290 --> 00:19:20,940 But that said, those are exactly the friends whom I'm constantly texting 463 00:19:20,940 --> 00:19:23,310 or direct messaging when I do have questions. 464 00:19:23,310 --> 00:19:26,730 There's this relatively short list of humans, some of them 465 00:19:26,730 --> 00:19:29,760 former students who are now in the real world and industry, whom 466 00:19:29,760 --> 00:19:32,580 I would happily now reach out to with questions. 467 00:19:32,580 --> 00:19:35,620 And honestly, I feel like life's too short to pretend you know more 468 00:19:35,620 --> 00:19:36,120 than you do. 469 00:19:36,120 --> 00:19:37,650 You might as well just show your hand. 470 00:19:37,650 --> 00:19:39,317 Be like, I have no idea what this means. 471 00:19:39,317 --> 00:19:41,595 But if you're willing to figure it out and if you're 472 00:19:41,595 --> 00:19:43,470 generally smart enough and experienced enough 473 00:19:43,470 --> 00:19:46,410 that you have enough of a mental model to learn 474 00:19:46,410 --> 00:19:50,310 some new feature of this language, because you already this language, 475 00:19:50,310 --> 00:19:53,460 I just think you should just embrace that and actually seek out 476 00:19:53,460 --> 00:19:55,770 people who are better than you and who do know more 477 00:19:55,770 --> 00:19:58,937 than you, because otherwise you're not getting anything out of spending time 478 00:19:58,937 --> 00:20:01,337 with people who aren't that way. 479 00:20:01,337 --> 00:20:04,170 CARTER ZENKE: I was going to say, I think one thing I've tried to do 480 00:20:04,170 --> 00:20:06,760 is try to find those places where I can learn from other folks, 481 00:20:06,760 --> 00:20:08,380 even though it can feel scary and daunting. 482 00:20:08,380 --> 00:20:10,920 And it's really worked out, I think, for my own development and knowledge 483 00:20:10,920 --> 00:20:11,420 as well. 484 00:20:11,420 --> 00:20:14,610 DAVID MALAN: I mean, amongst CS50's past team members, if some of you 485 00:20:14,610 --> 00:20:17,910 online know them, like Tommy MacWilliam for years ago who taught some 486 00:20:17,910 --> 00:20:20,640 of CS50's Tracks on mobile some time ago; 487 00:20:20,640 --> 00:20:24,030 Colton Ogden, formerly of our team, who now works full-time in software 488 00:20:24,030 --> 00:20:26,490 development; Brian Yu, who was our former preceptor, 489 00:20:26,490 --> 00:20:28,110 did a lot of teaching as well. 490 00:20:28,110 --> 00:20:32,288 Those folks are all people whom I keep in-- 491 00:20:32,288 --> 00:20:34,080 some of them might be favorites in my phone 492 00:20:34,080 --> 00:20:36,495 so that I can text them all the easier. 493 00:20:36,495 --> 00:20:40,150 CARTER ZENKE: I have a question about a variety of courses that we have, 494 00:20:40,150 --> 00:20:42,150 and actually a question on our SQL course, which 495 00:20:42,150 --> 00:20:43,230 just came out on October 1. 496 00:20:43,230 --> 00:20:44,130 DAVID MALAN: Oh, I hear good things. 497 00:20:44,130 --> 00:20:44,520 CARTER ZENKE: Yeah. 498 00:20:44,520 --> 00:20:47,100 DAVID MALAN: What an interesting choice you've made in asking this question, 499 00:20:47,100 --> 00:20:47,460 Carter. 500 00:20:47,460 --> 00:20:49,335 CARTER ZENKE: Yeah, so the question is, is it 501 00:20:49,335 --> 00:20:52,320 easier than something like CS50x, CS50w, and CS50p. 502 00:20:52,320 --> 00:20:55,290 And I would say, probably not so much easier as it is just 503 00:20:55,290 --> 00:20:56,590 like a different skill set. 504 00:20:56,590 --> 00:21:00,212 So in SQL, you'll learn how to work with databases and data sets, which 505 00:21:00,212 --> 00:21:02,170 you can work with a little bit in CS50, but not 506 00:21:02,170 --> 00:21:05,200 as deeply as say you would in SQL. 507 00:21:05,200 --> 00:21:09,070 And one thing I like about SQL is that you're writing the language 508 00:21:09,070 --> 00:21:11,540 to do something you want it to do. 509 00:21:11,540 --> 00:21:13,720 And it figures out how best to do that for you 510 00:21:13,720 --> 00:21:16,180 in the underlying database management system at the end of the day. 511 00:21:16,180 --> 00:21:16,480 DAVID MALAN: Interesting. 512 00:21:16,480 --> 00:21:17,140 CARTER ZENKE: Yeah. 513 00:21:17,140 --> 00:21:18,430 DAVID MALAN: I do think the workload is different. 514 00:21:18,430 --> 00:21:21,190 Like CS50x is much more work and therefore is much more 515 00:21:21,190 --> 00:21:22,600 rigorous and time consuming. 516 00:21:22,600 --> 00:21:26,290 I would probably liken CS50 SQL to CS50 Python 517 00:21:26,290 --> 00:21:28,300 in terms of accessibility and workload. 518 00:21:28,300 --> 00:21:28,660 CARTER ZENKE: Agree. 519 00:21:28,660 --> 00:21:30,055 DAVID MALAN: But a different type of problem. 520 00:21:30,055 --> 00:21:32,800 CARTER ZENKE: Yeah, and the goal is to give you a variety of data 521 00:21:32,800 --> 00:21:35,270 sets to work with that are all inspired by the real world. 522 00:21:35,270 --> 00:21:38,020 So you get this variety of practice you can use as you're 523 00:21:38,020 --> 00:21:39,587 beginning your journey in SQL. 524 00:21:39,587 --> 00:21:41,170 DAVID MALAN: Well, I hear good things. 525 00:21:41,170 --> 00:21:46,857 You can sign up for free at cs50.edx.org/sql, or S-Q-L. 526 00:21:46,857 --> 00:21:49,690 We did get some hate on the internet for my saying SQL all the time, 527 00:21:49,690 --> 00:21:52,090 because there's a fan base out there that likes to say S-Q-L. 528 00:21:52,090 --> 00:21:52,810 CARTER ZENKE: Oh, really. 529 00:21:52,810 --> 00:21:55,360 DAVID MALAN: Feels like it takes too much time for me. 530 00:21:55,360 --> 00:21:56,890 CARTER ZENKE: I feel like the course would be a little bit longer if I 531 00:21:56,890 --> 00:21:58,390 said S-Q-L all the time. 532 00:21:58,390 --> 00:22:00,430 DAVID MALAN: Yes, yes. 533 00:22:00,430 --> 00:22:02,940 CARTER ZENKE: People who've already taken CS50 already, 534 00:22:02,940 --> 00:22:07,170 what's one tip you have for them to understand a hard concept, something 535 00:22:07,170 --> 00:22:09,907 like pointers or programming syntax in C or in Python? 536 00:22:09,907 --> 00:22:11,490 DAVID MALAN: Teach it to someone else. 537 00:22:11,490 --> 00:22:13,275 This is like a secret weapon in education. 538 00:22:13,275 --> 00:22:15,900 We tell this to our own teaching fellows or teaching assistants 539 00:22:15,900 --> 00:22:20,280 when we do training at the start of every semester at Harvard or Yale. 540 00:22:20,280 --> 00:22:24,420 I learn-- and I do think a lot of people learn so much more when you actually 541 00:22:24,420 --> 00:22:26,220 have to teach a topic than when you're just 542 00:22:26,220 --> 00:22:28,290 sitting there being taught a topic. 543 00:22:28,290 --> 00:22:31,860 And for me at least, it is because, one, I'm 544 00:22:31,860 --> 00:22:34,090 now responsible for others' experience. 545 00:22:34,090 --> 00:22:37,080 And so I take even more responsibility, I 546 00:22:37,080 --> 00:22:40,950 think, for making sure I do a good job. 547 00:22:40,950 --> 00:22:44,580 I think part of it is embarrassment avoidance, whereby 548 00:22:44,580 --> 00:22:47,613 I don't want to be caught too frequently not knowing 549 00:22:47,613 --> 00:22:48,780 the answer to some question. 550 00:22:48,780 --> 00:22:51,000 It's totally fine not to know the answer sometimes and be like, 551 00:22:51,000 --> 00:22:51,870 I'll get back to you tomorrow. 552 00:22:51,870 --> 00:22:53,520 Let me google it myself, read up on it. 553 00:22:53,520 --> 00:22:57,420 Because presumably, you have a better ability to find that information, 554 00:22:57,420 --> 00:23:00,910 understand and process that information, and then explain it ideally 555 00:23:00,910 --> 00:23:03,400 in simpler terms to a newer student. 556 00:23:03,400 --> 00:23:06,070 But I do think you want that not to be the common case where 557 00:23:06,070 --> 00:23:09,160 you're getting back to people on 51% of the questions that they've asked. 558 00:23:09,160 --> 00:23:10,490 That doesn't feel ideal. 559 00:23:10,490 --> 00:23:13,480 So when I prep for classes, including CS50 nowadays, any time 560 00:23:13,480 --> 00:23:17,080 I'm like, wait a minute, why is that, I find myself going down 561 00:23:17,080 --> 00:23:20,180 these intellectual rabbit holes where I'll google, I'll go on Wikipedia, 562 00:23:20,180 --> 00:23:23,620 I'll ask ChatGPT nowadays, I'll ask CS50's own Glenn Holloway 563 00:23:23,620 --> 00:23:28,360 or Rongxin Liu, who are more learned than I in so many areas of code, 564 00:23:28,360 --> 00:23:31,930 just to make sure I do understand all of the lower level implementation details. 565 00:23:31,930 --> 00:23:35,380 In case in point, in week 5 of CS50 a week ago, 566 00:23:35,380 --> 00:23:37,930 if you were watching the live stream, I embarrassed myself 567 00:23:37,930 --> 00:23:42,355 because I was trying to get a program called get.c to deliberately crash 568 00:23:42,355 --> 00:23:45,550 when you introduce a segfault, a memory-related error In C. 569 00:23:45,550 --> 00:23:47,410 And it was just flailing because I couldn't 570 00:23:47,410 --> 00:23:51,520 get the darn code to actually crash, as I could have sworn I did before class. 571 00:23:51,520 --> 00:23:54,740 But in retrospect, I must have tested something else instead. 572 00:23:54,740 --> 00:23:58,520 And I couldn't quite remember why it wasn't working this time around. 573 00:23:58,520 --> 00:24:01,270 And so I emailed with Rongxin and with Glenn behind the scenes. 574 00:24:01,270 --> 00:24:03,353 And Glenn pointed out and gave me some sample code 575 00:24:03,353 --> 00:24:06,430 for code that would much more deterministically actually crash. 576 00:24:06,430 --> 00:24:08,350 Long story short, what I wasn't realizing 577 00:24:08,350 --> 00:24:13,150 is that it would be easier for me to have used not one malloc call but two, 578 00:24:13,150 --> 00:24:16,150 back to back, so that the memory I'm allocating is adjacent. 579 00:24:16,150 --> 00:24:19,060 And then he suggested that I overflow the first buffer 580 00:24:19,060 --> 00:24:20,710 by typing in something really long. 581 00:24:20,710 --> 00:24:23,530 That would overflow not only part of the memory malloc 582 00:24:23,530 --> 00:24:26,980 gave me for the second chunk, but also header information, so metadata 583 00:24:26,980 --> 00:24:29,530 that the actual malloc function in the system library 584 00:24:29,530 --> 00:24:32,870 is managing for you underneath the hood tucked away. 585 00:24:32,870 --> 00:24:37,150 And then if you try freeing both of those pointers returned by malloc, 586 00:24:37,150 --> 00:24:41,030 then you do indeed induce a segfault. And you can actually see the overflow, 587 00:24:41,030 --> 00:24:43,030 because whatever you typed into the first buffer 588 00:24:43,030 --> 00:24:45,130 actually overlaps the second buffer. 589 00:24:45,130 --> 00:24:48,730 So a conversation I wished Glenn and I had had before class, and not after. 590 00:24:48,730 --> 00:24:53,860 But even I, after time, forget certain details or forget what it was I 591 00:24:53,860 --> 00:24:55,460 did last year that worked really well. 592 00:24:55,460 --> 00:24:57,550 And so I mess up too. 593 00:24:57,550 --> 00:25:00,160 CARTER ZENKE: It seems like a creative solution to me. 594 00:25:00,160 --> 00:25:02,267 I'm wondering how you think Glenn knew to do that? 595 00:25:02,267 --> 00:25:04,600 DAVID MALAN: Oh, I think he's just much smarter than me. 596 00:25:04,600 --> 00:25:05,892 CARTER ZENKE: More experienced? 597 00:25:05,892 --> 00:25:07,285 DAVID MALAN: Yeah, that's fair. 598 00:25:07,285 --> 00:25:11,710 CARTER ZENKE: Let's see, other questions here, some on certificates, 599 00:25:11,710 --> 00:25:14,560 so going back to this idea of taking courses for certificates 600 00:25:14,560 --> 00:25:16,570 versus taking courses in college. 601 00:25:16,570 --> 00:25:18,760 Do you have recommendations one way or another? 602 00:25:18,760 --> 00:25:21,490 Or how should somebody decide between course 603 00:25:21,490 --> 00:25:23,860 at a college, course for certificate, things like that? 604 00:25:23,860 --> 00:25:25,568 DAVID MALAN: I mean, part of the decision 605 00:25:25,568 --> 00:25:27,170 nowadays is probably cost, frankly. 606 00:25:27,170 --> 00:25:31,240 And if by certificate you're alluding to freely available courses like CS50 607 00:25:31,240 --> 00:25:33,700 or others on edX, Coursera, and the like, 608 00:25:33,700 --> 00:25:38,030 then there's a lot of high-quality free educational content out there nowadays. 609 00:25:38,030 --> 00:25:39,320 And that's wonderful. 610 00:25:39,320 --> 00:25:42,370 I think the catch for a lot of people, and probably people like me, 611 00:25:42,370 --> 00:25:45,790 is that without having some skin in the game, so to speak, without actually 612 00:25:45,790 --> 00:25:48,160 paying some tuition, I frankly am probably 613 00:25:48,160 --> 00:25:50,300 less likely to finish the thing that I started. 614 00:25:50,300 --> 00:25:54,160 So there's something to be said for having some commitment, 615 00:25:54,160 --> 00:25:57,910 even if it's financially or maybe it's socially, taking a class, 616 00:25:57,910 --> 00:25:59,683 be it free or paid, with a friend. 617 00:25:59,683 --> 00:26:02,600 Now much like my jogs with Kareem-- and part of that was motivated by, 618 00:26:02,600 --> 00:26:04,892 I'm not going to embarrass myself by in front of Kareem 619 00:26:04,892 --> 00:26:06,260 by not going jogging with him. 620 00:26:06,260 --> 00:26:09,420 So I would go and maybe he was doing the same. 621 00:26:09,420 --> 00:26:11,120 So it was a win-win. 622 00:26:11,120 --> 00:26:14,463 But with that said, I think what you're also paying for frequently, even 623 00:26:14,463 --> 00:26:17,630 at places like Harvard online through Harvard Extension School and the like, 624 00:26:17,630 --> 00:26:18,713 you're paying for support. 625 00:26:18,713 --> 00:26:20,810 You're paying for human time and access to people 626 00:26:20,810 --> 00:26:24,170 who presumably are more learned at that point than you 627 00:26:24,170 --> 00:26:27,740 in some subject who are hopefully good teachers, who can therefore hopefully 628 00:26:27,740 --> 00:26:31,610 help you navigate what is, yes, freely available out there on Google, 629 00:26:31,610 --> 00:26:35,840 Wikipedia, ChatGPT, but can deliver it in a way that is maybe optimal for you 630 00:26:35,840 --> 00:26:38,040 more so than the internet alone can do. 631 00:26:38,040 --> 00:26:40,400 So I think it depends on what opportunities 632 00:26:40,400 --> 00:26:43,400 you have in front of you, who it is that's teaching these classes. 633 00:26:43,400 --> 00:26:45,855 But I certainly don't think you have to pay 634 00:26:45,855 --> 00:26:48,980 for something if you want the knowledge even though we certainly still live 635 00:26:48,980 --> 00:26:51,560 in a world where traditional credentials, degrees, 636 00:26:51,560 --> 00:26:53,783 and so forth still do open doors. 637 00:26:53,783 --> 00:26:54,950 CARTER ZENKE: Yeah, they do. 638 00:26:54,950 --> 00:26:56,390 And I think if you're going to take that step 639 00:26:56,390 --> 00:26:58,182 and pay the money to take a course, I'd try 640 00:26:58,182 --> 00:27:01,390 to make sure you're able to put in the time to talk with people in the class, 641 00:27:01,390 --> 00:27:03,470 to ask questions of the professor or the teacher 642 00:27:03,470 --> 00:27:04,610 just to make sure you're getting all you can 643 00:27:04,610 --> 00:27:06,920 out of it from that human time that's involved with the course as well. 644 00:27:06,920 --> 00:27:07,950 DAVID MALAN: Yeah, absolutely. 645 00:27:07,950 --> 00:27:10,908 I'm happy to field any questions too or ask them of you, if you'd like? 646 00:27:10,908 --> 00:27:11,960 CARTER ZENKE: Yeah, sure. 647 00:27:11,960 --> 00:27:14,160 If you want, you can scroll through here a little bit. 648 00:27:14,160 --> 00:27:16,785 I think we're getting towards the bottom of our questions here. 649 00:27:16,785 --> 00:27:19,973 But I think one other one is, have we considered using examples 650 00:27:19,973 --> 00:27:22,640 to ease new programmers by letting them know that you won't ever 651 00:27:22,640 --> 00:27:25,383 be a master at programming and forget basic things all the time. 652 00:27:25,383 --> 00:27:27,050 DAVID MALAN: Can you ask that once more? 653 00:27:27,050 --> 00:27:27,410 CARTER ZENKE: Yeah. 654 00:27:27,410 --> 00:27:29,210 Have we considered using examples to ease 655 00:27:29,210 --> 00:27:31,490 new programmers in by letting them know you won't ever 656 00:27:31,490 --> 00:27:32,615 be a master at programming? 657 00:27:32,615 --> 00:27:35,282 DAVID MALAN: Oh, well, hopefully that came across in my comments 658 00:27:35,282 --> 00:27:39,170 earlier that even after 25 years I feel I'm a better programmer this year 659 00:27:39,170 --> 00:27:40,620 than I was last year. 660 00:27:40,620 --> 00:27:42,930 So I do think it's an evolving process. 661 00:27:42,930 --> 00:27:46,160 And that's not only because I'm seeing other examples of code. 662 00:27:46,160 --> 00:27:50,270 I'm learning different design techniques or paradigms over that many years too. 663 00:27:50,270 --> 00:27:53,448 The world is changing, the languages, the technologies the libraries 664 00:27:53,448 --> 00:27:53,990 are changing. 665 00:27:53,990 --> 00:27:58,220 People's methodologies and design patterns, as they tend to be called, 666 00:27:58,220 --> 00:27:59,060 are evolving. 667 00:27:59,060 --> 00:28:03,150 So there's just better ways to do things nowadays than there were 25 years ago. 668 00:28:03,150 --> 00:28:05,810 So there's always new runway in front of you. 669 00:28:05,810 --> 00:28:07,280 So I would just embrace it. 670 00:28:07,280 --> 00:28:09,950 What we tell our teaching assistants here on campus 671 00:28:09,950 --> 00:28:12,170 when we're training them at the beginning of the term 672 00:28:12,170 --> 00:28:15,830 is to get comfortable being uncomfortable. 673 00:28:15,830 --> 00:28:18,320 Because as soon as you're comfortable, you presumably 674 00:28:18,320 --> 00:28:20,400 maxed out what it is you're going to get out of the experience. 675 00:28:20,400 --> 00:28:22,640 So the fact that even I still get nervous getting up 676 00:28:22,640 --> 00:28:26,000 on stage and in front of CS50 and hoping that no one asks a question that's 677 00:28:26,000 --> 00:28:28,620 really beyond me, I think is good, because it 678 00:28:28,620 --> 00:28:29,870 motivates me to keep learning. 679 00:28:29,870 --> 00:28:31,882 And it keeps it fun and interesting. 680 00:28:31,882 --> 00:28:33,590 CARTER ZENKE: And I think this reminds me 681 00:28:33,590 --> 00:28:35,810 of we just talked to some of our friends in Nicaragua 682 00:28:35,810 --> 00:28:37,280 who are teaching CS50x there. 683 00:28:37,280 --> 00:28:39,680 And they had this same question of, their students 684 00:28:39,680 --> 00:28:42,530 often feel like they aren't smart enough or aren't 685 00:28:42,530 --> 00:28:45,020 able to put in the time to understand the concepts. 686 00:28:45,020 --> 00:28:47,878 And I think what we advise is just setting the expectation. 687 00:28:47,878 --> 00:28:49,170 Like, this is going to be hard. 688 00:28:49,170 --> 00:28:51,290 It's going to require you to ask a lot of questions. 689 00:28:51,290 --> 00:28:53,180 And you're going to want to put in the time for it just to understand it. 690 00:28:53,180 --> 00:28:55,220 DAVID MALAN: Yeah, so true, so true. 691 00:28:55,220 --> 00:28:56,340 CARTER ZENKE: A few more questions here. 692 00:28:56,340 --> 00:28:58,798 DAVID MALAN: Yeah, here have a question from David M. who's 693 00:28:58,798 --> 00:29:02,780 curious to understand from Carter what your process 694 00:29:02,780 --> 00:29:06,067 was like for creating a new class like CS50 SQL. 695 00:29:06,067 --> 00:29:08,150 So it's not just one that already existed that you 696 00:29:08,150 --> 00:29:09,773 were modifying or iterating on. 697 00:29:09,773 --> 00:29:11,690 Like, you literally had to start from scratch. 698 00:29:11,690 --> 00:29:14,090 So what was your process for doing that? 699 00:29:14,090 --> 00:29:19,130 CARTER ZENKE: Yeah, so there's this idea of backwards design and designing 700 00:29:19,130 --> 00:29:19,680 a course. 701 00:29:19,680 --> 00:29:21,050 And I like this idea because you tend to start 702 00:29:21,050 --> 00:29:23,270 at the end, which is, where do you want students 703 00:29:23,270 --> 00:29:25,110 to be when they finish that course. 704 00:29:25,110 --> 00:29:27,027 I think for us that was, we want students 705 00:29:27,027 --> 00:29:30,360 to have this basic understanding of SQL, to be able to make their own databases, 706 00:29:30,360 --> 00:29:32,735 to be able to go off and manage databases if they'd like, 707 00:29:32,735 --> 00:29:35,420 and also to see how it's relevant to their own daily lives 708 00:29:35,420 --> 00:29:36,510 and their own real world. 709 00:29:36,510 --> 00:29:38,050 So that was our goal for students. 710 00:29:38,050 --> 00:29:39,800 I think for me it was this process of, how 711 00:29:39,800 --> 00:29:42,907 do I first figure out the content I need to teach in the lecture. 712 00:29:42,907 --> 00:29:44,990 What should be included every week so you actually 713 00:29:44,990 --> 00:29:47,990 get that stepping stone towards that ultimate goal? 714 00:29:47,990 --> 00:29:51,800 And then the question became, once I've shared this content, what 715 00:29:51,800 --> 00:29:55,400 are the problems that are engaging that test you on that content 716 00:29:55,400 --> 00:29:58,215 and give the actual skills to practice what we taught in lecture? 717 00:29:58,215 --> 00:29:58,765 DAVID MALAN: Interesting. 718 00:29:58,765 --> 00:29:59,320 CARTER ZENKE: Yeah. 719 00:29:59,320 --> 00:29:59,590 DAVID MALAN: Yeah. 720 00:29:59,590 --> 00:30:01,190 So if you're thinking of designing your own course, 721 00:30:01,190 --> 00:30:03,610 whether it's several weeks or even just one class, 722 00:30:03,610 --> 00:30:06,730 that's hopefully perhaps some helpful advice too. 723 00:30:06,730 --> 00:30:07,480 Let's see. 724 00:30:07,480 --> 00:30:10,270 There was a question here that popped up about AI, which 725 00:30:10,270 --> 00:30:12,145 we've been asked before, but maybe you can offer your perspective. 726 00:30:12,145 --> 00:30:12,937 CARTER ZENKE: Sure. 727 00:30:12,937 --> 00:30:15,400 DAVID MALAN: How do you feel about the threat of AI 728 00:30:15,400 --> 00:30:17,210 to the software engineering field? 729 00:30:17,210 --> 00:30:19,210 CARTER ZENKE: To the software engineering field. 730 00:30:19,210 --> 00:30:23,410 DAVID MALAN: The dark side of the question with which we began today. 731 00:30:23,410 --> 00:30:26,200 CARTER ZENKE: It's an interesting question. 732 00:30:26,200 --> 00:30:29,560 In terms of a threat, I see more of the threats 733 00:30:29,560 --> 00:30:35,290 along trying to have AI make too many decisions for us a little too quickly 734 00:30:35,290 --> 00:30:37,660 and relying on a little too much at the very beginning. 735 00:30:37,660 --> 00:30:39,850 I think it's worth taking some time to figure out 736 00:30:39,850 --> 00:30:43,275 what AI does particularly well and what it doesn't do very well, 737 00:30:43,275 --> 00:30:46,150 and trying to put in some safeguards so we don't go too off the rails 738 00:30:46,150 --> 00:30:47,530 too quickly, if that makes sense. 739 00:30:47,530 --> 00:30:48,830 DAVID MALAN: Yeah, I think that makes sense. 740 00:30:48,830 --> 00:30:50,710 And if I can maybe extrapolate from this question, 741 00:30:50,710 --> 00:30:52,420 I do think we've seen a lot of questions from folks 742 00:30:52,420 --> 00:30:55,390 online about, should they even bother learning programming now 743 00:30:55,390 --> 00:30:57,715 if AI is going to be writing more code. 744 00:30:57,715 --> 00:30:58,520 CARTER ZENKE: Yeah. 745 00:30:58,520 --> 00:30:59,770 I think you absolutely should. 746 00:30:59,770 --> 00:31:01,978 It's still worth understanding these first principles 747 00:31:01,978 --> 00:31:03,990 that have helped build things like AI. 748 00:31:03,990 --> 00:31:05,740 And I think if we have more people who are 749 00:31:05,740 --> 00:31:07,532 more well-versed in those principles, we're 750 00:31:07,532 --> 00:31:11,360 better off able to make AI that helps us in the long-term. 751 00:31:11,360 --> 00:31:14,290 DAVID MALAN: We have a question for Carter too about CS50 SQL. 752 00:31:14,290 --> 00:31:18,820 How do you shorten the full two-plus hour-long CS50 lecture down 753 00:31:18,820 --> 00:31:23,018 to an hour on the Section tab on the CS50 website? 754 00:31:23,018 --> 00:31:25,810 I think we might be conflating two types of material here, perhaps? 755 00:31:25,810 --> 00:31:28,540 CARTER ZENKE: Yeah, I think what you might be talking about 756 00:31:28,540 --> 00:31:30,665 might be the sections where we've been doing this-- 757 00:31:30,665 --> 00:31:33,700 DAVID MALAN: Yes, and maybe compressing the material, not the videos 758 00:31:33,700 --> 00:31:33,985 themselves. 759 00:31:33,985 --> 00:31:34,902 CARTER ZENKE: Exactly. 760 00:31:34,902 --> 00:31:37,625 So if you've been tuning in live this semester, 761 00:31:37,625 --> 00:31:40,750 we've been having our live lectures in Sanders Theater with David, followed 762 00:31:40,750 --> 00:31:43,390 by sections led by me and our own CS50 office. 763 00:31:43,390 --> 00:31:46,443 I think the question is asking, how do we condense this full two and 1/2 764 00:31:46,443 --> 00:31:49,360 hour lecture down to a section video, which is only like an hour long. 765 00:31:49,360 --> 00:31:49,600 DAVID MALAN: Yeah. 766 00:31:49,600 --> 00:31:51,475 CARTER ZENKE: And I think for me the question 767 00:31:51,475 --> 00:31:54,040 is, starting again from what do I want you to learn, 768 00:31:54,040 --> 00:31:58,340 ultimately I want you to learn how to do the problem set well and independently. 769 00:31:58,340 --> 00:32:01,750 And so I pick and choose the pieces of content that will help you do that best 770 00:32:01,750 --> 00:32:04,540 and hopefully give you some exercises to practice that on your own 771 00:32:04,540 --> 00:32:07,400 or with a group in section, and then go off independently and focus 772 00:32:07,400 --> 00:32:08,650 on the problem set afterwards. 773 00:32:08,650 --> 00:32:10,090 DAVID MALAN: OK, fair. 774 00:32:10,090 --> 00:32:11,950 Question here from Sandesh. 775 00:32:11,950 --> 00:32:14,440 I get your point, although which free resources would 776 00:32:14,440 --> 00:32:16,135 you recommend beyond CS50. 777 00:32:16,135 --> 00:32:17,380 CARTER ZENKE: Beyond CS50. 778 00:32:17,380 --> 00:32:19,960 779 00:32:19,960 --> 00:32:23,180 Just speaking personally, I found a few others helpful. 780 00:32:23,180 --> 00:32:25,585 I've found some of our friends like Free Code Camp. 781 00:32:25,585 --> 00:32:27,460 They have really good resources for friends-- 782 00:32:27,460 --> 00:32:28,190 DAVID MALAN: Good with those folks. 783 00:32:28,190 --> 00:32:29,982 CARTER ZENKE: So they have really good ones 784 00:32:29,982 --> 00:32:32,930 on web development, all kinds of other languages. 785 00:32:32,930 --> 00:32:35,710 So I really encourage you to check out Free Code Camp as well. 786 00:32:35,710 --> 00:32:37,510 DAVID MALAN: And a question from Mark. 787 00:32:37,510 --> 00:32:39,910 How do you know you're ready for the workspace? 788 00:32:39,910 --> 00:32:41,890 I know I'm improving and growing, but I just 789 00:32:41,890 --> 00:32:44,065 can't get myself to start applying to jobs. 790 00:32:44,065 --> 00:32:45,490 CARTER ZENKE: Yeah. 791 00:32:45,490 --> 00:32:49,420 That's something I felt. I think maybe acknowledging 792 00:32:49,420 --> 00:32:51,580 you might never quite feel ready. 793 00:32:51,580 --> 00:32:54,670 And the way you get ready is by just doing it, just submitting 794 00:32:54,670 --> 00:32:57,770 the application, just sending your name out there and saying, 795 00:32:57,770 --> 00:32:58,568 I want to do this. 796 00:32:58,568 --> 00:33:01,110 And I'll learn what I need to learn be able to do it as well. 797 00:33:01,110 --> 00:33:04,080 DAVID MALAN: And if it helps Mark, go get a job. 798 00:33:04,080 --> 00:33:08,160 Like, CS50 is telling you it is time to leave the nest and go pursue a job. 799 00:33:08,160 --> 00:33:10,663 And in all seriousness too, even if you ultimately 800 00:33:10,663 --> 00:33:13,080 find that you're not quite ready for jobs for which you're 801 00:33:13,080 --> 00:33:16,558 finding interviews, the experience and the practice of going 802 00:33:16,558 --> 00:33:18,600 through those motions of interviewing with folks, 803 00:33:18,600 --> 00:33:20,558 getting a sense of the questions that they ask, 804 00:33:20,558 --> 00:33:23,610 getting a sense of how you conduct yourself, what you can do better, 805 00:33:23,610 --> 00:33:25,450 is honestly invaluable too. 806 00:33:25,450 --> 00:33:28,200 So I think it's actually better to probably start the process even 807 00:33:28,200 --> 00:33:31,200 before you feel you're ready, because that process will only 808 00:33:31,200 --> 00:33:32,280 make you feel more ready. 809 00:33:32,280 --> 00:33:35,118 And heck, best outcome could be that you find an opportunity that 810 00:33:35,118 --> 00:33:36,660 is actually a good fit along the way. 811 00:33:36,660 --> 00:33:39,570 And boom-- you tripped yourself into finding that job sooner 812 00:33:39,570 --> 00:33:40,420 rather than later. 813 00:33:40,420 --> 00:33:42,460 It doesn't seem like there's any downside to starting now. 814 00:33:42,460 --> 00:33:43,440 So that's Mark's-- 815 00:33:43,440 --> 00:33:46,190 CARTER ZENKE: The worst you'll hear is no, and then you try again. 816 00:33:46,190 --> 00:33:49,800 DAVID MALAN: How about time for a couple more questions before we wrap. 817 00:33:49,800 --> 00:33:54,090 So, we have a question here. 818 00:33:54,090 --> 00:33:57,660 What should a student do after completing the CS50 course 819 00:33:57,660 --> 00:34:01,720 in Cybersecurity, which, mind you, is not completable yet because we're 820 00:34:01,720 --> 00:34:03,115 posting it every couple of weeks. 821 00:34:03,115 --> 00:34:05,660 CARTER ZENKE: So I'd probably make sure you do the rest of the course 822 00:34:05,660 --> 00:34:07,490 if you think you've completed it right now. 823 00:34:07,490 --> 00:34:10,449 But after that, I would say maybe think about how 824 00:34:10,449 --> 00:34:12,417 you want to apply that knowledge. 825 00:34:12,417 --> 00:34:14,500 For me, it was very interesting to just learn more 826 00:34:14,500 --> 00:34:16,780 about the first principles of cybersecurity 827 00:34:16,780 --> 00:34:20,980 and think about how I could better understand things like safety and AI, 828 00:34:20,980 --> 00:34:21,739 for instance. 829 00:34:21,739 --> 00:34:23,980 So I think just trying to ask yourself that question 830 00:34:23,980 --> 00:34:26,980 of what do you want to learn now that you've understood 831 00:34:26,980 --> 00:34:28,750 is part of CS50 Cybersecurity. 832 00:34:28,750 --> 00:34:29,770 DAVID MALAN: Nice. 833 00:34:29,770 --> 00:34:32,560 Maybe a final question about the road ahead for folks. 834 00:34:32,560 --> 00:34:36,250 Bernardo asks, is it greedy to try learning many different concepts 835 00:34:36,250 --> 00:34:40,431 or technologies, even if you feel like doing it. 836 00:34:40,431 --> 00:34:41,889 CARTER ZENKE: Certainly not greedy. 837 00:34:41,889 --> 00:34:44,972 I think the good thing about knowledge is that it's available to everyone. 838 00:34:44,972 --> 00:34:47,226 You taking it doesn't diminish it for everyone else. 839 00:34:47,226 --> 00:34:48,684 DAVID MALAN: That's very well said. 840 00:34:48,684 --> 00:34:51,980 CARTER ZENKE: I think one thing I'd caution, though, 841 00:34:51,980 --> 00:34:54,280 is trying to take on too much at one time. 842 00:34:54,280 --> 00:34:58,180 I think I've fallen in the habit of wanting to learn five different things 843 00:34:58,180 --> 00:35:00,830 and only focusing on each of them a little bit 844 00:35:00,830 --> 00:35:03,600 and not focusing on one or two with all my attention. 845 00:35:03,600 --> 00:35:07,377 And so I'd probably say it's better to choose at the very beginning, maybe 846 00:35:07,377 --> 00:35:08,960 two or three things you want to learn. 847 00:35:08,960 --> 00:35:13,070 And make sure you give them the time actually learning those. 848 00:35:13,070 --> 00:35:14,340 DAVID MALAN: Really well said. 849 00:35:14,340 --> 00:35:16,340 Well, thank you so much to our friends Vlad and Max 850 00:35:16,340 --> 00:35:18,590 who are here behind the camera, helping us film this. 851 00:35:18,590 --> 00:35:21,140 This will indeed be posted on demand thereafter if you joined us late 852 00:35:21,140 --> 00:35:23,265 but would like to catch up on some of the questions 853 00:35:23,265 --> 00:35:24,660 that classmates and others asked. 854 00:35:24,660 --> 00:35:25,772 Any final words from you? 855 00:35:25,772 --> 00:35:27,230 CARTER ZENKE: Thanks for tuning in. 856 00:35:27,230 --> 00:35:28,220 I hope to see you next time. 857 00:35:28,220 --> 00:35:28,970 DAVID MALAN: Indeed likewise. 858 00:35:28,970 --> 00:35:31,820 And I think if we were a TV show, what we would do is end by Carter 859 00:35:31,820 --> 00:35:33,950 and I running off playfully to go play some more volleyball. 860 00:35:33,950 --> 00:35:35,360 So should we do that and run off camera? 861 00:35:35,360 --> 00:35:35,720 CARTER ZENKE: All right. 862 00:35:35,720 --> 00:35:36,678 DAVID MALAN: All right. 863 00:35:36,678 --> 00:35:37,900 See you later. 864 00:35:37,900 --> 00:35:41,000