1 00:00:00,000 --> 00:00:02,420 2 00:00:02,420 --> 00:00:04,330 DAVID: All right, hello, world. 3 00:00:04,330 --> 00:00:06,670 This is the CS50x Educator Workshop. 4 00:00:06,670 --> 00:00:09,890 Can everyone hear me OK here at Harvard? 5 00:00:09,890 --> 00:00:10,390 Yes? 6 00:00:10,390 --> 00:00:11,890 Well, so nice to see everyone again. 7 00:00:11,890 --> 00:00:16,550 I hope you had a happy and a healthy weekend over the past couple of days. 8 00:00:16,550 --> 00:00:20,110 I thought we'd begin where we always do, which is with just a few hellos. 9 00:00:20,110 --> 00:00:24,400 Might anyone be comfortable volunteering a blue raised hand 10 00:00:24,400 --> 00:00:28,770 if you'd like to say hello to the group this week to kick things off? 11 00:00:28,770 --> 00:00:30,450 RANPUR: Hi, David. 12 00:00:30,450 --> 00:00:31,830 DAVID: Nice to see you again. 13 00:00:31,830 --> 00:00:32,790 RANPUR: Yeah. 14 00:00:32,790 --> 00:00:34,170 Hi, to all. 15 00:00:34,170 --> 00:00:36,810 This is Ranpur, from India. 16 00:00:36,810 --> 00:00:42,730 Yeah actually, I was waiting for Sunday to complete so that I can join now. 17 00:00:42,730 --> 00:00:43,230 Thank you. 18 00:00:43,230 --> 00:00:44,580 DAVID: Oh, good. 19 00:00:44,580 --> 00:00:46,110 You're very welcome. 20 00:00:46,110 --> 00:00:49,620 And Siam, I'm not sure if I'm saying your name right. 21 00:00:49,620 --> 00:00:50,460 I saw your hand up. 22 00:00:50,460 --> 00:00:52,290 Did you want to say hello too? 23 00:00:52,290 --> 00:00:54,810 SIAM: Yes, hi, David. 24 00:00:54,810 --> 00:00:58,080 I'm Siam from Bangladesh. 25 00:00:58,080 --> 00:00:59,758 Nice to meet you. 26 00:00:59,758 --> 00:01:00,675 DAVID: Likewise, Siam. 27 00:01:00,675 --> 00:01:02,890 Nice to meet you as well. 28 00:01:02,890 --> 00:01:07,350 Any other hands, if folks aren't too shy? 29 00:01:07,350 --> 00:01:10,550 Chefket, if you'd like to say hello, nice to see you again as well. 30 00:01:10,550 --> 00:01:14,546 CHEFKET: Yeah, also for me too. 31 00:01:14,546 --> 00:01:18,220 I hope to enjoy today, because my background is technology. 32 00:01:18,220 --> 00:01:23,400 So we have first part in business and law. 33 00:01:23,400 --> 00:01:31,860 So normally it's better to know some other and get some skills in business. 34 00:01:31,860 --> 00:01:35,540 And law will be faced in our job with this [INAUDIBLE] problem. 35 00:01:35,540 --> 00:01:38,580 So thank you so much that you will involve 36 00:01:38,580 --> 00:01:43,450 these two kind of topics in our course. 37 00:01:43,450 --> 00:01:48,830 DAVID: Of course, thank you, and so glad it'll fit a need that you have in mind. 38 00:01:48,830 --> 00:01:52,390 And last but not least, Ramon, would you like to say hello again to the group? 39 00:01:52,390 --> 00:01:55,712 Welcome back as well. 40 00:01:55,712 --> 00:01:56,920 RAMON: Hello everyone, again. 41 00:01:56,920 --> 00:01:58,003 This is Ramon from Brazil. 42 00:01:58,003 --> 00:02:00,070 I'm very excited to be here again. 43 00:02:00,070 --> 00:02:02,610 And I hope we all can take the most out of it. 44 00:02:02,610 --> 00:02:03,900 So let's go. 45 00:02:03,900 --> 00:02:04,650 Let's get started. 46 00:02:04,650 --> 00:02:08,830 DAVID: All right, I love how you're ready to kick things off every time. 47 00:02:08,830 --> 00:02:10,490 Well, let's indeed dive right in. 48 00:02:10,490 --> 00:02:14,200 Today and this week will be entirely focused on other courses 49 00:02:14,200 --> 00:02:17,710 that you can teach in your own classrooms in some forms 50 00:02:17,710 --> 00:02:20,170 before or after CS50x. 51 00:02:20,170 --> 00:02:22,360 Today's focus will be on three courses that 52 00:02:22,360 --> 00:02:26,770 are nicknamed CS50T, CS50B, and CS50L. 53 00:02:26,770 --> 00:02:29,170 So each of these courses has their origin 54 00:02:29,170 --> 00:02:31,990 here on campus in some form or other. 55 00:02:31,990 --> 00:02:35,800 CS50T, titled officially, "Understanding Technology," 56 00:02:35,800 --> 00:02:41,230 is essentially the first class that I myself taught some 20 or so years ago. 57 00:02:41,230 --> 00:02:44,700 It went by a slightly different name and number back then. 58 00:02:44,700 --> 00:02:48,430 But nowadays, this is an adaptation of that very same class, modernized 59 00:02:48,430 --> 00:02:51,160 for technology that we have 20 years later. 60 00:02:51,160 --> 00:02:54,700 This is a course, as we'll see, that's meant really for anyone. 61 00:02:54,700 --> 00:02:57,430 It's meant to empower students to understand the technology 62 00:02:57,430 --> 00:03:02,320 that you and I use every day, that you and I carry in our pockets every day, 63 00:03:02,320 --> 00:03:05,480 but don't necessarily understand how it all works. 64 00:03:05,480 --> 00:03:08,350 And so it's meant to provide students with a better 65 00:03:08,350 --> 00:03:13,180 understanding of consumer hardware, of internet technologies, and a lot more. 66 00:03:13,180 --> 00:03:17,080 CS50B, otherwise known as "Computer Science for Business Professionals," 67 00:03:17,080 --> 00:03:20,170 is inspired by a class I teach here on campus each year 68 00:03:20,170 --> 00:03:23,170 at Harvard's business school, where there is an MBA program, master's 69 00:03:23,170 --> 00:03:26,920 of business administration, where the students in this class 70 00:03:26,920 --> 00:03:30,460 learn from a top-down perspective about technology as well, 71 00:03:30,460 --> 00:03:32,780 but it's a little more managerial themed. 72 00:03:32,780 --> 00:03:34,870 It's a little more decision-making themes, 73 00:03:34,870 --> 00:03:38,410 not so much in the consumer space, but in the corporate workplace. 74 00:03:38,410 --> 00:03:41,470 How do you understand the various technologies that you and your staff 75 00:03:41,470 --> 00:03:43,030 can use to solve problems? 76 00:03:43,030 --> 00:03:47,530 How do you make estimations as to how long things should take to create, 77 00:03:47,530 --> 00:03:52,870 how much projects should cost to create, and essentially provide business 78 00:03:52,870 --> 00:03:56,650 leaders with a better understanding of technology so they can make themselves 79 00:03:56,650 --> 00:03:59,170 better decisions in their own enterprise? 80 00:03:59,170 --> 00:04:04,510 And then lastly, and most recently, is CS50L, CS50 for lawyers. 81 00:04:04,510 --> 00:04:07,690 This is a class that I co-teach with CS50's Doug Lloyd 82 00:04:07,690 --> 00:04:11,170 at Harvard's law school, where students are pursuing degrees in law. 83 00:04:11,170 --> 00:04:13,870 And this class, similar to the other two classes, 84 00:04:13,870 --> 00:04:16,269 is also top down, conceptually. 85 00:04:16,269 --> 00:04:17,890 None of these are programming classes. 86 00:04:17,890 --> 00:04:22,630 But CS50L intersects all the more with real-world issues of law, 87 00:04:22,630 --> 00:04:24,940 real-world issues of intellectual property, 88 00:04:24,940 --> 00:04:29,830 of security, a lot of the topics that lawyers, and paralegals, and others 89 00:04:29,830 --> 00:04:32,200 in the legal profession might have to think about, 90 00:04:32,200 --> 00:04:36,020 might have to advise clients on day in and day out. 91 00:04:36,020 --> 00:04:39,340 So we'll give you a sense, then, of all three of these courses today 92 00:04:39,340 --> 00:04:42,970 so that you're welcome to adopt or adapt the courses in some form, 93 00:04:42,970 --> 00:04:45,370 either integrating them into your existing class. 94 00:04:45,370 --> 00:04:47,530 Maybe it's CS50x or something else. 95 00:04:47,530 --> 00:04:49,570 But we position these courses essentially 96 00:04:49,570 --> 00:04:52,390 as precursor courses to CS50x. 97 00:04:52,390 --> 00:04:55,510 CS50x, as you may recall from last week, especially if you've taken 98 00:04:55,510 --> 00:04:59,170 it online, really as the backbone of CS50's curriculum. 99 00:04:59,170 --> 00:05:02,710 It's meant to be a rigorous introduction to computer science 100 00:05:02,710 --> 00:05:04,370 and to programming itself. 101 00:05:04,370 --> 00:05:09,010 But these three courses do not assume that students have taken CS50x. 102 00:05:09,010 --> 00:05:13,210 They do not assume that students have any prior programming experience. 103 00:05:13,210 --> 00:05:16,960 And the goal of these courses is not to teach students how to program, 104 00:05:16,960 --> 00:05:22,040 but to give them exposure thereto into concepts related, as well. 105 00:05:22,040 --> 00:05:25,043 If at any point, as always, if you have any questions, or comments, 106 00:05:25,043 --> 00:05:26,710 or would like clarifications, please do. 107 00:05:26,710 --> 00:05:27,910 Just raise your blue hand. 108 00:05:27,910 --> 00:05:30,520 Happy to make this as much of a discussion as we can-- 109 00:05:30,520 --> 00:05:35,000 and please feel free to chat with each other via the chat window as well. 110 00:05:35,000 --> 00:05:39,100 So all of these courses, if unfamiliar, are available in multiple locations, 111 00:05:39,100 --> 00:05:42,730 perhaps the simplest of which is on edX, if familiar with the MOOC platform, 112 00:05:42,730 --> 00:05:44,817 at edx.org/cs50. 113 00:05:44,817 --> 00:05:46,900 And there is a few other classes there that you'll 114 00:05:46,900 --> 00:05:49,150 see that we'll learn more about later this week if you 115 00:05:49,150 --> 00:05:50,960 choose to join us as well. 116 00:05:50,960 --> 00:05:56,080 So here is essentially where today's three courses fit into CS50's growing 117 00:05:56,080 --> 00:05:57,040 curriculum. 118 00:05:57,040 --> 00:06:01,570 Once upon a time, CS50 was just CS50, that is, CS50x. 119 00:06:01,570 --> 00:06:05,200 But now we would describe the ecosystem of the team's courses 120 00:06:05,200 --> 00:06:09,370 as being CS50 as this backbone that I described earlier and then three 121 00:06:09,370 --> 00:06:14,020 possible on ramps to CS50x itself, so the business version of the class, 122 00:06:14,020 --> 00:06:17,500 the law version of the class, and the technology version of the class. 123 00:06:17,500 --> 00:06:20,860 Those three courses aren't necessarily mutually exclusive. 124 00:06:20,860 --> 00:06:23,050 You could teach multiple courses. 125 00:06:23,050 --> 00:06:25,570 Your students could take multiple courses 126 00:06:25,570 --> 00:06:27,890 of business, law, and technology. 127 00:06:27,890 --> 00:06:30,380 But there is definitely non-trivial overlap. 128 00:06:30,380 --> 00:06:33,700 And so we would generally advise that, if considering one of these courses, 129 00:06:33,700 --> 00:06:36,940 you start with the one of most interest to you and your students 130 00:06:36,940 --> 00:06:40,360 and then perhaps adapt other aspects of the other classes 131 00:06:40,360 --> 00:06:45,950 as opposed to having students take multiple precursors to CS50x itself. 132 00:06:45,950 --> 00:06:47,620 Ahmad, I see your hand is up. 133 00:06:47,620 --> 00:06:49,540 Question or comment? 134 00:06:49,540 --> 00:06:50,530 AHMAD: Yes, David. 135 00:06:50,530 --> 00:06:54,095 I believe there is also CS50 for form mobile development. 136 00:06:54,095 --> 00:06:56,722 And I don't see it mentioned. 137 00:06:56,722 --> 00:06:58,680 Actually, there is no session for it this week. 138 00:06:58,680 --> 00:07:00,275 What happened to this course? 139 00:07:00,275 --> 00:07:00,900 DAVID: Correct. 140 00:07:00,900 --> 00:07:04,710 What is not pictured here is CS50's mobile app development 141 00:07:04,710 --> 00:07:06,420 course, which is drifting out of date. 142 00:07:06,420 --> 00:07:08,390 It's still available as OpenCourseWare. 143 00:07:08,390 --> 00:07:11,160 Teachers are still welcome to use it, but we don't currently 144 00:07:11,160 --> 00:07:15,180 have plans to update it enough so that students can follow along 145 00:07:15,180 --> 00:07:18,360 with the latest and greatest versions of software. 146 00:07:18,360 --> 00:07:21,660 So while the projects, the lectures, everything is still available, 147 00:07:21,660 --> 00:07:24,270 the world of mobile app development changes 148 00:07:24,270 --> 00:07:26,560 so quickly that the materials have fallen out of date. 149 00:07:26,560 --> 00:07:29,190 So at this point, in 2020, odds are there 150 00:07:29,190 --> 00:07:31,620 are better, more-current resources online 151 00:07:31,620 --> 00:07:34,530 for students who want to dive right in and not struggle 152 00:07:34,530 --> 00:07:37,350 with changes in documentation and API. 153 00:07:37,350 --> 00:07:40,935 So indeed, this week, will only focus on today's three courses, and then Brian's 154 00:07:40,935 --> 00:07:45,040 AI class and web class, and Colton's game class as well. 155 00:07:45,040 --> 00:07:47,550 So indeed, we'll focus on exactly that today, just three 156 00:07:47,550 --> 00:07:49,873 of these on-ramp courses in some form. 157 00:07:49,873 --> 00:07:51,540 And we'll go through them one at a time. 158 00:07:51,540 --> 00:07:54,207 And please, again, interject at any point if you have questions. 159 00:07:54,207 --> 00:07:57,150 And I'll highlight at the end the similarities and differences 160 00:07:57,150 --> 00:07:58,980 among these courses, outright. 161 00:07:58,980 --> 00:08:03,390 So CS50T, or that technology class, is freely available as OpenCourseWare 162 00:08:03,390 --> 00:08:07,620 at this URL here, Brian, if you wouldn't mind pasting this into the chat window 163 00:08:07,620 --> 00:08:08,500 as well. 164 00:08:08,500 --> 00:08:15,460 And CS50T essentially follows a syllabus along the lines of these topics here. 165 00:08:15,460 --> 00:08:18,270 So it's broken down into six units or modules. 166 00:08:18,270 --> 00:08:21,030 You can present these as six disparate weeks. 167 00:08:21,030 --> 00:08:24,000 We tend to spend two weeks on each of these topics. 168 00:08:24,000 --> 00:08:26,250 But at the high-school level, college, university, 169 00:08:26,250 --> 00:08:30,270 you could certainly spread it out over a longer period of time as well. 170 00:08:30,270 --> 00:08:32,880 In terms of the particular topics that we introduce students 171 00:08:32,880 --> 00:08:36,539 to in understanding technology, AKA, CS50T, 172 00:08:36,539 --> 00:08:40,470 we actually start where we start CS50x itself, introducing students 173 00:08:40,470 --> 00:08:43,740 to the representation of information and giving them a taste of 174 00:08:43,740 --> 00:08:45,510 and understanding of binary. 175 00:08:45,510 --> 00:08:47,610 From there, we talk a little more about-- 176 00:08:47,610 --> 00:08:51,930 a bit more about hardware in CS50T than we do in CS50x 177 00:08:51,930 --> 00:08:54,060 so that students understand what's literally 178 00:08:54,060 --> 00:08:56,020 inside their laptop and desktop. 179 00:08:56,020 --> 00:09:00,090 Pictured here, of course, is a CPU, or the brains inside of a computer. 180 00:09:00,090 --> 00:09:02,910 And we talk in a bit more detail in this class about what 181 00:09:02,910 --> 00:09:06,390 it is the CPU is doing for students' computers 182 00:09:06,390 --> 00:09:09,180 and how it connects to other pieces of hardware. 183 00:09:09,180 --> 00:09:13,080 Indeed, another piece of hardware we talk about in CS50T is hard drives. 184 00:09:13,080 --> 00:09:16,950 So pictured here is the inside of a 3 and 1/2 inch hard drive 185 00:09:16,950 --> 00:09:18,970 with its spinning platters, and such. 186 00:09:18,970 --> 00:09:22,830 And we allude to this model in CS50, but we don't talk in great detail 187 00:09:22,830 --> 00:09:27,060 about the physicality of what's inside the drive in the magnetic particles 188 00:09:27,060 --> 00:09:28,860 that are storing your information. 189 00:09:28,860 --> 00:09:33,420 So we try to peel back more conceptual layers in CS50T 190 00:09:33,420 --> 00:09:36,690 so that students do have this top-down understanding of how 191 00:09:36,690 --> 00:09:39,630 the hardware in their computer actually works. 192 00:09:39,630 --> 00:09:43,230 And we also take a look at the back of or the side of students' computer, 193 00:09:43,230 --> 00:09:44,010 so to speak. 194 00:09:44,010 --> 00:09:48,540 And we actually look at and talk about ports, display ports, and HDMI, 195 00:09:48,540 --> 00:09:51,540 and VGA, and USB, and bunches of others that you 196 00:09:51,540 --> 00:09:54,990 could find on the side or the back of a modern computer 197 00:09:54,990 --> 00:09:59,190 so that students are able to understand exactly what are these wires all doing. 198 00:09:59,190 --> 00:10:01,530 We encourage students as unofficial homework, 199 00:10:01,530 --> 00:10:05,250 go home, if they own a desktop especially or live in a household 200 00:10:05,250 --> 00:10:07,380 where someone owns a desktop, and we actually 201 00:10:07,380 --> 00:10:10,440 encourage them, once it's powered off, pull all of the cables 202 00:10:10,440 --> 00:10:14,460 out and then go about figuring out how you plug them all back in. 203 00:10:14,460 --> 00:10:16,890 And while, for many of you in this Zoom meeting 204 00:10:16,890 --> 00:10:19,680 might find this pretty straightforward exercise, 205 00:10:19,680 --> 00:10:21,930 I'm guessing you can think of someone in your life, 206 00:10:21,930 --> 00:10:26,130 maybe family or friend, who might very well struggle to get the thing back 207 00:10:26,130 --> 00:10:29,070 online if they don't know where the various cables go. 208 00:10:29,070 --> 00:10:31,470 And so this is the sort of theme and the spirit 209 00:10:31,470 --> 00:10:35,220 of the class to really make students feel more comfortable with technology 210 00:10:35,220 --> 00:10:37,920 by helping to take away some of the fear factor. 211 00:10:37,920 --> 00:10:40,530 Well, if they just pull out the plugs and put them back in, 212 00:10:40,530 --> 00:10:44,242 provided they power down safely, they're not going to do any damage. 213 00:10:44,242 --> 00:10:46,950 And all of these things, of course, have disparate shapes, if not 214 00:10:46,950 --> 00:10:49,050 colors, if not labels. 215 00:10:49,050 --> 00:10:53,100 So the goal is really to take that fear factor of technology away from folks. 216 00:10:53,100 --> 00:10:55,480 Now, you might recall a familiar face on the screen here. 217 00:10:55,480 --> 00:10:58,620 We also infused this class with some visual demonstration. 218 00:10:58,620 --> 00:11:03,630 So CS50's own Colton Ogden joins me here in his scientific lab coat. 219 00:11:03,630 --> 00:11:06,030 And we walk through some actual pieces of hardware. 220 00:11:06,030 --> 00:11:08,430 On the desk there in that photograph, do we 221 00:11:08,430 --> 00:11:12,780 have CPUs, and RAM, and other devices that you would see inside 222 00:11:12,780 --> 00:11:13,680 of a computer. 223 00:11:13,680 --> 00:11:18,120 And we draw all the more attention to those components to students. 224 00:11:18,120 --> 00:11:21,750 We then transition and focus for one or more weeks on the internet 225 00:11:21,750 --> 00:11:22,960 and how it works. 226 00:11:22,960 --> 00:11:26,190 We talk to students about home internet connections. 227 00:11:26,190 --> 00:11:28,920 Here in the US, cable modems are quite popular, 228 00:11:28,920 --> 00:11:31,380 as are DSL modems and other technologies. 229 00:11:31,380 --> 00:11:33,750 And we help students understand what it is 230 00:11:33,750 --> 00:11:37,780 you're getting from your ISP, or Internet Service Provider, 231 00:11:37,780 --> 00:11:41,040 and what all of those cables and technologies are doing for you. 232 00:11:41,040 --> 00:11:43,890 We then look more technically at one's Mac or PC. 233 00:11:43,890 --> 00:11:47,070 And we talk about how your computer is using the internet. 234 00:11:47,070 --> 00:11:50,640 We talk about IP, Internet Protocol, and IP addresses. 235 00:11:50,640 --> 00:11:54,360 We talk about a DNS and DHCP, a lot of these acronyms 236 00:11:54,360 --> 00:11:57,400 that students don't need to care about every day, 237 00:11:57,400 --> 00:12:01,200 but if they need to configure their computer or troubleshoot some problem, 238 00:12:01,200 --> 00:12:04,660 odds are they're going to see some mentions of these acronyms. 239 00:12:04,660 --> 00:12:09,000 And so the hope is to dispel any fear or confusion around these terms 240 00:12:09,000 --> 00:12:13,170 and help them understand that, while these terms might look fairly esoteric, 241 00:12:13,170 --> 00:12:15,780 once you have a basic understanding of how the internet works, 242 00:12:15,780 --> 00:12:19,900 you can start to make sense all the more of your world. 243 00:12:19,900 --> 00:12:24,220 Here is a screenshot of the same idea pictured here with Windows as well. 244 00:12:24,220 --> 00:12:26,850 And then we talk to students about their own home topology. 245 00:12:26,850 --> 00:12:30,790 Odds are many students have internet access in some form these days, 246 00:12:30,790 --> 00:12:34,140 whether through their phones, or cable modem, or DSL, or Fios, 247 00:12:34,140 --> 00:12:35,320 or something else. 248 00:12:35,320 --> 00:12:38,730 And so we help students understand how the home router interacts 249 00:12:38,730 --> 00:12:41,670 with maybe a built-in firewall, with their laptops, 250 00:12:41,670 --> 00:12:45,510 and desktops, and printers, and any number of other devices 251 00:12:45,510 --> 00:12:48,990 so that it just all makes sense and it isn't just something that someone 252 00:12:48,990 --> 00:12:50,820 more technical than they setup. 253 00:12:50,820 --> 00:12:54,540 It's something they could set up and troubleshoot themselves. 254 00:12:54,540 --> 00:12:58,600 Now, in CS50T, we also spend time on multimedia and file 255 00:12:58,600 --> 00:13:03,510 formats, so relate it to sound, and images, and videos, and the like. 256 00:13:03,510 --> 00:13:08,220 And while we do spend time in CS50x itself on digital forensics, 257 00:13:08,220 --> 00:13:12,810 and on file input and output, and on the representation of bitmaps and JPEGs, 258 00:13:12,810 --> 00:13:14,070 that's very low level. 259 00:13:14,070 --> 00:13:17,790 In CS50T, we sort of focus conceptually up here so 260 00:13:17,790 --> 00:13:21,510 that students understand what a GIF is, a JPEG, a ping, 261 00:13:21,510 --> 00:13:25,920 and how these file formats differ from one another, an MP3, or AAC 262 00:13:25,920 --> 00:13:28,350 file, or MIDI file, or WAV file. 263 00:13:28,350 --> 00:13:30,510 We help them make sense of all the various file 264 00:13:30,510 --> 00:13:32,940 formats that they might hear about or they occasionally 265 00:13:32,940 --> 00:13:35,460 download onto their own computers so that they 266 00:13:35,460 --> 00:13:37,290 can sort of understand why it is there are 267 00:13:37,290 --> 00:13:39,990 so many of these things in the first place. 268 00:13:39,990 --> 00:13:42,390 We talk to them about how images are represented. 269 00:13:42,390 --> 00:13:48,540 Here is a literal bitmap, zeros and ones that represent black and white pixels 270 00:13:48,540 --> 00:13:49,230 on the screen. 271 00:13:49,230 --> 00:13:51,840 And we talk to students about what an image really is. 272 00:13:51,840 --> 00:13:54,270 We encourage them to go home, and on their desktop, 273 00:13:54,270 --> 00:13:58,260 or laptop, or better yet, TV, put their eyes really close to the screen 274 00:13:58,260 --> 00:14:04,410 and see if they can't see the actual pixels on today's LED or LCD screens 275 00:14:04,410 --> 00:14:07,020 as well, so that they realize, oh, this technology 276 00:14:07,020 --> 00:14:08,970 has been with me all this time. 277 00:14:08,970 --> 00:14:10,500 We talk about compression. 278 00:14:10,500 --> 00:14:12,840 And let me ask the audience this one. 279 00:14:12,840 --> 00:14:17,100 Pictured here is an apple against a blue sky or background. 280 00:14:17,100 --> 00:14:19,410 And no matter what file format it's stored in, 281 00:14:19,410 --> 00:14:22,140 odds are we could compress it in some form. 282 00:14:22,140 --> 00:14:27,630 We could use fewer bits, less disk space to store the same picture. 283 00:14:27,630 --> 00:14:34,260 Any thoughts on how a file format might compress this photograph of an apple? 284 00:14:34,260 --> 00:14:36,660 What's the opportunity here, technically? 285 00:14:36,660 --> 00:14:39,470 Even if you don't know, what might your conjectures be? 286 00:14:39,470 --> 00:14:43,187 Ignacio, would you like to start with your thoughts? 287 00:14:43,187 --> 00:14:43,770 IGNACIO: Yeah. 288 00:14:43,770 --> 00:14:46,040 Good afternoon to you all. 289 00:14:46,040 --> 00:14:47,210 Thank you. 290 00:14:47,210 --> 00:14:49,130 Glad to see you again, David. 291 00:14:49,130 --> 00:14:50,390 DAVID: Likewise. 292 00:14:50,390 --> 00:14:54,310 IGNACIO: I think that one way to do this is, 293 00:14:54,310 --> 00:15:01,780 if you take all the blue area and match or bye or one bit for example and map 294 00:15:01,780 --> 00:15:06,220 all the red area another bit for example. 295 00:15:06,220 --> 00:15:17,470 I think that this compress a lot of this image in really small piece of file. 296 00:15:17,470 --> 00:15:20,110 DAVID: OK, by somehow grouping together the red and the blue-- 297 00:15:20,110 --> 00:15:21,400 I think that that makes sense. 298 00:15:21,400 --> 00:15:23,580 It's a step in a good direction, I think. 299 00:15:23,580 --> 00:15:28,390 Ahmad, do you want to elaborate from your perspective on the same question? 300 00:15:28,390 --> 00:15:28,910 AHMAD: Yes. 301 00:15:28,910 --> 00:15:32,980 I believe also we can do lossy compression. 302 00:15:32,980 --> 00:15:37,590 By reducing the resolution of the image, this can also-- 303 00:15:37,590 --> 00:15:40,740 so what Ignacio said is basically-- 304 00:15:40,740 --> 00:15:41,240 I'm sorry. 305 00:15:41,240 --> 00:15:44,170 What Ignacio said is maybe lossless compression. 306 00:15:44,170 --> 00:15:48,810 But we also have lossy compression that reduces the resolution of the image. 307 00:15:48,810 --> 00:15:51,310 DAVID: I'm so glad you used those terms, because we use them 308 00:15:51,310 --> 00:15:55,930 in CS50T as well, lossless compression, where you somehow use fewer bits 309 00:15:55,930 --> 00:16:00,340 but you don't lose any useful information, and lossy compression, 310 00:16:00,340 --> 00:16:05,230 where you do start to throw away quality as by shrinking it or using 311 00:16:05,230 --> 00:16:07,970 even fewer colors in the spectrum. 312 00:16:07,970 --> 00:16:10,360 And so if you think about this, though, at a low level, 313 00:16:10,360 --> 00:16:12,460 as we encourage students to do, how might you 314 00:16:12,460 --> 00:16:15,310 describe this picture to someone else without using 315 00:16:15,310 --> 00:16:17,470 the abstraction of an apple? 316 00:16:17,470 --> 00:16:21,670 You might literally start at the top and go from left to right, top to bottom, 317 00:16:21,670 --> 00:16:25,640 and say that there is all of these pixels, horizontally and vertically. 318 00:16:25,640 --> 00:16:28,990 And you might literally describe each pixel, blue, blue, blue, blue, blue, 319 00:16:28,990 --> 00:16:32,200 blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, blue, 320 00:16:32,200 --> 00:16:33,650 blue, blue, blue, and so forth. 321 00:16:33,650 --> 00:16:37,150 Eventually you might say, blue, blue, blue, red, red, red, red, red, blue, 322 00:16:37,150 --> 00:16:38,030 blue, blue. 323 00:16:38,030 --> 00:16:41,230 But you can hear in my voice, of course, a huge amount of redundancy, 324 00:16:41,230 --> 00:16:43,570 as I'm describing again and again, really, 325 00:16:43,570 --> 00:16:46,960 the same color of different pixels. 326 00:16:46,960 --> 00:16:50,350 So you could imagine taking a lossless approach 327 00:16:50,350 --> 00:16:53,820 and just storing less information but-- 328 00:16:53,820 --> 00:16:59,830 sorry, storing fewer bits, but not losing any information fundamentally. 329 00:16:59,830 --> 00:17:04,089 For instance, I could describe the same picture with blue 10 times 330 00:17:04,089 --> 00:17:09,130 to the right, blue 10 times to the right, blue three times to the right, 331 00:17:09,130 --> 00:17:11,119 then red, then blue again. 332 00:17:11,119 --> 00:17:14,260 And you could imagine sort of verbally and digitally compressing 333 00:17:14,260 --> 00:17:17,710 the image by using run lengths of some sort 334 00:17:17,710 --> 00:17:22,329 and describing a series of pixels and their colors as opposed to every pixel 335 00:17:22,329 --> 00:17:23,053 individually. 336 00:17:23,053 --> 00:17:24,970 So we talk to students about these primitives. 337 00:17:24,970 --> 00:17:27,250 And we get them thinking about technology in a way 338 00:17:27,250 --> 00:17:30,670 where, even if they've never heard of a file format before, 339 00:17:30,670 --> 00:17:36,190 they can start to reason methodically about how this problem could be solved, 340 00:17:36,190 --> 00:17:39,790 even independent of the particular technologies with which they're 341 00:17:39,790 --> 00:17:40,480 familiar. 342 00:17:40,480 --> 00:17:41,360 Here is another one. 343 00:17:41,360 --> 00:17:43,270 So this picture here, of course, represents 344 00:17:43,270 --> 00:17:47,080 a few flowers and a bumblebee flying from left to right. 345 00:17:47,080 --> 00:17:49,450 And even though the bumblebee is moving literally 346 00:17:49,450 --> 00:17:52,550 from left to right in each of these frames, from a video, 347 00:17:52,550 --> 00:17:55,300 for instance, what's not changing is the flowers. 348 00:17:55,300 --> 00:17:57,760 So another thought question we might ask of students is, 349 00:17:57,760 --> 00:18:01,240 for video, how can you go about compressing the video? 350 00:18:01,240 --> 00:18:03,760 Well, you can do lossy again, as Ahmad proposes. 351 00:18:03,760 --> 00:18:07,690 And you can shrink the resolution or use fewer colors. 352 00:18:07,690 --> 00:18:10,960 But you could also perhaps do it losslessley, 353 00:18:10,960 --> 00:18:14,920 as by storing only what changes frame to frame. 354 00:18:14,920 --> 00:18:18,670 A frame in the video is really just an image flying across the screen 355 00:18:18,670 --> 00:18:19,760 very quickly. 356 00:18:19,760 --> 00:18:22,600 So if we really store the first picture of the flowers 357 00:18:22,600 --> 00:18:25,240 and the last pictures of the flowers, but in between there, 358 00:18:25,240 --> 00:18:28,480 we just store what's changing, the position of the bumblebee, 359 00:18:28,480 --> 00:18:33,040 odds are, that is sufficient information to reconstruct the original video 360 00:18:33,040 --> 00:18:37,900 losslessley with no loss of quality, but we can store a lot less information, 361 00:18:37,900 --> 00:18:41,980 because we don't have to remember the flowers again, and again, and again. 362 00:18:41,980 --> 00:18:45,430 So we also talk to students about Hollywood, and TV, and movies. 363 00:18:45,430 --> 00:18:49,810 And this is a clip from some show like CSI, Crime Scene Investigation. 364 00:18:49,810 --> 00:18:53,650 And in these kinds of shows, there is always, like, a glint in someone's eye, 365 00:18:53,650 --> 00:18:54,820 like this one here. 366 00:18:54,820 --> 00:18:57,940 And if you zoom in on it, there is the bad guy. 367 00:18:57,940 --> 00:18:59,600 And you can capture the criminal. 368 00:18:59,600 --> 00:19:03,430 But of course, if you zoom in on a screen like this, in a photograph 369 00:19:03,430 --> 00:19:06,490 or video, odds are you're only going to see pixels like this. 370 00:19:06,490 --> 00:19:08,290 And you can probably only barely see them 371 00:19:08,290 --> 00:19:10,090 on my screen because of compression. 372 00:19:10,090 --> 00:19:12,610 But there is certainly no clear evidence of who 373 00:19:12,610 --> 00:19:15,580 it was that was shimmering in that fellow's eyeglass. 374 00:19:15,580 --> 00:19:17,830 And so we talk to students about why this is 375 00:19:17,830 --> 00:19:20,050 and why some of what you see on movies and TV 376 00:19:20,050 --> 00:19:22,390 is just nonsense, technologically. 377 00:19:22,390 --> 00:19:26,230 It doesn't make sense to be able to see that glint in the eye 378 00:19:26,230 --> 00:19:30,360 if the information was not stored, for instance, at a high enough resolution. 379 00:19:30,360 --> 00:19:33,190 Well, after multimedia, we transition to security. 380 00:19:33,190 --> 00:19:35,072 And we talk about passwords, for instance. 381 00:19:35,072 --> 00:19:37,030 And here, for instance-- this is of last year-- 382 00:19:37,030 --> 00:19:41,420 were the top-10 worst passwords on the internet. 383 00:19:41,420 --> 00:19:44,452 And if you yourself are using any of these passwords, 384 00:19:44,452 --> 00:19:46,660 you better change it, because any of the students you 385 00:19:46,660 --> 00:19:49,450 might teach this material to are perhaps going to get a bit 386 00:19:49,450 --> 00:19:52,270 curious as to whether you indeed are. 387 00:19:52,270 --> 00:19:55,030 So we talk about why these passwords are insecure 388 00:19:55,030 --> 00:19:58,450 and how a hacker might go about figuring out your password. 389 00:19:58,450 --> 00:20:00,310 And it might be via brute force, literally 390 00:20:00,310 --> 00:20:02,440 trying all of these most-popular passwords 391 00:20:02,440 --> 00:20:06,370 on your system or mine trying to get into someone's account. 392 00:20:06,370 --> 00:20:08,860 And we talk about why websites have you add things 393 00:20:08,860 --> 00:20:12,340 like numbers, and punctuation, and have a certain length. 394 00:20:12,340 --> 00:20:16,300 And we even give them a sense mathematically of how much more secure 395 00:20:16,300 --> 00:20:18,950 a password that's this long is than a password, 396 00:20:18,950 --> 00:20:20,830 for instance, that's this long-- 397 00:20:20,830 --> 00:20:23,650 or less secure than a password that's this long. 398 00:20:23,650 --> 00:20:28,840 After that we talk about other factors, two-factor or two-step authentication 399 00:20:28,840 --> 00:20:31,690 that you might use with your Gmail account or some other service, 400 00:20:31,690 --> 00:20:34,360 where you tend to have a physical device like your phone 401 00:20:34,360 --> 00:20:38,290 that you need to read a code off of before logging into an account. 402 00:20:38,290 --> 00:20:42,670 And we talk about familiar technologies as well, like Wi-Fi, for instance, 403 00:20:42,670 --> 00:20:47,440 and just to what extent are students data insecure 404 00:20:47,440 --> 00:20:51,220 when using a laptop or phone, and what it means to actually use 405 00:20:51,220 --> 00:20:56,740 WPA or WPA2 and some form of encryption in your Wi-Fi, let alone something 406 00:20:56,740 --> 00:20:58,690 like HTTPS. 407 00:20:58,690 --> 00:21:01,270 We talk about matters of privacy most students are probably 408 00:21:01,270 --> 00:21:05,620 generally familiar with cookies having some implication for their privacy, 409 00:21:05,620 --> 00:21:08,390 but odds are, most don't really understand what that means. 410 00:21:08,390 --> 00:21:10,660 So we explain what cookies actually are, sort 411 00:21:10,660 --> 00:21:14,590 of small files or pieces of information on your computer left there 412 00:21:14,590 --> 00:21:15,580 by some server. 413 00:21:15,580 --> 00:21:19,480 And we help them understand what's going on when they use incognito mode, 414 00:21:19,480 --> 00:21:24,790 or more importantly, what's not going on when they use incognito or private mode 415 00:21:24,790 --> 00:21:27,663 so that they understand the implications of their decisions 416 00:21:27,663 --> 00:21:29,830 when they're doing something sensitive, whether it's 417 00:21:29,830 --> 00:21:32,230 with some personal document, or financial, or health 418 00:21:32,230 --> 00:21:35,920 information, or the like, they understand exactly what information 419 00:21:35,920 --> 00:21:39,070 is being stored on their computer, where it's being transmitted, 420 00:21:39,070 --> 00:21:42,880 who can access it, and for instance, for how long. 421 00:21:42,880 --> 00:21:45,160 And then we transition towards the end of the course 422 00:21:45,160 --> 00:21:48,100 to some final topics, one of which is web development. 423 00:21:48,100 --> 00:21:52,080 Now, we don't go into nearly the same depth as we do in CS50x. 424 00:21:52,080 --> 00:21:53,080 There is no flask. 425 00:21:53,080 --> 00:21:55,180 There is no dynamic user input and output. 426 00:21:55,180 --> 00:21:58,750 But we do introduce students to HTTP, the protocol 427 00:21:58,750 --> 00:22:00,550 that underlies the web itself. 428 00:22:00,550 --> 00:22:04,240 And we help them make sense of 404 and all of the other status codes 429 00:22:04,240 --> 00:22:07,180 that you may or may not see when visiting a website. 430 00:22:07,180 --> 00:22:11,260 We talk to them about HTML and how you would make your own web page. 431 00:22:11,260 --> 00:22:14,530 And we have students make their own personal home page, but purely 432 00:22:14,530 --> 00:22:19,960 static ones using only HTML and CSS, maybe using a little bit of JavaScript. 433 00:22:19,960 --> 00:22:24,550 We help them understand as a teaser for classes like CS50x 434 00:22:24,550 --> 00:22:27,760 how this text-based language, HTML, can really 435 00:22:27,760 --> 00:22:31,420 be mapped to a picture of sorts, like this DOM here, 436 00:22:31,420 --> 00:22:33,760 this Document Object Model, but of course it's 437 00:22:33,760 --> 00:22:36,460 not until a class like CS50x that students 438 00:22:36,460 --> 00:22:41,140 might code that manipulate in any detail that kind of tree structure. 439 00:22:41,140 --> 00:22:43,390 But they see it in this class, 440 00:22:43,390 --> 00:22:45,970 And then lastly, and perhaps the best setup 441 00:22:45,970 --> 00:22:49,060 for something like CS50x itself as a next step 442 00:22:49,060 --> 00:22:51,670 is the course's introduction to programming. 443 00:22:51,670 --> 00:22:55,040 We start, as in CS50, with pseudocode, flipping through a phone book, 444 00:22:55,040 --> 00:22:57,820 for instance, looking for a name and a number. 445 00:22:57,820 --> 00:22:59,470 We introduce students to scratch. 446 00:22:59,470 --> 00:23:03,250 And so we spend time introducing them to primitives 447 00:23:03,250 --> 00:23:06,700 of procedural languages, like conditions, and loops, and variables, 448 00:23:06,700 --> 00:23:08,230 and functions, and the like. 449 00:23:08,230 --> 00:23:11,710 We don't get into great detail on more advanced topics like threads, 450 00:23:11,710 --> 00:23:15,400 and events, and that kind of event-based programming per se. 451 00:23:15,400 --> 00:23:18,400 We leave that more for CS50x and onward. 452 00:23:18,400 --> 00:23:21,910 But students do have an opportunity to make their own scratch project 453 00:23:21,910 --> 00:23:24,490 and hopefully whet their appetite for diving 454 00:23:24,490 --> 00:23:29,800 all the more immersively into a programming class like CS50x itself. 455 00:23:29,800 --> 00:23:32,800 And then at the end of the semester, and really, throughout the semester 456 00:23:32,800 --> 00:23:36,480 do we have assignments followed by a final exam of sorts. 457 00:23:36,480 --> 00:23:39,880 And Brian, if you wouldn't mind pasting this URL into the chat window, 458 00:23:39,880 --> 00:23:43,480 here is a sample exam of questions that we might 459 00:23:43,480 --> 00:23:45,490 administer at the end of this course. 460 00:23:45,490 --> 00:23:49,350 And you'll see that all of the questions really are thought provoking, 461 00:23:49,350 --> 00:23:51,700 they're concept oriented. 462 00:23:51,700 --> 00:23:55,600 And they're meant to help students wrestle with new problems 463 00:23:55,600 --> 00:24:00,380 that are inspired by the concepts that we've looked at in the class itself. 464 00:24:00,380 --> 00:24:03,850 And so indeed, in terms of assessments, and what we make available to teachers, 465 00:24:03,850 --> 00:24:08,380 is each week, each of these modules, hardware, and internet, and multimedia, 466 00:24:08,380 --> 00:24:10,600 and web development, and so forth, all are 467 00:24:10,600 --> 00:24:12,400 accompanied by these sorts of assignments 468 00:24:12,400 --> 00:24:14,440 that look like this sample exam. 469 00:24:14,440 --> 00:24:16,120 We tend to use Google Forms with them. 470 00:24:16,120 --> 00:24:18,453 But you can certainly use any technology that allows you 471 00:24:18,453 --> 00:24:21,580 to ask questions and solicit answers. 472 00:24:21,580 --> 00:24:25,120 And they all tend to be short-answer-style questions, to which 473 00:24:25,120 --> 00:24:29,530 there is often a right answer, but there is often a gray area and opportunity 474 00:24:29,530 --> 00:24:31,390 for students to really think about a problem 475 00:24:31,390 --> 00:24:34,090 and propose, with the proverbial engineering hat 476 00:24:34,090 --> 00:24:37,960 on, their own solution to a problem. 477 00:24:37,960 --> 00:24:40,390 And so that, then, is CS50T. 478 00:24:40,390 --> 00:24:43,070 479 00:24:43,070 --> 00:24:48,600 Any questions or comments that I can answer here? 480 00:24:48,600 --> 00:24:51,530 And all of these materials already are available 481 00:24:51,530 --> 00:24:54,750 at both the OpenCourseWare URL that Brian pasted earlier, 482 00:24:54,750 --> 00:24:57,320 as well as on edX and other sites. 483 00:24:57,320 --> 00:24:58,760 David, can we go over to you? 484 00:24:58,760 --> 00:25:00,860 Question or comment? 485 00:25:00,860 --> 00:25:05,330 DAVID LANE: So I see how the link that was provided by Brian 486 00:25:05,330 --> 00:25:07,490 provides access to the resources. 487 00:25:07,490 --> 00:25:10,790 It look like when I went to submit a unit assignment, 488 00:25:10,790 --> 00:25:14,000 then sent me over to edX. 489 00:25:14,000 --> 00:25:16,940 And I think if the students submitted through that, I might not 490 00:25:16,940 --> 00:25:18,510 be able to see that work. 491 00:25:18,510 --> 00:25:21,770 So how would you recommend students access these forms 492 00:25:21,770 --> 00:25:24,625 and submit assignments if we're using it locally? 493 00:25:24,625 --> 00:25:26,750 DAVID: Really good question-- so for these courses, 494 00:25:26,750 --> 00:25:30,860 we would encourage you to use your own copies of the forms. 495 00:25:30,860 --> 00:25:33,830 Odds are, depending on your students and your schedule, 496 00:25:33,830 --> 00:25:36,470 you might want to assign them in shorter form any way 497 00:25:36,470 --> 00:25:38,390 to split them up into multiple assignments, 498 00:25:38,390 --> 00:25:39,980 assign one question per day. 499 00:25:39,980 --> 00:25:44,240 It's really varied at both the high school and upper level as well. 500 00:25:44,240 --> 00:25:47,060 And in that case, the answers would all go directly to you. 501 00:25:47,060 --> 00:25:50,750 We do not all automatically grade these answers, in so far 502 00:25:50,750 --> 00:25:52,380 as they are short answers. 503 00:25:52,380 --> 00:25:54,750 So there isn't something like check50 for these. 504 00:25:54,750 --> 00:25:58,310 So we would encourage teachers, whether using Google forms or any technology, 505 00:25:58,310 --> 00:26:03,600 to simply adapt the assignments to whatever technology they prefer. 506 00:26:03,600 --> 00:26:07,070 Rosa, over to you next. 507 00:26:07,070 --> 00:26:09,260 ROSA: One question. 508 00:26:09,260 --> 00:26:12,830 This is, like, the first part of the AP CS50. 509 00:26:12,830 --> 00:26:18,620 So you mentioned that, for you all at Harvard, it takes one week per topic. 510 00:26:18,620 --> 00:26:24,350 Traditionally, how many weeks is spread out in the AP context? 511 00:26:24,350 --> 00:26:27,280 DAVID: In the AP context, it depends on the teacher, 512 00:26:27,280 --> 00:26:32,180 but I would spend no more than 10 or 12 weeks, I would say. 513 00:26:32,180 --> 00:26:35,720 And even that is probably longer than it needs to be. 514 00:26:35,720 --> 00:26:37,820 At Harvard's extension school, for instance, we 515 00:26:37,820 --> 00:26:40,070 spread this course out over 12 weeks. 516 00:26:40,070 --> 00:26:43,880 And the way we structure it is we have students watch the materials in one 517 00:26:43,880 --> 00:26:46,580 week and start on the assignments. 518 00:26:46,580 --> 00:26:50,070 The next week we have hands-on sections or recitations with one 519 00:26:50,070 --> 00:26:52,070 of the teaching fellows, which is an opportunity 520 00:26:52,070 --> 00:26:55,970 to explore the material in more detail to ask questions about it, 521 00:26:55,970 --> 00:26:58,370 to perhaps re-enact some of the demonstrations 522 00:26:58,370 --> 00:27:00,080 that you might have seen in the video. 523 00:27:00,080 --> 00:27:02,540 So 12 weeks is a reasonable pace. 524 00:27:02,540 --> 00:27:06,290 I think you could spend more time, but I suspect, at that point, 525 00:27:06,290 --> 00:27:11,180 your students might be raring to go for four more-advanced material thereafter. 526 00:27:11,180 --> 00:27:15,120 Ignacio, over to you. 527 00:27:15,120 --> 00:27:16,980 IGNACIO: Oh, thank you. 528 00:27:16,980 --> 00:27:19,730 Two questions-- the first one is, what is 529 00:27:19,730 --> 00:27:23,730 the prerequisite, the background that these students need, 530 00:27:23,730 --> 00:27:28,560 for example, high school, middle school, or starting college? 531 00:27:28,560 --> 00:27:32,940 And this school, we have, for example, a way 532 00:27:32,940 --> 00:27:38,490 to work with Harvard to [INAUDIBLE] certificate to our students, 533 00:27:38,490 --> 00:27:40,470 because I think that is a good course. 534 00:27:40,470 --> 00:27:45,300 And I can, with my colleagues, offer this course 535 00:27:45,300 --> 00:27:49,020 as an extension course on our college. 536 00:27:49,020 --> 00:27:53,130 So how does certification works? 537 00:27:53,130 --> 00:27:56,910 DAVID: In terms of the age group for which the course would work well? 538 00:27:56,910 --> 00:28:02,460 IGNACIO: For the CS50T, there is a kind of certification 539 00:28:02,460 --> 00:28:05,423 like in CS50x and others? 540 00:28:05,423 --> 00:28:07,590 DAVID: At the end of the semester, yes, for students 541 00:28:07,590 --> 00:28:12,480 you do submit their work through edX, we do offer CS50 certificates 542 00:28:12,480 --> 00:28:15,525 of our own, similar in spirit to the ones you might have seen last week. 543 00:28:15,525 --> 00:28:18,660 And edX also offers their own verified certificate. 544 00:28:18,660 --> 00:28:21,510 Of course, if a teacher has their students, 545 00:28:21,510 --> 00:28:24,240 as David notes, submitting directly to them, 546 00:28:24,240 --> 00:28:29,220 that would circumvent that typical process. 547 00:28:29,220 --> 00:28:32,010 But we can work directly with teachers to create certificates 548 00:28:32,010 --> 00:28:34,170 for your own students of interest. 549 00:28:34,170 --> 00:28:36,540 And in terms of the target audience, we tend 550 00:28:36,540 --> 00:28:39,960 to teach this material to students who are generally 551 00:28:39,960 --> 00:28:44,820 in high school, or college, or are working adults or retired adults. 552 00:28:44,820 --> 00:28:47,820 But I think for 13 years old and up if not even 553 00:28:47,820 --> 00:28:52,680 younger would be a reasonable target audience for CS50T's type of material. 554 00:28:52,680 --> 00:28:54,330 IGNACIO: OK, thank you. 555 00:28:54,330 --> 00:28:56,230 DAVID: Of course. 556 00:28:56,230 --> 00:28:57,030 Kaloa? 557 00:28:57,030 --> 00:28:59,110 I'm sorry if I'm not pronouncing your name right. 558 00:28:59,110 --> 00:29:02,772 But Kaloa, if you'd like to say it and ask your question too? 559 00:29:02,772 --> 00:29:03,480 KALOA: Thank you. 560 00:29:03,480 --> 00:29:05,670 Thank you, David. 561 00:29:05,670 --> 00:29:08,520 I'm asking you about operating system. 562 00:29:08,520 --> 00:29:13,320 You suggest one, for example, Linux or Windows. 563 00:29:13,320 --> 00:29:23,010 For example, when we choose Linux, you think it's for the commands? 564 00:29:23,010 --> 00:29:26,310 DAVID: So an operating system for what context? 565 00:29:26,310 --> 00:29:29,010 For taking a class like CS50T? 566 00:29:29,010 --> 00:29:31,230 KALOA: Yeah. 567 00:29:31,230 --> 00:29:35,170 When you presented, you present the hardware, the compression. 568 00:29:35,170 --> 00:29:37,750 And you didn't talk about the operating system. 569 00:29:37,750 --> 00:29:38,950 And I think it's important. 570 00:29:38,950 --> 00:29:47,310 For example, if after that, they would utilize git, for example. 571 00:29:47,310 --> 00:29:54,060 And they have had the basics about commands on the [INAUDIBLE],, no? 572 00:29:54,060 --> 00:29:56,910 DAVID: This course does not introduce students to a command line, 573 00:29:56,910 --> 00:29:59,990 or commands like git, or the like. 574 00:29:59,990 --> 00:30:02,850 It is completely agnostic when it comes to operating system. 575 00:30:02,850 --> 00:30:05,370 I in the lectures tend to use Macs. 576 00:30:05,370 --> 00:30:07,560 Colton sometimes uses PCs. 577 00:30:07,560 --> 00:30:11,400 When we focus on computers themselves, we introduce students to the hardware. 578 00:30:11,400 --> 00:30:14,800 We do not spend much time focusing on operating system details. 579 00:30:14,800 --> 00:30:17,010 So for this course, it does not matter what operating 580 00:30:17,010 --> 00:30:19,950 student a teacher or a student has. 581 00:30:19,950 --> 00:30:23,750 If you happen to be in an environment like a computer lab or a classroom 582 00:30:23,750 --> 00:30:27,240 that all has the same types of computers and operating systems, 583 00:30:27,240 --> 00:30:30,990 you can absolutely supplement CS50T's own material 584 00:30:30,990 --> 00:30:34,980 and talk to students about what it is an operating system does, and some 585 00:30:34,980 --> 00:30:40,144 of its features, and so forth, but that's not covered in the class itself. 586 00:30:40,144 --> 00:30:41,080 KALOA: Thank you. 587 00:30:41,080 --> 00:30:41,880 DAVID: Sure. 588 00:30:41,880 --> 00:30:44,620 Chefket, over to you. 589 00:30:44,620 --> 00:30:45,900 CHEFKET: Do you hear me? 590 00:30:45,900 --> 00:30:46,950 DAVID: I do, yes. 591 00:30:46,950 --> 00:30:48,840 CHEFKET: OK, thank you. 592 00:30:48,840 --> 00:30:53,310 In fact, I have no question, but just to mention 593 00:30:53,310 --> 00:30:57,540 that I have completed this course, which was really valuable. 594 00:30:57,540 --> 00:31:01,980 And I have recommended it also to my students. 595 00:31:01,980 --> 00:31:05,660 Also, I have used the practice to my students forms and quizzes 596 00:31:05,660 --> 00:31:08,100 that I got during this course. 597 00:31:08,100 --> 00:31:10,920 And really, they like so much them. 598 00:31:10,920 --> 00:31:15,720 And in a short time, I was friendly with these forms and quizzes. 599 00:31:15,720 --> 00:31:22,600 And I will recommend to my colleagues also and to my students next year, 600 00:31:22,600 --> 00:31:23,730 academic year. 601 00:31:23,730 --> 00:31:25,980 It's a very, very valuable of course. 602 00:31:25,980 --> 00:31:29,670 And I love so much programming in Scratch. 603 00:31:29,670 --> 00:31:30,990 It was first time for me. 604 00:31:30,990 --> 00:31:33,717 But really, really, I enjoyed that project. 605 00:31:33,717 --> 00:31:34,800 It's that kind of project. 606 00:31:34,800 --> 00:31:41,960 Also web development, and security engineering, a lot of it-- 607 00:31:41,960 --> 00:31:44,315 so much, thank you, David, for that. 608 00:31:44,315 --> 00:31:45,440 DAVID: You're very welcome. 609 00:31:45,440 --> 00:31:45,950 Thank you. 610 00:31:45,950 --> 00:31:49,720 I will call on you for every one of our classes now. 611 00:31:49,720 --> 00:31:51,530 Joseph, over to you next? 612 00:31:51,530 --> 00:31:52,340 JOSEPH: Hi. 613 00:31:52,340 --> 00:31:57,680 Quick question regarding C as the choice for what you use-- and I understand, 614 00:31:57,680 --> 00:32:00,150 because it has the compiler. 615 00:32:00,150 --> 00:32:03,870 And students need to understand that process. 616 00:32:03,870 --> 00:32:05,630 But I notice a trend. 617 00:32:05,630 --> 00:32:09,510 And this is Stanford, and MIT. 618 00:32:09,510 --> 00:32:14,280 Like, slowly they switched from JavaScript for their 101 class 619 00:32:14,280 --> 00:32:15,755 to Python. 620 00:32:15,755 --> 00:32:20,810 And there is a lot of another trend driven by Google and AWS 621 00:32:20,810 --> 00:32:23,510 where a lot of cloud is based on Python. 622 00:32:23,510 --> 00:32:31,010 Like, they use command set used to stand up a server or a Kubernetes cluster 623 00:32:31,010 --> 00:32:36,410 are all mostly based on Python, which is becoming, like the number-one most 624 00:32:36,410 --> 00:32:37,760 popular language. 625 00:32:37,760 --> 00:32:43,500 Have you given any thought to do more than just a lecture six two-hour thing 626 00:32:43,500 --> 00:32:46,050 on Python within the formal course? 627 00:32:46,050 --> 00:32:46,550 DAVID: Sure. 628 00:32:46,550 --> 00:32:50,780 So to be clear, CS50T does not teach programming in textual form. 629 00:32:50,780 --> 00:32:51,770 We only use Scratch. 630 00:32:51,770 --> 00:32:54,170 CS50x, to which I gather you're alluding, 631 00:32:54,170 --> 00:32:56,900 does introduce students to Python at the tail end of the class, 632 00:32:56,900 --> 00:33:00,350 but we spend much of the beginning of the semester on C. Brian, 633 00:33:00,350 --> 00:33:03,800 if you wouldn't mind pasting our official answer on Quora 634 00:33:03,800 --> 00:33:09,290 to this question-- in a nutshell, I pedagogical find that C in CS50x 635 00:33:09,290 --> 00:33:12,740 is a helpful way, bottom up, for students to understand 636 00:33:12,740 --> 00:33:14,580 what's going on inside of a computer. 637 00:33:14,580 --> 00:33:16,760 Two, I think it gives them a better appreciation 638 00:33:16,760 --> 00:33:21,020 for a higher-level language like Python without hiding initially 639 00:33:21,020 --> 00:33:23,660 what it is the computer is doing, because indeed, with C, 640 00:33:23,660 --> 00:33:25,040 there really is no magic. 641 00:33:25,040 --> 00:33:27,200 If you want something to be in one place in memory, 642 00:33:27,200 --> 00:33:30,410 you need to put it there, whereas a higher-level language like Python 643 00:33:30,410 --> 00:33:34,500 does a lot more for the students, which has advantages, of course, too. 644 00:33:34,500 --> 00:33:37,100 But allow me to defer to the length that Brian 645 00:33:37,100 --> 00:33:40,250 can paste to Quora for a more refined answer 646 00:33:40,250 --> 00:33:44,610 here just so we can keep the focus on CS50T. 647 00:33:44,610 --> 00:33:45,360 JOSEPH: Thank you. 648 00:33:45,360 --> 00:33:47,540 DAVID: Jerome, over to you next. 649 00:33:47,540 --> 00:33:53,920 JEROME: My question is regarding the update of the CS50 Understanding 650 00:33:53,920 --> 00:33:54,820 Technology. 651 00:33:54,820 --> 00:33:58,520 And I'm asking this because I realize that CS50 for lawyers 652 00:33:58,520 --> 00:34:04,130 was updated after two years and also CS50 web programming taught 653 00:34:04,130 --> 00:34:05,510 by Brian Yu. 654 00:34:05,510 --> 00:34:10,929 So my question is, do you guys plan on updating CS50 Understanding Technology, 655 00:34:10,929 --> 00:34:13,820 or given the nature of the course, It's something 656 00:34:13,820 --> 00:34:16,355 you guys think it's not needed? 657 00:34:16,355 --> 00:34:17,480 DAVID: It's not needed yet. 658 00:34:17,480 --> 00:34:20,300 We've talked about this internally, but the material 659 00:34:20,300 --> 00:34:23,870 is still very much germane to current technologies. 660 00:34:23,870 --> 00:34:26,270 Having taught that class or some version for it 661 00:34:26,270 --> 00:34:29,030 off and on for the past 20 years, it eventually 662 00:34:29,030 --> 00:34:31,159 absolutely drifts out of date. 663 00:34:31,159 --> 00:34:35,630 Back when I started, we were probably talking about how many megabytes of RAM 664 00:34:35,630 --> 00:34:40,520 you and I have in our computers and how many megahertz our CPUs were as opposed 665 00:34:40,520 --> 00:34:42,728 to gigabytes and gigahertz. 666 00:34:42,728 --> 00:34:44,520 So those kinds of numbers change over time. 667 00:34:44,520 --> 00:34:46,770 We don't think we've crossed the inflection point yet. 668 00:34:46,770 --> 00:34:49,070 Eventually we probably will update CS50T. 669 00:34:49,070 --> 00:34:53,239 But I would not have any concerns with teaching it now in its current form. 670 00:34:53,239 --> 00:34:55,310 It has not drifted out of date. 671 00:34:55,310 --> 00:35:02,210 By contrast, the mobile class experienced precisely that gotcha. 672 00:35:02,210 --> 00:35:05,440 All right, well, allow me to steer us toward the second of the three classes. 673 00:35:05,440 --> 00:35:07,320 And here you'll begin to see overlap. 674 00:35:07,320 --> 00:35:10,820 So for the portions that overlap, I'll move a bit more quickly and highlight, 675 00:35:10,820 --> 00:35:12,230 really, the differences. 676 00:35:12,230 --> 00:35:15,300 So CS50B, for Business, is, of course, again, 677 00:35:15,300 --> 00:35:17,750 inspired by a class I teach at Harvard's business school. 678 00:35:17,750 --> 00:35:22,190 And this class has been adapted now, is OpenCourseWare at this URL here. 679 00:35:22,190 --> 00:35:25,350 If, Brian, you wouldn't mind pasting this URL on the screen as well. 680 00:35:25,350 --> 00:35:28,670 And it's also of course available on edX as well. 681 00:35:28,670 --> 00:35:32,610 In terms of the syllabus, it covers similar material , from again, 682 00:35:32,610 --> 00:35:36,500 a more top-down, managerial perspective on computational thinking, 683 00:35:36,500 --> 00:35:39,710 programming languages, internet technologies and web development, 684 00:35:39,710 --> 00:35:43,070 and then some new topics toward the end of the semester including technology 685 00:35:43,070 --> 00:35:47,000 stacks, all of the various building blocks you might bring to bear on an IT 686 00:35:47,000 --> 00:35:51,310 solution, as well as cloud computing, topics that we don't touch on at all 687 00:35:51,310 --> 00:35:54,050 in CS50T. 688 00:35:54,050 --> 00:35:57,980 In terms of where we begin the semester, it too borrows some inspiration 689 00:35:57,980 --> 00:35:59,660 from CS50x itself. 690 00:35:59,660 --> 00:36:02,030 You might recall that we introduced students to problem 691 00:36:02,030 --> 00:36:05,630 solving by way of inputs and outputs, between which are algorithms, 692 00:36:05,630 --> 00:36:08,370 step by step instructions for solving some problem. 693 00:36:08,370 --> 00:36:11,030 But in the business class, unlike the technology class, 694 00:36:11,030 --> 00:36:14,690 we give students a little bit more theory, just as we do in CS50x. 695 00:36:14,690 --> 00:36:18,500 And we introduce them to running time, and even asymptotic running time, 696 00:36:18,500 --> 00:36:20,900 so that they, in a managerial position, can 697 00:36:20,900 --> 00:36:24,500 have a more informed, intelligent conversation with an engineer, 698 00:36:24,500 --> 00:36:29,240 and roughly understand what it is when an engineer says that one algorithm is 699 00:36:29,240 --> 00:36:30,860 "better" than another they. 700 00:36:30,860 --> 00:36:33,710 Have a mental model with which to compare things. 701 00:36:33,710 --> 00:36:36,770 As opposed to trusting entirely a technical team, 702 00:36:36,770 --> 00:36:39,900 they can actually engage in those conversations with them. 703 00:36:39,900 --> 00:36:44,390 We introduce students in the CS50B course to programming at a high level, 704 00:36:44,390 --> 00:36:46,480 but really, programming languages. 705 00:36:46,480 --> 00:36:48,950 So not just Scratch, though we do use some Scratch, 706 00:36:48,950 --> 00:36:53,150 but we introduce students by way of name and exposure 707 00:36:53,150 --> 00:36:56,300 to the whole menu of popular languages that are out there. 708 00:36:56,300 --> 00:36:58,070 And pictured here are just some of them. 709 00:36:58,070 --> 00:37:01,850 But we give them some exposure to some of the more commonly used languages. 710 00:37:01,850 --> 00:37:06,680 And we talk with students about when you might use something like C or C++, 711 00:37:06,680 --> 00:37:11,090 when you might instead reach for Python, or PHP, or Ruby or Java, 712 00:37:11,090 --> 00:37:13,550 when you might use Swift or Java again. 713 00:37:13,550 --> 00:37:17,540 And we help students categorize languages so that they generally 714 00:37:17,540 --> 00:37:19,850 know what types of language are generally 715 00:37:19,850 --> 00:37:23,840 used to solve what types of problems, so in more depth than we 716 00:37:23,840 --> 00:37:25,670 discuss them in CS50T. 717 00:37:25,670 --> 00:37:28,920 But the students here too do get an opportunity to play with Scratch. 718 00:37:28,920 --> 00:37:31,840 And even though its target audience is officially younger students, 719 00:37:31,840 --> 00:37:36,110 we have always found, as Chefket noted earlier too, that it actually does 720 00:37:36,110 --> 00:37:38,250 tend to appeal of students of all ages. 721 00:37:38,250 --> 00:37:39,620 It's just that accessible. 722 00:37:39,620 --> 00:37:43,680 And most importantly, it highlights principles of programming. 723 00:37:43,680 --> 00:37:45,200 It's not all just fun and games. 724 00:37:45,200 --> 00:37:48,860 We're using it to introduce students, again, to functions, and variables, 725 00:37:48,860 --> 00:37:51,960 and decomposition of functions, and abstraction, and the like. 726 00:37:51,960 --> 00:37:56,000 And so I think, so long as you introduce it in those contexts, even 727 00:37:56,000 --> 00:38:01,610 the most senior of students I do think sees the value in learning 728 00:38:01,610 --> 00:38:03,650 by way of a technology like that. 729 00:38:03,650 --> 00:38:07,550 And then we transition, not unlike CS50T, to internet technologies, 730 00:38:07,550 --> 00:38:10,730 focusing on how the primitives underlying the internet work, making 731 00:38:10,730 --> 00:38:13,250 a bit more sense of the alphabet soup, especially 732 00:38:13,250 --> 00:38:16,850 since, in business, a company running its own network 733 00:38:16,850 --> 00:38:20,510 or its own infrastructure is going to have some staff on duty who 734 00:38:20,510 --> 00:38:22,230 has to deal with these problems. 735 00:38:22,230 --> 00:38:24,230 So again, the goal is to empower managers 736 00:38:24,230 --> 00:38:27,380 to be able to have informed, more technical conversations 737 00:38:27,380 --> 00:38:28,430 with their engineers. 738 00:38:28,430 --> 00:38:31,250 Even if the managers aren't themselves sufficiently 739 00:38:31,250 --> 00:38:33,770 technical to solve technical problems, they 740 00:38:33,770 --> 00:38:36,380 can at least participate in those kinds of discussions, 741 00:38:36,380 --> 00:38:38,660 and ultimately, decisions. 742 00:38:38,660 --> 00:38:42,140 We introduce students in CS50B again to web development, 743 00:38:42,140 --> 00:38:46,430 introducing them to HTML and CSS. 744 00:38:46,430 --> 00:38:50,060 But we also JavaScript students in a bit more detail to JavaScript. 745 00:38:50,060 --> 00:38:53,750 And we show them more JavaScript so they can wrap their minds around a bit 746 00:38:53,750 --> 00:38:57,350 more readily exactly what it is a programmer is doing 747 00:38:57,350 --> 00:38:59,560 when they are writing actual code. 748 00:38:59,560 --> 00:39:01,560 Of course, in the real world, a company wouldn't 749 00:39:01,560 --> 00:39:04,730 tend to use something graphical like Scratch to build its product. 750 00:39:04,730 --> 00:39:08,420 They might use JavaScript, or Python, or C#, or something else. 751 00:39:08,420 --> 00:39:12,860 So we help translate Scratch to something like JavaScript for students 752 00:39:12,860 --> 00:39:15,680 so that they've seen exactly what you can do with the language, 753 00:39:15,680 --> 00:39:20,090 and they have, again, a more clear mental model for that world. 754 00:39:20,090 --> 00:39:24,380 But then in CS50B, do we really dive into technology stacks more generally. 755 00:39:24,380 --> 00:39:26,690 And here too, the goal is not to turn students 756 00:39:26,690 --> 00:39:29,510 into experts with the latest and greatest technology, 757 00:39:29,510 --> 00:39:33,000 but we want them to have heard about those latest and greatest technologies. 758 00:39:33,000 --> 00:39:35,630 But more importantly, we want them to understand 759 00:39:35,630 --> 00:39:39,350 what problems those technologies are solving, because odds are, 760 00:39:39,350 --> 00:39:43,610 next month, next year, next decade, a lot of these terms, 761 00:39:43,610 --> 00:39:45,690 a lot of these tools are going to be out of date. 762 00:39:45,690 --> 00:39:49,610 But the ideas are probably going to be there, along with some new ones. 763 00:39:49,610 --> 00:39:53,300 And so we introduce students, for instance, to the front end of software 764 00:39:53,300 --> 00:39:57,350 development, focusing on languages like CSS, HTML, and CSS, 765 00:39:57,350 --> 00:40:01,340 but also frameworks and libraries, some of which you might be familiar with, 766 00:40:01,340 --> 00:40:04,280 Angular, Ember, Meteor, React, and Vue, which 767 00:40:04,280 --> 00:40:08,450 generally make it easier to create more sophisticated user interfaces. 768 00:40:08,450 --> 00:40:11,540 And Bootstrap, Foundation, Semantic UI, and others 769 00:40:11,540 --> 00:40:15,920 make it a little easier to get started with more sophisticated user interfaces 770 00:40:15,920 --> 00:40:18,230 without having to implement everything yourself. 771 00:40:18,230 --> 00:40:21,270 And so for managers and other business professionals, 772 00:40:21,270 --> 00:40:26,240 we help them understand what the value of frameworks and libraries is 773 00:40:26,240 --> 00:40:27,650 and what those things can do. 774 00:40:27,650 --> 00:40:31,910 We help them think about open-source versus closed-source alternatives 775 00:40:31,910 --> 00:40:34,220 so that they don't just have a knee-jerk reaction to, 776 00:40:34,220 --> 00:40:36,440 yes or no, we should use open source. 777 00:40:36,440 --> 00:40:38,990 They understand the tradeoffs of either paying someone 778 00:40:38,990 --> 00:40:43,010 to write custom code for them or using some off-the-shelf solutions. 779 00:40:43,010 --> 00:40:44,900 We talk too about backend solutions. 780 00:40:44,900 --> 00:40:49,550 And here there is even more languages at our disposal, not just Python, and PHP, 781 00:40:49,550 --> 00:40:54,320 and Java, but Go, and .NET, and Ruby and, others. 782 00:40:54,320 --> 00:40:58,970 And there too, there are frameworks from which companies can choose, including 783 00:40:58,970 --> 00:41:01,260 Django, and Flask, and others as well. 784 00:41:01,260 --> 00:41:04,040 And here you see hints of some of the tools and technologies 785 00:41:04,040 --> 00:41:07,310 that Brian teaches in his class that I teach in CS50x. 786 00:41:07,310 --> 00:41:09,367 So there is, again, some overlap here. 787 00:41:09,367 --> 00:41:11,450 But in the business class, we try to give students 788 00:41:11,450 --> 00:41:16,310 this top-down conceptual understanding of how all of these building blocks 789 00:41:16,310 --> 00:41:17,450 fit in. 790 00:41:17,450 --> 00:41:21,560 And then lastly, we focus a bit more detail on database 791 00:41:21,560 --> 00:41:25,130 back ends as well, what it means to be a SQL, or relational database, 792 00:41:25,130 --> 00:41:27,552 or a NoSQL database, or document store. 793 00:41:27,552 --> 00:41:30,260 We give students a little bit of exposure to at least the biggest 794 00:41:30,260 --> 00:41:35,300 players in this space, MySQL, Postgres, Oracle, Access, and others, 795 00:41:35,300 --> 00:41:38,120 so that, again, they have a model in their minds of where 796 00:41:38,120 --> 00:41:40,550 all of these technologies fit in. 797 00:41:40,550 --> 00:41:43,190 And then lastly in this look at technology stocks 798 00:41:43,190 --> 00:41:46,130 do we focus with students on mobile development. 799 00:41:46,130 --> 00:41:49,520 And we help them understand that, if you want a mobile app that 800 00:41:49,520 --> 00:41:52,650 works on Android and iOS, sometimes you need to write, 801 00:41:52,650 --> 00:41:54,710 essentially, two separate applications. 802 00:41:54,710 --> 00:41:58,250 It's a lot easier said than done to write one app and run it multiple 803 00:41:58,250 --> 00:42:01,550 places unless you select the right technology. 804 00:42:01,550 --> 00:42:04,460 So instead of using Swift or Java, if you instead 805 00:42:04,460 --> 00:42:09,170 use CSS, HTML, and JavaScript, and a framework like React Native, 806 00:42:09,170 --> 00:42:13,460 formally introduced in Jordan's mobile development class, can you perhaps 807 00:42:13,460 --> 00:42:15,540 solve two problems at once. 808 00:42:15,540 --> 00:42:20,630 And so we help students think about how they might solve problems in business 809 00:42:20,630 --> 00:42:25,010 more economically, more rapidly, as by choosing the right tools. 810 00:42:25,010 --> 00:42:29,610 We also introduce students to database design and what SQL itself can do. 811 00:42:29,610 --> 00:42:32,570 And most folks in business are probably familiar with Excel, 812 00:42:32,570 --> 00:42:34,135 or Google Spreadsheets, or the like. 813 00:42:34,135 --> 00:42:36,260 And we help them translate some of those primitives 814 00:42:36,260 --> 00:42:41,120 to create, select, update, and delete SQL commands with which 815 00:42:41,120 --> 00:42:43,280 they might want to experiment. 816 00:42:43,280 --> 00:42:47,420 We help them understand NoSQL as well through examples like this here. 817 00:42:47,420 --> 00:42:51,830 NoSQL, if unfamiliar, is a little more hierarchical, a little more structured, 818 00:42:51,830 --> 00:42:54,320 and a little less flat as SQL. 819 00:42:54,320 --> 00:42:56,300 And so we just give students a sense of what 820 00:42:56,300 --> 00:43:00,110 it is you're getting when you choose one technology like NoSQL 821 00:43:00,110 --> 00:43:02,270 versus another like SQL. 822 00:43:02,270 --> 00:43:06,410 And then lastly in the business course, do we focus really on a high level, 823 00:43:06,410 --> 00:43:10,700 top down, on cloud computing, which you can't help but hear about constantly 824 00:43:10,700 --> 00:43:11,360 these days. 825 00:43:11,360 --> 00:43:14,660 And companies are increasingly moving into or thinking 826 00:43:14,660 --> 00:43:16,520 about moving into the cloud. 827 00:43:16,520 --> 00:43:17,630 But what does that mean? 828 00:43:17,630 --> 00:43:19,130 And what do you need to understand? 829 00:43:19,130 --> 00:43:22,213 We introduce them to some of the biggest players in the space like Amazon, 830 00:43:22,213 --> 00:43:24,140 Microsoft, and Google, these days. 831 00:43:24,140 --> 00:43:26,150 And we more importantly introduce students 832 00:43:26,150 --> 00:43:31,040 to some of the primitives that underlie using cloud computing. 833 00:43:31,040 --> 00:43:33,770 Even though the cloud is indeed, by design, 834 00:43:33,770 --> 00:43:36,650 this abstraction such that you don't really 835 00:43:36,650 --> 00:43:41,870 have to think about as many problems as you might on premise, 836 00:43:41,870 --> 00:43:45,440 when running your own servers yourselves, all of the same problems 837 00:43:45,440 --> 00:43:48,110 still exist of availability, and caching, 838 00:43:48,110 --> 00:43:50,270 and how you pay for it, how you replicate 839 00:43:50,270 --> 00:43:52,890 and scale your infrastructure, and so forth. 840 00:43:52,890 --> 00:43:55,520 So we help students understand what problems still 841 00:43:55,520 --> 00:43:58,010 need to be solved by someone, so in turn they 842 00:43:58,010 --> 00:44:02,000 understand what is it you're paying Amazon, or Microsoft, or Google 843 00:44:02,000 --> 00:44:05,300 or some other party to do for you in the cloud. 844 00:44:05,300 --> 00:44:07,100 We help them think about the tradeoffs. 845 00:44:07,100 --> 00:44:11,000 Is it more secure or less secure to put your data in the cloud? 846 00:44:11,000 --> 00:44:13,820 Is it more expensive or less expensive To keep things 847 00:44:13,820 --> 00:44:15,623 on premise or in the cloud? 848 00:44:15,623 --> 00:44:17,540 And then lastly, we introduce students to some 849 00:44:17,540 --> 00:44:20,880 of the technological underpinnings of cloud like containerization 850 00:44:20,880 --> 00:44:24,650 and virtualization, technologies that have, in part, driven 851 00:44:24,650 --> 00:44:27,530 this trend toward cloud capabilities, and then 852 00:44:27,530 --> 00:44:32,570 also buzzwords like IAS, and PAS, and SaaS, the last of which, 853 00:44:32,570 --> 00:44:36,230 most business types are familiar with, Software as a Service. 854 00:44:36,230 --> 00:44:38,690 Gmail is a Software as a Service. 855 00:44:38,690 --> 00:44:42,590 It's more of a buzz word that describes the level of abstraction at which you 856 00:44:42,590 --> 00:44:43,790 can think. 857 00:44:43,790 --> 00:44:47,900 Platform as a Service is a little lower, a tool like Heroku or the like. 858 00:44:47,900 --> 00:44:50,600 And below that is Infrastructure as a Service, which 859 00:44:50,600 --> 00:44:54,440 tend to be infrastructures like Microsoft Azure, and Amazon Web 860 00:44:54,440 --> 00:44:55,560 Services, and the like. 861 00:44:55,560 --> 00:44:59,252 And so we help students think at these multiple levels of abstraction. 862 00:44:59,252 --> 00:45:01,085 If you'd like to take a look, and if, Brian, 863 00:45:01,085 --> 00:45:06,140 you wouldn't mind pasting this URL too, a sample exam for CS50B is here too. 864 00:45:06,140 --> 00:45:08,480 And like T, it's very concept oriented. 865 00:45:08,480 --> 00:45:10,160 It's very short-answer driven. 866 00:45:10,160 --> 00:45:13,450 And as a teacher, could you take some of our assignments, 867 00:45:13,450 --> 00:45:16,520 as Chefket alluded to earlier, as well as the exam, 868 00:45:16,520 --> 00:45:19,310 and either assign them week to week or every two weeks. 869 00:45:19,310 --> 00:45:23,360 You could break them apart into one question per day or per week. 870 00:45:23,360 --> 00:45:26,370 And so we offer, at this URL here, some sample questions. 871 00:45:26,370 --> 00:45:30,020 But again, on the OpenCourseWare site, as well as on edX 872 00:45:30,020 --> 00:45:35,390 is the complete corpus of materials that teachers can adopt or adapt. 873 00:45:35,390 --> 00:45:37,880 So that, then, is CS50B. 874 00:45:37,880 --> 00:45:42,650 And before we look at our third and final class on CS50 for lawyers, 875 00:45:42,650 --> 00:45:46,880 let me pause here again for any questions or comments. 876 00:45:46,880 --> 00:45:48,830 Ramon, over to you? 877 00:45:48,830 --> 00:45:52,400 RAMON: OK, so my question is, the first two or three 878 00:45:52,400 --> 00:45:56,240 lectures of the CS50 courses are very similar to one another, 879 00:45:56,240 --> 00:45:59,170 because after all, it's a computer science class, 880 00:45:59,170 --> 00:46:00,530 it's a computer science course. 881 00:46:00,530 --> 00:46:04,780 But I would like to ask, what did you take into account when tailoring 882 00:46:04,780 --> 00:46:07,370 the topics for business professionals? 883 00:46:07,370 --> 00:46:13,400 And how does this course differ from the computer science for business leaders 884 00:46:13,400 --> 00:46:16,010 that you taught in 2016? 885 00:46:16,010 --> 00:46:20,360 And if it's the case that, CS50x for Business Professionals 886 00:46:20,360 --> 00:46:24,050 is an update of CS50 for Business Leaders, 887 00:46:24,050 --> 00:46:27,470 why didn't you include the lecture focused on 888 00:46:27,470 --> 00:46:29,528 privacy, security, and society? 889 00:46:29,528 --> 00:46:31,070 DAVID: That's a really good question. 890 00:46:31,070 --> 00:46:32,695 You have definitely done your homework. 891 00:46:32,695 --> 00:46:36,770 So I think the way to think about how we designed each of the courses 892 00:46:36,770 --> 00:46:39,260 is, indeed, with the target audience in mind. 893 00:46:39,260 --> 00:46:43,430 So CS50T was designed with, for lack of a better description, 894 00:46:43,430 --> 00:46:46,730 consumers in mind, sort of everyday people like you 895 00:46:46,730 --> 00:46:50,780 and me in our everyday lives wanting to better understand technology. 896 00:46:50,780 --> 00:46:53,510 And so that's why there is more of a focus on home networking. 897 00:46:53,510 --> 00:46:57,140 That's why there's more of a focus on hardware and the devices 898 00:46:57,140 --> 00:47:02,930 that you and I might interact with, irrespective of our business vocations. 899 00:47:02,930 --> 00:47:05,660 The CS50B class for business types is really 900 00:47:05,660 --> 00:47:10,520 focused on decision making and empowering people in business 901 00:47:10,520 --> 00:47:15,680 to have more technical, more proficient conversations with actual engineers. 902 00:47:15,680 --> 00:47:20,090 So the assumption of CS50B is that the business professionals are not 903 00:47:20,090 --> 00:47:22,250 working in isolation, but they're indeed working 904 00:47:22,250 --> 00:47:24,620 with whole teams of people, some of whom are invariably 905 00:47:24,620 --> 00:47:26,720 going to be more technical than they. 906 00:47:26,720 --> 00:47:29,510 And the goal is to bridge those two demographics. 907 00:47:29,510 --> 00:47:34,490 CS50 for lawyers is more focused on the intersection with society, so 908 00:47:34,490 --> 00:47:37,610 laws that aren't necessarily specific to the US, 909 00:47:37,610 --> 00:47:40,700 but Doug does use some examples therefrom, but really 910 00:47:40,700 --> 00:47:45,080 on issues like net neutrality, and intellectual property, issues 911 00:47:45,080 --> 00:47:49,910 that affect lawyers' clients, and therefore, topics 912 00:47:49,910 --> 00:47:54,770 that the attorneys should ideally be sufficiently versed in so they too 913 00:47:54,770 --> 00:47:58,760 can make arguments and understand claims that are being made by their clients 914 00:47:58,760 --> 00:48:00,320 or opposition. 915 00:48:00,320 --> 00:48:02,930 So the business leaders class to which you refer 916 00:48:02,930 --> 00:48:07,020 was just essentially the same course under a different title. 917 00:48:07,020 --> 00:48:12,200 And some of the topics to which you allude in terms of privacy and security 918 00:48:12,200 --> 00:48:16,940 have simply been woven into other units in these classes. 919 00:48:16,940 --> 00:48:19,880 In cloud computing, for instance, does security come up, 920 00:48:19,880 --> 00:48:22,790 even though we don't have it titled explicitly. 921 00:48:22,790 --> 00:48:25,160 In the law class, though, we spend more time 922 00:48:25,160 --> 00:48:27,620 officially on issues of privacy and security 923 00:48:27,620 --> 00:48:32,240 ever more so because of the intersection with law. 924 00:48:32,240 --> 00:48:33,742 David Lane, over to you. 925 00:48:33,742 --> 00:48:35,450 DAVID LANE: Yeah, I wanted to circle back 926 00:48:35,450 --> 00:48:41,990 a little bit to the previous question about the unit assignments 927 00:48:41,990 --> 00:48:45,560 and the creating of the task, because I see that when 928 00:48:45,560 --> 00:48:50,294 you refer to the OpenCourseWare, is that your CS50 Harvard edu? 929 00:48:50,294 --> 00:48:51,030 DAVID: Correct. 930 00:48:51,030 --> 00:48:53,000 DAVID LANE: OK, and so over there, I certainly 931 00:48:53,000 --> 00:48:57,830 see that the lectures, and slides, and assignments reference over edX. 932 00:48:57,830 --> 00:49:03,198 And on edX, with each unit, there is a Google form, which I'm thinking, 933 00:49:03,198 --> 00:49:05,990 probably the best way to handle that is just look at the questions, 934 00:49:05,990 --> 00:49:09,915 kind of borrow what I like and make my own Google form? 935 00:49:09,915 --> 00:49:10,790 DAVID: In short, yes. 936 00:49:10,790 --> 00:49:14,883 And after this workshop, we're going to put together a more central resource 937 00:49:14,883 --> 00:49:18,050 for all of those so that you don't have to jump through these multiple links 938 00:49:18,050 --> 00:49:19,580 in order to get at the content. 939 00:49:19,580 --> 00:49:23,630 But yes, simply copying and pasting or copying the form outright 940 00:49:23,630 --> 00:49:27,350 is generally what would be the easiest thing to do, since all of the questions 941 00:49:27,350 --> 00:49:28,140 are text based. 942 00:49:28,140 --> 00:49:30,660 DAVID LANE: Yeah, so that is excellent. 943 00:49:30,660 --> 00:49:34,700 And when I look over at edX, I do not see anything like a final exam. 944 00:49:34,700 --> 00:49:37,340 I just see little assignments for each unit. 945 00:49:37,340 --> 00:49:40,130 Is that pretty much the things are structured? 946 00:49:40,130 --> 00:49:41,540 DAVID: Yeah, that is deliberate. 947 00:49:41,540 --> 00:49:44,450 We make available our final exams to teachers who 948 00:49:44,450 --> 00:49:46,340 might want to adopt or adapt the class. 949 00:49:46,340 --> 00:49:47,540 They're not part of edX. 950 00:49:47,540 --> 00:49:52,430 We only rely on the weekly or module-based assessment-- assignments 951 00:49:52,430 --> 00:49:52,970 on edX. 952 00:49:52,970 --> 00:49:57,230 So the exams are additional material available to teachers for on-class-- 953 00:49:57,230 --> 00:49:59,720 for on-campus administration. 954 00:49:59,720 --> 00:50:01,780 DAVID LANE: And you had mentioned at some point, 955 00:50:01,780 --> 00:50:06,510 there would be a form we could fill and verify that we are teachers. 956 00:50:06,510 --> 00:50:09,040 DAVID: Indeed, we're-- we haven't sent that out yet. 957 00:50:09,040 --> 00:50:10,665 We're still catching up from last week. 958 00:50:10,665 --> 00:50:13,123 But we'll be following up as soon as we're a wrap this week 959 00:50:13,123 --> 00:50:14,030 with the workshop. 960 00:50:14,030 --> 00:50:15,030 DAVID LANE: Perfect, OK. 961 00:50:15,030 --> 00:50:16,530 Thank you very much. 962 00:50:16,530 --> 00:50:17,370 DAVID: Of course. 963 00:50:17,370 --> 00:50:19,120 Joseph, over to you? 964 00:50:19,120 --> 00:50:19,620 JOSEPH: Yes. 965 00:50:19,620 --> 00:50:24,360 Regarding CS50 for Business, one big thing 966 00:50:24,360 --> 00:50:28,570 that has been a struggle for a lot of organizations, 967 00:50:28,570 --> 00:50:34,860 including the county system here as we upgrade to the cloud, 968 00:50:34,860 --> 00:50:38,440 is really, it's a long, five-year journey. 969 00:50:38,440 --> 00:50:41,520 And then by the time your done, the technology moves ahead of you. 970 00:50:41,520 --> 00:50:46,500 By the time you do virtual machines, now it's cloudless or serverless. 971 00:50:46,500 --> 00:50:50,250 Do you have a section where, like, you give best practices, like, for example, 972 00:50:50,250 --> 00:50:53,620 diversify, have Google do something for you and have AWS-- 973 00:50:53,620 --> 00:50:56,640 don't put all your eggs in one basket, kind of, 974 00:50:56,640 --> 00:51:03,660 you know, business decision maker advice as a section somewhere? 975 00:51:03,660 --> 00:51:04,815 DAVID: It comes up. 976 00:51:04,815 --> 00:51:07,440 I don't know if we hit the nail right on the head, so to speak. 977 00:51:07,440 --> 00:51:11,970 But those questions come up in both the technology stacks portion of the course 978 00:51:11,970 --> 00:51:14,550 as well as in the cloud computing portion. 979 00:51:14,550 --> 00:51:18,570 And we stop short of giving students rules of thumb or advice, 980 00:51:18,570 --> 00:51:21,030 because as you say, that can be quickly outdated. 981 00:51:21,030 --> 00:51:24,750 We really do focus more on understanding the underlying technology 982 00:51:24,750 --> 00:51:27,090 so that they can make more informed decisions based 983 00:51:27,090 --> 00:51:29,460 on the context in which they're operating. 984 00:51:29,460 --> 00:51:32,160 But your experience is quite common, unfortunately. 985 00:51:32,160 --> 00:51:34,270 And the world changes quickly. 986 00:51:34,270 --> 00:51:39,120 So fortunately, the underlying fundamentals do not change. 987 00:51:39,120 --> 00:51:41,205 So we help students make sense of that spectrum. 988 00:51:41,205 --> 00:51:44,020 989 00:51:44,020 --> 00:51:46,430 All right, well, with no other blue hands 990 00:51:46,430 --> 00:51:48,680 up, let's forge ahead with our third and final class 991 00:51:48,680 --> 00:51:50,990 today, which is CS50 for Lawyers. 992 00:51:50,990 --> 00:51:53,900 So you'll see in this class that it includes a bit more 993 00:51:53,900 --> 00:51:55,520 content than the other classes. 994 00:51:55,520 --> 00:51:59,360 This is the newest class with which I collaborated-- 995 00:51:59,360 --> 00:52:01,640 on which I collaborated with CS50's own Doug Lloyd, 996 00:52:01,640 --> 00:52:04,130 who you might remember from CS50x's shorts. 997 00:52:04,130 --> 00:52:07,050 Doug is a lawyer by training himself. 998 00:52:07,050 --> 00:52:09,170 And so he wonderfully brought to this class 999 00:52:09,170 --> 00:52:12,320 all the more of a perspective of a trained attorney. 1000 00:52:12,320 --> 00:52:14,660 And that is the lens through which we look 1001 00:52:14,660 --> 00:52:17,780 at a lot of the societal issues to which I alluded earlier. 1002 00:52:17,780 --> 00:52:21,020 So flipping through these topics too, you'll see again at the beginning 1003 00:52:21,020 --> 00:52:26,420 some shared foundation among T, and B, and now L. In terms of problem 1004 00:52:26,420 --> 00:52:28,340 solving itself, we introduce students again 1005 00:52:28,340 --> 00:52:30,710 to the representation of inputs and outputs, 1006 00:52:30,710 --> 00:52:33,380 and ultimately to the algorithms in between. 1007 00:52:33,380 --> 00:52:35,390 We introduce students and spend a bit more time 1008 00:52:35,390 --> 00:52:37,920 on representation of information, focusing, 1009 00:52:37,920 --> 00:52:42,740 of course, on familiar technologies like ASCII or Unicode, 1010 00:52:42,740 --> 00:52:46,670 and toward an end of understanding exactly how it is systems 1011 00:52:46,670 --> 00:52:48,080 store information. 1012 00:52:48,080 --> 00:52:50,180 When we transition ultimately to algorithms 1013 00:52:50,180 --> 00:52:54,170 we again provide students with some of the same building blocks as CS50T, 1014 00:52:54,170 --> 00:52:57,380 and B, and even CS50x, but we also talk to them 1015 00:52:57,380 --> 00:53:02,210 about certain primitives and principles that you see more of in CS50x. 1016 00:53:02,210 --> 00:53:05,660 For instance, the picture here is, of course, what? 1017 00:53:05,660 --> 00:53:06,980 Any quick blue hand? 1018 00:53:06,980 --> 00:53:10,520 What are we looking at here on the screen? 1019 00:53:10,520 --> 00:53:13,320 What is this here? 1020 00:53:13,320 --> 00:53:14,940 Almost every blue hand should be up. 1021 00:53:14,940 --> 00:53:17,228 This is not a trick question. 1022 00:53:17,228 --> 00:53:18,145 This is-- what's that? 1023 00:53:18,145 --> 00:53:19,940 Oh, Brian, what do you think it is, Brian? 1024 00:53:19,940 --> 00:53:25,110 1025 00:53:25,110 --> 00:53:26,910 Oh, Brian, no? 1026 00:53:26,910 --> 00:53:29,610 Not even Brian? 1027 00:53:29,610 --> 00:53:30,800 BRIAN: Hear me? 1028 00:53:30,800 --> 00:53:32,020 DAVID: Yes, now we can. 1029 00:53:32,020 --> 00:53:34,520 BRIAN: Oh, I was going to say, that looks like a cube to me. 1030 00:53:34,520 --> 00:53:37,860 DAVID: It does look like a cube, so otherwise known as an abstraction. 1031 00:53:37,860 --> 00:53:41,090 Like, you and I probably have enough frames of reference 1032 00:53:41,090 --> 00:53:44,180 from the real world to know that this can be described as a cube. 1033 00:53:44,180 --> 00:53:47,510 But someone unfamiliar with "the abstraction" of a cube 1034 00:53:47,510 --> 00:53:50,030 might describe it as three diamond shapes 1035 00:53:50,030 --> 00:53:51,510 that are all touching one another. 1036 00:53:51,510 --> 00:53:53,660 You might describe it even more pedantically 1037 00:53:53,660 --> 00:53:56,300 as a diagonal line, and then another diagonal line, 1038 00:53:56,300 --> 00:53:58,220 and another diagonal line, and so forth. 1039 00:53:58,220 --> 00:54:02,510 And so we really introduce students in CS50L to those layers of thinking 1040 00:54:02,510 --> 00:54:05,480 and what it means to abstract away details, 1041 00:54:05,480 --> 00:54:08,340 to actually get into the weeds of those implementation details, 1042 00:54:08,340 --> 00:54:12,080 especially when it comes to intellectual property and algorithms. 1043 00:54:12,080 --> 00:54:15,290 When a company has, for instance, filed a patent 1044 00:54:15,290 --> 00:54:17,960 to describe their algorithm, at what level 1045 00:54:17,960 --> 00:54:19,850 is their algorithm being described? 1046 00:54:19,850 --> 00:54:24,080 And where might there be ambiguity or opportunities for more precision? 1047 00:54:24,080 --> 00:54:26,570 We transition, of course, to programming languages, 1048 00:54:26,570 --> 00:54:28,310 as we've done in the other classes, here, 1049 00:54:28,310 --> 00:54:31,580 but more with the focus on, again, intellectual property 1050 00:54:31,580 --> 00:54:34,100 and the implementation of algorithms. 1051 00:54:34,100 --> 00:54:36,290 We introduce students to some actual code. 1052 00:54:36,290 --> 00:54:39,650 And we talk to them about compiled languages like C, 1053 00:54:39,650 --> 00:54:43,190 or assembly language to which C might be compiled. 1054 00:54:43,190 --> 00:54:48,830 And we also talk about machine code, because in the context of law where one 1055 00:54:48,830 --> 00:54:52,550 company might be claiming that another company copied its code or its 1056 00:54:52,550 --> 00:54:55,910 algorithms, helping an attorney understand at what level 1057 00:54:55,910 --> 00:54:59,330 we're discussing those similarities-- is it source code, machine code, 1058 00:54:59,330 --> 00:55:00,620 or somewhere in between-- 1059 00:55:00,620 --> 00:55:04,380 can help them just better advocate on behalf of their clients. 1060 00:55:04,380 --> 00:55:07,130 We help them understand issues involving data. 1061 00:55:07,130 --> 00:55:12,080 The Y2K problem might be familiar to some of you when, back in 1999, 1062 00:55:12,080 --> 00:55:15,800 it was worried that it was about to be a big problem when 1063 00:55:15,800 --> 00:55:19,280 all of a sudden, the year struck 2000, because a lot of computer 1064 00:55:19,280 --> 00:55:23,210 systems at the time were using only two digits to store years. 1065 00:55:23,210 --> 00:55:28,640 So '99 might accidentally become '00, which might be confused by a computer 1066 00:55:28,640 --> 00:55:31,460 as 1900 instead of 2000. 1067 00:55:31,460 --> 00:55:35,760 So we help attorneys understand exactly why this problem came to be 1068 00:55:35,760 --> 00:55:38,570 and what it is a computer is doing that even creates 1069 00:55:38,570 --> 00:55:40,610 these kinds of societal problems. 1070 00:55:40,610 --> 00:55:42,560 We talk to them about real-world examples. 1071 00:55:42,560 --> 00:55:45,140 And you might recall this one from CS50x itself, 1072 00:55:45,140 --> 00:55:50,870 where a Boeing airplane literally needed to be rebooted after 248 days 1073 00:55:50,870 --> 00:55:54,350 because some engineer had not anticipated, it seemed, 1074 00:55:54,350 --> 00:55:58,610 the fact that you can only store a finite amount of information 1075 00:55:58,610 --> 00:56:03,260 with 32 bits, and indeed, after roughly 248 days, 1076 00:56:03,260 --> 00:56:06,770 would those 32 bits all get used up, so to speak. 1077 00:56:06,770 --> 00:56:08,240 They would all become one. 1078 00:56:08,240 --> 00:56:14,060 And if you count ever so too high when using a finite value like 32 bits, 1079 00:56:14,060 --> 00:56:17,540 you're going to wrap around, in essence, to a negative number or 0, 1080 00:56:17,540 --> 00:56:20,420 at which case, bad things could have happened with the airplane. 1081 00:56:20,420 --> 00:56:25,190 So we help students in CS50L understand how real-world technology 1082 00:56:25,190 --> 00:56:30,950 issues ultimately affect real-world products and decision making out 1083 00:56:30,950 --> 00:56:32,443 beyond the lab. 1084 00:56:32,443 --> 00:56:35,360 We talk to students, again, in more detail, not just about algorithms, 1085 00:56:35,360 --> 00:56:38,660 but data structures as well, how a computer can organize information 1086 00:56:38,660 --> 00:56:41,420 underneath the hood so that someone's algorithm is perhaps 1087 00:56:41,420 --> 00:56:42,890 better than another. 1088 00:56:42,890 --> 00:56:46,720 We introduce them to a few specific algorithms for searching and sorting. 1089 00:56:46,720 --> 00:56:49,490 Pictured here, for instance, is bubble sort, if familiar. 1090 00:56:49,490 --> 00:56:51,500 Or pictured here is selection sort. 1091 00:56:51,500 --> 00:56:55,310 So we talk to students at a little lower level than we do in the technology 1092 00:56:55,310 --> 00:56:57,320 or in the business class. 1093 00:56:57,320 --> 00:57:01,220 We also talk to students more concretely about languages like Python, 1094 00:57:01,220 --> 00:57:03,660 not to turn them into programmers themselves, 1095 00:57:03,660 --> 00:57:06,410 but rather to give them exposure to some of the features 1096 00:57:06,410 --> 00:57:11,600 of these languages like lists, and dictionaries, or hashes, or the like. 1097 00:57:11,600 --> 00:57:15,650 We focus a great deal on cryptography and issues of privacy and security 1098 00:57:15,650 --> 00:57:21,020 in the CS50L class, introducing students, like in CS50x, 1099 00:57:21,020 --> 00:57:24,200 the substitution ciphers like Caesar. 1100 00:57:24,200 --> 00:57:27,290 But we also talk about the flip side, the dark side of it all, 1101 00:57:27,290 --> 00:57:30,470 and frequency analysis, and how an adversary can maybe 1102 00:57:30,470 --> 00:57:33,950 attack your crypto system and figure out what 1103 00:57:33,950 --> 00:57:38,690 your plain text or original messages are just by analyzing what it is they're 1104 00:57:38,690 --> 00:57:39,770 intercepting. 1105 00:57:39,770 --> 00:57:44,000 We talk to students in CS50L about how password recovery might work 1106 00:57:44,000 --> 00:57:48,770 and why it's problematic if a website can just email you your password. 1107 00:57:48,770 --> 00:57:50,900 Odds are there are better ways of doing that. 1108 00:57:50,900 --> 00:57:53,390 And we help students think about just how a company can 1109 00:57:53,390 --> 00:57:56,150 be more or less secure than another. 1110 00:57:56,150 --> 00:57:58,490 We talk too about public key cryptography 1111 00:57:58,490 --> 00:58:02,180 and how this solves a problem that symmetric key cryptography 1112 00:58:02,180 --> 00:58:05,180 or secret key cryptography alone does not. 1113 00:58:05,180 --> 00:58:08,060 And though we don't get too much into the weeds of the mathematics, 1114 00:58:08,060 --> 00:58:12,020 we help students understand that there are problems that certain forms 1115 00:58:12,020 --> 00:58:15,320 of cryptography like Caesar cipher cannot solve. 1116 00:58:15,320 --> 00:58:18,410 For that, we need more mathematically sophisticated solutions, 1117 00:58:18,410 --> 00:58:19,680 fancier algorithms. 1118 00:58:19,680 --> 00:58:23,210 And we help students understand that sort of spectrum. 1119 00:58:23,210 --> 00:58:26,330 We also talk about the inverse, really, of encrypting information, 1120 00:58:26,330 --> 00:58:30,590 which is digitally signing it, and how a user 1121 00:58:30,590 --> 00:58:33,350 can use their same public and private key 1122 00:58:33,350 --> 00:58:36,890 to attest, with mathematical near certainty, 1123 00:58:36,890 --> 00:58:40,230 that they are, indeed, who they claim to be. 1124 00:58:40,230 --> 00:58:42,590 And then we talk about even more modern technologies, 1125 00:58:42,590 --> 00:58:45,380 are ones that are certainly all the more in the news these days, 1126 00:58:45,380 --> 00:58:50,420 like blockchain, and Bitcoin, and digital currency, more generally. 1127 00:58:50,420 --> 00:58:53,630 We continue the conversation about cyber security more generally, 1128 00:58:53,630 --> 00:58:55,760 even talking about hardware and what it is 1129 00:58:55,760 --> 00:58:59,900 that might be vulnerable in physical devices to interception or theft. 1130 00:58:59,900 --> 00:59:03,860 We talk to students about what it means to actually "delete" files, 1131 00:59:03,860 --> 00:59:05,990 and what it means to empty the recycle bin 1132 00:59:05,990 --> 00:59:09,050 or empty your trash can on Windows or Mac OS, 1133 00:59:09,050 --> 00:59:13,250 and why that's not really doing anything to cover your tracks 1134 00:59:13,250 --> 00:59:17,120 or ensure that no one else can see that same data. 1135 00:59:17,120 --> 00:59:22,970 And we help students understand exactly what protocols a company or a firm 1136 00:59:22,970 --> 00:59:27,170 should have in place to protect clients' and employees' own data. 1137 00:59:27,170 --> 00:59:30,710 We talk too about how data can just be intercepted, certainly with Wi-Fi, 1138 00:59:30,710 --> 00:59:35,900 and 3G, and LTE, and other technologies, in the air, so to speak, around us. 1139 00:59:35,900 --> 00:59:39,380 And then we too spend time in this class on internet technologies and cloud 1140 00:59:39,380 --> 00:59:43,490 computing, but not so much from a decision-making orientation, 1141 00:59:43,490 --> 00:59:44,990 but rather, from an understanding. 1142 00:59:44,990 --> 00:59:48,830 And we talk in the abstract about how data gets from point A to point B. 1143 00:59:48,830 --> 00:59:51,560 We talk with students about issues like scalability 1144 00:59:51,560 --> 00:59:54,350 and how you can have maybe one relatively small, 1145 00:59:54,350 --> 00:59:58,430 cheap server, or one very big, more expensive server, 1146 00:59:58,430 --> 01:00:00,560 or maybe some amalgam in between, talking 1147 01:00:00,560 --> 01:00:03,350 about concepts like horizontal scalability 1148 01:00:03,350 --> 01:00:05,960 and vertical scalability in the enterprise. 1149 01:00:05,960 --> 01:00:09,080 And here too, we talk with students about more modern technologies 1150 01:00:09,080 --> 01:00:11,780 like virtualization and containerization, 1151 01:00:11,780 --> 01:00:16,730 and how those technologies actually make possible cloud computing 1152 01:00:16,730 --> 01:00:20,720 and how there remain potential security concerns. 1153 01:00:20,720 --> 01:00:25,520 If, at the end of the day, your data is on the same physical server as my data, 1154 01:00:25,520 --> 01:00:29,330 even if we have these software-based firewalls in place, 1155 01:00:29,330 --> 01:00:32,630 at the end of the day, there might be certain regulations 1156 01:00:32,630 --> 01:00:36,260 or certain legalities that mandate that, no, our data needs 1157 01:00:36,260 --> 01:00:38,640 to be on physically distinct servers. 1158 01:00:38,640 --> 01:00:42,830 So for our legal audience, do we help them understand those tradeoffs. 1159 01:00:42,830 --> 01:00:45,620 We introduce them ultimately to a bit of web development too. 1160 01:00:45,620 --> 01:00:48,308 And they get some exposure to HTML and CSS, 1161 01:00:48,308 --> 01:00:50,600 not so much toward an end of making their own web page, 1162 01:00:50,600 --> 01:00:55,130 but just to understand what it is that HTML and CSS enable, 1163 01:00:55,130 --> 01:01:00,120 and how it is that HTML and CSS can be viewed by anyone on the internet. 1164 01:01:00,120 --> 01:01:02,300 So if you're worried about intellectual property, 1165 01:01:02,300 --> 01:01:07,230 anyone can just see, via view source in their browser, all of the HTML, 1166 01:01:07,230 --> 01:01:09,830 and CSS, and maybe even JavaScript that you wrote. 1167 01:01:09,830 --> 01:01:13,940 And we help students understand that this is actually the result of a design 1168 01:01:13,940 --> 01:01:15,640 decision, not a flaw per se. 1169 01:01:15,640 --> 01:01:18,650 And so companies should think about their intellectual property 1170 01:01:18,650 --> 01:01:22,240 with those digital constraints in mind. 1171 01:01:22,240 --> 01:01:24,320 And we also give students some understanding 1172 01:01:24,320 --> 01:01:26,900 of event-based programming and how the clicking, 1173 01:01:26,900 --> 01:01:30,020 and dragging, and touching, and tapping that we do with our devices 1174 01:01:30,020 --> 01:01:34,220 these days maps to certain programming primitives. 1175 01:01:34,220 --> 01:01:36,800 And we do spend time talking about database design 1176 01:01:36,800 --> 01:01:42,260 too as it relates to how a client or a company might store its data. 1177 01:01:42,260 --> 01:01:44,420 We talk with them about the various data types 1178 01:01:44,420 --> 01:01:48,860 that drive the underlying storage of that data and how it makes-- 1179 01:01:48,860 --> 01:01:53,430 has potential impact on real-world scenarios as well. 1180 01:01:53,430 --> 01:01:56,270 And then we also talk about slightly more sophisticated solutions 1181 01:01:56,270 --> 01:01:58,680 to real-world problems like race conditions 1182 01:01:58,680 --> 01:02:01,400 so that money doesn't disappear in someone's account 1183 01:02:01,400 --> 01:02:05,060 or your data doesn't get out of sync with itself 1184 01:02:05,060 --> 01:02:07,640 because you simply have too many people doing too 1185 01:02:07,640 --> 01:02:10,110 many things at one time on your server. 1186 01:02:10,110 --> 01:02:13,550 So we talk about primitives like locking and transactions 1187 01:02:13,550 --> 01:02:17,510 that tend to be solutions to those kinds of high-traffic problems. 1188 01:02:17,510 --> 01:02:20,450 And then toward the end of the class, we come back to cybersecurity, 1189 01:02:20,450 --> 01:02:22,242 because students, at that point, would have 1190 01:02:22,242 --> 01:02:25,310 had even more exposure to a number of computing primitives, 1191 01:02:25,310 --> 01:02:28,590 via which they can now think about issues of security. 1192 01:02:28,590 --> 01:02:31,100 We talk about issues like denial of service attacks, what 1193 01:02:31,100 --> 01:02:34,490 those are, how you can wage them and defend yourself, hopefully, 1194 01:02:34,490 --> 01:02:35,420 against them. 1195 01:02:35,420 --> 01:02:41,210 We talk about SSL, or these days, TLS, the technology that gives us HTTPS. 1196 01:02:41,210 --> 01:02:44,270 We talk to students about more arcane hacks or attacks, 1197 01:02:44,270 --> 01:02:47,120 like cross-site scripting, where an adversary can potentially 1198 01:02:47,120 --> 01:02:52,610 inject code into your website that you didn't intend to be executed by users. 1199 01:02:52,610 --> 01:02:56,180 And we talk about cross-site request forgeries, another more sophisticated 1200 01:02:56,180 --> 01:02:59,420 attack, that might trick a user on one website 1201 01:02:59,420 --> 01:03:02,390 to find themselves suddenly on another. 1202 01:03:02,390 --> 01:03:04,580 And again, we give these examples to students 1203 01:03:04,580 --> 01:03:08,720 so that they understand what kinds of threats are out there, and ultimately, 1204 01:03:08,720 --> 01:03:13,190 and more importantly, what design aspects of computing 1205 01:03:13,190 --> 01:03:16,670 they are the result of, conscious design decisions 1206 01:03:16,670 --> 01:03:18,890 by those who architected these systems. 1207 01:03:18,890 --> 01:03:22,010 We talk too about the storage of our passwords in databases, 1208 01:03:22,010 --> 01:03:26,390 and how you had better not see your password in pain text in a database, 1209 01:03:26,390 --> 01:03:30,580 because if it's compromised, it's going to be they're potentially in the wild. 1210 01:03:30,580 --> 01:03:34,090 We talk about SQL injection attacks, and man in the middle attacks, and even 1211 01:03:34,090 --> 01:03:38,080 phishing attacks as it relates to folks' privacy and security. 1212 01:03:38,080 --> 01:03:40,540 And then at the very end of the semester do 1213 01:03:40,540 --> 01:03:44,260 we focus on a few legal cases and a few legal primitives, 1214 01:03:44,260 --> 01:03:47,320 talking about challenges and the intersection between law 1215 01:03:47,320 --> 01:03:50,740 and technology, open-source software and licensing, 1216 01:03:50,740 --> 01:03:53,140 how you should think about the availability of it, 1217 01:03:53,140 --> 01:03:57,130 the security of it, versus developing something in-house yourself, 1218 01:03:57,130 --> 01:03:59,590 talking about disruptive technologies and how 1219 01:03:59,590 --> 01:04:04,390 a lawyer and how the law more generally can at least respond to changes 1220 01:04:04,390 --> 01:04:08,530 in technology even before the law itself might catch up, 1221 01:04:08,530 --> 01:04:12,620 really modern issues like the printability of weapons 1222 01:04:12,620 --> 01:04:14,620 and how they can evade detection because they're 1223 01:04:14,620 --> 01:04:16,510 no longer metallic, but plastic, 1224 01:04:16,510 --> 01:04:19,360 and what the implications are for sharing information 1225 01:04:19,360 --> 01:04:22,690 about creating these things versus actually creating 1226 01:04:22,690 --> 01:04:24,010 these kinds of threats. 1227 01:04:24,010 --> 01:04:26,440 Talking about digital privacy and tracking more 1228 01:04:26,440 --> 01:04:29,620 generally are very much in vogue these days in the media 1229 01:04:29,620 --> 01:04:33,160 when discussed in the context of social networking sites and beyond, 1230 01:04:33,160 --> 01:04:35,710 and then of course, AI, which is a burgeoning field 1231 01:04:35,710 --> 01:04:37,970 with some very real-world implications. 1232 01:04:37,970 --> 01:04:41,800 You can imagine a programmer nowadays maybe 1233 01:04:41,800 --> 01:04:46,040 having to write code that decides whom to hit with a car. 1234 01:04:46,040 --> 01:04:48,880 For instance, if a self-driving car is barreling down the street 1235 01:04:48,880 --> 01:04:51,100 and there is two people to the left and right, 1236 01:04:51,100 --> 01:04:53,350 you can imagine there being a line of code 1237 01:04:53,350 --> 01:04:57,790 that needs to make some decision as to whether to swerve left or right. 1238 01:04:57,790 --> 01:05:00,790 And that, of course, might have very real-world implications 1239 01:05:00,790 --> 01:05:05,540 for the victim, not to mention the laws surrounding those kinds of decisions. 1240 01:05:05,540 --> 01:05:09,250 So the world is increasingly getting very complicated 1241 01:05:09,250 --> 01:05:12,730 when it comes to these intersections of law and technology. 1242 01:05:12,730 --> 01:05:16,570 In Europe and elsewhere are there increasing regulations that govern 1243 01:05:16,570 --> 01:05:18,582 privacy and protection of one data. 1244 01:05:18,582 --> 01:05:20,290 And then net neutrality, of course, keeps 1245 01:05:20,290 --> 01:05:24,610 coming up again and again when it comes to who governs and how the internet 1246 01:05:24,610 --> 01:05:26,320 itself is governed. 1247 01:05:26,320 --> 01:05:29,170 So at the end of CS50L do we similarly have an exam. 1248 01:05:29,170 --> 01:05:31,630 Here, for instance, if Brian wouldn't mind pasting the URL, 1249 01:05:31,630 --> 01:05:33,880 is a sample exam at term's end. 1250 01:05:33,880 --> 01:05:36,250 And then week by week do we also have assignments, 1251 01:05:36,250 --> 01:05:41,470 similar to CS50B and CS50T, that you can adopt or adapt 1252 01:05:41,470 --> 01:05:47,140 in some form for your students on a daily, or weekly, or some other basis. 1253 01:05:47,140 --> 01:05:52,030 And before I give you a bird's-eye view of all three of these courses together 1254 01:05:52,030 --> 01:05:54,790 to help you think about the similarities and differences, 1255 01:05:54,790 --> 01:06:00,481 any questions or comments on CS50L specifically? 1256 01:06:00,481 --> 01:06:01,370 Farid? 1257 01:06:01,370 --> 01:06:02,620 FARID: I just have a question. 1258 01:06:02,620 --> 01:06:07,840 So with CS50x, we will use check50 and submit50 1259 01:06:07,840 --> 01:06:12,660 to check the students' correctness, if that's the write way of saying it. 1260 01:06:12,660 --> 01:06:15,340 But with these three courses, is it up to us 1261 01:06:15,340 --> 01:06:18,770 as the teacher to check if the answers are correct? 1262 01:06:18,770 --> 01:06:21,290 DAVID: Correct, it would be, because all of the-- 1263 01:06:21,290 --> 01:06:25,710 almost all of the questions are short answer and not machine gradable. 1264 01:06:25,710 --> 01:06:29,330 They are meant to be examined or audited by human eyes. 1265 01:06:29,330 --> 01:06:31,490 Automated feedback is less possible. 1266 01:06:31,490 --> 01:06:34,100 You could, for instance, convert some of the questions, 1267 01:06:34,100 --> 01:06:36,650 if you so choose, into multiple choice or true-false. 1268 01:06:36,650 --> 01:06:39,050 And then something like Google Forms could automatically 1269 01:06:39,050 --> 01:06:40,490 score those for you. 1270 01:06:40,490 --> 01:06:43,340 We have generally avoided doing that, because we would really 1271 01:06:43,340 --> 01:06:46,630 like students to put into their own words their thoughts on a question. 1272 01:06:46,630 --> 01:06:50,870 FARID: Yes, also agree with it, because the multiple choice is-- 1273 01:06:50,870 --> 01:06:53,820 they can just pick and not think about the answer. 1274 01:06:53,820 --> 01:06:54,560 DAVID: Agreed. 1275 01:06:54,560 --> 01:06:56,930 So it's more work for the teacher, but we 1276 01:06:56,930 --> 01:06:58,730 hope a better outcome for the students. 1277 01:06:58,730 --> 01:07:00,510 FARID: OK, thank you. 1278 01:07:00,510 --> 01:07:01,010 DAVID: Sure. 1279 01:07:01,010 --> 01:07:04,320 Ramon, question or comment? 1280 01:07:04,320 --> 01:07:07,410 RAMON: So over the last two weeks, I have 1281 01:07:07,410 --> 01:07:09,870 been looking for a friend who is a lawyer in order to help 1282 01:07:09,870 --> 01:07:12,780 me produce the CS50 for Lawyers. 1283 01:07:12,780 --> 01:07:19,770 And I tried not to cite Harvard's name in order to not bias them to help me. 1284 01:07:19,770 --> 01:07:27,390 And I would like to ask if taking CS50 Introduction to Computer Science, which 1285 01:07:27,390 --> 01:07:30,480 is the main course, and CS50 for Lawyers is 1286 01:07:30,480 --> 01:07:39,026 enough to prepare him to play Doug's part in the lecturing of the course. 1287 01:07:39,026 --> 01:07:40,570 DAVID: That's a good question. 1288 01:07:40,570 --> 01:07:41,300 Maybe. 1289 01:07:41,300 --> 01:07:44,960 I mean, Doug went to law school for three years, practiced 1290 01:07:44,960 --> 01:07:46,680 law for several years as well. 1291 01:07:46,680 --> 01:07:50,150 So he has background that I don't have that I'm guessing your friend might not 1292 01:07:50,150 --> 01:07:55,550 have, in which case we would probably be doing Doug a disservice if we said, 1293 01:07:55,550 --> 01:07:58,220 just watch these videos and you can do what Doug does. 1294 01:07:58,220 --> 01:07:59,840 So I would decide for yourself. 1295 01:07:59,840 --> 01:08:02,630 I do think Doug did an amazing job at creating 1296 01:08:02,630 --> 01:08:05,100 the assignments for those modules of the class 1297 01:08:05,100 --> 01:08:10,280 and for creating the materials by which to lead discussions. 1298 01:08:10,280 --> 01:08:16,220 So I suspect that your friend might not be able to offer as deep conversations 1299 01:08:16,220 --> 01:08:17,630 on some of those subjects. 1300 01:08:17,630 --> 01:08:19,819 But certainly, if he follows in Doug's footsteps, 1301 01:08:19,819 --> 01:08:24,500 he could certainly use those materials, but I don't think that course alone 1302 01:08:24,500 --> 01:08:27,470 would turn them into an attorney. 1303 01:08:27,470 --> 01:08:30,500 David, over to you. 1304 01:08:30,500 --> 01:08:34,550 DAVID LANE: Yes, I was just wondering, with each of these three courses, 1305 01:08:34,550 --> 01:08:38,590 are the unit lectures typically an hour in duration? 1306 01:08:38,590 --> 01:08:40,000 DAVID: They're highly variable. 1307 01:08:40,000 --> 01:08:43,069 I would say they're generally between 45 minutes and two hours 1308 01:08:43,069 --> 01:08:46,120 depending on the subject, and the material, and the course. 1309 01:08:46,120 --> 01:08:47,120 DAVID LANE: OK, perfect. 1310 01:08:47,120 --> 01:08:48,319 Thank you. 1311 01:08:48,319 --> 01:08:49,010 DAVID: Sure. 1312 01:08:49,010 --> 01:08:50,990 Back to Ramon? 1313 01:08:50,990 --> 01:08:52,580 RAMON: I think you misunderstood. 1314 01:08:52,580 --> 01:08:54,210 My friend, he is a lawyer. 1315 01:08:54,210 --> 01:08:54,920 DAVID: I see. 1316 01:08:54,920 --> 01:08:56,600 I missed that detail. 1317 01:08:56,600 --> 01:08:59,210 So then, yes, I would retract some of what I said. 1318 01:08:59,210 --> 01:09:00,770 And I would defer to his judgment. 1319 01:09:00,770 --> 01:09:04,399 If he watches, especially the CS50L class, 1320 01:09:04,399 --> 01:09:08,510 and does the assignments for his own practice and exposure, 1321 01:09:08,510 --> 01:09:11,060 then I would defer to him as to just how comfortable he 1322 01:09:11,060 --> 01:09:12,649 would be with the material. 1323 01:09:12,649 --> 01:09:16,970 Doug's material might skew a little toward the US and US-based cases. 1324 01:09:16,970 --> 01:09:20,960 But we tried to keep the course more broadly focused on the law, 1325 01:09:20,960 --> 01:09:24,314 in general, looking at issues in other countries as well. 1326 01:09:24,314 --> 01:09:26,689 So I think it's quite possible, but I would defer to him. 1327 01:09:26,689 --> 01:09:31,118 And please feel free to reach out to me or Doug to ask more specifically. 1328 01:09:31,118 --> 01:09:33,160 RAMON: I have actually emailed Doug this weekend. 1329 01:09:33,160 --> 01:09:37,950 So maybe he will help me with additional reading for me and my friend. 1330 01:09:37,950 --> 01:09:39,930 DAVID: OK, sounds good. 1331 01:09:39,930 --> 01:09:42,252 I'll mention as much to him as well. 1332 01:09:42,252 --> 01:09:44,210 Well, before we adjourn officially, let me just 1333 01:09:44,210 --> 01:09:47,569 give you a final top-level overview of these classes. 1334 01:09:47,569 --> 01:09:51,470 Pictured here, for instance, are summaries, then, 1335 01:09:51,470 --> 01:09:55,700 of the syllabi of all three of these classes, CS50L, 1336 01:09:55,700 --> 01:09:58,370 again, going into more depth on several of the concepts. 1337 01:09:58,370 --> 01:10:02,990 And allow me to just color code which sections of each course 1338 01:10:02,990 --> 01:10:05,540 is similar to a section of another course. 1339 01:10:05,540 --> 01:10:09,320 These are not perfect correlations, because some courses, as mentioned, 1340 01:10:09,320 --> 01:10:12,030 go into more or less depth than the other. 1341 01:10:12,030 --> 01:10:14,240 But as you think about whether any of these classes 1342 01:10:14,240 --> 01:10:16,970 might be of interest to adopt or adapt, you can at least 1343 01:10:16,970 --> 01:10:18,320 see some of the commonalities. 1344 01:10:18,320 --> 01:10:20,320 And indeed, there is enough colors on the screen 1345 01:10:20,320 --> 01:10:23,690 here that it probably wouldn't be an ideal use of students' time 1346 01:10:23,690 --> 01:10:26,090 to, for instance, go through all three courses, 1347 01:10:26,090 --> 01:10:28,280 because there would be non-trivial overlap. 1348 01:10:28,280 --> 01:10:31,773 So you could imagine adopting one of the classes, or one 1349 01:10:31,773 --> 01:10:34,940 class for a different type of student and another class for a different type 1350 01:10:34,940 --> 01:10:38,600 of student, or, for instance, starting with one class, CS50T, 1351 01:10:38,600 --> 01:10:42,380 but if you'd like to add into the mix technology stacks and cloud computing, 1352 01:10:42,380 --> 01:10:45,600 you could borrow those materials from CS50B. 1353 01:10:45,600 --> 01:10:50,060 As is the spirit of CS50x, teachers are welcome to adopt or adapt any 1354 01:10:50,060 --> 01:10:52,550 of the courses' materials of interest. 1355 01:10:52,550 --> 01:10:55,790 So that goes for these three courses as well. 1356 01:10:55,790 --> 01:10:57,740 Allow me to remind you, if you wouldn't mind, 1357 01:10:57,740 --> 01:11:00,560 and if, Brian, you wouldn't mind pasting this URL into the chat, 1358 01:11:00,560 --> 01:11:03,830 we would love to get your feedback on this session, as with past sessions 1359 01:11:03,830 --> 01:11:07,460 as well, if you could go to URL here before logging off today 1360 01:11:07,460 --> 01:11:10,730 and just take a few moments to give us your anonymous thoughts. 1361 01:11:10,730 --> 01:11:15,160 But allow me to officially adjourn us here for this session. 1362 01:11:15,160 --> 01:11:17,840 Tomorrow we'll be focusing on CS50's introduction 1363 01:11:17,840 --> 01:11:20,660 to game development with CS50's own Colton Ogden. 1364 01:11:20,660 --> 01:11:23,210 And then on Wednesday and Thursday will Brian 1365 01:11:23,210 --> 01:11:25,670 be introducing his course on web development 1366 01:11:25,670 --> 01:11:28,410 and artificial intelligence, respectively. 1367 01:11:28,410 --> 01:11:29,870 But so nice to see everyone here. 1368 01:11:29,870 --> 01:11:31,880 We'll officially conclude here. 1369 01:11:31,880 --> 01:11:34,740 But I'm happy to stick around for one-on-one questions. 1370 01:11:34,740 --> 01:11:37,330 Thanks so much for joining us today. 1371 01:11:37,330 --> 01:11:38,000