1 00:00:00,000 --> 00:00:02,070 2 00:00:02,070 --> 00:00:05,580 DAVID MALAN: This is CS50's office hours with, today, David and Brian. 3 00:00:05,580 --> 00:00:08,160 If unfamiliar, office hours are an opportunity 4 00:00:08,160 --> 00:00:11,730 at Harvard on campus for students to visit professors' offices, 5 00:00:11,730 --> 00:00:14,160 literally, and ask questions about the courses they're 6 00:00:14,160 --> 00:00:16,770 taking, about computer science, more generally, 7 00:00:16,770 --> 00:00:19,320 or life after courses like CS50. 8 00:00:19,320 --> 00:00:22,030 So we thought we would try to do the same here on the internet, 9 00:00:22,030 --> 00:00:23,880 especially while everyone is home. 10 00:00:23,880 --> 00:00:26,130 We do hope that everyone is doing well and is feeling 11 00:00:26,130 --> 00:00:28,290 healthy, and family and friends, too. 12 00:00:28,290 --> 00:00:31,770 And the goal of today really is just to have a chat about topics of interest 13 00:00:31,770 --> 00:00:32,580 to you. 14 00:00:32,580 --> 00:00:36,210 Ramon has brought some questions that classmates have asked in advance, too, 15 00:00:36,210 --> 00:00:37,920 in case we need to call upon those. 16 00:00:37,920 --> 00:00:41,910 And let me just give you a quick tour of Zoom, if unfamiliar. 17 00:00:41,910 --> 00:00:45,090 In the bottom left-hand corner of your Zoom window, 18 00:00:45,090 --> 00:00:47,580 there should be a Mute or Unmute button. 19 00:00:47,580 --> 00:00:51,450 If you do ask a question today, do be sure to Mute or Unmute yourself 20 00:00:51,450 --> 00:00:52,620 accordingly. 21 00:00:52,620 --> 00:00:55,830 Next to that should be a Start or Stop Video button. 22 00:00:55,830 --> 00:00:58,800 Do, if you have a webcam or camera of some sort, 23 00:00:58,800 --> 00:01:00,660 keep it on during office hours so that we 24 00:01:00,660 --> 00:01:02,700 get a sense of who were chatting with. 25 00:01:02,700 --> 00:01:06,510 In the middle of your Zoom window is probably a chat icon 26 00:01:06,510 --> 00:01:10,200 so that you can chat textually on your keyboard with classmates 27 00:01:10,200 --> 00:01:12,390 who are in the room, as well, or see links 28 00:01:12,390 --> 00:01:14,220 that we might paste during the chat. 29 00:01:14,220 --> 00:01:16,260 And then last but not least, let me go ahead 30 00:01:16,260 --> 00:01:18,675 and ask you, everyone, to do this. 31 00:01:18,675 --> 00:01:23,850 Click on the Chat button and click on Participants 32 00:01:23,850 --> 00:01:27,330 so that you see the names of everyone else in the chat room. 33 00:01:27,330 --> 00:01:30,630 And below the list of participants on your screen, 34 00:01:30,630 --> 00:01:32,910 you should see a hand icon. 35 00:01:32,910 --> 00:01:34,440 That represents raising your hand. 36 00:01:34,440 --> 00:01:39,450 If everyone could click that button just once so that we know who's here. 37 00:01:39,450 --> 00:01:40,263 Wonderful. 38 00:01:40,263 --> 00:01:42,180 So if you have a question at any point, please 39 00:01:42,180 --> 00:01:45,210 feel free to raise your digital hand that way and Brian 40 00:01:45,210 --> 00:01:46,800 and I will do our best to call on you. 41 00:01:46,800 --> 00:01:48,810 And please forgive if there are simply too many 42 00:01:48,810 --> 00:01:50,730 questions to ask during this hour. 43 00:01:50,730 --> 00:01:53,580 We do hope to do more of these in the future. 44 00:01:53,580 --> 00:01:55,580 [BACKGROUND TV NOISE] 45 00:01:55,580 --> 00:01:56,950 46 00:01:56,950 --> 00:01:57,880 Just to begin. 47 00:01:57,880 --> 00:02:00,780 And we're going to also try to keep everyone's microphones muted, 48 00:02:00,780 --> 00:02:04,770 generally, so we don't hear background noise or TVs or traffic, 49 00:02:04,770 --> 00:02:08,900 but allow us to start right away here. 50 00:02:08,900 --> 00:02:13,230 Prenab, can we start with your first question for Brian or myself? 51 00:02:13,230 --> 00:02:14,520 PRENAB: Yeah. 52 00:02:14,520 --> 00:02:15,763 Hi, am I audible? 53 00:02:15,763 --> 00:02:17,180 DAVID MALAN: Yes, we can hear you. 54 00:02:17,180 --> 00:02:17,680 PRENAB: Hi. 55 00:02:17,680 --> 00:02:19,320 So a quick introduction of myself. 56 00:02:19,320 --> 00:02:20,150 I'm Prenab Sabla. 57 00:02:20,150 --> 00:02:24,330 I am a 14-year-old student from India, Bengali, India. 58 00:02:24,330 --> 00:02:30,230 And firstly, I'd just like to thank both of you, professor David and Brian, 59 00:02:30,230 --> 00:02:33,530 especially because I took the CS50 course last year, 60 00:02:33,530 --> 00:02:36,890 the CS50 introduction one. 61 00:02:36,890 --> 00:02:40,120 I'm doing the mobile development one, and so 62 00:02:40,120 --> 00:02:42,570 [INAUDIBLE] the content is very accessible, 63 00:02:42,570 --> 00:02:44,320 especially the way both of you explains. 64 00:02:44,320 --> 00:02:45,268 Thanks a lot. 65 00:02:45,268 --> 00:02:46,810 DAVID MALAN: I'm really glad to hear. 66 00:02:46,810 --> 00:02:47,440 PRENAB: Yeah. 67 00:02:47,440 --> 00:02:51,270 And secondly, my question is-- 68 00:02:51,270 --> 00:02:56,100 so I have a few questions. 69 00:02:56,100 --> 00:03:02,070 And firstly, the first question I had was 70 00:03:02,070 --> 00:03:08,560 that every year, this year's 50 introduction cause 71 00:03:08,560 --> 00:03:12,540 has so many different problems. 72 00:03:12,540 --> 00:03:18,150 However, there's one problem, mainly, that's been going on for years, 73 00:03:18,150 --> 00:03:20,190 and that's speller. 74 00:03:20,190 --> 00:03:28,220 And so how come speller's being that one constant problem that's been going on? 75 00:03:28,220 --> 00:03:30,460 I mean, I've noticed that it's one of the most 76 00:03:30,460 --> 00:03:33,010 hardest problems in the course. 77 00:03:33,010 --> 00:03:35,680 And my second question is that this year, so I 78 00:03:35,680 --> 00:03:37,870 was trying to help some students here and I 79 00:03:37,870 --> 00:03:42,640 was looking at the week 8 problem sets. 80 00:03:42,640 --> 00:03:48,340 And so unlike last year, where you had only one problem that was finance, 81 00:03:48,340 --> 00:03:55,690 this year you had a whole rock barrage of problems, encompassing web, iOS, 82 00:03:55,690 --> 00:03:57,670 Android, and games. 83 00:03:57,670 --> 00:04:04,090 And so what was the idea behind the complete addition of problems? 84 00:04:04,090 --> 00:04:07,150 Because it's been so much more interesting, and I myself 85 00:04:07,150 --> 00:04:09,340 really want to retake the course just to see, 86 00:04:09,340 --> 00:04:12,520 because there were so many changes this year, especially that one. 87 00:04:12,520 --> 00:04:16,450 So what was the idea behind changing that and keeping the speller 88 00:04:16,450 --> 00:04:17,800 problem, however, in there? 89 00:04:17,800 --> 00:04:18,550 DAVID MALAN: Sure. 90 00:04:18,550 --> 00:04:20,383 Why don't I try to answer the first question 91 00:04:20,383 --> 00:04:23,420 and then turn to Brian for the second question. 92 00:04:23,420 --> 00:04:27,130 So speller has indeed been with the course I think since 2007, when I first 93 00:04:27,130 --> 00:04:29,200 started teaching CS50. 94 00:04:29,200 --> 00:04:31,090 It has, indeed, always been a good challenge, 95 00:04:31,090 --> 00:04:34,510 but it's really meant to be a very climactic problem for students 96 00:04:34,510 --> 00:04:39,340 to solve in the very last week that we spend on C, the programming language. 97 00:04:39,340 --> 00:04:42,610 I think it's incredibly empowering for students in a class 98 00:04:42,610 --> 00:04:46,030 to actually implement their own hash table, specifically. 99 00:04:46,030 --> 00:04:50,560 Or in the past, students had the choice of implementing a try, alternatively. 100 00:04:50,560 --> 00:04:52,900 And I think the competitive part of it has 101 00:04:52,900 --> 00:04:54,730 been appealing to a lot of students. 102 00:04:54,730 --> 00:04:58,300 If unfamiliar, this problem set allows you to implement your very own spell 103 00:04:58,300 --> 00:05:02,560 checker, for which we give you a big dictionary of 140,000 plus English 104 00:05:02,560 --> 00:05:05,940 words, and you have to implement the fastest spell checker that you can 105 00:05:05,940 --> 00:05:08,690 and the one that uses the least amount of memory. 106 00:05:08,690 --> 00:05:11,920 And then we have a competition of sorts, a big board, a leaderboard, 107 00:05:11,920 --> 00:05:15,820 where students are ranked, if they opt into this, based on how little RAM 108 00:05:15,820 --> 00:05:17,830 or how little time their code has used. 109 00:05:17,830 --> 00:05:21,190 And that seems to be a fun way of not making the course competitive, 110 00:05:21,190 --> 00:05:23,690 but making one small piece of it so. 111 00:05:23,690 --> 00:05:27,100 And Brian could perhaps speak best to piece set 8 and how and why it 112 00:05:27,100 --> 00:05:28,805 changed so much this year. 113 00:05:28,805 --> 00:05:29,680 BRIAN YU: Yeah, sure. 114 00:05:29,680 --> 00:05:31,930 So this past year in CS50, we've introduced 115 00:05:31,930 --> 00:05:35,240 at the end of the class what we call our various different tracks. 116 00:05:35,240 --> 00:05:37,677 It used to be that at the end of CS50, everyone 117 00:05:37,677 --> 00:05:39,760 would learn a little bit of web programming, which 118 00:05:39,760 --> 00:05:42,468 was a lot of fun for many students and let them build some really 119 00:05:42,468 --> 00:05:44,170 interesting and exciting projects. 120 00:05:44,170 --> 00:05:46,840 But one of our goals this past year was to experiment 121 00:05:46,840 --> 00:05:49,300 with the idea of students building other tools 122 00:05:49,300 --> 00:05:52,640 and other applications that are interesting to them. 123 00:05:52,640 --> 00:05:56,920 And especially nowadays, where so much of where programming is happening 124 00:05:56,920 --> 00:06:00,710 and development is happening in mobile apps, like iOS and Android apps, 125 00:06:00,710 --> 00:06:04,090 for example, we thought it would be nice to give students an opportunity 126 00:06:04,090 --> 00:06:06,080 to learn to do that, too, if they wanted to. 127 00:06:06,080 --> 00:06:08,980 So students now have an option at the end of the semester 128 00:06:08,980 --> 00:06:12,790 to choose between web programming or iOS app development or Android app 129 00:06:12,790 --> 00:06:15,250 development, or even game development, too, 130 00:06:15,250 --> 00:06:19,050 since new tools and graphics libraries that have been developed over the years 131 00:06:19,050 --> 00:06:22,180 are really making possible some really exciting game tools 132 00:06:22,180 --> 00:06:27,700 and technologies that can be used to build games that you can actually play. 133 00:06:27,700 --> 00:06:29,430 So these various different tracks we hope 134 00:06:29,430 --> 00:06:31,400 are an opportunity for students to really see 135 00:06:31,400 --> 00:06:34,270 the wide variety of applications of the skills 136 00:06:34,270 --> 00:06:37,930 you learn in CS50, to be able to apply them to mobile context 137 00:06:37,930 --> 00:06:41,317 and through web context, and more beyond that, too. 138 00:06:41,317 --> 00:06:43,650 DAVID MALAN: Allow me to ask a question now of everyone. 139 00:06:43,650 --> 00:06:47,940 If you open up your Chat window, I've just pasted the URL of a Google form. 140 00:06:47,940 --> 00:06:51,900 We would love to know where everyone is from and what courses of CS50 141 00:06:51,900 --> 00:06:53,697 you have taken or are taking. 142 00:06:53,697 --> 00:06:56,280 So if you're comfortable, taking a moment to submit that form. 143 00:06:56,280 --> 00:06:58,473 We'd love to take a look at the data after. 144 00:06:58,473 --> 00:07:00,390 And if you do give us your email address, what 145 00:07:00,390 --> 00:07:03,330 we'll do is when there's a future office hours with me, myself, 146 00:07:03,330 --> 00:07:05,670 or any other members of CS50's team, we'll 147 00:07:05,670 --> 00:07:08,070 send you a quick email, like I did for folks yesterday, 148 00:07:08,070 --> 00:07:11,400 to remind you of the day and time. 149 00:07:11,400 --> 00:07:14,130 Let's go over next to Asif. 150 00:07:14,130 --> 00:07:17,070 And let me just ask, just so that we can field as many questions 151 00:07:17,070 --> 00:07:20,340 as possible today, do start by asking just one question 152 00:07:20,340 --> 00:07:23,610 and we'll do our best to come back around or keep in touch over email, 153 00:07:23,610 --> 00:07:24,806 or the like. 154 00:07:24,806 --> 00:07:25,758 Asif? 155 00:07:25,758 --> 00:07:29,342 ASIF: Asif [INAUDIBLE] here. 156 00:07:29,342 --> 00:07:30,050 DAVID MALAN: Yes. 157 00:07:30,050 --> 00:07:30,950 Can you say again. 158 00:07:30,950 --> 00:07:33,520 Your mic is a little close to your mouth, I think. 159 00:07:33,520 --> 00:07:34,560 ASIF: Yeah, OK. 160 00:07:34,560 --> 00:07:38,756 So my question is related to artificial intelligence. 161 00:07:38,756 --> 00:07:39,840 Can you hear me? 162 00:07:39,840 --> 00:07:41,720 DAVID MALAN: Say again? 163 00:07:41,720 --> 00:07:44,113 ASIF: My question is related to artificial intelligence. 164 00:07:44,113 --> 00:07:44,780 DAVID MALAN: OK. 165 00:07:44,780 --> 00:07:48,530 Let's turn to Brian for this, who, as you may know, his course on AI 166 00:07:48,530 --> 00:07:50,480 just launched yesterday. 167 00:07:50,480 --> 00:07:52,370 ASIF: Yes. 168 00:07:52,370 --> 00:07:56,380 Have you seen that movie Matrix? 169 00:07:56,380 --> 00:07:57,784 [INTERPOSING VOICES] 170 00:07:57,784 --> 00:07:59,190 171 00:07:59,190 --> 00:08:00,300 DAVID MALAN: I have, yeah. 172 00:08:00,300 --> 00:08:01,260 ASIF: Yeah. 173 00:08:01,260 --> 00:08:04,500 In that movie, the humans are being plugged into a machine. 174 00:08:04,500 --> 00:08:06,300 That machine is kind of a virtual role. 175 00:08:06,300 --> 00:08:08,910 176 00:08:08,910 --> 00:08:10,420 DAVID MALAN: Correct. 177 00:08:10,420 --> 00:08:10,920 ASIF: Yeah. 178 00:08:10,920 --> 00:08:13,070 And so my question is that is it possible to create 179 00:08:13,070 --> 00:08:17,850 such a virtual world, with its own population of people? 180 00:08:17,850 --> 00:08:21,410 In that movie, we are actually plugging in the real people-- 181 00:08:21,410 --> 00:08:24,610 I mean, creating virtual people with their own behaviors, 182 00:08:24,610 --> 00:08:29,160 their own characters, a whole world with your own programming skills. 183 00:08:29,160 --> 00:08:30,760 Is it really possible? 184 00:08:30,760 --> 00:08:31,410 BRIAN YU: OK. 185 00:08:31,410 --> 00:08:33,410 I think I misheard your question the first time. 186 00:08:33,410 --> 00:08:35,789 I actually have seen that movie, now that you mention it. 187 00:08:35,789 --> 00:08:38,980 So the question is about simulating people. 188 00:08:38,980 --> 00:08:40,350 In short, a lot of what-- 189 00:08:40,350 --> 00:08:41,447 [INTERPOSING VOICES] 190 00:08:41,447 --> 00:08:42,780 ASIF: I did not mean simulating. 191 00:08:42,780 --> 00:08:46,290 I mean actually creating people. 192 00:08:46,290 --> 00:08:52,120 Characters created in that world believe that they are really living. 193 00:08:52,120 --> 00:08:55,450 They have no idea that they are being created by a program. 194 00:08:55,450 --> 00:08:56,180 [INAUDIBLE] 195 00:08:56,180 --> 00:08:59,760 BRIAN YU: Oh, real people in a simulated world? 196 00:08:59,760 --> 00:09:00,260 ASIF: Yes. 197 00:09:00,260 --> 00:09:01,190 BRIAN YU: Well, OK. 198 00:09:01,190 --> 00:09:04,610 I guess that's gets a little bit less about artificial intelligence 199 00:09:04,610 --> 00:09:07,030 and more into the world of like virtual reality, 200 00:09:07,030 --> 00:09:10,820 is probably the closest thing we have to that now, in terms of you 201 00:09:10,820 --> 00:09:14,080 have the ability to put yourself into a virtual space and experience-- 202 00:09:14,080 --> 00:09:16,210 [INTERPOSING VOICES] 203 00:09:16,210 --> 00:09:18,290 ASIF: That was the thing I was saying. 204 00:09:18,290 --> 00:09:21,290 The fact is that we cannot go-- we cannot actually interact with that 205 00:09:21,290 --> 00:09:22,130 world. 206 00:09:22,130 --> 00:09:24,230 I mean, that world is virtual. 207 00:09:24,230 --> 00:09:26,810 The people inside is also virtual. 208 00:09:26,810 --> 00:09:29,790 We are just playing God. 209 00:09:29,790 --> 00:09:31,570 [INAUDIBLE] 210 00:09:31,570 --> 00:09:32,760 BRIAN YU: Yeah. 211 00:09:32,760 --> 00:09:36,580 So you want to just really just recreate an entire virtual world 212 00:09:36,580 --> 00:09:39,040 that you can actually interact with? 213 00:09:39,040 --> 00:09:42,280 At the moment, I think that's more in the realm of science fiction, 214 00:09:42,280 --> 00:09:46,353 but you never know what happens with technology in the future. 215 00:09:46,353 --> 00:09:48,020 DAVID MALAN: Thank you for the question. 216 00:09:48,020 --> 00:09:50,390 Can we go over next to Ziad? 217 00:09:50,390 --> 00:09:52,500 I'm sorry if I'm not pronouncing your name right. 218 00:09:52,500 --> 00:09:53,000 Malik? 219 00:09:53,000 --> 00:09:53,667 ZIAD: All right. 220 00:09:53,667 --> 00:09:54,290 It's OK. 221 00:09:54,290 --> 00:09:55,200 It's OK. 222 00:09:55,200 --> 00:09:57,783 DAVID MALAN: And if you don't mind, when asking your question, 223 00:09:57,783 --> 00:10:01,070 can you also pronounce your name for us and tell us what country you're from. 224 00:10:01,070 --> 00:10:01,737 ZIAD: All right. 225 00:10:01,737 --> 00:10:02,690 My name is Ziad Malik. 226 00:10:02,690 --> 00:10:05,330 I am from Austria. 227 00:10:05,330 --> 00:10:11,150 And yeah, I participated in CS50 because I want to be a leading computer 228 00:10:11,150 --> 00:10:13,100 scientist one day, hopefully. 229 00:10:13,100 --> 00:10:22,280 And now the first question is, I started with CS50 last week, 230 00:10:22,280 --> 00:10:24,890 and I'm working pretty good with it. 231 00:10:24,890 --> 00:10:31,050 But the problem is that when I work with a problem set 232 00:10:31,050 --> 00:10:34,940 and when I try to solve a problem, sometimes on the more 233 00:10:34,940 --> 00:10:38,660 comfortable problems, I struggle. 234 00:10:38,660 --> 00:10:46,360 For example, the credit problem on week 1, I sat two days in front of that. 235 00:10:46,360 --> 00:10:51,430 And I was really confused at the end, so I ended up 236 00:10:51,430 --> 00:10:54,100 submitting only the cash problem. 237 00:10:54,100 --> 00:11:01,180 And I wanted to ask, is there a way to improve my problem solving, 238 00:11:01,180 --> 00:11:03,856 or can I learn it? 239 00:11:03,856 --> 00:11:06,760 DAVID MALAN: Yeah, that's a really good question and not uncommon. 240 00:11:06,760 --> 00:11:07,900 And don't get discouraged. 241 00:11:07,900 --> 00:11:11,230 The more comfortable problems in the course's homework assignments 242 00:11:11,230 --> 00:11:14,612 are, indeed, meant to be more challenging by design. 243 00:11:14,612 --> 00:11:16,570 I think the best strategy, especially if you're 244 00:11:16,570 --> 00:11:19,540 finding yourself hitting a wall, so to speak, where you're just not 245 00:11:19,540 --> 00:11:22,330 sure how to solve it and you have tried reaching out 246 00:11:22,330 --> 00:11:27,010 to anyone you might know locally or online for help, come back to it later. 247 00:11:27,010 --> 00:11:29,110 Honestly, I think a very good strategy is 248 00:11:29,110 --> 00:11:33,020 to do all of the less comfortable problems throughout the semester, 249 00:11:33,020 --> 00:11:35,980 and then once you get to the middle of the semester, or maybe even end, 250 00:11:35,980 --> 00:11:39,070 then go back and do the more comfortable problems. 251 00:11:39,070 --> 00:11:43,480 And I bet you will feel yourself much more capable of doing those problems 252 00:11:43,480 --> 00:11:45,410 and they will come much more easily. 253 00:11:45,410 --> 00:11:48,520 But I think if you do them only within the individual week, 254 00:11:48,520 --> 00:11:51,940 it's hard to solve some of them because you're not yet more comfortable, 255 00:11:51,940 --> 00:11:54,980 but you will be after more weeks of practice. 256 00:11:54,980 --> 00:11:55,720 ASIF: Thank you. 257 00:11:55,720 --> 00:11:56,470 DAVID MALAN: Sure. 258 00:11:56,470 --> 00:11:57,700 Good question. 259 00:11:57,700 --> 00:12:01,180 Can we go over next to Shokiz. 260 00:12:01,180 --> 00:12:01,722 I'm so sorry. 261 00:12:01,722 --> 00:12:03,930 I'm not going to be able to pronounce this correctly, 262 00:12:03,930 --> 00:12:05,560 but I think you see me going there. 263 00:12:05,560 --> 00:12:08,620 Do you want to pronounce your name for us, [INAUDIBLE]?? 264 00:12:08,620 --> 00:12:11,435 265 00:12:11,435 --> 00:12:12,810 Just remember to unmute yourself. 266 00:12:12,810 --> 00:12:17,530 267 00:12:17,530 --> 00:12:18,100 Still muted. 268 00:12:18,100 --> 00:12:24,590 269 00:12:24,590 --> 00:12:25,480 STUDENT: Hello. 270 00:12:25,480 --> 00:12:26,800 DAVID MALAN: Actually someone-- oh, there we go. 271 00:12:26,800 --> 00:12:27,520 Go ahead. 272 00:12:27,520 --> 00:12:28,240 Yes. 273 00:12:28,240 --> 00:12:29,140 STUDENT: Hello. 274 00:12:29,140 --> 00:12:31,000 My name is Shaqi Jaquan. 275 00:12:31,000 --> 00:12:33,532 Shaqi Jaquan. 276 00:12:33,532 --> 00:12:34,240 DAVID MALAN: Yes. 277 00:12:34,240 --> 00:12:35,198 And where are you from? 278 00:12:35,198 --> 00:12:36,073 STUDENT: Shaqi Jaqan. 279 00:12:36,073 --> 00:12:37,180 DAVID MALAN: Jaquan. 280 00:12:37,180 --> 00:12:39,000 Where are you from? 281 00:12:39,000 --> 00:12:40,290 STUDENT: I am from Uzbekistan. 282 00:12:40,290 --> 00:12:43,632 That's central Asia. 283 00:12:43,632 --> 00:12:44,590 DAVID MALAN: Wonderful. 284 00:12:44,590 --> 00:12:46,240 What's your question? 285 00:12:46,240 --> 00:12:52,560 STUDENT: My question related to, also again, improvement, 286 00:12:52,560 --> 00:12:58,170 That is lacking of ideal or logical thinking in my mind 287 00:12:58,170 --> 00:13:01,690 to when I'm solving any problems, relative 288 00:13:01,690 --> 00:13:06,730 to maybe algorithmic equations. 289 00:13:06,730 --> 00:13:10,150 290 00:13:10,150 --> 00:13:19,240 I am going to solve any problems related to maybe sorting or such kind of arrays 291 00:13:19,240 --> 00:13:20,205 and graphs. 292 00:13:20,205 --> 00:13:22,890 293 00:13:22,890 --> 00:13:32,520 I want to solve any problems related to algorithmic. 294 00:13:32,520 --> 00:13:38,850 It doesn't matter what kind of resources you recommend 295 00:13:38,850 --> 00:13:42,715 me to improve my logical thinking. 296 00:13:42,715 --> 00:13:43,340 BRIAN YU: Sure. 297 00:13:43,340 --> 00:13:46,132 That's a very good question and very broadly applicable to computer 298 00:13:46,132 --> 00:13:47,250 science, in general. 299 00:13:47,250 --> 00:13:49,680 I think I have two pieces of advice to give there. 300 00:13:49,680 --> 00:13:51,510 Piece of advice number one is when you're 301 00:13:51,510 --> 00:13:54,450 tackling a big algorithmic challenge, it's 302 00:13:54,450 --> 00:13:57,450 often easiest to start by thinking about, what 303 00:13:57,450 --> 00:14:00,730 are the smaller stepping stones I can try and get 304 00:14:00,730 --> 00:14:02,530 through first along the way? 305 00:14:02,530 --> 00:14:06,025 In other words, try and break down a bigger problem into smaller problems. 306 00:14:06,025 --> 00:14:08,760 Ziad, for instance, was earlier talking about problems 307 00:14:08,760 --> 00:14:13,110 at one credit, where you're trying to figure out 308 00:14:13,110 --> 00:14:16,200 what credit card company produced a particular credit card number. 309 00:14:16,200 --> 00:14:18,750 And that's a bigger challenge, but a smaller challenge 310 00:14:18,750 --> 00:14:21,870 you might start with is, OK, given a credit card number, 311 00:14:21,870 --> 00:14:25,050 figure out what the first two digits of the credit card number are, 312 00:14:25,050 --> 00:14:25,890 for example. 313 00:14:25,890 --> 00:14:29,070 That might be a smaller problem that's a little bit easier to tackle, 314 00:14:29,070 --> 00:14:30,700 a little bit easier to reason about. 315 00:14:30,700 --> 00:14:33,450 And by breaking the bigger problem down into smaller problems that 316 00:14:33,450 --> 00:14:36,540 are easier to tackle, you can hopefully build your way up 317 00:14:36,540 --> 00:14:38,275 to the answer to the bigger problem. 318 00:14:38,275 --> 00:14:41,370 And the other strategy, I think, is just more longer term, 319 00:14:41,370 --> 00:14:44,470 and it's about just getting practice with solving more problems. 320 00:14:44,470 --> 00:14:46,668 The more problems you try and practice solving, 321 00:14:46,668 --> 00:14:49,710 the better equipped you'll feel to deal with more problems in the future, 322 00:14:49,710 --> 00:14:51,180 because you'll start to notice patterns. 323 00:14:51,180 --> 00:14:54,013 You'll start to realize that this problem you're trying to solve now 324 00:14:54,013 --> 00:14:57,240 is very similar, or has some things in common with a problem you've already 325 00:14:57,240 --> 00:15:00,480 solved before, and that might guide you towards figuring out what 326 00:15:00,480 --> 00:15:03,240 tools or algorithms and strategies you might use 327 00:15:03,240 --> 00:15:05,520 for solving your current problem now. 328 00:15:05,520 --> 00:15:09,000 DAVID MALAN: And I imagine you mean the computing problems specifically, 329 00:15:09,000 --> 00:15:13,110 but it's perhaps timely to us today, I've just pasted into the chat window 330 00:15:13,110 --> 00:15:17,010 the URL of CS50's annual CS50 X puzzle day. 331 00:15:17,010 --> 00:15:20,760 Honestly, the entire design of that event is to empower students 332 00:15:20,760 --> 00:15:23,100 to just solve problems more collaboratively. 333 00:15:23,100 --> 00:15:25,740 So if you haven't seen that yet, you might enjoy 334 00:15:25,740 --> 00:15:28,500 solving some problems this weekend. 335 00:15:28,500 --> 00:15:29,910 Thank you for that question, too. 336 00:15:29,910 --> 00:15:31,800 Can we go next to Christine? 337 00:15:31,800 --> 00:15:38,810 338 00:15:38,810 --> 00:15:40,233 STUDENT: Next question? 339 00:15:40,233 --> 00:15:41,650 DAVID MALAN: Yeah, from Christine. 340 00:15:41,650 --> 00:15:43,960 I think she's unmuting her mic. 341 00:15:43,960 --> 00:15:44,460 Yes. 342 00:15:44,460 --> 00:15:46,760 CHRISTINE: Hi, everyone. 343 00:15:46,760 --> 00:15:50,420 Yes, I'm Christine and I'm from Dubai. 344 00:15:50,420 --> 00:15:56,840 So my question is so I took communication in university, 345 00:15:56,840 --> 00:16:00,570 back in the university, but I had my minor elective, 346 00:16:00,570 --> 00:16:05,540 and I was supposed to go through the computer science route. 347 00:16:05,540 --> 00:16:13,610 So is there a reason why any computer science courses has to start with C? 348 00:16:13,610 --> 00:16:16,220 Because that's always been my struggle. 349 00:16:16,220 --> 00:16:21,650 So after C, I think I was supposed to take JavaScript 350 00:16:21,650 --> 00:16:27,320 after and then web development, but then C has always been my struggle. 351 00:16:27,320 --> 00:16:30,350 I always struggle with it, so it kind of discouraged me. 352 00:16:30,350 --> 00:16:36,740 So I ended up changing my elective, my minor elective after that. 353 00:16:36,740 --> 00:16:42,020 Because my worry right now is if I am struggling right now with the C 354 00:16:42,020 --> 00:16:46,070 part of the course, so my worry is, can I actually 355 00:16:46,070 --> 00:16:51,040 take on the other languages that's in the syllabus? 356 00:16:51,040 --> 00:16:54,080 So I'm quite scared about that. 357 00:16:54,080 --> 00:16:54,830 DAVID MALAN: Yeah. 358 00:16:54,830 --> 00:16:56,510 It's certainly understandable. 359 00:16:56,510 --> 00:16:57,750 I would try not to be scared. 360 00:16:57,750 --> 00:17:00,950 I would take comfort in the fact that many, many, many students at Harvard 361 00:17:00,950 --> 00:17:03,530 and beyond have that same emotion. 362 00:17:03,530 --> 00:17:07,460 I've just pasted into the chat window an answer I wrote on Quora, actually, 363 00:17:07,460 --> 00:17:10,579 some time ago about why CS50 uses C. 364 00:17:10,579 --> 00:17:14,645 Most intro courses these days don't, to my knowledge. 365 00:17:14,645 --> 00:17:16,520 And in fact, it's much more common these days 366 00:17:16,520 --> 00:17:19,790 for introductory courses to use Java or Python, which 367 00:17:19,790 --> 00:17:22,550 I do admit can be more accessible, a little easier 368 00:17:22,550 --> 00:17:25,040 to pick up, because they don't have pointers. 369 00:17:25,040 --> 00:17:29,540 They don't have as many of the same pitfalls as a language that C has. 370 00:17:29,540 --> 00:17:33,050 And they also have more features that make a few things more easy, 371 00:17:33,050 --> 00:17:35,330 more easily done in code. 372 00:17:35,330 --> 00:17:36,620 So I wouldn't get discouraged. 373 00:17:36,620 --> 00:17:39,290 I think if you can take some other course first, 374 00:17:39,290 --> 00:17:42,350 maybe in some other language, that's totally fine, if your school allows, 375 00:17:42,350 --> 00:17:45,800 and then come back to a course in C. What many universities do 376 00:17:45,800 --> 00:17:49,820 is they don't start with C, but if you are interested in what's called systems 377 00:17:49,820 --> 00:17:53,180 programming, low level programming, then you will learn C 378 00:17:53,180 --> 00:17:56,130 as your second or maybe third language. 379 00:17:56,130 --> 00:17:58,250 So it really depends on the institution. 380 00:17:58,250 --> 00:17:59,750 So certainly, don't get discouraged. 381 00:17:59,750 --> 00:18:04,600 Certainly don't equate C with computer science, or even CS50 for that matter. 382 00:18:04,600 --> 00:18:06,350 But if we come full circle to the question 383 00:18:06,350 --> 00:18:10,420 earlier about pset5, our spell checking problem sets, 384 00:18:10,420 --> 00:18:12,920 it's pretty rare for students, I think, in an intro class 385 00:18:12,920 --> 00:18:16,850 to be implementing their own hash table only mid semester. 386 00:18:16,850 --> 00:18:18,600 And that's indeed meant to be a challenge. 387 00:18:18,600 --> 00:18:21,290 So if and when you're ready to get to that point, 388 00:18:21,290 --> 00:18:24,530 I think you'll find C very enlightening and empowering, 389 00:18:24,530 --> 00:18:27,243 but definitely challenging at first. 390 00:18:27,243 --> 00:18:28,160 Don't get discouraged. 391 00:18:28,160 --> 00:18:31,340 It just takes time and practice. 392 00:18:31,340 --> 00:18:35,720 Can we go next to how about Ron W.? 393 00:18:35,720 --> 00:18:38,920 If you'd like to say your name and where you're from, too. 394 00:18:38,920 --> 00:18:40,010 RON: Yeah, it's Ron. 395 00:18:40,010 --> 00:18:40,760 I'm from Germany. 396 00:18:40,760 --> 00:18:43,130 I'm the flight nurse. 397 00:18:43,130 --> 00:18:47,180 So I'd like to know why and how did you become a programmer, 398 00:18:47,180 --> 00:18:50,423 and what tips do you have to stay motivated? 399 00:18:50,423 --> 00:18:51,840 DAVID MALAN: It's a good question. 400 00:18:51,840 --> 00:18:54,048 I think we can possibly each answer this differently. 401 00:18:54,048 --> 00:18:57,990 I don't think of myself as a programmer, per se, even though I enjoy doing it. 402 00:18:57,990 --> 00:19:01,610 I will admit, I don't think I personally would enjoy doing it full-time 403 00:19:01,610 --> 00:19:03,140 as a software development job. 404 00:19:03,140 --> 00:19:05,450 I've never really had that interest. 405 00:19:05,450 --> 00:19:07,910 What's most gratifying for me about programming 406 00:19:07,910 --> 00:19:12,440 is being able to literally solve problems that are of interest to me 407 00:19:12,440 --> 00:19:14,405 personally or professionally. 408 00:19:14,405 --> 00:19:17,030 A lot of the code that I've written, certainly in recent years, 409 00:19:17,030 --> 00:19:21,140 is all related to CS50 in some way, either creating tools or adding 410 00:19:21,140 --> 00:19:25,580 to tools that our students use or that our teaching fellows or staff use. 411 00:19:25,580 --> 00:19:28,490 And so for me, I just get a real kick out of writing software 412 00:19:28,490 --> 00:19:30,118 that other people use. 413 00:19:30,118 --> 00:19:31,910 But I don't think, personally, I would want 414 00:19:31,910 --> 00:19:36,530 to do it all day long, even though I have many friends who do exactly that. 415 00:19:36,530 --> 00:19:37,495 Brian? 416 00:19:37,495 --> 00:19:38,120 BRIAN YU: Yeah. 417 00:19:38,120 --> 00:19:40,037 I mean I also don't consider myself-- like I'm 418 00:19:40,037 --> 00:19:41,660 not a programmer professionally. 419 00:19:41,660 --> 00:19:46,400 I do write some programs, but most of my job is in the education setting. 420 00:19:46,400 --> 00:19:50,390 But I first really stumbled across programming 421 00:19:50,390 --> 00:19:53,090 just by taking my first class in it. 422 00:19:53,090 --> 00:19:55,430 In high school I took my first computer science class. 423 00:19:55,430 --> 00:19:59,270 And just found it very empowering, in terms of the problems 424 00:19:59,270 --> 00:20:00,710 it enabled me to solve. 425 00:20:00,710 --> 00:20:04,730 I remember very early on just building some very simple programs that 426 00:20:04,730 --> 00:20:07,800 were able to be useful to me and to other people. 427 00:20:07,800 --> 00:20:09,870 And I think that was the motivating thing for me, 428 00:20:09,870 --> 00:20:13,190 is the power that programming has to enable 429 00:20:13,190 --> 00:20:16,040 you, with just a couple lines of code, to be 430 00:20:16,040 --> 00:20:17,750 able to build something that was actually 431 00:20:17,750 --> 00:20:21,802 impactful or useful or meaningful in some way. 432 00:20:21,802 --> 00:20:23,510 DAVID MALAN: And as for practice, I think 433 00:20:23,510 --> 00:20:26,460 I would just solve as many problems in code as you can. 434 00:20:26,460 --> 00:20:30,140 If you're not taking courses, keep an eye on open source communities. 435 00:20:30,140 --> 00:20:33,130 That is freely available code on GitHub and GitLab, and the like. 436 00:20:33,130 --> 00:20:36,380 And those are good ways to practice, is by contributing to other people's code 437 00:20:36,380 --> 00:20:40,280 bases and getting feedback from them as well. 438 00:20:40,280 --> 00:20:41,740 Can we go next to Jacob? 439 00:20:41,740 --> 00:20:44,060 If you'd like to say hello and where you're from. 440 00:20:44,060 --> 00:20:46,940 441 00:20:46,940 --> 00:20:48,900 Still muted, though. 442 00:20:48,900 --> 00:20:49,400 JACOB: OK. 443 00:20:49,400 --> 00:20:51,120 Hi, everybody. 444 00:20:51,120 --> 00:20:53,780 I'm from Nigeria. 445 00:20:53,780 --> 00:20:58,010 So I've not had any prior experience in coding. 446 00:20:58,010 --> 00:20:59,870 I took CS50. 447 00:20:59,870 --> 00:21:02,840 I did a bit of Python. 448 00:21:02,840 --> 00:21:07,550 And C has been a bit tough for me as a newbie. 449 00:21:07,550 --> 00:21:12,080 And I find it very difficult to solve most of the set problems. 450 00:21:12,080 --> 00:21:15,470 I'm just talking pset2. 451 00:21:15,470 --> 00:21:17,460 I've not been able to move past one. 452 00:21:17,460 --> 00:21:21,870 And I don't know how long it took me to solve those problems. 453 00:21:21,870 --> 00:21:28,775 And secondly, I'm thinking if I should go into web development or AI machine 454 00:21:28,775 --> 00:21:30,400 and data science, but I'm not too sure. 455 00:21:30,400 --> 00:21:34,190 So how do I decide on what to do? 456 00:21:34,190 --> 00:21:37,020 Is it best to figure out what to do or just 457 00:21:37,020 --> 00:21:40,130 keep learning and then, I don't know. 458 00:21:40,130 --> 00:21:40,880 DAVID MALAN: Sure. 459 00:21:40,880 --> 00:21:43,880 I think my short answer is that you should really 460 00:21:43,880 --> 00:21:46,310 pursue courses that are of genuine interest to you 461 00:21:46,310 --> 00:21:48,810 and not simply do them because you think you should. 462 00:21:48,810 --> 00:21:49,310 JACOB: OK. 463 00:21:49,310 --> 00:21:52,580 DAVID MALAN: Generally speaking, the advice we give students here, at least, 464 00:21:52,580 --> 00:21:57,260 is that once you've taken two rigorous courses in software-- whether it's 465 00:21:57,260 --> 00:22:00,050 CS50 and some other class or two different courses 466 00:22:00,050 --> 00:22:02,600 altogether-- generally speaking, after learning 467 00:22:02,600 --> 00:22:05,390 a bit of procedural programming, which CS50 teaches, 468 00:22:05,390 --> 00:22:08,570 and functional programming, which other classes teach, 469 00:22:08,570 --> 00:22:12,260 or object-oriented programming, once you have a breadth of background, 470 00:22:12,260 --> 00:22:16,220 you really are able to then start taking on part-time opportunities 471 00:22:16,220 --> 00:22:19,820 in programming, maybe even full-time entry level positions. 472 00:22:19,820 --> 00:22:24,230 But a common next step, too, is data structures and algorithms. 473 00:22:24,230 --> 00:22:26,750 As for web and AI, let me turn to Brian because he 474 00:22:26,750 --> 00:22:30,460 happens to teach CS50's own versions of those two options. 475 00:22:30,460 --> 00:22:31,520 JACOB: OK, thank you. 476 00:22:31,520 --> 00:22:32,330 BRIAN YU: Yeah. 477 00:22:32,330 --> 00:22:35,270 So certainly, if you're interested in web programming 478 00:22:35,270 --> 00:22:38,270 artificial intelligence, we do offer courses about that, too. 479 00:22:38,270 --> 00:22:41,870 I'll go ahead and paste the links for both of those in the chat, 480 00:22:41,870 --> 00:22:44,420 for anyone who is interested in those. 481 00:22:44,420 --> 00:22:47,805 There's the AI class and the web programming class as well. 482 00:22:47,805 --> 00:22:50,180 And those are really just meant to serve as introductions 483 00:22:50,180 --> 00:22:53,030 to the field of artificial intelligence and web programming. 484 00:22:53,030 --> 00:22:54,947 So if you'd like, you can take a look at those 485 00:22:54,947 --> 00:22:57,530 lectures there to get a sense for what AI is all about 486 00:22:57,530 --> 00:23:01,432 and to get an opportunity to write some AI programs of your own. 487 00:23:01,432 --> 00:23:03,140 The goal of both of the classes is really 488 00:23:03,140 --> 00:23:05,570 to provide that sort of introduction so that if you 489 00:23:05,570 --> 00:23:08,410 are interested in pursuing either of them in the future, 490 00:23:08,410 --> 00:23:10,160 you'll have some projects under your belt. 491 00:23:10,160 --> 00:23:13,370 You'll have some foundational knowledge to then go forth and work 492 00:23:13,370 --> 00:23:15,510 on your own projects as well. 493 00:23:15,510 --> 00:23:18,085 DAVID MALAN: And this is such a common question, honestly. 494 00:23:18,085 --> 00:23:20,960 I mean, there's an infinite number of courses out there you can take, 495 00:23:20,960 --> 00:23:24,650 either in universities or for free these days, and it's not clear at what point 496 00:23:24,650 --> 00:23:25,400 you should stop. 497 00:23:25,400 --> 00:23:28,970 But honestly, I think once you've taken a few courses, 498 00:23:28,970 --> 00:23:34,060 it really is time to leave the nest, so to speak, just like a baby bird would, 499 00:23:34,060 --> 00:23:37,190 and start to fend for yourself and say yes to some project 500 00:23:37,190 --> 00:23:40,275 or say yes to some opportunity that scares you a little bit. 501 00:23:40,275 --> 00:23:42,650 And you might not even be sure how you're going to do it, 502 00:23:42,650 --> 00:23:45,770 but once you then get your footing and get your confidence, 503 00:23:45,770 --> 00:23:48,170 I think you'll find that you can start taking courses 504 00:23:48,170 --> 00:23:50,360 to fill in gaps in your knowledge, but not 505 00:23:50,360 --> 00:23:54,230 necessarily to prepare you for opportunities that you don't yet 506 00:23:54,230 --> 00:23:56,323 know about. 507 00:23:56,323 --> 00:23:57,490 Thank you for that question. 508 00:23:57,490 --> 00:23:58,825 Can we go next to Nadia? 509 00:23:58,825 --> 00:24:01,962 510 00:24:01,962 --> 00:24:02,670 NADIA: Thank you. 511 00:24:02,670 --> 00:24:03,637 Thank you. 512 00:24:03,637 --> 00:24:04,470 So my name is Nadia. 513 00:24:04,470 --> 00:24:06,140 I am from Ukraine, from Kiev. 514 00:24:06,140 --> 00:24:08,278 And thank you for the upcoming puzzle day. 515 00:24:08,278 --> 00:24:09,070 I'm really excited. 516 00:24:09,070 --> 00:24:10,980 It's the second year of mine. 517 00:24:10,980 --> 00:24:13,230 And I was really bad last year. 518 00:24:13,230 --> 00:24:15,300 Hoping for something better. 519 00:24:15,300 --> 00:24:18,120 So I just actually found myself-- 520 00:24:18,120 --> 00:24:22,850 I completed the CS50 first introductory course last year, 521 00:24:22,850 --> 00:24:26,130 and I was really excited about it, and I found myself really 522 00:24:26,130 --> 00:24:28,540 worried that I lacked some theory. 523 00:24:28,540 --> 00:24:31,860 And what I did, I bought some theory books, downloaded them, 524 00:24:31,860 --> 00:24:36,300 started reading, and I did not really find a lot of value 525 00:24:36,300 --> 00:24:40,720 in those because I could not fit all the information into my brain. 526 00:24:40,720 --> 00:24:45,930 So how do you think that after completing the CS50 course, what 527 00:24:45,930 --> 00:24:50,618 would be the best way for the student-- who I'm not from the computer science. 528 00:24:50,618 --> 00:24:52,410 I did not have the computer science degree. 529 00:24:52,410 --> 00:24:54,670 I'm a teacher. 530 00:24:54,670 --> 00:24:59,940 So what it would be the best thing, to start different other courses 531 00:24:59,940 --> 00:25:06,060 on computer science, maybe to do some logic tasks, or go to the leak code, 532 00:25:06,060 --> 00:25:10,200 or actually fill in the gaps with the books on the theory? 533 00:25:10,200 --> 00:25:12,150 So how can I move after that? 534 00:25:12,150 --> 00:25:12,900 DAVID MALAN: Yeah. 535 00:25:12,900 --> 00:25:16,350 Let me paste one link that I often recommend. 536 00:25:16,350 --> 00:25:21,150 Some friends at Princeton teach this course here, which is freely available. 537 00:25:21,150 --> 00:25:24,090 I just pasted it into the chat window on Coursera. 538 00:25:24,090 --> 00:25:26,580 It's Princeton's introduction to algorithms part 1, 539 00:25:26,580 --> 00:25:28,017 and there's also a part 2. 540 00:25:28,017 --> 00:25:29,850 That's a very common next step when you want 541 00:25:29,850 --> 00:25:33,480 to learn a bit more computing theory after taking one or more programming 542 00:25:33,480 --> 00:25:34,710 classes. 543 00:25:34,710 --> 00:25:38,670 More fundamental than that to computer science itself is this one. 544 00:25:38,670 --> 00:25:41,300 I'm going to go ahead and paste the link of a book on Amazon. 545 00:25:41,300 --> 00:25:43,050 This link might not work in all countries, 546 00:25:43,050 --> 00:25:46,440 but you should still be able to see the title there, by Michael Sipser, who's 547 00:25:46,440 --> 00:25:47,850 a professor at MIT. 548 00:25:47,850 --> 00:25:52,350 And the book is called Introduction to the Theory of Computation. 549 00:25:52,350 --> 00:25:54,870 This, for those unfamiliar, really gets to the heart 550 00:25:54,870 --> 00:25:58,470 of what computer science is and what is possible with computers. 551 00:25:58,470 --> 00:26:01,890 And I actually used that book when I was a student some time ago, 552 00:26:01,890 --> 00:26:04,440 and Harvard uses it now in their introductory course, 553 00:26:04,440 --> 00:26:05,880 or has over the years. 554 00:26:05,880 --> 00:26:08,515 And that's a good, pretty accessible book, 555 00:26:08,515 --> 00:26:11,640 but you would benefit certainly from doing some of the problems in the book 556 00:26:11,640 --> 00:26:13,390 or from a course. 557 00:26:13,390 --> 00:26:16,080 And Brian has taken more courses more recently, who can perhaps 558 00:26:16,080 --> 00:26:17,952 speak even better to these options. 559 00:26:17,952 --> 00:26:20,160 BRIAN YU: You actually stole my recommendation there. 560 00:26:20,160 --> 00:26:24,510 I was also about to paste the Theory of Computation book by Michael Sipser. 561 00:26:24,510 --> 00:26:27,450 If theory of computation is something interesting to you, in terms 562 00:26:27,450 --> 00:26:30,288 of what computers can do and what and how 563 00:26:30,288 --> 00:26:33,330 you think about computers, a little more theoretically, a little bit more 564 00:26:33,330 --> 00:26:37,147 mathematically, that's a great book that I would definitely recommend. 565 00:26:37,147 --> 00:26:37,980 NADIA: Thanks a lot. 566 00:26:37,980 --> 00:26:38,480 Thank you. 567 00:26:38,480 --> 00:26:42,120 I unfortunately have to go back to work, but it was a pleasure to talk to you. 568 00:26:42,120 --> 00:26:45,132 And thank you for your course and the upcoming puzzle day, once again. 569 00:26:45,132 --> 00:26:45,840 DAVID MALAN: Yes. 570 00:26:45,840 --> 00:26:46,830 Good luck on the puzzles. 571 00:26:46,830 --> 00:26:47,570 Practice makes perfect. 572 00:26:47,570 --> 00:26:48,270 NADIA: Thanks. 573 00:26:48,270 --> 00:26:49,710 Thank you. 574 00:26:49,710 --> 00:26:52,570 DAVID MALAN: Can we go next to Guillermo? 575 00:26:52,570 --> 00:26:55,477 If you'd like to say hello and where you're from. 576 00:26:55,477 --> 00:26:56,310 GUILLERMO: Well, hi. 577 00:26:56,310 --> 00:26:58,500 I'm from Uruguay. 578 00:26:58,500 --> 00:27:00,565 You said my name right, I'm surprised. 579 00:27:00,565 --> 00:27:03,270 DAVID MALAN: Thank you. 580 00:27:03,270 --> 00:27:08,690 GUILLERMO: So basically, my question is to you, David, I was thinking, 581 00:27:08,690 --> 00:27:13,610 you know how many people admire the way you explain your classes? 582 00:27:13,610 --> 00:27:16,500 583 00:27:16,500 --> 00:27:19,860 Basically what I'm trying to say is that when 584 00:27:19,860 --> 00:27:23,310 you have to teach all these people, you have 585 00:27:23,310 --> 00:27:26,850 to teach us, people without experience, or maybe 586 00:27:26,850 --> 00:27:30,870 you like very experienced people, how do you 587 00:27:30,870 --> 00:27:36,810 find a balance to explain something like computer science to all of us? 588 00:27:36,810 --> 00:27:40,890 What's the key element in teaching? 589 00:27:40,890 --> 00:27:42,480 I don't know if I can-- 590 00:27:42,480 --> 00:27:43,980 do you get what-- 591 00:27:43,980 --> 00:27:44,730 DAVID MALAN: I do. 592 00:27:44,730 --> 00:27:46,380 I do. 593 00:27:46,380 --> 00:27:48,360 No, thank you for the kind words. 594 00:27:48,360 --> 00:27:51,970 It's not easy, and I don't know if we do a great job all the time. 595 00:27:51,970 --> 00:27:56,700 But I think the simple answer is empathy and remembering 596 00:27:56,700 --> 00:28:01,290 what it was like to not understand material yourself, 597 00:28:01,290 --> 00:28:04,530 and remembering what it was like to feel like everyone else in the room 598 00:28:04,530 --> 00:28:08,640 or in the class was smarter than you or knew better the material. 599 00:28:08,640 --> 00:28:12,660 And to try to put yourself into the shoes, so to speak, of that student, 600 00:28:12,660 --> 00:28:16,770 to help them with a narrative, both verbally and in the course's 601 00:28:16,770 --> 00:28:21,120 homework assignments and slides, and so forth, get from the starting line, 602 00:28:21,120 --> 00:28:25,530 so to speak, to the finish line without letting go of their hand 603 00:28:25,530 --> 00:28:26,790 during that process. 604 00:28:26,790 --> 00:28:28,690 And I think it takes practice. 605 00:28:28,690 --> 00:28:31,200 I think it takes sensitization. 606 00:28:31,200 --> 00:28:33,600 For instance, even though this course, CS50, 607 00:28:33,600 --> 00:28:37,830 happens to be taught to our college undergraduates at Harvard, 608 00:28:37,830 --> 00:28:41,490 I first got my start for teaching in a lectureship role at Harvard's extension 609 00:28:41,490 --> 00:28:44,580 school, which is a much broader demographic of students-- 610 00:28:44,580 --> 00:28:48,300 young students, old students, everyone in between, who have gone 611 00:28:48,300 --> 00:28:49,930 or who have not gone to college. 612 00:28:49,930 --> 00:28:53,040 And so it was a much more diverse audience of students, 613 00:28:53,040 --> 00:28:55,390 both in Cambridge and online. 614 00:28:55,390 --> 00:28:58,830 And I think that, too, helped sensitize me to different learning styles. 615 00:28:58,830 --> 00:28:59,830 I think we have always-- 616 00:28:59,830 --> 00:29:04,500 I have always-- had students who are of different backgrounds, 617 00:29:04,500 --> 00:29:08,350 geographically, socioeconomically, academically. 618 00:29:08,350 --> 00:29:11,160 And I think that helps, too, not assuming 619 00:29:11,160 --> 00:29:15,660 that your student body is all of the same type or of the same mindset. 620 00:29:15,660 --> 00:29:18,040 So in short, empathy. 621 00:29:18,040 --> 00:29:18,852 STUDENT: Hi, David. 622 00:29:18,852 --> 00:29:19,560 DAVID MALAN: Yes. 623 00:29:19,560 --> 00:29:22,320 STUDENT: And Brian. 624 00:29:22,320 --> 00:29:23,840 I'm from India. 625 00:29:23,840 --> 00:29:25,020 I had a couple of questions. 626 00:29:25,020 --> 00:29:28,650 I am [INAUDIBLE] for the CS50 course and it was amazing. 627 00:29:28,650 --> 00:29:30,780 I had an amazing experience. 628 00:29:30,780 --> 00:29:36,200 I haven't had any experience with the other courses, as compared to this one. 629 00:29:36,200 --> 00:29:41,270 And I was pretty much interested in the Harvard courses, 630 00:29:41,270 --> 00:29:47,470 so I searched on the Google and got some Harvard courses related to CS50. 631 00:29:47,470 --> 00:29:54,210 That was CS20 and CS124, for [INAUDIBLE] mathematics and BSA. 632 00:29:54,210 --> 00:29:58,883 Have you any plans for showcasing them in the edX? 633 00:29:58,883 --> 00:30:00,300 DAVID MALAN: Really good question. 634 00:30:00,300 --> 00:30:02,660 Let me turn to Brian, too, in part, because we've 635 00:30:02,660 --> 00:30:05,225 been talking about this quite a bit. 636 00:30:05,225 --> 00:30:05,850 BRIAN YU: Yeah. 637 00:30:05,850 --> 00:30:08,670 So CS20 and CS124 are the courses you mentioned, 638 00:30:08,670 --> 00:30:12,380 are theory of computation classes that are taught at Harvard. 639 00:30:12,380 --> 00:30:17,250 CS20 is more of an introduction to the mathematics of computer science, 640 00:30:17,250 --> 00:30:21,270 and then CS124 takes that a little bit further into the analysis of algorithms 641 00:30:21,270 --> 00:30:25,390 and the efficiency of those algorithms in studying data structures. 642 00:30:25,390 --> 00:30:30,510 So CS50 itself does not have a specific course that is about algorithms, 643 00:30:30,510 --> 00:30:34,080 but if you are looking to take similar courses, David, earlier in the chat, 644 00:30:34,080 --> 00:30:36,750 pasted a link to the Princeton Coursera algorithms 645 00:30:36,750 --> 00:30:41,898 class, which covers many of the same topics, and CS124 does as well. 646 00:30:41,898 --> 00:30:44,190 And so that I would suggest, as a class, to potentially 647 00:30:44,190 --> 00:30:48,080 look at, if you're interested in continuing to study algorithms as well. 648 00:30:48,080 --> 00:30:49,830 If you're also interested in algorithms, I 649 00:30:49,830 --> 00:30:54,430 can tell you the textbook that is used for CS124, 650 00:30:54,430 --> 00:30:58,590 the algorithms classes at Harvard, as well as other algorithms classes. 651 00:30:58,590 --> 00:31:03,300 It's this one that I just pasted here, Introduction to Algorithms by Cormen, 652 00:31:03,300 --> 00:31:06,180 Leiserson, Rivest, and Stein, often abbreviated to just 653 00:31:06,180 --> 00:31:09,480 CLRS for the initials of the authors. 654 00:31:09,480 --> 00:31:12,270 That's quite a popular and famous book about algorithms 655 00:31:12,270 --> 00:31:13,540 and it's very comprehensive. 656 00:31:13,540 --> 00:31:16,980 So if you're interested in studying and learning more about algorithms, 657 00:31:16,980 --> 00:31:20,520 I would definitely suggest that book as well. 658 00:31:20,520 --> 00:31:23,310 STUDENT: One more question. 659 00:31:23,310 --> 00:31:24,310 DAVID MALAN: Sure. 660 00:31:24,310 --> 00:31:25,090 Go ahead. 661 00:31:25,090 --> 00:31:27,480 Go ahead, [INAUDIBLE]. 662 00:31:27,480 --> 00:31:32,090 STUDENT: Are there any extra problem sets related to the CS50? 663 00:31:32,090 --> 00:31:35,480 664 00:31:35,480 --> 00:31:37,440 DAVID MALAN: Problems sets related to CS50? 665 00:31:37,440 --> 00:31:42,050 STUDENT: Yeah, apart from the CS50 problem sets? 666 00:31:42,050 --> 00:31:42,980 DAVID MALAN: Oh. 667 00:31:42,980 --> 00:31:46,190 Not per se, but if you go to this URL, which 668 00:31:46,190 --> 00:31:48,410 I will paste into the chat window, we have 669 00:31:48,410 --> 00:31:50,415 previous years of homework assignments. 670 00:31:50,415 --> 00:31:53,540 The problem sets have changed over time, and if you look at previous years, 671 00:31:53,540 --> 00:31:55,192 you'll see some older problem sets. 672 00:31:55,192 --> 00:31:56,900 They're not maintained, as well, anymore, 673 00:31:56,900 --> 00:32:00,955 though, so things like check 50 might not work anymore, but they're there. 674 00:32:00,955 --> 00:32:02,080 STUDENT: All right, thanks. 675 00:32:02,080 --> 00:32:02,520 Thank you. 676 00:32:02,520 --> 00:32:03,270 DAVID MALAN: Sure. 677 00:32:03,270 --> 00:32:07,826 Can we next go to Sabir, if you'd like to say hello and where you're from. 678 00:32:07,826 --> 00:32:10,860 STUDENT: I have a question. 679 00:32:10,860 --> 00:32:14,597 DAVID MALAN: Let's go to Sabir first, if we could. 680 00:32:14,597 --> 00:32:15,430 Still muted, though. 681 00:32:15,430 --> 00:32:15,950 There we go. 682 00:32:15,950 --> 00:32:18,563 [INTERPOSING VOICES] 683 00:32:18,563 --> 00:32:19,230 SABIR: Hi David. 684 00:32:19,230 --> 00:32:20,710 Hi, Brian. 685 00:32:20,710 --> 00:32:21,460 Nice to meet you. 686 00:32:21,460 --> 00:32:23,160 DAVID MALAN: Hello. 687 00:32:23,160 --> 00:32:24,150 SABIR: OK. 688 00:32:24,150 --> 00:32:25,230 I am Sabir. 689 00:32:25,230 --> 00:32:29,430 Currently in Turkey, but I'm from Nigeria. 690 00:32:29,430 --> 00:32:33,780 I'm studying in Turkey [INAUDIBLE] studying masters 691 00:32:33,780 --> 00:32:35,270 in software engineering. 692 00:32:35,270 --> 00:32:36,310 DAVID MALAN: Wonderful. 693 00:32:36,310 --> 00:32:36,810 SABIR: OK. 694 00:32:36,810 --> 00:32:43,150 My question is, currently I'm doing a research on artificial intelligence. 695 00:32:43,150 --> 00:32:49,450 But actually some of the lectures here, they [INAUDIBLE] language. 696 00:32:49,450 --> 00:32:51,900 So [INAUDIBLE] not good in English. 697 00:32:51,900 --> 00:32:55,860 So what kind of book do you recommend me for me 698 00:32:55,860 --> 00:32:58,590 to learn artificial intelligence? 699 00:32:58,590 --> 00:33:04,380 And again, see, I kind of have interest in C programming language. 700 00:33:04,380 --> 00:33:09,630 And what increased that interest is you and Brian and the way you teach. 701 00:33:09,630 --> 00:33:10,950 It's wonderful. 702 00:33:10,950 --> 00:33:14,090 I almost lost that passion, but when I saw the way you teach, 703 00:33:14,090 --> 00:33:16,520 it's kind of encouraging. 704 00:33:16,520 --> 00:33:24,590 So what book can you recommend me, in terms of this C programming language, 705 00:33:24,590 --> 00:33:25,920 to learn more of it. 706 00:33:25,920 --> 00:33:28,970 [INAUDIBLE] C programming language, and so on. 707 00:33:28,970 --> 00:33:30,300 Thank you. 708 00:33:30,300 --> 00:33:31,050 DAVID MALAN: Sure. 709 00:33:31,050 --> 00:33:32,527 Brian, do you want to start? 710 00:33:32,527 --> 00:33:33,610 BRIAN YU: Yeah, certainly. 711 00:33:33,610 --> 00:33:34,650 So thank you. 712 00:33:34,650 --> 00:33:37,350 I'm glad you're interested in artificial intelligence. 713 00:33:37,350 --> 00:33:40,980 Again, I think I posted this already, but yesterday we just launched 714 00:33:40,980 --> 00:33:42,615 a course about artificial intelligence. 715 00:33:42,615 --> 00:33:45,150 So if you're interested in an introduction 716 00:33:45,150 --> 00:33:48,030 to some of the ideas in artificial intelligence, that course 717 00:33:48,030 --> 00:33:52,770 we cover topics ranging from how you would solve various types and search 718 00:33:52,770 --> 00:33:57,930 problems to how AI can play games to you how AI can understand human language 719 00:33:57,930 --> 00:34:00,420 and translate languages, for example, as well as 720 00:34:00,420 --> 00:34:03,570 topics in machine learning, like neural networks and other popular topics 721 00:34:03,570 --> 00:34:04,153 there, too. 722 00:34:04,153 --> 00:34:06,070 So that's something that you're interested in, 723 00:34:06,070 --> 00:34:07,660 that course is available as well. 724 00:34:07,660 --> 00:34:09,960 And I think you also asked about textbooks. 725 00:34:09,960 --> 00:34:13,440 The artificial intelligence textbook that I happen to really like, 726 00:34:13,440 --> 00:34:17,460 and the one that shares a lot in common with the course that we teach, 727 00:34:17,460 --> 00:34:20,040 is called Artificial Intelligence-- a Modern 728 00:34:20,040 --> 00:34:22,590 Approach by Stuart Russell and Peter Norvig, 729 00:34:22,590 --> 00:34:24,826 and I've pasted the link to that book as well. 730 00:34:24,826 --> 00:34:27,659 So if you're interested in a textbook about artificial intelligence, 731 00:34:27,659 --> 00:34:29,252 that book is quite good. 732 00:34:29,252 --> 00:34:30,960 And if you're looking for more videos, we 733 00:34:30,960 --> 00:34:34,469 have videos and problems on the course on edX about artificial intelligence 734 00:34:34,469 --> 00:34:35,360 as well. 735 00:34:35,360 --> 00:34:37,610 DAVID MALAN: And I'm not sure if you mentioned C also. 736 00:34:37,610 --> 00:34:39,980 I've just pasted into the chat window a link to a book 737 00:34:39,980 --> 00:34:43,310 called Hackers Delight, which is a fun book on learning 738 00:34:43,310 --> 00:34:48,460 C and all the lower of a level, as well as algorithms, more generally. 739 00:34:48,460 --> 00:34:49,730 Thank you for that question. 740 00:34:49,730 --> 00:34:52,788 Can we go next to Cabon, if I'm pronouncing it right? 741 00:34:52,788 --> 00:34:54,830 If you'd like to say hello and where you're from. 742 00:34:54,830 --> 00:34:55,550 CABON: Hi. 743 00:34:55,550 --> 00:34:58,160 I'm from the US. 744 00:34:58,160 --> 00:35:00,930 Wow, I did not expect that. 745 00:35:00,930 --> 00:35:04,160 First of all, I'd like to thank David and Brian. 746 00:35:04,160 --> 00:35:07,270 I finished CS50 recently. 747 00:35:07,270 --> 00:35:10,740 It was the best course I've ever taken. 748 00:35:10,740 --> 00:35:14,360 I noticed Brian released CS50 AI yesterday. 749 00:35:14,360 --> 00:35:16,220 I looked at the first lecture. 750 00:35:16,220 --> 00:35:18,080 And I tried to prom set. 751 00:35:18,080 --> 00:35:23,050 However, I noticed that when you tried to download the distribution code, 752 00:35:23,050 --> 00:35:26,990 the code doesn't actually function on CS50 IDE. 753 00:35:26,990 --> 00:35:31,550 So I was wondering, after you finish CS50, what IDEs 754 00:35:31,550 --> 00:35:35,970 or what terminals do you recommend to move on? 755 00:35:35,970 --> 00:35:36,720 DAVID MALAN: Sure. 756 00:35:36,720 --> 00:35:38,270 Brian, do you want to field that one? 757 00:35:38,270 --> 00:35:38,570 BRIAN YU: Yeah. 758 00:35:38,570 --> 00:35:41,900 So I'll start by just pointing out that for that very first problem in the AI 759 00:35:41,900 --> 00:35:44,690 course, you should be able to run the program. 760 00:35:44,690 --> 00:35:47,400 We distributed two data sets with that problem, a smaller data 761 00:35:47,400 --> 00:35:48,620 set and a bigger one. 762 00:35:48,620 --> 00:35:51,350 You should be able to get the smaller one working on the IDE, 763 00:35:51,350 --> 00:35:55,275 but for the big data set, a lot of AI now is about analyzing big data. 764 00:35:55,275 --> 00:35:57,650 You're unfortunately a little bit constrained by the fact 765 00:35:57,650 --> 00:36:00,770 that the IDE is running in the internet and has a limited amount of memory 766 00:36:00,770 --> 00:36:02,130 available to you. 767 00:36:02,130 --> 00:36:06,110 So the big data set actually is too much memory than will actually fit the IDE. 768 00:36:06,110 --> 00:36:08,540 And for that reason, it might be a good idea to start-- 769 00:36:08,540 --> 00:36:11,780 we want to encourage students to start programming on their own computers 770 00:36:11,780 --> 00:36:12,440 as well. 771 00:36:12,440 --> 00:36:14,690 And so the way to get started with that is really just 772 00:36:14,690 --> 00:36:17,210 to start with a code text editor, and there are 773 00:36:17,210 --> 00:36:19,220 a whole bunch that are quite popular. 774 00:36:19,220 --> 00:36:22,880 Probably the most popular are the three that I'll paste into the chat now. 775 00:36:22,880 --> 00:36:27,440 There's Visual Studio code, developed by Microsoft. 776 00:36:27,440 --> 00:36:33,500 And then there is Atom, which is developed by GitHub. 777 00:36:33,500 --> 00:36:37,430 And then there is Sublime Text, which is also quite popular. 778 00:36:37,430 --> 00:36:39,530 They used to be a little bit more popular. 779 00:36:39,530 --> 00:36:41,450 Any of the those three editors, which will 780 00:36:41,450 --> 00:36:45,140 work on Macs or on PCs are on Linux, are probably good text editors 781 00:36:45,140 --> 00:36:45,855 to get started. 782 00:36:45,855 --> 00:36:48,980 They have all the syntax, highlighting, and the managing of different files 783 00:36:48,980 --> 00:36:51,405 and terminals that you can run code in. 784 00:36:51,405 --> 00:36:54,530 And so those might be a good place to get started, in terms of editing code 785 00:36:54,530 --> 00:36:57,930 on your own computer instead of on the IDE. 786 00:36:57,930 --> 00:36:58,430 Yeah. 787 00:36:58,430 --> 00:36:59,930 Someone else also mentioned PyCharm. 788 00:36:59,930 --> 00:37:03,697 That's another popular one, in terms of an IDE for Python specifically. 789 00:37:03,697 --> 00:37:06,780 There are definitely others other than the ones we've just mentioned, too. 790 00:37:06,780 --> 00:37:09,447 There are many different choices that you have available to you. 791 00:37:09,447 --> 00:37:13,228 Here are just a couple of the popular ones that I happen to like. 792 00:37:13,228 --> 00:37:15,770 DAVID MALAN: And I also just pasted the URL of Python itself. 793 00:37:15,770 --> 00:37:18,110 Sometimes computers do come with versions of Python, 794 00:37:18,110 --> 00:37:19,500 but it might be older. 795 00:37:19,500 --> 00:37:23,180 So you can also download and install Python from their website directly. 796 00:37:23,180 --> 00:37:24,900 Can we go next to Lori? 797 00:37:24,900 --> 00:37:27,230 If you'd like to say hello and where you're from. 798 00:37:27,230 --> 00:37:28,130 LORI: Hi. 799 00:37:28,130 --> 00:37:29,000 I'm Lori. 800 00:37:29,000 --> 00:37:31,850 I'm originally from the Dominican Republic, 801 00:37:31,850 --> 00:37:35,370 living here in the States for a couple of years. 802 00:37:35,370 --> 00:37:40,690 My question is in regards to just resources. 803 00:37:40,690 --> 00:37:44,560 For example, it's hard to be a college student, especially 804 00:37:44,560 --> 00:37:46,490 first generation college students. 805 00:37:46,490 --> 00:37:49,780 So as professors, what are some, for example, communities 806 00:37:49,780 --> 00:37:55,030 that you guys would recommend us to join or look into, just so that we have kind 807 00:37:55,030 --> 00:37:58,910 of that camaraderie or that help, especially now that we're quarantined, 808 00:37:58,910 --> 00:38:01,810 we can't have face to face. 809 00:38:01,810 --> 00:38:02,560 DAVID MALAN: Yeah. 810 00:38:02,560 --> 00:38:04,930 It's a really good question. 811 00:38:04,930 --> 00:38:08,140 I have been following on Reddit a number of communities, which are nice. 812 00:38:08,140 --> 00:38:12,160 I don't know if they are strictly university-oriented. 813 00:38:12,160 --> 00:38:14,350 Odds are it's a broader demographic than that. 814 00:38:14,350 --> 00:38:20,230 But let me see if I can paste the URL of at least one subReddit here. 815 00:38:20,230 --> 00:38:23,085 If unfamiliar, Reddit is a popular site for discussion. 816 00:38:23,085 --> 00:38:25,210 So Learn Programming is actually a really nice one. 817 00:38:25,210 --> 00:38:28,690 I've found the discussions there to be pretty healthy and very supportive 818 00:38:28,690 --> 00:38:29,800 of students. 819 00:38:29,800 --> 00:38:33,580 There's another one-- let me see if I can find it real quick-- 820 00:38:33,580 --> 00:38:38,770 about computer science education more generally. 821 00:38:38,770 --> 00:38:40,872 I'll see if I can find that soon. 822 00:38:40,872 --> 00:38:43,330 Brian, do you want to chime in, though, with some thoughts, 823 00:38:43,330 --> 00:38:44,800 too, while I look for that? 824 00:38:44,800 --> 00:38:45,040 BRIAN YU: Yeah. 825 00:38:45,040 --> 00:38:47,540 The other thing I'll mention is just CS50's own communities, 826 00:38:47,540 --> 00:38:51,010 if you're interested in interacting with other CS50 students who are currently 827 00:38:51,010 --> 00:38:53,580 taking or have taken any of our courses. 828 00:38:53,580 --> 00:38:56,310 And there is a link to all of our various different communities. 829 00:38:56,310 --> 00:38:58,832 It is definitely a very active group of students 830 00:38:58,832 --> 00:39:01,540 that are on Facebook that are communicating and forming community 831 00:39:01,540 --> 00:39:04,180 together, as well as on Discord that are always 832 00:39:04,180 --> 00:39:08,440 chatting about CS50 or programming or any of the specific problems. 833 00:39:08,440 --> 00:39:11,320 And so that can be a place where a lot of our own students online 834 00:39:11,320 --> 00:39:12,897 have been able to find community. 835 00:39:12,897 --> 00:39:15,730 And we've noticed that these has been even more active now that more 836 00:39:15,730 --> 00:39:18,040 and more people are staying indoors. 837 00:39:18,040 --> 00:39:21,000 So definitely other people there. 838 00:39:21,000 --> 00:39:22,030 LORI: Yeah. 839 00:39:22,030 --> 00:39:26,680 I have the Discord chat, and it's been really helpful, especially 840 00:39:26,680 --> 00:39:28,330 like I said now that we're indoors. 841 00:39:28,330 --> 00:39:31,637 So it's nice to have that camaraderie again. 842 00:39:31,637 --> 00:39:32,470 DAVID MALAN: Indeed. 843 00:39:32,470 --> 00:39:35,590 And I can paste the link of all of CS50's communities, 844 00:39:35,590 --> 00:39:38,680 which should appear in the chat room in just a moment. 845 00:39:38,680 --> 00:39:40,930 That's a link to all of our own specific ones. 846 00:39:40,930 --> 00:39:43,030 And then the other subReddit I was thinking 847 00:39:43,030 --> 00:39:47,110 of, which talks about life after college in computer science is this one here, 848 00:39:47,110 --> 00:39:48,738 CS Career Questions on Reddit. 849 00:39:48,738 --> 00:39:49,780 You might like that, too. 850 00:39:49,780 --> 00:39:52,690 Both those communities seem very supportive of people 851 00:39:52,690 --> 00:39:54,122 asking questions of each other. 852 00:39:54,122 --> 00:39:55,330 STUDENT: I am from Hong Kong. 853 00:39:55,330 --> 00:40:00,920 Right now I am in Taipei due to various reasons, political unrest 854 00:40:00,920 --> 00:40:03,970 in [INAUDIBLE], or whatever. 855 00:40:03,970 --> 00:40:07,340 I have some questions. 856 00:40:07,340 --> 00:40:09,590 I have a couple of questions about the recent project, 857 00:40:09,590 --> 00:40:12,490 and also a personal project, if it's OK if I ask. 858 00:40:12,490 --> 00:40:15,550 The personal question is really short. 859 00:40:15,550 --> 00:40:20,930 I'll just start with the technical question. 860 00:40:20,930 --> 00:40:26,330 I always work around web developers in coffee shops 861 00:40:26,330 --> 00:40:32,000 when I try to code in Python, and doing more of analytic works, 862 00:40:32,000 --> 00:40:39,312 or even also a bit of financial derivative predictions with my client, 863 00:40:39,312 --> 00:40:40,520 because my client knows math. 864 00:40:40,520 --> 00:40:41,720 I don't know math. 865 00:40:41,720 --> 00:40:45,710 But I find it very difficult to communicate with my web developers, 866 00:40:45,710 --> 00:40:48,860 in the sense that recently, I was trying to use 867 00:40:48,860 --> 00:40:53,480 fast API to build a server interaction to automate 868 00:40:53,480 --> 00:40:56,420 some Excel spreadsheets via GUI. 869 00:40:56,420 --> 00:41:01,280 And then I built an authentication endpoint, 870 00:41:01,280 --> 00:41:06,470 where I locked myself out during the development of my API. 871 00:41:06,470 --> 00:41:11,720 And then the web developers were like, may I look at your cookies? 872 00:41:11,720 --> 00:41:17,640 And I was like, are those cookies gluten free? 873 00:41:17,640 --> 00:41:22,210 So it gets to the point where it starts, as a Python, 874 00:41:22,210 --> 00:41:27,065 it's very hard to communicate with JavaScript developers or other people 875 00:41:27,065 --> 00:41:27,940 of different domains. 876 00:41:27,940 --> 00:41:30,640 877 00:41:30,640 --> 00:41:32,157 Is Python just to obstruct? 878 00:41:32,157 --> 00:41:35,490 Python, you might as well think of it as English, and you can just search Google 879 00:41:35,490 --> 00:41:38,490 and there would be a documentation for every single thing. 880 00:41:38,490 --> 00:41:42,926 And it's just a different structure and way of thinking in Python. 881 00:41:42,926 --> 00:41:45,560 That's my first question. 882 00:41:45,560 --> 00:41:47,000 DAVID MALAN: Not really, honestly. 883 00:41:47,000 --> 00:41:50,240 I think you won't have that same impression of the language 884 00:41:50,240 --> 00:41:53,120 once, I think, you have more familiarity with other languages. 885 00:41:53,120 --> 00:41:56,630 There are so many similarities among a lot of these more popular languages 886 00:41:56,630 --> 00:41:57,440 today. 887 00:41:57,440 --> 00:41:59,120 Python can be used procedurally. 888 00:41:59,120 --> 00:42:01,040 It can also be used partly functionally. 889 00:42:01,040 --> 00:42:03,750 Those are terms that I used earlier as well. 890 00:42:03,750 --> 00:42:06,530 And I think you'll find that each of these languages 891 00:42:06,530 --> 00:42:10,580 or environments or frameworks just has different ways of solving 892 00:42:10,580 --> 00:42:11,343 the same problems. 893 00:42:11,343 --> 00:42:14,510 Something like cookies has nothing to do with programming languages, per se. 894 00:42:14,510 --> 00:42:18,563 It has only to do with HTTP, which is used by web browsers and web servers. 895 00:42:18,563 --> 00:42:21,230 So if you're feeling that way, I would try to just give yourself 896 00:42:21,230 --> 00:42:23,090 more exposure to other languages. 897 00:42:23,090 --> 00:42:29,000 Take a very short course or read one or more tutorials on JavaScript. 898 00:42:29,000 --> 00:42:31,513 Read a little bit about C++ or C#. 899 00:42:31,513 --> 00:42:33,680 Just give yourself a little more breadth of exposure 900 00:42:33,680 --> 00:42:36,170 and I don't think you'll put as much weight on Python 901 00:42:36,170 --> 00:42:40,400 as being a standout, which I don't think it really is. 902 00:42:40,400 --> 00:42:42,320 STUDENT: Yeah. 903 00:42:42,320 --> 00:42:44,760 DAVID MALAN: Can we go next to Rashab? 904 00:42:44,760 --> 00:42:47,376 If you'd like to say hello and where you're from. 905 00:42:47,376 --> 00:42:48,220 RASHAB: Hey, David. 906 00:42:48,220 --> 00:42:50,530 I'm Rashab from India. 907 00:42:50,530 --> 00:42:55,653 So I took CS50 a couple of years ago, and after that I've 908 00:42:55,653 --> 00:42:58,320 taken various courses, but every year I keep coming back to CS50 909 00:42:58,320 --> 00:43:00,625 to look at the new problems and the new content. 910 00:43:00,625 --> 00:43:03,310 And this year I think it was really amazing. 911 00:43:03,310 --> 00:43:07,760 My question to you is I have moved on to doing research, 912 00:43:07,760 --> 00:43:10,810 and I see a lot of undergraduate students 913 00:43:10,810 --> 00:43:14,430 who are interested, but just started out in computer science, who 914 00:43:14,430 --> 00:43:16,420 are interested in research. 915 00:43:16,420 --> 00:43:19,750 So I started a community, so where we did like small projects 916 00:43:19,750 --> 00:43:22,330 and contribute to open source, or [INAUDIBLE] students 917 00:43:22,330 --> 00:43:24,250 to see [INAUDIBLE]. 918 00:43:24,250 --> 00:43:28,510 So what do you recommend, or are there students 919 00:43:28,510 --> 00:43:31,460 at Harvard, graduate students, who are participating in research, 920 00:43:31,460 --> 00:43:34,390 or would you recommend I do [INAUDIBLE]? 921 00:43:34,390 --> 00:43:35,140 DAVID MALAN: Yeah. 922 00:43:35,140 --> 00:43:37,348 Let me turn to Brian for this, because he's done this 923 00:43:37,348 --> 00:43:39,310 more recently and more personally, too. 924 00:43:39,310 --> 00:43:41,352 BRIAN YU: I didn't catch the end of the question. 925 00:43:41,352 --> 00:43:44,830 So I heard how do undergraduates doing research do what? 926 00:43:44,830 --> 00:43:46,665 Can you repeat the end? 927 00:43:46,665 --> 00:43:48,040 DAVID MALAN: Still muted, Rashab. 928 00:43:48,040 --> 00:43:51,708 929 00:43:51,708 --> 00:43:52,250 RASHAB: Yeah. 930 00:43:52,250 --> 00:43:53,230 Hello? 931 00:43:53,230 --> 00:43:53,940 Yes. 932 00:43:53,940 --> 00:43:56,340 How can I encourage undergraduate students 933 00:43:56,340 --> 00:43:59,250 to participate in research, where they started out 934 00:43:59,250 --> 00:44:02,970 starting with computer science, or get them 935 00:44:02,970 --> 00:44:06,040 in a community where small projects are [INAUDIBLE].. 936 00:44:06,040 --> 00:44:08,548 937 00:44:08,548 --> 00:44:09,340 BRIAN YU: Oh, yeah. 938 00:44:09,340 --> 00:44:11,730 That's a great question about encouraging undergraduates 939 00:44:11,730 --> 00:44:13,650 to do research. 940 00:44:13,650 --> 00:44:17,220 Just a second. 941 00:44:17,220 --> 00:44:20,850 Yeah, about encouraging undergraduates to do computer science research. 942 00:44:20,850 --> 00:44:24,060 I think one of the challenges with starting 943 00:44:24,060 --> 00:44:27,090 to do computer science research just after taking one or two 944 00:44:27,090 --> 00:44:30,780 classes in computer science is that there's a big learning curve 945 00:44:30,780 --> 00:44:32,970 to be able to get up to speed on everything 946 00:44:32,970 --> 00:44:35,970 you need to know about the research project and all the background 947 00:44:35,970 --> 00:44:40,240 information for whatever the field of research happens to be. 948 00:44:40,240 --> 00:44:42,240 And so if you want to encourage undergraduates 949 00:44:42,240 --> 00:44:45,180 to be able to work with a particular research project, 950 00:44:45,180 --> 00:44:49,110 I think trying to come up with smaller tasks that 951 00:44:49,110 --> 00:44:53,850 are more easily graspable by someone who may not 952 00:44:53,850 --> 00:44:57,210 have much experience in that particular domain of research 953 00:44:57,210 --> 00:44:58,470 can be quite helpful. 954 00:44:58,470 --> 00:45:01,170 I know that definitely when I was just starting computer science 955 00:45:01,170 --> 00:45:04,230 and starting to do a little bit of research, that's what a lot of faculty 956 00:45:04,230 --> 00:45:07,110 helped to do for me, was not require me to understand 957 00:45:07,110 --> 00:45:09,480 the entirety of the project, but give me some smaller 958 00:45:09,480 --> 00:45:11,880 piece of that project where I could focus just 959 00:45:11,880 --> 00:45:14,892 on understanding that and tackling that, and then over time, 960 00:45:14,892 --> 00:45:17,350 start to get a better sense for what the larger project is. 961 00:45:17,350 --> 00:45:20,010 But diving into a big project all at once 962 00:45:20,010 --> 00:45:21,960 can definitely be a little bit intimidating. 963 00:45:21,960 --> 00:45:23,252 DAVID MALAN: Can we go to Roan? 964 00:45:23,252 --> 00:45:26,334 965 00:45:26,334 --> 00:45:28,120 ROAN: Hello, David. 966 00:45:28,120 --> 00:45:30,670 I want to thank you all for-- can you hear me? 967 00:45:30,670 --> 00:45:32,050 DAVID MALAN: Yes, we can. 968 00:45:32,050 --> 00:45:32,770 ROAN: OK. 969 00:45:32,770 --> 00:45:36,370 I want to thank you all for you and your team, for your effort, 970 00:45:36,370 --> 00:45:39,280 and I really appreciate that. 971 00:45:39,280 --> 00:45:40,210 I'm from Egypt. 972 00:45:40,210 --> 00:45:42,790 My name is Roan. 973 00:45:42,790 --> 00:45:49,210 My question is, do you recommend a specific website for training? 974 00:45:49,210 --> 00:45:51,280 I know there are a lot of websites. 975 00:45:51,280 --> 00:45:55,348 I want to know what you recommend the best ones are. 976 00:45:55,348 --> 00:45:58,390 DAVID MALAN: For learning computer science and programming, specifically? 977 00:45:58,390 --> 00:46:00,240 ROAN: For practicing. 978 00:46:00,240 --> 00:46:01,900 DAVID MALAN: Oh, for practicing. 979 00:46:01,900 --> 00:46:02,860 It's a good question. 980 00:46:02,860 --> 00:46:06,910 A couple come to mind, and everyone else who's on the call 981 00:46:06,910 --> 00:46:11,280 should feel free to paste your links in to the website. 982 00:46:11,280 --> 00:46:15,220 Sometime ago, we started playing with HackerRank, which, despite its name, 983 00:46:15,220 --> 00:46:18,370 as has a nice collection of introductory problems and more 984 00:46:18,370 --> 00:46:20,360 sophisticated problems alike. 985 00:46:20,360 --> 00:46:24,838 Brian, do you know some more recent options, too? 986 00:46:24,838 --> 00:46:27,130 BRIAN YU: HackerRank is definitely quite a popular one. 987 00:46:27,130 --> 00:46:30,250 The other one I really like, just because it has a big range of problems 988 00:46:30,250 --> 00:46:32,590 that you can solve in any programming language, 989 00:46:32,590 --> 00:46:36,520 is Project Euler, so I'll go ahead and paste that in there as well. 990 00:46:36,520 --> 00:46:40,202 Project Euler basically just asks you a whole bunch of questions, 991 00:46:40,202 --> 00:46:42,160 and in order to answer the question, it usually 992 00:46:42,160 --> 00:46:44,600 involves writing some code in order to solve the problem. 993 00:46:44,600 --> 00:46:46,600 And in that sense, you can code in any language. 994 00:46:46,600 --> 00:46:49,558 You could write the solution in C or in Python or any other programming 995 00:46:49,558 --> 00:46:52,070 language that helps you get to the right answer. 996 00:46:52,070 --> 00:46:54,130 And so I find that to be a pretty interesting way 997 00:46:54,130 --> 00:46:57,722 to find interesting computational problems to solve, 998 00:46:57,722 --> 00:46:59,680 and after you solve it, to then think about how 999 00:46:59,680 --> 00:47:01,597 you might go about solving it more efficiently 1000 00:47:01,597 --> 00:47:03,690 or solving it in a different language. 1001 00:47:03,690 --> 00:47:06,238 And there's a nice community around those problems as well. 1002 00:47:06,238 --> 00:47:08,530 And I see in the chat, there are many other suggestions 1003 00:47:08,530 --> 00:47:10,988 that people have that might be worth taking a look at, too, 1004 00:47:10,988 --> 00:47:13,450 for other sources of problems to solve. 1005 00:47:13,450 --> 00:47:15,290 DAVID MALAN: Simon, can we go to you next? 1006 00:47:15,290 --> 00:47:15,790 SIMON: Hey. 1007 00:47:15,790 --> 00:47:17,410 Yes. 1008 00:47:17,410 --> 00:47:19,810 Thanks very much for your time. 1009 00:47:19,810 --> 00:47:20,380 I'm Simon. 1010 00:47:20,380 --> 00:47:22,390 I'm from London, England. 1011 00:47:22,390 --> 00:47:24,820 I'm currently in my third year of an undergraduate degree 1012 00:47:24,820 --> 00:47:26,680 studying computer science. 1013 00:47:26,680 --> 00:47:29,170 And I'm doing my master's next year, but I still 1014 00:47:29,170 --> 00:47:33,640 have no idea what part of computer science I really want to go into. 1015 00:47:33,640 --> 00:47:35,740 It's something that Jacob touched on earlier. 1016 00:47:35,740 --> 00:47:39,610 Do you have any tips for exploring different areas, 1017 00:47:39,610 --> 00:47:43,450 whether it's systems or ML or logic? 1018 00:47:43,450 --> 00:47:45,520 Because I've done modules in each of them, 1019 00:47:45,520 --> 00:47:48,930 but I'm struggling to really pick a topic 1020 00:47:48,930 --> 00:47:52,003 to do my dissertation on and further research. 1021 00:47:52,003 --> 00:47:54,420 DAVID MALAN: And is that because you like too many of them 1022 00:47:54,420 --> 00:47:58,552 or you don't like enough of them? 1023 00:47:58,552 --> 00:48:01,760 SIMON: Well, I think it's because I like them all neutrally, but none of them 1024 00:48:01,760 --> 00:48:04,190 I really like a lot. 1025 00:48:04,190 --> 00:48:04,940 DAVID MALAN: Yeah. 1026 00:48:04,940 --> 00:48:09,260 I think when it comes to dissertations or theses or capstone projects, 1027 00:48:09,260 --> 00:48:12,710 I think if you have the ability to connect with one or more professors 1028 00:48:12,710 --> 00:48:15,860 and work more closely with them or with their research group, that 1029 00:48:15,860 --> 00:48:18,650 can tend to help crystallize your idea. 1030 00:48:18,650 --> 00:48:21,680 I think talking with faculty, too, about projects they're working on 1031 00:48:21,680 --> 00:48:24,950 is a nice way of you figuring out if, oh, I would really 1032 00:48:24,950 --> 00:48:26,840 like to work on that project, too, and you 1033 00:48:26,840 --> 00:48:29,590 can have a more visceral reaction to the opportunity. 1034 00:48:29,590 --> 00:48:31,340 Barring that, Brian just went through this 1035 00:48:31,340 --> 00:48:33,740 and published his own dissertation about a year ago, 1036 00:48:33,740 --> 00:48:35,345 if you'd like to chime in as well. 1037 00:48:35,345 --> 00:48:35,970 BRIAN YU: Yeah. 1038 00:48:35,970 --> 00:48:39,020 I think my approach to this, very similar in spirit, 1039 00:48:39,020 --> 00:48:42,050 was to look at what faculty around me were working on. 1040 00:48:42,050 --> 00:48:45,740 So I was at Harvard, so I looked at like Harvard faculty and MIT faculty, who 1041 00:48:45,740 --> 00:48:49,912 were nearby, just to see what types of research projects they were working on. 1042 00:48:49,912 --> 00:48:52,370 And for those that I thought they had interesting projects, 1043 00:48:52,370 --> 00:48:55,500 I just reached out to them by email, just strike up a conversation. 1044 00:48:55,500 --> 00:48:58,072 And not all of them got back to me, but some of them did. 1045 00:48:58,072 --> 00:49:00,530 And that was the beginning of a conversation, some of which 1046 00:49:00,530 --> 00:49:03,960 led to some research opportunities that I wouldn't have thought of. 1047 00:49:03,960 --> 00:49:07,192 And I think that can be an interesting approach, as opposed 1048 00:49:07,192 --> 00:49:08,900 to just starting from thinking about what 1049 00:49:08,900 --> 00:49:12,830 domain you want to work in, because the faculty are usually actively working 1050 00:49:12,830 --> 00:49:17,100 on one or more different projects that are at the cutting edge of research, 1051 00:49:17,100 --> 00:49:21,020 and so being able to hear from them about what they think 1052 00:49:21,020 --> 00:49:25,240 is interesting and exciting can often be a way to get inspired, 1053 00:49:25,240 --> 00:49:26,990 as well, in terms of the types of projects 1054 00:49:26,990 --> 00:49:29,236 that you might be interested in working on, too. 1055 00:49:29,236 --> 00:49:30,470 DAVID MALAN: And I hope you'll forgive. 1056 00:49:30,470 --> 00:49:32,060 We have a few minutes left here and we're 1057 00:49:32,060 --> 00:49:34,140 doing our best to get through as many questions as we can. 1058 00:49:34,140 --> 00:49:35,848 We'll invariably do another one of these. 1059 00:49:35,848 --> 00:49:38,968 So if you haven't already, please do fill out the Google form 1060 00:49:38,968 --> 00:49:41,510 that I've pasted, again, into the chat window with your email 1061 00:49:41,510 --> 00:49:45,452 address so that we can let you know in a week or two when the next one will be. 1062 00:49:45,452 --> 00:49:47,660 But we have time for a couple more questions I think. 1063 00:49:47,660 --> 00:49:48,890 Can we go to Joshua? 1064 00:49:48,890 --> 00:49:49,580 JOSHUA: Hello. 1065 00:49:49,580 --> 00:49:51,000 My name is Joshua. 1066 00:49:51,000 --> 00:49:53,180 I'm from a country called Rwanda. 1067 00:49:53,180 --> 00:49:56,990 My question is I just started CS50 about two months ago. 1068 00:49:56,990 --> 00:49:58,563 I'm in like week 4. 1069 00:49:58,563 --> 00:49:59,230 DAVID MALAN: OK. 1070 00:49:59,230 --> 00:50:00,545 JOSHUA: I was wondering if you could give me 1071 00:50:00,545 --> 00:50:02,400 some resources that can help me understand 1072 00:50:02,400 --> 00:50:07,040 coding better on like websites or applications, that 1073 00:50:07,040 --> 00:50:09,420 can help me understand coding better. 1074 00:50:09,420 --> 00:50:11,550 DAVID MALAN: OK. 1075 00:50:11,550 --> 00:50:14,140 Are there websites to understand coding better? 1076 00:50:14,140 --> 00:50:15,160 JOSHUA: Yeah. 1077 00:50:15,160 --> 00:50:15,430 DAVID MALAN: Yeah. 1078 00:50:15,430 --> 00:50:16,930 I would definitely take a look at the chat 1079 00:50:16,930 --> 00:50:18,680 a moment ago with a number of the practice 1080 00:50:18,680 --> 00:50:21,250 websites, which are really good. 1081 00:50:21,250 --> 00:50:24,430 We certainly distribute CS50 and CS50's courses on edX, 1082 00:50:24,430 --> 00:50:28,090 where there are dozens, if not hundreds, of free courses nowadays. 1083 00:50:28,090 --> 00:50:30,850 And I think taking a look at some of the topics of interest 1084 00:50:30,850 --> 00:50:33,660 to you on those websites is a good place. 1085 00:50:33,660 --> 00:50:36,550 Coursera.org is another good one as well. 1086 00:50:36,550 --> 00:50:38,813 That's where the Princeton class is as well. 1087 00:50:38,813 --> 00:50:40,480 I think it's an amazing thing right now. 1088 00:50:40,480 --> 00:50:43,930 It is so hard to not find something that's freely available 1089 00:50:43,930 --> 00:50:44,960 and of interest to you. 1090 00:50:44,960 --> 00:50:48,168 I would start with some of those URLs that we've pasted into the chat window. 1091 00:50:48,168 --> 00:50:51,377 Just scroll back through and maybe copy and paste it if you'd like to save it 1092 00:50:51,377 --> 00:50:52,143 today as well. 1093 00:50:52,143 --> 00:50:53,310 JOSHUA: Thank you very much. 1094 00:50:53,310 --> 00:50:53,950 DAVID MALAN: Sure. 1095 00:50:53,950 --> 00:50:55,220 STUDENT: I think it's my number. 1096 00:50:55,220 --> 00:50:56,762 DAVID MALAN: Can we go next to Asher? 1097 00:50:56,762 --> 00:50:59,900 If you'd like to say hello and where you're from. 1098 00:50:59,900 --> 00:51:00,440 ASHER: Hi. 1099 00:51:00,440 --> 00:51:03,080 I'm from New York City. 1100 00:51:03,080 --> 00:51:04,250 I am 15. 1101 00:51:04,250 --> 00:51:10,160 And my question was, I've had some experience with coding, about a year, 1102 00:51:10,160 --> 00:51:13,730 and I'm doing the tracks in CS50 now. 1103 00:51:13,730 --> 00:51:17,540 How would you recommend getting started with projects? 1104 00:51:17,540 --> 00:51:20,960 Are there any good websites where people put like offers out, 1105 00:51:20,960 --> 00:51:23,270 or how would you go about doing that? 1106 00:51:23,270 --> 00:51:27,320 DAVID MALAN: Projects, final projects in particular of your own design? 1107 00:51:27,320 --> 00:51:34,700 ASHER: Either that, or let's say once we finish with CS50, as you said, 1108 00:51:34,700 --> 00:51:37,100 after you take a few courses, you want to do projects 1109 00:51:37,100 --> 00:51:39,050 and then take courses to fill in the gaps. 1110 00:51:39,050 --> 00:51:41,180 Where would you recommend finding those projects 1111 00:51:41,180 --> 00:51:43,352 or finding people to do projects. 1112 00:51:43,352 --> 00:51:46,310 DAVID MALAN: I think there's certainly the freely available courses you 1113 00:51:46,310 --> 00:51:49,250 can pursue and any number of the practice problems 1114 00:51:49,250 --> 00:51:51,800 that people have been pasting into the chat window today. 1115 00:51:51,800 --> 00:51:55,190 But more than that, I would encourage you to seek the open source projects. 1116 00:51:55,190 --> 00:51:59,368 For instance, in CS50, especially in the Python portion of the class 1117 00:51:59,368 --> 00:52:01,160 and the web portion of the class, you might 1118 00:52:01,160 --> 00:52:04,390 recall that we used a number of packages, or libraries, code 1119 00:52:04,390 --> 00:52:05,390 that other people wrote. 1120 00:52:05,390 --> 00:52:07,940 Flask is one of them, and we used a number of others. 1121 00:52:07,940 --> 00:52:11,213 If you look in our requirements.txt files 1122 00:52:11,213 --> 00:52:13,130 for a couple of the final problem sets, you'll 1123 00:52:13,130 --> 00:52:16,400 see what other libraries we used for those homework assignments. 1124 00:52:16,400 --> 00:52:20,030 And so that is to say you've been using a number of free open source 1125 00:52:20,030 --> 00:52:22,600 libraries of code already. 1126 00:52:22,600 --> 00:52:23,990 Seek those out on GitHub. 1127 00:52:23,990 --> 00:52:26,330 Google the name of the library and the word 1128 00:52:26,330 --> 00:52:29,610 GitHub to find its repository online to see if it's there. 1129 00:52:29,610 --> 00:52:33,540 And then look on the Issues tab on GitHub and GitLab and other sites. 1130 00:52:33,540 --> 00:52:35,570 There's usually an Issues tab or similar that 1131 00:52:35,570 --> 00:52:39,890 shows you all of the missing features or bugs or problems with a library 1132 00:52:39,890 --> 00:52:40,973 or an open source project. 1133 00:52:40,973 --> 00:52:44,057 And one of the easiest ways to get started is to look through those issues 1134 00:52:44,057 --> 00:52:45,830 and see if you can solve one of them. 1135 00:52:45,830 --> 00:52:49,310 GitHub, for instance, even has labels that they use that will indicate, 1136 00:52:49,310 --> 00:52:54,230 for some repositories, good first contribution or good first timer, 1137 00:52:54,230 --> 00:52:57,530 something like that, relatively easier problems that you can figure out. 1138 00:52:57,530 --> 00:53:00,560 And the upside of this is you learn how to read someone else's code. 1139 00:53:00,560 --> 00:53:02,810 You learn how to collaborate with other people. 1140 00:53:02,810 --> 00:53:05,420 You get feedback for free from really smart people 1141 00:53:05,420 --> 00:53:07,500 who are working on that project as well. 1142 00:53:07,500 --> 00:53:09,680 So try to find one or more open source projects. 1143 00:53:09,680 --> 00:53:12,050 Even if it's just one line of code to contribute, 1144 00:53:12,050 --> 00:53:13,755 I think you'll get a big kick out of it. 1145 00:53:13,755 --> 00:53:14,630 And I certainly have. 1146 00:53:14,630 --> 00:53:17,172 I think it's the coolest thing, when some popular open source 1147 00:53:17,172 --> 00:53:21,140 tool has added even one line of code that I've contributed. 1148 00:53:21,140 --> 00:53:22,790 ASHER: Thank you so much. 1149 00:53:22,790 --> 00:53:25,550 STUDENT: Hi, David and Brian. 1150 00:53:25,550 --> 00:53:29,180 First, I'd just like to thank you guys for doing a wonderful job with CS50 1151 00:53:29,180 --> 00:53:34,820 and how all the students of being able to benefit from your teachings. 1152 00:53:34,820 --> 00:53:36,870 So I have two questions. 1153 00:53:36,870 --> 00:53:38,090 One is a short one. 1154 00:53:38,090 --> 00:53:42,230 So my first one I'd like to start out as a joke. 1155 00:53:42,230 --> 00:53:46,270 For your lectures 0, for scratch, how many phone books 1156 00:53:46,270 --> 00:53:49,530 did you tear in total by now? 1157 00:53:49,530 --> 00:53:51,030 DAVID MALAN: That's a good question. 1158 00:53:51,030 --> 00:53:54,560 I've been teaching the class for 13 years now, so I've torn at least 13 1159 00:53:54,560 --> 00:53:56,960 of them in the very first lecture of the class. 1160 00:53:56,960 --> 00:54:00,690 But I tend to use that demonstration elsewhere, 1161 00:54:00,690 --> 00:54:05,440 so let's say it's maybe 100 at this point. 1162 00:54:05,440 --> 00:54:08,582 Oh, still muted, if you'd like to unmute yourself again. 1163 00:54:08,582 --> 00:54:09,940 Question? 1164 00:54:09,940 --> 00:54:11,010 STUDENT: OK. 1165 00:54:11,010 --> 00:54:15,240 And my next question is for Brian, regarding AI. 1166 00:54:15,240 --> 00:54:19,720 So my question is, will there ever be a limit for AI 1167 00:54:19,720 --> 00:54:24,970 to really understand the world? 1168 00:54:24,970 --> 00:54:25,950 BRIAN YU: Yeah. 1169 00:54:25,950 --> 00:54:30,240 This is a really good question, and one that nobody has a definitive answer. 1170 00:54:30,240 --> 00:54:33,060 The question is about how good could AI be, 1171 00:54:33,060 --> 00:54:35,190 potentially understanding the world? 1172 00:54:35,190 --> 00:54:37,680 And that starts to get into what we generally call 1173 00:54:37,680 --> 00:54:42,060 artificial general intelligence, like a generally intelligent being that 1174 00:54:42,060 --> 00:54:44,520 is comparable to human intelligence. 1175 00:54:44,520 --> 00:54:47,340 And the answer is that people aren't really sure. 1176 00:54:47,340 --> 00:54:50,830 We've been able to create AI to solve very small scale problems, 1177 00:54:50,830 --> 00:54:54,240 like understand how to translate texts from one language to another 1178 00:54:54,240 --> 00:54:59,580 or understand how to play chess better than any other chess player. 1179 00:54:59,580 --> 00:55:02,130 But the problem of a general purpose intelligence, 1180 00:55:02,130 --> 00:55:05,700 that can learn the way humans do, that can adapt to new problems, 1181 00:55:05,700 --> 00:55:08,100 that's something that doesn't currently exist, 1182 00:55:08,100 --> 00:55:10,710 and people debate about what would happen if it ever did. 1183 00:55:10,710 --> 00:55:14,040 A really good book, if you're interested in this type of thing, 1184 00:55:14,040 --> 00:55:17,100 is a book called Superintelligence by Nick Bostrom. 1185 00:55:17,100 --> 00:55:19,650 It's a quite popular book on the subject. 1186 00:55:19,650 --> 00:55:21,700 I've pasted the link to that there as well. 1187 00:55:21,700 --> 00:55:24,030 And that really explores the question of, 1188 00:55:24,030 --> 00:55:28,905 is it possible to create an artificial being that is as intelligent as people? 1189 00:55:28,905 --> 00:55:30,780 And if so, what are the implications of that? 1190 00:55:30,780 --> 00:55:34,170 Could it be more intelligent than people potentially are, as well, 1191 00:55:34,170 --> 00:55:36,087 and what would happen as a result of that. 1192 00:55:36,087 --> 00:55:37,920 So I don't have a definitive answer on that. 1193 00:55:37,920 --> 00:55:40,545 I don't think anyone really does, but it's definitely something 1194 00:55:40,545 --> 00:55:42,590 that people are discussing and talking about. 1195 00:55:42,590 --> 00:55:45,090 DAVID MALAN: Well, we want to be mindful of everyone's time. 1196 00:55:45,090 --> 00:55:46,950 And I know we haven't gotten to all the questions, 1197 00:55:46,950 --> 00:55:48,810 but we'll definitely do another one of these soon. 1198 00:55:48,810 --> 00:55:52,020 Do fill out the Google form that's in the chat to give us your email address, 1199 00:55:52,020 --> 00:55:53,228 if you'd like to let us know. 1200 00:55:53,228 --> 00:55:55,595 I've also just repasted the communities link. 1201 00:55:55,595 --> 00:55:58,470 If you have questions that Brian or I might be able to answer online, 1202 00:55:58,470 --> 00:55:59,595 we're happy to do our best. 1203 00:55:59,595 --> 00:56:02,100 He and I are active on all of those communities. 1204 00:56:02,100 --> 00:56:05,370 Please join us for CS50 X puzzle day this weekend, if you would like. 1205 00:56:05,370 --> 00:56:09,450 And again, all of our best to you, your family, and friends, especially now. 1206 00:56:09,450 --> 00:56:12,575 Let me turn things back over to Brian to say a final goodbye. 1207 00:56:12,575 --> 00:56:13,200 BRIAN YU: Yeah. 1208 00:56:13,200 --> 00:56:13,860 Thanks, everyone. 1209 00:56:13,860 --> 00:56:16,200 Sorry, again, we didn't manage to make it to everyone's questions, 1210 00:56:16,200 --> 00:56:18,780 but we'll definitely try and do something like this again. 1211 00:56:18,780 --> 00:56:20,863 So if you didn't get your question answered today, 1212 00:56:20,863 --> 00:56:22,280 hopefully you can in the future. 1213 00:56:22,280 --> 00:56:25,030 But it was great to talk with all of you and chat with all of you, 1214 00:56:25,030 --> 00:56:27,447 and looking forward to seeing you at a future office hours 1215 00:56:27,447 --> 00:56:30,410 or in any of our online communities as well. 1216 00:56:30,410 --> 00:56:32,000