1 00:00:00,000 --> 00:00:05,300 DAVID: Hello, world this is CS50 here on Harvard University's campus. 2 00:00:05,300 --> 00:00:08,119 And in particular, we're in the Radcliffe Yard. 3 00:00:08,119 --> 00:00:12,290 So nowadays, the Radcliffe Yard is home to the Harvard Admissions Center 4 00:00:12,290 --> 00:00:13,907 as well as the Information Center. 5 00:00:13,907 --> 00:00:16,490 So if you're looking to learn a little something about Harvard 6 00:00:16,490 --> 00:00:19,880 or apply to Harvard, you can come to this particular spot on campus. 7 00:00:19,880 --> 00:00:22,970 But historically, it wasn't actually used for those purposes per se. 8 00:00:22,970 --> 00:00:26,450 In fact, the reason that it's called Radcliffe Yard is because this 9 00:00:26,450 --> 00:00:29,660 was actually home to what was once Radcliffe College, which 10 00:00:29,660 --> 00:00:33,320 was another university that women enrolled in years ago, before, 11 00:00:33,320 --> 00:00:36,170 unfortunately, Harvard didn't allow women to enroll in it. 12 00:00:36,170 --> 00:00:39,770 Indeed, in years ago, a small number of women 13 00:00:39,770 --> 00:00:41,690 could enroll in Harvard College classes. 14 00:00:41,690 --> 00:00:46,190 But it wasn't until 1972 that the schools truly were co-ed. 15 00:00:46,190 --> 00:00:49,100 And in effect, it became Harvard Radcliffe College. 16 00:00:49,100 --> 00:00:52,910 In fact, when I myself went to Harvard years ago in the mid-1990s, 17 00:00:52,910 --> 00:00:55,820 I technically applied to Harvard Radcliffe College 18 00:00:55,820 --> 00:00:57,290 and graduated from the same. 19 00:00:57,290 --> 00:01:00,150 And funny enough, the year I graduated, 1999, 20 00:01:00,150 --> 00:01:02,940 is when finally Radcliffe College evolved 21 00:01:02,940 --> 00:01:06,210 into what's now called the Radcliffe Institute for Research. 22 00:01:06,210 --> 00:01:08,790 And the Research Institute now focuses all the more 23 00:01:08,790 --> 00:01:12,180 on academics inclusive of anyone in the university, particularly 24 00:01:12,180 --> 00:01:13,170 those housed here. 25 00:01:13,170 --> 00:01:17,010 But nowadays, it is indeed Harvard College as the undergraduate part 26 00:01:17,010 --> 00:01:18,450 of Harvard University. 27 00:01:18,450 --> 00:01:21,120 So allow me to stroll just past you all now here 28 00:01:21,120 --> 00:01:26,370 and join CS50's own Carter Zenke for a chat about whatever's on your mind. 29 00:01:26,370 --> 00:01:26,880 Hey, Carter. 30 00:01:26,880 --> 00:01:27,810 CARTER ZENKE: Oh, hey, David. 31 00:01:27,810 --> 00:01:28,530 Fancy seeing you here. 32 00:01:28,530 --> 00:01:29,490 DAVID: Fancy seeing you here. 33 00:01:29,490 --> 00:01:30,640 It's so nice to see you. 34 00:01:30,640 --> 00:01:31,150 CARTER ZENKE: Nice to see you, too. 35 00:01:31,150 --> 00:01:33,855 Just checking some of the beautiful air on this fine quad. 36 00:01:33,855 --> 00:01:34,425 DAVID: It is. 37 00:01:34,425 --> 00:01:36,340 It is nice to be outside here. 38 00:01:36,340 --> 00:01:38,700 And so even though this is, in fact, a quadrangle, 39 00:01:38,700 --> 00:01:41,790 it's not the Radcliffe quadrangle, or quad, as it's called, 40 00:01:41,790 --> 00:01:44,290 which is actually around the corner and up the street a bit. 41 00:01:44,290 --> 00:01:47,700 And that's where a lot of undergraduates nowadays live. 42 00:01:47,700 --> 00:01:49,110 They're dormitories, in effect. 43 00:01:49,110 --> 00:01:51,693 But back in the day, it's where the women of Radcliffe College 44 00:01:51,693 --> 00:01:53,850 used to live around the corner and down the street. 45 00:01:53,850 --> 00:01:56,820 But now everything is much more inclusive and integrated with everyone. 46 00:01:56,820 --> 00:01:57,370 CARTER ZENKE: Nice. 47 00:01:57,370 --> 00:01:58,320 Well, thanks for the history lesson. 48 00:01:58,320 --> 00:01:59,620 DAVID: Well, thank you very much. 49 00:01:59,620 --> 00:02:02,430 I learned this on the tour, and perhaps a bit of Wikipedia as well. 50 00:02:02,430 --> 00:02:03,030 CARTER ZENKE: Nice. 51 00:02:03,030 --> 00:02:05,910 DAVID: So I think we're here, though, to answer some questions about CS50, 52 00:02:05,910 --> 00:02:09,130 and computer science more generally with our friends, Vlad and Max helping us 53 00:02:09,130 --> 00:02:09,630 out. 54 00:02:09,630 --> 00:02:10,590 CARTER ZENKE: Yeah, a few friends joining us 55 00:02:10,590 --> 00:02:12,240 live have a few questions we could ask you if you're OK with that. 56 00:02:12,240 --> 00:02:12,690 DAVID: All righty. 57 00:02:12,690 --> 00:02:13,200 All right, sure. 58 00:02:13,200 --> 00:02:13,680 Let's do it. 59 00:02:13,680 --> 00:02:14,472 CARTER ZENKE: Nice. 60 00:02:14,472 --> 00:02:17,478 So one question I see here is, if someone takes CS50x 61 00:02:17,478 --> 00:02:20,520 and they're trying to master all the concepts but they take more than one 62 00:02:20,520 --> 00:02:23,950 year, is that OK or should they think about doing something else? 63 00:02:23,950 --> 00:02:24,450 DAVID: Yes. 64 00:02:24,450 --> 00:02:26,730 So I think it depends on the reasons. 65 00:02:26,730 --> 00:02:29,580 I think if you have the time, you should ideally 66 00:02:29,580 --> 00:02:32,580 try to spend maybe minimally three months, 67 00:02:32,580 --> 00:02:35,400 maybe on average six to nine months. 68 00:02:35,400 --> 00:02:37,740 Once you hit the 12-month boundary, that's fine, too. 69 00:02:37,740 --> 00:02:41,290 We've absolutely had students who might take two years, 70 00:02:41,290 --> 00:02:43,560 maybe even a little more because they start and stop. 71 00:02:43,560 --> 00:02:45,810 But the catch with that is that you probably just lose 72 00:02:45,810 --> 00:02:47,340 some of the material in your mind. 73 00:02:47,340 --> 00:02:51,150 And you might end up having to rewind or redo a problem set. 74 00:02:51,150 --> 00:02:56,350 Even I only use, and in turn teach C in the fall semester every year. 75 00:02:56,350 --> 00:02:58,390 And so even I have to refresh myself. 76 00:02:58,390 --> 00:03:00,510 So if you're spreading any class, especially CS50, 77 00:03:00,510 --> 00:03:03,270 out along that much time, you're probably just 78 00:03:03,270 --> 00:03:04,570 doing yourself a disservice. 79 00:03:04,570 --> 00:03:08,730 So I would try your best to keep up and try to aspire for less than a 80 00:03:08,730 --> 00:03:10,170 year being ideal. 81 00:03:10,170 --> 00:03:11,970 But people certainly succeed thereafter. 82 00:03:11,970 --> 00:03:12,810 CARTER ZENKE: Yeah. 83 00:03:12,810 --> 00:03:14,790 And so one of the things you would learn if you took [INAUDIBLE] 84 00:03:14,790 --> 00:03:16,720 is how to build your very own software. 85 00:03:16,720 --> 00:03:18,270 So a question comes from someone in the chat here. 86 00:03:18,270 --> 00:03:21,020 Could you guide them on how to contribute to open source software? 87 00:03:21,020 --> 00:03:21,660 DAVID: Yeah. 88 00:03:21,660 --> 00:03:22,020 OK. 89 00:03:22,020 --> 00:03:25,005 So first, actually, Carter, what do you mean by open source software? 90 00:03:25,005 --> 00:03:28,047 CARTER ZENKE: Well, open source software is software for which the source 91 00:03:28,047 --> 00:03:29,047 code is open and online. 92 00:03:29,047 --> 00:03:30,755 And the source code is the code you might 93 00:03:30,755 --> 00:03:32,460 write to actually build that software. 94 00:03:32,460 --> 00:03:34,877 Some folks, when they write software, put that code online 95 00:03:34,877 --> 00:03:37,570 for everyone to see and for others to contribute to as well. 96 00:03:37,570 --> 00:03:38,070 DAVID: Yeah. 97 00:03:38,070 --> 00:03:40,320 So companies like GitHub have been a big part of this. 98 00:03:40,320 --> 00:03:42,900 So if you go to github.com and you access 99 00:03:42,900 --> 00:03:46,260 any number of the repos or repositories that are on the website, 100 00:03:46,260 --> 00:03:48,300 you're looking typically at open source code. 101 00:03:48,300 --> 00:03:51,333 And if you can't see it at all or if you get like a 404 message, 102 00:03:51,333 --> 00:03:52,500 it could very well be there. 103 00:03:52,500 --> 00:03:54,690 It's just, it's private or closed source code. 104 00:03:54,690 --> 00:03:57,810 But GitHub and GitLab and Bitbucket and similar sites 105 00:03:57,810 --> 00:04:02,220 are all about making it easier to not just host your code and version 106 00:04:02,220 --> 00:04:04,020 control, keep track of different versions, 107 00:04:04,020 --> 00:04:06,400 but also make it very readily available to other people. 108 00:04:06,400 --> 00:04:09,630 So to be honest, if you want to do something in the open source world, 109 00:04:09,630 --> 00:04:12,570 I think it's most fun and probably most straightforward 110 00:04:12,570 --> 00:04:17,700 if you pick some piece of software, like a library or a framework 111 00:04:17,700 --> 00:04:22,780 or any piece of software that you yourself use or have used before. 112 00:04:22,780 --> 00:04:24,750 And if you spot a bug in it or if there's 113 00:04:24,750 --> 00:04:27,630 a missing feature that you wish that tool could do, 114 00:04:27,630 --> 00:04:30,510 then you can minimally go to a website like github.com. 115 00:04:30,510 --> 00:04:32,970 Go to the repo for that software. 116 00:04:32,970 --> 00:04:34,740 Click on the Issues tab. 117 00:04:34,740 --> 00:04:37,330 And create an issue, which can mean any number of things. 118 00:04:37,330 --> 00:04:40,317 It can mean a bug report or it can mean a feature request. 119 00:04:40,317 --> 00:04:42,900 And I would just strongly encourage you, if you go that route, 120 00:04:42,900 --> 00:04:44,820 to just always be very detailed. 121 00:04:44,820 --> 00:04:47,730 Don't ask in a short, terse sentence what it is you're seeking 122 00:04:47,730 --> 00:04:49,080 or what it is you're reporting. 123 00:04:49,080 --> 00:04:51,540 Try to save the maintainers of the software 124 00:04:51,540 --> 00:04:54,630 the trouble of figuring out what is it you're seeing that they're not 125 00:04:54,630 --> 00:04:57,160 so that they can really dive in and focus on the problem, 126 00:04:57,160 --> 00:05:00,027 not focus on the question that you're actually asking. 127 00:05:00,027 --> 00:05:02,360 And so examples might include if you do web development, 128 00:05:02,360 --> 00:05:04,360 like if you use bootstrap, for instance, and you 129 00:05:04,360 --> 00:05:07,670 notice, oh, I wish bootstrap did this, or, oh, bootstrap is not 130 00:05:07,670 --> 00:05:09,050 supposed to be doing that. 131 00:05:09,050 --> 00:05:10,100 You can open an issue. 132 00:05:10,100 --> 00:05:13,850 Or better yet, what you can do once you're comfortable with the software is 133 00:05:13,850 --> 00:05:16,400 you could download the source code from GitHub 134 00:05:16,400 --> 00:05:19,430 or technically clone the repository into your own account. 135 00:05:19,430 --> 00:05:23,570 You could then make changes using github.com's GUI or Bitbucket 136 00:05:23,570 --> 00:05:26,060 or GitLab, whatever the case may be. 137 00:05:26,060 --> 00:05:28,910 You can then save the change in your repo. 138 00:05:28,910 --> 00:05:32,660 And then open what's called a pull request to the other repository, which 139 00:05:32,660 --> 00:05:34,220 essentially means you click a button. 140 00:05:34,220 --> 00:05:37,140 You create a name for it and maybe a description thereof. 141 00:05:37,140 --> 00:05:40,220 And that then shows the owners of the code 142 00:05:40,220 --> 00:05:43,677 that you cloned what changes literally you are proposing. 143 00:05:43,677 --> 00:05:46,010 And if they like them, they can literally click a button 144 00:05:46,010 --> 00:05:47,135 and merge the two together. 145 00:05:47,135 --> 00:05:50,218 If they don't like what you've done or if they have questions or concerns, 146 00:05:50,218 --> 00:05:51,180 they can comment on it. 147 00:05:51,180 --> 00:05:54,960 So it's actually a really nice way to get into the ecosystem. 148 00:05:54,960 --> 00:05:57,290 And I will say, honestly, I think my proudest 149 00:05:57,290 --> 00:06:00,930 moment was, there was not even a bug. 150 00:06:00,930 --> 00:06:04,050 I think it was like one line of a comment in English 151 00:06:04,050 --> 00:06:05,093 that was just incorrect. 152 00:06:05,093 --> 00:06:06,510 I think I might be making this up. 153 00:06:06,510 --> 00:06:09,150 But it was something like that-- very inconsequential. 154 00:06:09,150 --> 00:06:13,110 But I figured out how to actually clone this repository, 155 00:06:13,110 --> 00:06:14,410 submit the pull request. 156 00:06:14,410 --> 00:06:18,660 And in this case, it was to the Git source code itself, so the tool 157 00:06:18,660 --> 00:06:21,970 you actually use to use websites like GitHub and the like. 158 00:06:21,970 --> 00:06:24,210 And I was very proud when that finally got approved. 159 00:06:24,210 --> 00:06:27,012 But I spent hours making sure I didn't embarrass myself 160 00:06:27,012 --> 00:06:29,470 by making sure I hadn't screwed up or done something wrong. 161 00:06:29,470 --> 00:06:31,230 So it can be time consuming, too. 162 00:06:31,230 --> 00:06:33,140 CARTER ZENKE: Yeah, and you make contributions both big and small, 163 00:06:33,140 --> 00:06:33,500 I guess. 164 00:06:33,500 --> 00:06:33,630 DAVID: Yes. 165 00:06:33,630 --> 00:06:33,870 CARTER ZENKE: Yeah. 166 00:06:33,870 --> 00:06:34,370 DAVID: Yes. 167 00:06:34,370 --> 00:06:35,610 CARTER ZENKE: Nice. 168 00:06:35,610 --> 00:06:37,650 One of the things I like about open source software is anyone 169 00:06:37,650 --> 00:06:39,240 around the world can contribute to it. 170 00:06:39,240 --> 00:06:41,430 And thinking about our Spanish-speaking students, 171 00:06:41,430 --> 00:06:43,410 is there a version of CS50 in Spanish? 172 00:06:43,410 --> 00:06:44,520 DAVID: Sort of. 173 00:06:44,520 --> 00:06:46,740 So there has been in the past, where we have actually 174 00:06:46,740 --> 00:06:50,220 had human translators translate the transcripts 175 00:06:50,220 --> 00:06:54,660 for the lectures in a format called SRT files which are subtitle 176 00:06:54,660 --> 00:06:57,000 files, essentially, in text format. 177 00:06:57,000 --> 00:06:59,290 We haven't done it over the past couple of years. 178 00:06:59,290 --> 00:07:00,750 It is our hope to do so again. 179 00:07:00,750 --> 00:07:03,600 In fact, on our to-do list is to put all of our transcripts 180 00:07:03,600 --> 00:07:07,260 or SRT files in a GitHub repository publicly so 181 00:07:07,260 --> 00:07:09,150 that people can submit pull requests. 182 00:07:09,150 --> 00:07:13,710 I will say that it is always, over the years, such a bigger undertaking 183 00:07:13,710 --> 00:07:15,150 than people think it is. 184 00:07:15,150 --> 00:07:17,700 For better or for worse, a lot of words come out of my mouth. 185 00:07:17,700 --> 00:07:18,892 And these are long lectures. 186 00:07:18,892 --> 00:07:21,600 And then we have Doug Short's and yours and Brian's walkthroughs. 187 00:07:21,600 --> 00:07:22,980 So it's a lot of content. 188 00:07:22,980 --> 00:07:26,190 So honestly, we're more optimistic moving forward 189 00:07:26,190 --> 00:07:29,850 that we're going to be able to leverage artificial intelligence and tools, 190 00:07:29,850 --> 00:07:32,430 like from Microsoft and GitHub and OpenAI-- 191 00:07:32,430 --> 00:07:35,970 sorry-- Microsoft and Google and OpenAI to actually do 192 00:07:35,970 --> 00:07:37,140 these translations for us. 193 00:07:37,140 --> 00:07:39,697 And then maybe we humans just kind of make tweaks. 194 00:07:39,697 --> 00:07:42,405 But we don't translate every darn word, which just takes forever. 195 00:07:42,405 --> 00:07:42,960 CARTER ZENKE: Yeah. 196 00:07:42,960 --> 00:07:45,252 I think it's hard with so many variations of the course 197 00:07:45,252 --> 00:07:48,080 that we have the CS50x, CS50p, and so on. 198 00:07:48,080 --> 00:07:48,580 DAVID: Yeah. 199 00:07:48,580 --> 00:07:51,090 CARTER ZENKE: And the question here is, how many variations are there 200 00:07:51,090 --> 00:07:52,470 actually in the CS50 universe? 201 00:07:52,470 --> 00:07:55,350 DAVID: I think there are 12 currently. 202 00:07:55,350 --> 00:08:00,420 And among them are indeed CS50x, which is like the backbone of the curriculum, 203 00:08:00,420 --> 00:08:01,770 but also quite rigorous. 204 00:08:01,770 --> 00:08:05,460 And so what you can take before that or sometimes during 205 00:08:05,460 --> 00:08:08,880 or after is CS50p, which is an introduction to programming 206 00:08:08,880 --> 00:08:10,590 with Python, specifically. 207 00:08:10,590 --> 00:08:13,560 So it's not so much about CS and algorithms and data structures. 208 00:08:13,560 --> 00:08:15,210 It's about programming in Python. 209 00:08:15,210 --> 00:08:18,180 There's a similar class taught by Brian about Scratch, 210 00:08:18,180 --> 00:08:20,670 so similarly meant to be a very accessible class, 211 00:08:20,670 --> 00:08:22,080 but focused on programming. 212 00:08:22,080 --> 00:08:24,720 We have introductions to computer science 213 00:08:24,720 --> 00:08:29,520 more generally for managers, people in business, for consumers, 214 00:08:29,520 --> 00:08:31,860 and simple average citizens who just want to learn more 215 00:08:31,860 --> 00:08:33,659 about technology, and also for lawyers. 216 00:08:33,659 --> 00:08:38,340 And those classes, too, can be taken before or during or after CS50x itself. 217 00:08:38,340 --> 00:08:40,980 But then there are some follow on classes, too-- 218 00:08:40,980 --> 00:08:45,120 soon to be Carter's own introduction to databases with SQL, 219 00:08:45,120 --> 00:08:47,710 another programming declarative language; 220 00:08:47,710 --> 00:08:51,507 a new class from me on cybersecurity debuting on-- 221 00:08:51,507 --> 00:08:52,590 CARTER ZENKE: October 1st? 222 00:08:52,590 --> 00:08:54,300 DAVID: October 1st, indeed. 223 00:08:54,300 --> 00:08:58,530 And then we have Brian's web programming class, Colton's game development class, 224 00:08:58,530 --> 00:09:00,180 and Brian's AI class. 225 00:09:00,180 --> 00:09:03,180 And if I had actually been putting up more than three fingers at a time, 226 00:09:03,180 --> 00:09:04,263 we'd know the final count. 227 00:09:04,263 --> 00:09:05,120 But I think it's 12. 228 00:09:05,120 --> 00:09:06,120 CARTER ZENKE: Around 12. 229 00:09:06,120 --> 00:09:06,480 And-- 230 00:09:06,480 --> 00:09:07,110 DAVID: Yes. 231 00:09:07,110 --> 00:09:08,370 CARTER ZENKE: --if that isn't enough, have you 232 00:09:08,370 --> 00:09:09,660 thought about a course on data science? 233 00:09:09,660 --> 00:09:10,650 DAVID: It's a big - of 12. 234 00:09:10,650 --> 00:09:11,483 CARTER ZENKE: Big 0. 235 00:09:11,483 --> 00:09:13,890 DAVID: A course on data science-- 236 00:09:13,890 --> 00:09:14,790 we have. 237 00:09:14,790 --> 00:09:17,280 It's not on the short term to-do list. 238 00:09:17,280 --> 00:09:20,205 But we've been thinking about it, but no plans just yet. 239 00:09:20,205 --> 00:09:21,780 CARTER ZENKE: Gotcha. 240 00:09:21,780 --> 00:09:24,180 A question from [INAUDIBLE] I believe-- 241 00:09:24,180 --> 00:09:27,810 when studying CS50, should I try to be proficient in every language 242 00:09:27,810 --> 00:09:29,910 in the course, like the C program, like Python, 243 00:09:29,910 --> 00:09:33,828 or so on, or just be well acquainted? 244 00:09:33,828 --> 00:09:35,495 DAVID: Well equipped or well acquainted? 245 00:09:35,495 --> 00:09:37,250 CARTER ZENKE: Well acquainted. 246 00:09:37,250 --> 00:09:38,090 I think, yeah-- 247 00:09:38,090 --> 00:09:39,260 DAVID: That's a fine line, I feel. 248 00:09:39,260 --> 00:09:41,630 CARTER ZENKE: Well, the question is proficient in every language. 249 00:09:41,630 --> 00:09:42,830 DAVID: Oh, proficient in every language. 250 00:09:42,830 --> 00:09:44,630 CARTER ZENKE: Yeah, versus just kind of acquainted with it. 251 00:09:44,630 --> 00:09:46,255 DAVID: Well, minimally acquainted, yes. 252 00:09:46,255 --> 00:09:49,380 I think it's useful to know a bunch of different languages, 253 00:09:49,380 --> 00:09:53,780 not just to accumulate them on your resume or your GitHub, 254 00:09:53,780 --> 00:09:57,380 but rather so that you know about different types of programming 255 00:09:57,380 --> 00:09:59,540 languages and different paradigms. 256 00:09:59,540 --> 00:10:01,927 There's procedural or imperative programming. 257 00:10:01,927 --> 00:10:03,260 There's declarative programming. 258 00:10:03,260 --> 00:10:04,250 There's functional programming. 259 00:10:04,250 --> 00:10:05,750 There's object-oriented programming. 260 00:10:05,750 --> 00:10:07,830 And there's overlap among some of those. 261 00:10:07,830 --> 00:10:09,870 But at least by seeing different languages, 262 00:10:09,870 --> 00:10:11,450 you see what's possible in code. 263 00:10:11,450 --> 00:10:15,410 And it makes it honestly easier to pick up new languages or new libraries 264 00:10:15,410 --> 00:10:19,010 or understand source code because you just have a bigger mental model of how 265 00:10:19,010 --> 00:10:20,820 you can solve these kinds of problems. 266 00:10:20,820 --> 00:10:25,280 But I would say it's probably especially valuable to be proficient in-- that is 267 00:10:25,280 --> 00:10:26,480 very good at-- 268 00:10:26,480 --> 00:10:29,510 minimally one, if not a couple of languages. 269 00:10:29,510 --> 00:10:32,570 And that can be a bunch of different popular ones nowadays. 270 00:10:32,570 --> 00:10:34,347 But you can't really go wrong with Python. 271 00:10:34,347 --> 00:10:36,930 If you're interested in data science, to the question earlier, 272 00:10:36,930 --> 00:10:42,570 R is quite popular there; Java, super popular; JavaScript, super popular. 273 00:10:42,570 --> 00:10:45,990 And then if you want to do web stuff, you have to know HTML and CSS. 274 00:10:45,990 --> 00:10:47,460 So your hands are somewhat tied. 275 00:10:47,460 --> 00:10:49,420 Then there's the whole mobile ecosystem. 276 00:10:49,420 --> 00:10:53,340 But in short, I would get breadth in a bunch of languages but depth 277 00:10:53,340 --> 00:10:54,127 in at least one. 278 00:10:54,127 --> 00:10:55,460 CARTER ZENKE: I agree with that. 279 00:10:55,460 --> 00:10:56,130 DAVID: Yeah. 280 00:10:56,130 --> 00:10:58,020 CARTER ZENKE: Another question relatedly is, 281 00:10:58,020 --> 00:11:01,800 should someone try to do all of CS50 courses-- all 12 or all-- 282 00:11:01,800 --> 00:11:04,966 well, around 12 courses that we just talked about? 283 00:11:04,966 --> 00:11:06,570 DAVID: No, probably not. 284 00:11:06,570 --> 00:11:09,203 I think doing all of the courses we offer 285 00:11:09,203 --> 00:11:12,120 would probably be equivalent to what the internet calls tutorial hell, 286 00:11:12,120 --> 00:11:13,365 where you-- 287 00:11:13,365 --> 00:11:15,600 not because they're bad, but because you just get 288 00:11:15,600 --> 00:11:17,620 stuck in this infinite loop, if you will, 289 00:11:17,620 --> 00:11:20,490 of just always learning, always practicing, 290 00:11:20,490 --> 00:11:22,190 but not necessarily applying. 291 00:11:22,190 --> 00:11:23,440 So it's fine to keep learning. 292 00:11:23,440 --> 00:11:25,710 But if you're not really taking that knowledge, those skills out for a spin 293 00:11:25,710 --> 00:11:29,100 and solving actual problems, you're only solving my problems, Carter's problems, 294 00:11:29,100 --> 00:11:31,090 Brian's problems, Colton's problems. 295 00:11:31,090 --> 00:11:33,090 You're not actually solving problems of your own 296 00:11:33,090 --> 00:11:35,460 or of your friends or family or colleagues. 297 00:11:35,460 --> 00:11:37,770 So we typically, at Harvard College here, 298 00:11:37,770 --> 00:11:39,780 for instance, would recommend that minimally 299 00:11:39,780 --> 00:11:42,840 before students go get a summer job or certainly a full time job, 300 00:11:42,840 --> 00:11:46,770 that they take at least two software classes, like a class like CS50 301 00:11:46,770 --> 00:11:49,170 in procedural programming and then another class 302 00:11:49,170 --> 00:11:51,450 in functional or object-oriented programming just 303 00:11:51,450 --> 00:11:55,620 to round themselves out; if they can, maybe another class 304 00:11:55,620 --> 00:11:58,090 in algorithms and/or data structures. 305 00:11:58,090 --> 00:12:00,060 So you go more deeply into that world. 306 00:12:00,060 --> 00:12:02,820 And after that, you can start to branch out more. 307 00:12:02,820 --> 00:12:05,610 But I don't think it would be a good prioritization of life 308 00:12:05,610 --> 00:12:08,610 to sit down and not go off into the real world 309 00:12:08,610 --> 00:12:11,460 and build your own things until you're done with all 12 310 00:12:11,460 --> 00:12:14,643 of CS50's courses, which doesn't feel like an optimal use of time. 311 00:12:14,643 --> 00:12:16,560 CARTER ZENKE: Probably not a good use of time. 312 00:12:16,560 --> 00:12:17,550 DAVID: I said optimal. 313 00:12:17,550 --> 00:12:19,420 You said good, but optimal. 314 00:12:19,420 --> 00:12:19,920 OK. 315 00:12:19,920 --> 00:12:21,160 CARTER ZENKE: One thing I like about those courses, though, 316 00:12:21,160 --> 00:12:21,915 is they're for beginners. 317 00:12:21,915 --> 00:12:22,415 DAVID: Yeah. 318 00:12:22,415 --> 00:12:25,540 CARTER ZENKE: So if you were to begin learning computer science over again, 319 00:12:25,540 --> 00:12:28,040 would you do anything differently from how you first did it? 320 00:12:28,040 --> 00:12:29,140 DAVID: Oh, interesting. 321 00:12:29,140 --> 00:12:31,650 And as I answer this, if you want to tee up something for me to ask you, 322 00:12:31,650 --> 00:12:33,090 happy to take over the iPad. 323 00:12:33,090 --> 00:12:33,882 CARTER ZENKE: Sure. 324 00:12:33,882 --> 00:12:36,760 DAVID: Would I do anything differently? 325 00:12:36,760 --> 00:12:41,550 So to this day, I kind of regret not having taken or made time 326 00:12:41,550 --> 00:12:44,400 for or had time for a course in graphics, 327 00:12:44,400 --> 00:12:46,980 whether it's for gaming or whatever else; 328 00:12:46,980 --> 00:12:50,190 a course in artificial intelligence proper back in the day. 329 00:12:50,190 --> 00:12:52,410 All of my knowledge is much more recent, but I 330 00:12:52,410 --> 00:12:55,020 wish I had taken a more foundational course early on, even 331 00:12:55,020 --> 00:12:59,400 though, to be fair, it existed and the field existed some years ago. 332 00:12:59,400 --> 00:13:03,160 But it wasn't nearly as topical as it is right now. 333 00:13:03,160 --> 00:13:05,550 And I always wish I took a class in Compiler. 334 00:13:05,550 --> 00:13:08,740 So in CS50, we talk about C and how you compile your code, 335 00:13:08,740 --> 00:13:11,700 so to speak, from higher-level English-like syntax 336 00:13:11,700 --> 00:13:12,780 into zeros and ones. 337 00:13:12,780 --> 00:13:13,950 A compiler does that. 338 00:13:13,950 --> 00:13:16,470 And there's some really cool, fun, low-level code 339 00:13:16,470 --> 00:13:18,690 you can write to actually do compiler stuff. 340 00:13:18,690 --> 00:13:21,210 So I just wish that I had taken, or had time 341 00:13:21,210 --> 00:13:24,460 to take a few more classes like that. 342 00:13:24,460 --> 00:13:28,200 And frankly, I wish I had found or made time over the past 20 years 343 00:13:28,200 --> 00:13:31,068 to do those as well, since I'm still interested, clearly. 344 00:13:31,068 --> 00:13:32,610 CARTER ZENKE: Yeah, that makes sense. 345 00:13:32,610 --> 00:13:32,760 Yeah. 346 00:13:32,760 --> 00:13:34,910 A question about front-end development here, if you want to take it. 347 00:13:34,910 --> 00:13:35,577 DAVID: Oh, sure. 348 00:13:35,577 --> 00:13:39,470 Carter, we have a question about front-end development here. 349 00:13:39,470 --> 00:13:42,140 What languages and frameworks should I be familiar with 350 00:13:42,140 --> 00:13:43,515 to be a good front-end developer? 351 00:13:43,515 --> 00:13:45,223 CARTER ZENKE: I think it's probably worth 352 00:13:45,223 --> 00:13:46,780 defining what front end actually is. 353 00:13:46,780 --> 00:13:47,280 DAVID: OK. 354 00:13:47,280 --> 00:13:48,740 CARTER ZENKE: So if you're not familiar, front end 355 00:13:48,740 --> 00:13:50,573 is what you see when you go to a new website 356 00:13:50,573 --> 00:13:53,150 and you see often some buttons or some text, 357 00:13:53,150 --> 00:13:54,740 some places you could type things in. 358 00:13:54,740 --> 00:13:57,210 That's what we call the front end of some site. 359 00:13:57,210 --> 00:13:59,480 So if you want to build those kinds of designs, 360 00:13:59,480 --> 00:14:03,230 you might learn a few languages, like HTML and CSS and JavaScript. 361 00:14:03,230 --> 00:14:05,990 But within those, there are a few tools or technologies 362 00:14:05,990 --> 00:14:08,580 you could use to help you use them all the more quickly. 363 00:14:08,580 --> 00:14:11,520 So for instance, something like bootstrap, as I mentioned earlier, 364 00:14:11,520 --> 00:14:14,060 is a tool to help you write CSS to style your pages to make 365 00:14:14,060 --> 00:14:15,890 them look really pretty really quickly. 366 00:14:15,890 --> 00:14:17,930 You might also learn things about JavaScript. 367 00:14:17,930 --> 00:14:21,740 I think Angular is a popular framework, React as well. 368 00:14:21,740 --> 00:14:23,955 Those help you build more interactive sites, again, 369 00:14:23,955 --> 00:14:27,080 a lot more quickly than you could just on your own programming by yourself. 370 00:14:27,080 --> 00:14:27,725 DAVID: Nice. 371 00:14:27,725 --> 00:14:28,250 CARTER ZENKE: Yeah. 372 00:14:28,250 --> 00:14:28,750 DAVID: OK. 373 00:14:28,750 --> 00:14:31,900 Another question we have here-- are CS50 certificates, perhaps 374 00:14:31,900 --> 00:14:35,745 from CS50 or Index, helpful in applying to Harvard, would you say? 375 00:14:35,745 --> 00:14:37,370 CARTER ZENKE: So I think they could be. 376 00:14:37,370 --> 00:14:39,050 They're a great demonstration of your knowledge. 377 00:14:39,050 --> 00:14:40,910 If you've completed the course and gotten a certificate, 378 00:14:40,910 --> 00:14:42,770 that means you attempt all the problem sets. 379 00:14:42,770 --> 00:14:44,270 You got a good score on all of them. 380 00:14:44,270 --> 00:14:46,140 It kind of knowledge, not just at Harvard, 381 00:14:46,140 --> 00:14:48,557 but the other folks who might be interested in it as well. 382 00:14:48,557 --> 00:14:49,440 So I'd say, oh, yeah. 383 00:14:49,440 --> 00:14:49,940 DAVID: Yeah. 384 00:14:49,940 --> 00:14:51,690 I don't think-- it certainly doesn't hurt. 385 00:14:51,690 --> 00:14:55,280 And I think if it's accompanied by other achievements, other projects, 386 00:14:55,280 --> 00:14:58,260 other goals that you've set your mind to, that's good. 387 00:14:58,260 --> 00:15:01,460 I don't think I would approach it as, oh, I should take CS50 at Harvard 388 00:15:01,460 --> 00:15:04,190 and get a certificate because it will help me get in here or anywhere else. 389 00:15:04,190 --> 00:15:04,520 CARTER ZENKE: Yeah. 390 00:15:04,520 --> 00:15:06,260 DAVID: It really should be part of a narrative. 391 00:15:06,260 --> 00:15:09,200 If you're taking advantage of resources not just in your own school, 392 00:15:09,200 --> 00:15:12,740 but ideally if your school itself is not very well resourced 393 00:15:12,740 --> 00:15:15,710 or doesn't have courses in CS50, that you've gone above and beyond 394 00:15:15,710 --> 00:15:19,160 and found things on your own, and better yet, done more than just CS50, 395 00:15:19,160 --> 00:15:21,983 but have pursued higher-level opportunities as well. 396 00:15:21,983 --> 00:15:22,775 CARTER ZENKE: Yeah. 397 00:15:22,775 --> 00:15:23,483 DAVID: All right. 398 00:15:23,483 --> 00:15:26,030 So let's see-- another question here. 399 00:15:26,030 --> 00:15:30,485 Can you learn enough on CS50's course to start freelancing? 400 00:15:30,485 --> 00:15:33,718 CARTER ZENKE: A really good question-- could you learn how to do freelancing? 401 00:15:33,718 --> 00:15:36,510 So it probably depends on the freelancing you're thinking of doing. 402 00:15:36,510 --> 00:15:39,070 If you're interested in some front-end web domain 403 00:15:39,070 --> 00:15:42,120 like we just talked about or even back end, or doing, of course, anything 404 00:15:42,120 --> 00:15:44,975 else with C or Python or HTML, CSS, and JavaScript, 405 00:15:44,975 --> 00:15:47,100 I would say CS50 is a good place to start for that. 406 00:15:47,100 --> 00:15:48,600 You could certainly get the fundamental skills. 407 00:15:48,600 --> 00:15:51,683 You could learn to apply to new places and to show your skills to somebody 408 00:15:51,683 --> 00:15:53,142 who's looking to hire you, perhaps. 409 00:15:53,142 --> 00:15:54,165 DAVID: OK, compelling. 410 00:15:54,165 --> 00:15:54,780 CARTER ZENKE: Yeah. 411 00:15:54,780 --> 00:15:56,322 DAVID: We have another question here. 412 00:15:56,322 --> 00:15:59,910 What advice would you give to someone who is struggling with hash tables? 413 00:15:59,910 --> 00:16:01,140 And it's 1:00 AM. 414 00:16:01,140 --> 00:16:01,680 Ha ha. 415 00:16:01,680 --> 00:16:04,555 CARTER ZENKE: Oh, if it's 1:00 AM, my first advice is to take a break 416 00:16:04,555 --> 00:16:05,610 and go to sleep. 417 00:16:05,610 --> 00:16:07,950 Often, the best thing you can do is just, 418 00:16:07,950 --> 00:16:11,350 if you're feeling stuck, feeling frustrated, just take a step back. 419 00:16:11,350 --> 00:16:12,600 Take some time to yourself. 420 00:16:12,600 --> 00:16:14,392 And then come back and approach the problem 421 00:16:14,392 --> 00:16:18,000 with that fresh mind and a more awake brain. 422 00:16:18,000 --> 00:16:20,670 For hash tables in particular, I found it helpful often 423 00:16:20,670 --> 00:16:22,060 to just draw things out. 424 00:16:22,060 --> 00:16:25,740 So if you go to our own lectures, you go to Brian's walkthrough, 425 00:16:25,740 --> 00:16:29,010 Brian has some good visuals about what hash tables actually look like. 426 00:16:29,010 --> 00:16:31,290 I'd encourage you to take that and draw it out. 427 00:16:31,290 --> 00:16:33,570 And see what you're missing in your mental model. 428 00:16:33,570 --> 00:16:36,700 Maybe add that drawing in to see if you can make it click in your mind, 429 00:16:36,700 --> 00:16:38,820 but again after some sleep. 430 00:16:38,820 --> 00:16:39,600 DAVID: All right. 431 00:16:39,600 --> 00:16:42,480 So this one's a bit more specific to pursuing a job. 432 00:16:42,480 --> 00:16:46,590 I've nearly completed CS50w, the web class, after CS50x. 433 00:16:46,590 --> 00:16:49,530 While applying for developer jobs, I see a lot 434 00:16:49,530 --> 00:16:52,650 of recruiters asking for a technical round of interviews. 435 00:16:52,650 --> 00:16:56,130 But how common is the use of DSA, data structures and algorithms, 436 00:16:56,130 --> 00:16:58,125 in web development, actually? 437 00:16:58,125 --> 00:17:02,132 CARTER ZENKE: A good question-- so if you're applying to technical roles 438 00:17:02,132 --> 00:17:03,840 at some company, you might often be asked 439 00:17:03,840 --> 00:17:06,720 to do this technical interview in which somebody will often 440 00:17:06,720 --> 00:17:09,302 give you a small coding problem. 441 00:17:09,302 --> 00:17:11,010 That hopefully helps you demonstrate what 442 00:17:11,010 --> 00:17:13,530 you know about programming and these fundamentals 443 00:17:13,530 --> 00:17:15,327 like data structures and algorithms. 444 00:17:15,327 --> 00:17:17,369 So I would say in a web developer role like that, 445 00:17:17,369 --> 00:17:19,530 you might get some questions about fundamental data structures 446 00:17:19,530 --> 00:17:20,500 and algorithms and so on. 447 00:17:20,500 --> 00:17:21,554 So it could be good to know about. 448 00:17:21,554 --> 00:17:22,770 Does that answering your question? 449 00:17:22,770 --> 00:17:24,420 DAVID: Yeah, I think so because web development, 450 00:17:24,420 --> 00:17:25,962 too-- it depends on what depth it is. 451 00:17:25,962 --> 00:17:28,650 If you're just making static web pages with content, 452 00:17:28,650 --> 00:17:30,962 then, no, you shouldn't really need to know 453 00:17:30,962 --> 00:17:32,670 much about data structures and algorithms 454 00:17:32,670 --> 00:17:34,910 because it's really just HTML and CSS. 455 00:17:34,910 --> 00:17:37,547 But if you start writing JavaScript for more interactive code 456 00:17:37,547 --> 00:17:39,380 and interactive websites, well, you're going 457 00:17:39,380 --> 00:17:41,870 to be using things like arrays or objects 458 00:17:41,870 --> 00:17:44,570 or other data structures, either that you've created 459 00:17:44,570 --> 00:17:46,080 or maybe some libraries created. 460 00:17:46,080 --> 00:17:48,320 So then, yes, it becomes more helpful. 461 00:17:48,320 --> 00:17:51,320 And also, too, if you are the one architecting a full-fledged web 462 00:17:51,320 --> 00:17:54,680 application that has a front end and a back end, then, yes, absolutely. 463 00:17:54,680 --> 00:17:58,310 And so knowing something about data structures and algorithms 464 00:17:58,310 --> 00:18:01,460 is a good litmus test for just how deep your knowledge is versus 465 00:18:01,460 --> 00:18:02,900 how shallow it is. 466 00:18:02,900 --> 00:18:06,020 If you just know HTML and CSS, you're only 467 00:18:06,020 --> 00:18:09,020 going to be so useful on a team that's trying to build something, 468 00:18:09,020 --> 00:18:10,842 for instance, from the ground up. 469 00:18:10,842 --> 00:18:13,550 So it really depends, too, on the role that you're interested in. 470 00:18:13,550 --> 00:18:15,200 CARTER ZENKE: I think most team members, when they're hiring, 471 00:18:15,200 --> 00:18:17,742 are interested in how you're thinking about the problem, too. 472 00:18:17,742 --> 00:18:20,480 So it's less so the extent of your solutions 473 00:18:20,480 --> 00:18:23,097 correctness, but also more so how you talk them 474 00:18:23,097 --> 00:18:26,180 through how you're solving the problem, sharing you're thinking as you go. 475 00:18:26,180 --> 00:18:26,910 DAVID: Yeah. 476 00:18:26,910 --> 00:18:27,410 All right. 477 00:18:27,410 --> 00:18:29,000 So here's a big one, Carter. 478 00:18:29,000 --> 00:18:30,770 I'm weak at problem solving. 479 00:18:30,770 --> 00:18:31,685 What should I do? 480 00:18:31,685 --> 00:18:34,700 CARTER ZENKE: Weak at problem solving-- 481 00:18:34,700 --> 00:18:35,693 I would say-- 482 00:18:35,693 --> 00:18:37,610 I'm going to push back on that and say I don't 483 00:18:37,610 --> 00:18:39,440 think you're weak at problem solving. 484 00:18:39,440 --> 00:18:43,670 I think you have the tools within you to help solve problems. 485 00:18:43,670 --> 00:18:46,315 I wonder what kinds of problems you're trying to solve. 486 00:18:46,315 --> 00:18:48,440 Are they related to computer science in particular? 487 00:18:48,440 --> 00:18:50,482 Maybe feel free to follow up on that in the chat. 488 00:18:50,482 --> 00:18:52,610 But I would say going back to some earlier 489 00:18:52,610 --> 00:18:56,660 question about being frustrated or feeling like you couldn't make progress 490 00:18:56,660 --> 00:18:58,950 on something, take a step back. 491 00:18:58,950 --> 00:19:00,685 Think about what you want to learn. 492 00:19:00,685 --> 00:19:03,810 Try to come back to that fresh mindset and thinking through, I can do this. 493 00:19:03,810 --> 00:19:04,370 I can try this. 494 00:19:04,370 --> 00:19:06,470 And that optimism should hopefully push you through a little bit 495 00:19:06,470 --> 00:19:07,800 further than currently now. 496 00:19:07,800 --> 00:19:08,300 DAVID: Yeah. 497 00:19:08,300 --> 00:19:10,217 And honestly, it really boils down to practice 498 00:19:10,217 --> 00:19:13,010 because honestly, the real value of doing homework in many classes 499 00:19:13,010 --> 00:19:16,280 and just doing school in general is that you're not necessarily 500 00:19:16,280 --> 00:19:19,370 learning specifically how to solve problems that you're going to encounter 501 00:19:19,370 --> 00:19:22,028 in the real world, but problems that are similar to problems 502 00:19:22,028 --> 00:19:23,820 that you might encounter in the real world. 503 00:19:23,820 --> 00:19:26,630 And so by doing homework, taking classes, doing projects, writing 504 00:19:26,630 --> 00:19:31,730 papers, you're just learning to recognize patterns and apply 505 00:19:31,730 --> 00:19:33,627 those ideas to problems in the real world. 506 00:19:33,627 --> 00:19:35,210 And honestly, that's what's so useful. 507 00:19:35,210 --> 00:19:37,970 If you have this mental model, so to speak, of some problem 508 00:19:37,970 --> 00:19:40,312 that you solved back in school or back at some other job 509 00:19:40,312 --> 00:19:42,020 because when you encounter something new, 510 00:19:42,020 --> 00:19:44,265 you kind of have an instinct for a starting point. 511 00:19:44,265 --> 00:19:46,640 And that's absolutely going to be hard early on in school 512 00:19:46,640 --> 00:19:48,557 because you just don't have that mental model. 513 00:19:48,557 --> 00:19:50,520 And you don't have those examples to draw on. 514 00:19:50,520 --> 00:19:52,850 So you just of have to power through because for better 515 00:19:52,850 --> 00:19:56,660 or for worse, life is going to be full of problems, not necessarily all CS. 516 00:19:56,660 --> 00:19:59,990 But you're just going to start to recognize how to navigate things 517 00:19:59,990 --> 00:20:01,385 that are similar to past things-- 518 00:20:01,385 --> 00:20:02,093 CARTER ZENKE: OK. 519 00:20:02,093 --> 00:20:03,240 DAVID: --I would say. 520 00:20:03,240 --> 00:20:03,740 All right. 521 00:20:03,740 --> 00:20:04,240 Let's see. 522 00:20:04,240 --> 00:20:11,380 How about, Carter, is it good to take CS50w, the web class, and CS50 523 00:20:11,380 --> 00:20:13,705 AI, the AI class, at the same time? 524 00:20:13,705 --> 00:20:16,115 CARTER ZENKE: At the same time, I think it 525 00:20:16,115 --> 00:20:17,740 depends on the time you have available. 526 00:20:17,740 --> 00:20:20,240 If you are interested in both those things you have the time 527 00:20:20,240 --> 00:20:24,490 to devote to both courses, why not combine them and do them both at once? 528 00:20:24,490 --> 00:20:26,710 In my own educational directive, I find it 529 00:20:26,710 --> 00:20:30,430 helpful to take two dissimilar courses and see how they 530 00:20:30,430 --> 00:20:32,195 related in ways I didn't quite expect. 531 00:20:32,195 --> 00:20:34,945 So I'd actually probably encourage you to try that out if you can. 532 00:20:34,945 --> 00:20:38,153 If it becomes overwhelming, feeling like you're spending too much time on it, 533 00:20:38,153 --> 00:20:40,720 feel free to do one then the other, either web first 534 00:20:40,720 --> 00:20:44,370 and then AI next, or AI first and web next-- either one, I would say. 535 00:20:44,370 --> 00:20:46,300 DAVID: OK, fair. 536 00:20:46,300 --> 00:20:47,560 Let's see. 537 00:20:47,560 --> 00:20:54,085 How about any books you would advise for memorizing code or learning coding? 538 00:20:54,085 --> 00:20:55,880 CARTER ZENKE: Books to memorize code-- 539 00:20:55,880 --> 00:21:00,910 so I know there is a famous book for the C programming language written by-- 540 00:21:00,910 --> 00:21:01,540 is it Brian-- 541 00:21:01,540 --> 00:21:02,320 DAVID: Brian Kernighan, yeah, yeah. 542 00:21:02,320 --> 00:21:02,920 CARTER ZENKE: --the author of that one. 543 00:21:02,920 --> 00:21:06,100 So that one's actually useful for me as I joined CS50 and wanted 544 00:21:06,100 --> 00:21:07,878 to learn how to teach C well. 545 00:21:07,878 --> 00:21:09,170 What is the title of that book? 546 00:21:09,170 --> 00:21:10,812 Do you know off the top of your head? 547 00:21:10,812 --> 00:21:12,020 DAVID: Programming in C-- no. 548 00:21:12,020 --> 00:21:12,440 CARTER ZENKE: Programming in C. 549 00:21:12,440 --> 00:21:13,700 DAVID: Wait, no. 550 00:21:13,700 --> 00:21:14,930 I really should know this. 551 00:21:14,930 --> 00:21:16,148 Everyone calls it K and R-- 552 00:21:16,148 --> 00:21:16,940 CARTER ZENKE: Yeah. 553 00:21:16,940 --> 00:21:19,460 DAVID: --by nature of the authors. 554 00:21:19,460 --> 00:21:20,660 Wow, I should know this. 555 00:21:20,660 --> 00:21:21,020 This is embarrassing. 556 00:21:21,020 --> 00:21:23,280 CARTER ZENKE: Something like Programming in C, but if you can't find it, 557 00:21:23,280 --> 00:21:23,870 you could Google K and R. 558 00:21:23,870 --> 00:21:24,800 DAVID: We'll edit this part out. 559 00:21:24,800 --> 00:21:25,350 Right. 560 00:21:25,350 --> 00:21:25,760 OK. 561 00:21:25,760 --> 00:21:26,468 CARTER ZENKE: OK. 562 00:21:26,468 --> 00:21:27,770 Google K and R on Google. 563 00:21:27,770 --> 00:21:32,030 And you'll find this pretty small book on the C language. 564 00:21:32,030 --> 00:21:35,810 It covers pretty much all that you need to know about the C language. 565 00:21:35,810 --> 00:21:39,198 I found that helpful because I could go through and find all the bits 566 00:21:39,198 --> 00:21:41,990 and pieces of that language and see how I can combine them to build 567 00:21:41,990 --> 00:21:43,560 the programs I wanted to build. 568 00:21:43,560 --> 00:21:44,990 So that's a good job of breaking things down. 569 00:21:44,990 --> 00:21:45,170 DAVID: Sorry. 570 00:21:45,170 --> 00:21:46,212 It was even more obvious. 571 00:21:46,212 --> 00:21:47,450 The C Programming Language-- 572 00:21:47,450 --> 00:21:47,727 CARTER ZENKE: The C Programming Language. 573 00:21:47,727 --> 00:21:49,310 DAVID: It is what K and R is actually called. 574 00:21:49,310 --> 00:21:50,060 CARTER ZENKE: Yes. 575 00:21:50,060 --> 00:21:51,455 DAVID: That's embarrassing, but-- 576 00:21:51,455 --> 00:21:52,310 CARTER ZENKE: So go ahead and-- 577 00:21:52,310 --> 00:21:53,600 DAVID: But you knew how big a book it was. 578 00:21:53,600 --> 00:21:53,870 CARTER ZENKE: Yeah. 579 00:21:53,870 --> 00:21:55,703 DAVID: So that was something about that big. 580 00:21:55,703 --> 00:21:56,220 OK. 581 00:21:56,220 --> 00:21:56,720 All right. 582 00:21:56,720 --> 00:21:57,470 Well, let's see. 583 00:21:57,470 --> 00:22:00,500 How about, how much time, Carter, should someone 584 00:22:00,500 --> 00:22:04,110 spend learning coding to become a really good programmer? 585 00:22:04,110 --> 00:22:07,830 CARTER ZENKE: So I've heard some conventional wisdom is the 10,000-hour 586 00:22:07,830 --> 00:22:08,330 rule. 587 00:22:08,330 --> 00:22:10,880 You spend 10,000 hours, and you become an expert in whatever field 588 00:22:10,880 --> 00:22:11,630 you want to learn. 589 00:22:11,630 --> 00:22:12,560 I think it's from Malcolm Gladwell. 590 00:22:12,560 --> 00:22:13,070 DAVID: OK. 591 00:22:13,070 --> 00:22:13,790 That's a lot of hours. 592 00:22:13,790 --> 00:22:14,580 CARTER ZENKE: That's a lot of hours. 593 00:22:14,580 --> 00:22:15,350 I don't think that's quite-- 594 00:22:15,350 --> 00:22:15,560 DAVID: That's big, yeah. 595 00:22:15,560 --> 00:22:16,893 CARTER ZENKE: --always accurate. 596 00:22:16,893 --> 00:22:19,982 I think it more so depends on the kind of practice you're doing. 597 00:22:19,982 --> 00:22:22,190 So the kinds of practice that you might get from CS50 598 00:22:22,190 --> 00:22:26,120 is that practice of actually writing code, solving new problems. 599 00:22:26,120 --> 00:22:29,040 That's what I think is valuable practice you might need. 600 00:22:29,040 --> 00:22:33,530 So I don't think there's certain number of hours, but more so the kinds of-- 601 00:22:33,530 --> 00:22:35,400 the type of practice you're doing. 602 00:22:35,400 --> 00:22:37,910 And I would say more so a commitment to staying with it. 603 00:22:37,910 --> 00:22:40,970 If you do it this next month, try to do it the next month, too. 604 00:22:40,970 --> 00:22:43,190 And one month leads to two, two to three. 605 00:22:43,190 --> 00:22:45,000 Maybe a whole year leads to two, and so on. 606 00:22:45,000 --> 00:22:47,480 And you find yourself becoming more and more expert as you go. 607 00:22:47,480 --> 00:22:47,980 DAVID: Yes. 608 00:22:47,980 --> 00:22:50,710 But I would emphasize, or I would argue that you should still 609 00:22:50,710 --> 00:22:52,460 be applying what you're learning as you go 610 00:22:52,460 --> 00:22:55,550 because if you're assuming 40 hours in a week, 611 00:22:55,550 --> 00:22:58,508 that's 250 weeks to get to 10,000 hours. 612 00:22:58,508 --> 00:22:59,300 CARTER ZENKE: Yeah. 613 00:22:59,300 --> 00:23:00,940 DAVID: And that's like five years. 614 00:23:00,940 --> 00:23:03,200 And I don't think someone should wait five years before feeling that they're 615 00:23:03,200 --> 00:23:04,658 ready to emerge from tutorial hell. 616 00:23:04,658 --> 00:23:05,700 CARTER ZENKE: Absolutely. 617 00:23:05,700 --> 00:23:06,410 DAVID: OK. 618 00:23:06,410 --> 00:23:07,202 CARTER ZENKE: Yeah. 619 00:23:07,202 --> 00:23:09,960 DAVID: But I have heard that heuristic before as well. 620 00:23:09,960 --> 00:23:10,460 All right. 621 00:23:10,460 --> 00:23:12,960 How about time for a few more questions here? 622 00:23:12,960 --> 00:23:15,800 623 00:23:15,800 --> 00:23:16,352 Let's see. 624 00:23:16,352 --> 00:23:19,310 A lot of people in the chat who knew the name of the textbook before we 625 00:23:19,310 --> 00:23:20,640 did-- all right. 626 00:23:20,640 --> 00:23:21,140 OK. 627 00:23:21,140 --> 00:23:21,590 CARTER ZENKE: I'm proud of you all. 628 00:23:21,590 --> 00:23:23,060 DAVID: Let's see. 629 00:23:23,060 --> 00:23:24,020 All right. 630 00:23:24,020 --> 00:23:26,240 Oh, so this is a question really for the group. 631 00:23:26,240 --> 00:23:27,870 So others should feel to chime in, too. 632 00:23:27,870 --> 00:23:30,200 But did you all take classes for fast typing? 633 00:23:30,200 --> 00:23:31,100 How about you? 634 00:23:31,100 --> 00:23:32,810 CARTER ZENKE: I actually did. 635 00:23:32,810 --> 00:23:37,080 This was back in middle school when I was maybe around 13 or 14. 636 00:23:37,080 --> 00:23:38,040 We had a program. 637 00:23:38,040 --> 00:23:38,720 I don't remember the name. 638 00:23:38,720 --> 00:23:40,220 But there was a wizard that would show up. 639 00:23:40,220 --> 00:23:41,390 And you'd be on a spaceship. 640 00:23:41,390 --> 00:23:45,090 And you'd type words fast enough to break the asteroids. 641 00:23:45,090 --> 00:23:47,030 So maybe others have played that game 642 00:23:47,030 --> 00:23:47,988 DAVID: Oh, interesting. 643 00:23:47,988 --> 00:23:50,210 Yeah, I don't know what games or software we used, 644 00:23:50,210 --> 00:23:51,980 but I, too, in middle school, I think. 645 00:23:51,980 --> 00:23:53,450 And this was in the '80s. 646 00:23:53,450 --> 00:23:56,330 And they had these very cheesy like pieces of plastic 647 00:23:56,330 --> 00:23:58,190 that they'd put over your hands. 648 00:23:58,190 --> 00:24:00,440 So you couldn't cheat and look at your actual fingers. 649 00:24:00,440 --> 00:24:01,773 CARTER ZENKE: That sounds tough. 650 00:24:01,773 --> 00:24:02,360 DAVID: Yeah. 651 00:24:02,360 --> 00:24:03,800 And it's funny. 652 00:24:03,800 --> 00:24:06,180 To this day, I don't think I type properly 653 00:24:06,180 --> 00:24:08,180 because I think the way we were supposed to type 654 00:24:08,180 --> 00:24:10,805 was keeping your hands positioned and just moving your fingers. 655 00:24:10,805 --> 00:24:12,440 But I still kind of move my hands. 656 00:24:12,440 --> 00:24:14,903 And it's just what feels most comfortable to me. 657 00:24:14,903 --> 00:24:16,820 CARTER ZENKE: Is that good for your wrist or-- 658 00:24:16,820 --> 00:24:17,690 DAVID: I don't know. 659 00:24:17,690 --> 00:24:18,898 CARTER ZENKE: I don't think-- 660 00:24:18,898 --> 00:24:22,242 DAVID: Maybe not, but that's what I do. 661 00:24:22,242 --> 00:24:24,200 In fairness, actually, in graduate school years 662 00:24:24,200 --> 00:24:26,810 ago, I did start to develop problems with my hands, which 663 00:24:26,810 --> 00:24:29,300 wasn't so much a function, I think, of how I was typing, 664 00:24:29,300 --> 00:24:30,660 but really how I was sitting. 665 00:24:30,660 --> 00:24:33,620 And I developed what would generally be called RSI-- repetitive stress 666 00:24:33,620 --> 00:24:34,130 injuries. 667 00:24:34,130 --> 00:24:37,550 And it was really worrisome and really potentially debilitating, such 668 00:24:37,550 --> 00:24:41,090 that I'd have to take a day-- a few days away from typing, or at least 669 00:24:41,090 --> 00:24:43,690 typing significantly because I didn't want to do more damage. 670 00:24:43,690 --> 00:24:45,440 And I knew at the time a couple of friends 671 00:24:45,440 --> 00:24:50,600 had serious physical issues that had been the result of poor ergonomics, 672 00:24:50,600 --> 00:24:51,145 so to speak. 673 00:24:51,145 --> 00:24:51,420 CARTER ZENKE: OK. 674 00:24:51,420 --> 00:24:53,810 DAVID: And so what I found helpful for years in my case 675 00:24:53,810 --> 00:24:57,920 was I got not really a special desk, but a special keyboard tray that actually 676 00:24:57,920 --> 00:25:00,590 didn't sit flat but actually angled downward 677 00:25:00,590 --> 00:25:03,570 because I found it more comfortable to type like this for a while. 678 00:25:03,570 --> 00:25:05,630 And I don't need that anymore. 679 00:25:05,630 --> 00:25:08,340 And even now, I do think I'm a little lazy. 680 00:25:08,340 --> 00:25:11,910 And if I'm on the sofa with my laptop, those are not the best ergonomics. 681 00:25:11,910 --> 00:25:15,430 But I don't think I type as much as I once did on that way. 682 00:25:15,430 --> 00:25:16,630 So I would be super careful. 683 00:25:16,630 --> 00:25:19,088 And if you're ever feeling any pain in your wrists or hands 684 00:25:19,088 --> 00:25:22,120 or forearm, stop and fix whatever it is you're doing. 685 00:25:22,120 --> 00:25:23,820 And take time away from it if you can. 686 00:25:23,820 --> 00:25:24,405 CARTER ZENKE: Posture is important. 687 00:25:24,405 --> 00:25:25,290 DAVID: Yeah. 688 00:25:25,290 --> 00:25:28,740 No, that was a worrisome time years ago. 689 00:25:28,740 --> 00:25:30,510 All right. 690 00:25:30,510 --> 00:25:32,970 This is harder to answer, I dare say, but what language 691 00:25:32,970 --> 00:25:37,062 has the most potential for being the most profitable in the current world? 692 00:25:37,062 --> 00:25:38,520 CARTER ZENKE: The most profitable-- 693 00:25:38,520 --> 00:25:42,250 I would say that answer is probably always changing in some sense. 694 00:25:42,250 --> 00:25:47,680 I know there are surveys by Stack Overflow that try to figure that out. 695 00:25:47,680 --> 00:25:50,400 I know you showed one recently in our business school class. 696 00:25:50,400 --> 00:25:51,570 Is there one that topped that list? 697 00:25:51,570 --> 00:25:51,960 Do you remember? 698 00:25:51,960 --> 00:25:53,460 DAVID: I don't remember what it was. 699 00:25:53,460 --> 00:25:56,790 But if you do Google Stack Overflow Developer Survey, 700 00:25:56,790 --> 00:26:00,058 you will see some numbers there where they surveyed thousands of folks-- 701 00:26:00,058 --> 00:26:00,850 CARTER ZENKE: Yeah. 702 00:26:00,850 --> 00:26:01,933 DAVID: --which might help. 703 00:26:01,933 --> 00:26:03,659 I suspect at the top of the list-- 704 00:26:03,659 --> 00:26:04,701 CARTER ZENKE: JavaScript. 705 00:26:04,701 --> 00:26:05,835 DAVID: JavaScript, Java-- 706 00:26:05,835 --> 00:26:06,585 CARTER ZENKE: Yes. 707 00:26:06,585 --> 00:26:08,830 DAVID: --a lot of enterprise-focused languages. 708 00:26:08,830 --> 00:26:11,410 Probably some more niche or older languages 709 00:26:11,410 --> 00:26:15,250 where there's just fewer people who know them well is possible. 710 00:26:15,250 --> 00:26:17,890 But honestly, I wouldn't learn a language strictly 711 00:26:17,890 --> 00:26:19,810 because it's on the top of one of these lists. 712 00:26:19,810 --> 00:26:24,070 I would take one step back from that and consider where or from 713 00:26:24,070 --> 00:26:26,860 whom are you going to learn it well, and enjoy it, ideally. 714 00:26:26,860 --> 00:26:31,870 And two, what opportunities might exist in your local town or community 715 00:26:31,870 --> 00:26:33,070 or online? 716 00:26:33,070 --> 00:26:35,355 And maybe strategize that way. 717 00:26:35,355 --> 00:26:37,105 And I don't think you can really go wrong. 718 00:26:37,105 --> 00:26:39,020 CARTER ZENKE: Agreed, because again, it's always changing. 719 00:26:39,020 --> 00:26:40,660 So learn what you want to learn and what's 720 00:26:40,660 --> 00:26:42,827 going to help you best tie it into computer science. 721 00:26:42,827 --> 00:26:43,690 DAVID: Yeah, agreed. 722 00:26:43,690 --> 00:26:46,900 I'm confused between cybersecurity and AI. 723 00:26:46,900 --> 00:26:49,880 How can I find which is better for me? 724 00:26:49,880 --> 00:26:52,807 CARTER ZENKE: I would probably take stock of your interest. 725 00:26:52,807 --> 00:26:54,640 So cybersecurity might be interesting to you 726 00:26:54,640 --> 00:26:58,450 if you're interested in how we can secure systems, keep data private, 727 00:26:58,450 --> 00:27:03,490 keep hackers out, or even how you could hack organizations really for good 728 00:27:03,490 --> 00:27:06,160 to help them find their own vulnerabilities. 729 00:27:06,160 --> 00:27:10,150 You mentioned AI, though, if you're curious about maybe 730 00:27:10,150 --> 00:27:13,300 taking in lots of data and finding patterns in that data. 731 00:27:13,300 --> 00:27:16,630 If you've been interested in some of the recent elements in ChatGPT 732 00:27:16,630 --> 00:27:20,328 or generative AI, one can make artwork and text and so on. 733 00:27:20,328 --> 00:27:22,120 That might be a good reason to go study AI. 734 00:27:22,120 --> 00:27:24,310 So it depends on your own interests here and taking 735 00:27:24,310 --> 00:27:25,945 stock of what you like the best. 736 00:27:25,945 --> 00:27:26,950 DAVID: Yeah. 737 00:27:26,950 --> 00:27:28,310 OK. 738 00:27:28,310 --> 00:27:28,810 Let's see. 739 00:27:28,810 --> 00:27:31,450 I've got to do C++ for my university class. 740 00:27:31,450 --> 00:27:37,390 But is it OK to learn concepts like OOP or DSA in Python? 741 00:27:37,390 --> 00:27:40,810 CARTER ZENKE: I would say it's still OK. 742 00:27:40,810 --> 00:27:44,720 Python tends to, we say, abstract some of those structures away. 743 00:27:44,720 --> 00:27:47,140 So you get a lot of things for free in Python. 744 00:27:47,140 --> 00:27:50,500 If you, for instance, want to make a linked list in Python, 745 00:27:50,500 --> 00:27:53,050 you get that in something like a single line of code. 746 00:27:53,050 --> 00:27:55,990 In C++ or in C, it takes many more lines of code. 747 00:27:55,990 --> 00:27:57,230 You build it up yourself. 748 00:27:57,230 --> 00:28:02,620 So I would say C++ or C might be better to actually understand how 749 00:28:02,620 --> 00:28:04,600 the structures are built from the beginning. 750 00:28:04,600 --> 00:28:08,365 But Python can help you use them more quickly as you develop in your career. 751 00:28:08,365 --> 00:28:09,520 DAVID: OK, fair. 752 00:28:09,520 --> 00:28:11,770 I think we have time for a couple more questions. 753 00:28:11,770 --> 00:28:14,680 All right. 754 00:28:14,680 --> 00:28:16,240 Let's see. 755 00:28:16,240 --> 00:28:18,075 I've got one for our last question. 756 00:28:18,075 --> 00:28:20,200 CARTER ZENKE: Do I want to ask that one to you or-- 757 00:28:20,200 --> 00:28:21,670 DAVID: We should both answer it, I think. 758 00:28:21,670 --> 00:28:22,060 CARTER ZENKE: All right. 759 00:28:22,060 --> 00:28:23,830 DAVID: How about this one, though, because we hear this a lot 760 00:28:23,830 --> 00:28:26,050 from a lot of our online or adult students. 761 00:28:26,050 --> 00:28:29,600 Do we have any future in the job market at the age of 49? 762 00:28:29,600 --> 00:28:31,000 CARTER ZENKE: Absolutely. 763 00:28:31,000 --> 00:28:33,693 I think we're always looking for programmers of all ages. 764 00:28:33,693 --> 00:28:36,610 So it's never too late to begin and never too late to put yourself out 765 00:28:36,610 --> 00:28:37,940 there onto that job market. 766 00:28:37,940 --> 00:28:38,440 DAVID: Yeah. 767 00:28:38,440 --> 00:28:40,937 No, and truly, certainly when it comes to technical skills, 768 00:28:40,937 --> 00:28:44,020 I don't think people blink twice whether you're young, whether you're old. 769 00:28:44,020 --> 00:28:48,130 It really boils down to, in most contexts, or many contexts, certainly, 770 00:28:48,130 --> 00:28:49,870 just how good you are at what you do. 771 00:28:49,870 --> 00:28:53,080 And particularly with so many online opportunities available nowadays, 772 00:28:53,080 --> 00:28:55,570 increasingly work from home, wherever you 773 00:28:55,570 --> 00:28:58,600 are in the state, wherever you are in the country or in the world. 774 00:28:58,600 --> 00:29:01,190 That's opening up potentially new opportunities, too. 775 00:29:01,190 --> 00:29:05,740 So I certainly wouldn't let age alone be a barrier if you have this interest, 776 00:29:05,740 --> 00:29:08,740 if you have opportunities to learn it, be it online or in person. 777 00:29:08,740 --> 00:29:11,470 I think that should really be lower on your list of concerns. 778 00:29:11,470 --> 00:29:12,775 CARTER ZENKE: Definitely. 779 00:29:12,775 --> 00:29:15,320 DAVID: How about for our final question? 780 00:29:15,320 --> 00:29:17,510 It's a bit open ended. 781 00:29:17,510 --> 00:29:19,790 But also, I think it's provocative. 782 00:29:19,790 --> 00:29:22,080 What about the future of programming? 783 00:29:22,080 --> 00:29:27,680 CARTER ZENKE: Oh, one thing that comes to my mind 784 00:29:27,680 --> 00:29:30,353 immediately is I think you had shared this talk with me 785 00:29:30,353 --> 00:29:32,270 and Wong Shing, one of our software developers 786 00:29:32,270 --> 00:29:35,720 on the team, where someone was talking about the capabilities 787 00:29:35,720 --> 00:29:39,450 of generative AI, like ChatGPT, to help us write code. 788 00:29:39,450 --> 00:29:41,990 So if you go to ChatGPT, it'll help you write code. 789 00:29:41,990 --> 00:29:44,195 I think it would be a little too helpful sometimes. 790 00:29:44,195 --> 00:29:46,820 But I think there might be a transition towards writing code in 791 00:29:46,820 --> 00:29:48,800 more an English language style, like trying 792 00:29:48,800 --> 00:29:50,973 to tell an AI what you want the program to do, 793 00:29:50,973 --> 00:29:54,140 and having it generate the code for you that you can then go in and critique 794 00:29:54,140 --> 00:29:56,430 and update with your own knowledge of that language. 795 00:29:56,430 --> 00:29:56,930 DAVID: Yeah. 796 00:29:56,930 --> 00:29:57,410 CARTER ZENKE: Does that make sense? 797 00:29:57,410 --> 00:29:57,890 DAVID: I agree. 798 00:29:57,890 --> 00:29:59,340 I don't know how many years away it is. 799 00:29:59,340 --> 00:30:01,423 But I would be thrilled, honestly, if I could just 800 00:30:01,423 --> 00:30:05,240 tell an AI what it is I want some application 801 00:30:05,240 --> 00:30:10,650 or software to do for me, so long as it interprets me correctly. 802 00:30:10,650 --> 00:30:14,127 And I can be as imprecise with the AI as I 803 00:30:14,127 --> 00:30:17,210 might be with a human who can read between the lines and know what I mean; 804 00:30:17,210 --> 00:30:18,960 whereas computers typically won't give you 805 00:30:18,960 --> 00:30:20,580 the benefit of the doubt in that way. 806 00:30:20,580 --> 00:30:23,690 And I think, too, if I had to guess, in some number of years 807 00:30:23,690 --> 00:30:25,970 a lot of software engineering will become more 808 00:30:25,970 --> 00:30:30,350 like product management and actually designing the software at a high level, 809 00:30:30,350 --> 00:30:33,950 but leaving it to the software itself to write itself, if you will. 810 00:30:33,950 --> 00:30:36,950 So you and I can focus honestly on the interesting parts of the problem, 811 00:30:36,950 --> 00:30:39,470 the juicy parts like what are the feature sets, how does it 812 00:30:39,470 --> 00:30:41,180 work, what's the overarching design. 813 00:30:41,180 --> 00:30:44,570 But you don't have to necessarily get into the weeds of writing code. 814 00:30:44,570 --> 00:30:46,820 That might be fun in some cases. 815 00:30:46,820 --> 00:30:49,400 But a lot of it increasingly is becoming boilerplate. 816 00:30:49,400 --> 00:30:50,698 It gets a little repetitive. 817 00:30:50,698 --> 00:30:52,490 It's similar to some other project you did. 818 00:30:52,490 --> 00:30:55,760 It's just using API calls or using someone else's library. 819 00:30:55,760 --> 00:30:57,530 And there's just the juicy part, honestly. 820 00:30:57,530 --> 00:31:00,350 Even when Wong Shing and I and we talk about software, 821 00:31:00,350 --> 00:31:02,720 it's like literally using the whiteboard or just 822 00:31:02,720 --> 00:31:05,570 chatting open-endedly about what the software should do 823 00:31:05,570 --> 00:31:06,737 and how it could do it. 824 00:31:06,737 --> 00:31:09,320 Honestly, at least for me, that's the fun part of all of this. 825 00:31:09,320 --> 00:31:10,040 It's the design. 826 00:31:10,040 --> 00:31:11,660 And I do enjoy some of the coding. 827 00:31:11,660 --> 00:31:15,140 But honestly, I also have to take such a deep breath sometimes 828 00:31:15,140 --> 00:31:17,660 to just slog through other aspects of coding 829 00:31:17,660 --> 00:31:20,930 or find enough time to do everything that it's a real turnoff. 830 00:31:20,930 --> 00:31:23,528 So I think there's a real juicy opportunity there. 831 00:31:23,528 --> 00:31:24,320 CARTER ZENKE: Yeah. 832 00:31:24,320 --> 00:31:25,490 And we talk about one of things computer science 833 00:31:25,490 --> 00:31:27,500 teaches you is how to be precise, so all the more reason 834 00:31:27,500 --> 00:31:28,760 to learn computer science, then. 835 00:31:28,760 --> 00:31:29,330 DAVID: Yeah. 836 00:31:29,330 --> 00:31:31,370 Well, if you'd like to learn more about where 837 00:31:31,370 --> 00:31:34,490 we are in the world, Google Radcliffe College, 838 00:31:34,490 --> 00:31:36,950 which is now the Radcliffe Institute. 839 00:31:36,950 --> 00:31:38,720 You can read more about the history here. 840 00:31:38,720 --> 00:31:41,870 We, of course, are here representing CS50, which is Harvard's introduction 841 00:31:41,870 --> 00:31:44,000 to the intellectual enterprises of computer science 842 00:31:44,000 --> 00:31:49,040 and the art of programming with all of these follow along and also precursor 843 00:31:49,040 --> 00:31:50,990 courses that we've chatted about a bit here. 844 00:31:50,990 --> 00:31:55,305 And you can find all of those at edx.org/cs50. 845 00:31:55,305 --> 00:31:56,555 Any final words for the group? 846 00:31:56,555 --> 00:31:57,740 CARTER ZENKE: None for me. 847 00:31:57,740 --> 00:31:58,490 See you next time. 848 00:31:58,490 --> 00:32:00,580 DAVID: This was CS50. 849 00:32:00,580 --> 00:32:02,000