WEBVTT X-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000 00:00:17.044 --> 00:00:18.210 DAVID J. MALAN: Hello world. 00:00:18.210 --> 00:00:22.679 This is CS50 Live and this is March 14, which means, happy pi day. 00:00:22.679 --> 00:00:24.470 Now it's been a while since we've seen you, 00:00:24.470 --> 00:00:26.682 because last Friday, Rob Bowden and I were actually 00:00:26.682 --> 00:00:28.390 away at a conference in Atlanta, Georgia. 00:00:28.390 --> 00:00:30.525 A conference known as SIGCSE, the Special Interest 00:00:30.525 --> 00:00:33.400 Group on Computer Science Education, which every year brings together 00:00:33.400 --> 00:00:35.900 some 1,000 educators to talk about and to work 00:00:35.900 --> 00:00:38.692 on improvements on computer science education. 00:00:38.692 --> 00:00:40.650 One of the keynote speakers this year, in fact, 00:00:40.650 --> 00:00:42.800 was the founder of code.org, which you might 00:00:42.800 --> 00:00:44.550 have seen in the press over the past year. 00:00:44.550 --> 00:00:47.050 They've done an extraordinary job over the past year getting 00:00:47.050 --> 00:00:50.310 people excited about computer science, and about programming in particular. 00:00:50.310 --> 00:00:52.351 In fact, one of their most well known initiatives 00:00:52.351 --> 00:00:56.560 is known as The Hour of Code which is an opportunity and a curriculum via which 00:00:56.560 --> 00:00:58.769 you, or a friend, or a family member, or colleague, 00:00:58.769 --> 00:01:01.810 could get your hands dirty with a bit of computer science and programming 00:01:01.810 --> 00:01:04.610 for just an hour to see if you take to it. 00:01:04.610 --> 00:01:06.964 >> In fact, if you yourself have a friend, family member, 00:01:06.964 --> 00:01:10.130 or colleague who would like to try his or her hand at some computer science, 00:01:10.130 --> 00:01:13.390 but you think throwing them into CS50's curriculum might be a bit too much too 00:01:13.390 --> 00:01:17.910 soon, well by all means, refer them to code.org/learn where they can try 00:01:17.910 --> 00:01:21.110 their hand for just one hour at a bit of computer science. 00:01:21.110 --> 00:01:23.180 Or better yet, show them this clip. 00:01:23.180 --> 00:01:27.570 >> [VIDEO PLAYBACK] 00:01:27.570 --> 00:01:28.570 >> -Hi, I'm Leah. 00:01:28.570 --> 00:01:29.320 >> -And I'm Tonya. 00:01:29.320 --> 00:01:31.820 >> -And we're lucky enough to be studying computer science. 00:01:31.820 --> 00:01:34.895 We think it's terrible that 90% of school don't teach it. 00:01:34.895 --> 00:01:37.020 -They definitely didn't offer it at my high school. 00:01:37.020 --> 00:01:40.047 -So we're trying to make this video to show that anybody can learn. 00:01:40.047 --> 00:01:42.463 We want to get 10 million students to do The Hour of Code. 00:01:42.463 --> 00:01:43.810 >> -Hour of Code. 00:01:43.810 --> 00:01:44.410 >> -Hour of Code. 00:01:44.410 --> 00:01:45.405 >> -The Hour of Code. 00:01:45.405 --> 00:01:46.317 >> -Hour of Code. 00:01:46.317 --> 00:01:46.900 -Hour of Code. 00:01:46.900 --> 00:01:47.460 -Hour of Code. 00:01:47.460 --> 00:01:48.043 -Hour of Code. 00:01:48.043 --> 00:01:49.947 -The Hour of Code. 00:01:49.947 --> 00:01:51.780 -How do you get him to get to the sunflower. 00:01:51.780 --> 00:01:53.920 He needs to do some actions. 00:01:53.920 --> 00:01:54.560 >> -I got it. 00:01:54.560 --> 00:01:56.440 Yay. 00:01:56.440 --> 00:01:59.610 >> -And then we'll run it and see what happens. 00:01:59.610 --> 00:02:00.415 >> -Amazing. 00:02:00.415 --> 00:02:02.598 >> -There we go. 00:02:02.598 --> 00:02:04.483 >> -You just wrote your first program. 00:02:04.483 --> 00:02:04.983 -I wrote it? 00:02:04.983 --> 00:02:05.937 -Yeah. 00:02:05.937 --> 00:02:07.368 -This is the code you just wrote. 00:02:07.368 --> 00:02:08.800 -Very awesome. 00:02:08.800 --> 00:02:12.317 -I thought like, code was like FBI hacker, symbols and stuff. 00:02:12.317 --> 00:02:14.650 -A little bit of problem solving, a little bit of logic. 00:02:14.650 --> 00:02:15.650 -It's like instructions. 00:02:15.650 --> 00:02:18.040 -Programming is a lot easier today. 00:02:18.040 --> 00:02:20.060 -Don't just play on your phone. 00:02:20.060 --> 00:02:20.600 Program it. 00:02:20.600 --> 00:02:21.099 >> -All right. 00:02:21.099 --> 00:02:21.926 -Awesome. 00:02:21.926 --> 00:02:24.050 >> -How does someone go about getting a job? 00:02:24.050 --> 00:02:26.960 >> -Maybe take an online class, find a class at a community college. 00:02:26.960 --> 00:02:29.219 >> -You can get one of the best paying jobs in the world. 00:02:29.219 --> 00:02:31.510 -I think medicine's moving into the whole computer age. 00:02:31.510 --> 00:02:33.450 -Technology touches every part of our lives. 00:02:33.450 --> 00:02:36.340 If you can create technology, you can change the world. 00:02:36.340 --> 00:02:39.539 >> -So we're excited that you're participating in today's Hour of Code. 00:02:39.539 --> 00:02:40.830 -We just did two lines of code. 00:02:40.830 --> 00:02:42.471 -Three lines of code. 00:02:42.471 --> 00:02:42.970 -Four lines. 00:02:42.970 --> 00:02:43.760 -Seven lines. 00:02:43.760 --> 00:02:44.585 -Five lines. 00:02:49.435 --> 00:02:50.971 -16 lines of codes. 00:02:50.971 --> 00:02:51.720 -99 lines of code. 00:02:51.720 --> 00:02:52.670 -60 lines. 00:02:52.670 --> 00:02:54.380 -18 lines of code. 00:02:54.380 --> 00:02:56.330 -75 lines of code. 00:02:56.330 --> 00:02:58.700 -It doesn't matter how old you are. 00:02:58.700 --> 00:02:59.426 -Hour of Code. 00:02:59.426 --> 00:03:01.890 -Hour of Code. 00:03:01.890 --> 00:03:02.880 -The Hour of Code. 00:03:02.880 --> 00:03:03.750 -The Hour of Code. 00:03:03.750 --> 00:03:06.410 -The Hour of Code. 00:03:06.410 --> 00:03:08.555 -Whether you're young man or a young woman. 00:03:08.555 --> 00:03:11.127 Whether you live in a city or rural area. 00:03:11.127 --> 00:03:13.876 -Everybody in this country should learn how to program a computer. 00:03:13.876 --> 00:03:15.001 -And I just completed the-- 00:03:15.001 --> 00:03:16.050 -Hour of Code. 00:03:16.050 --> 00:03:17.790 -It's actually really easy to learn. 00:03:17.790 --> 00:03:19.330 -Girls should learn this, too. 00:03:19.330 --> 00:03:22.940 -Understand that language that's going to be the future. 00:03:22.940 --> 00:03:24.420 -Anyone can learn computer science. 00:03:24.420 --> 00:03:25.378 -And you can learn too. 00:03:25.378 --> 00:03:29.374 -Jack Dorsey, Mark Zuckerberg, Bill Gates, all of y'all, I'm learning. 00:03:29.374 --> 00:03:30.040 -Give it a shot. 00:03:43.330 --> 00:03:44.300 >> [END VIDEO PLAYBACK] 00:03:44.300 --> 00:03:47.610 >> Now something tells me that if you're in CS50 or is in CS50x, 00:03:47.610 --> 00:03:50.850 you've spent well more than just an hour on coding. 00:03:50.850 --> 00:03:53.080 But for any family members, friends, or colleagues 00:03:53.080 --> 00:03:56.450 that you'd like to introduce to this world, here's another incentive. 00:03:56.450 --> 00:03:57.440 Remember this guy? 00:03:57.440 --> 00:03:59.860 Very popular of late, has been a so-called flappy 00:03:59.860 --> 00:04:01.540 bird on various platforms. 00:04:01.540 --> 00:04:05.310 And here we have a URL, at code.org/flappy, 00:04:05.310 --> 00:04:08.400 where the kind folks at code.org can put together a tool via which you 00:04:08.400 --> 00:04:12.570 or a friend can make your own implementation of that popular game. 00:04:12.570 --> 00:04:13.910 So do check it out. 00:04:13.910 --> 00:04:15.811 >> Now that conference, and last Friday. 00:04:15.811 --> 00:04:18.060 Rob Bowden and I where again, away at this conference, 00:04:18.060 --> 00:04:19.768 and we thought about having a guest host. 00:04:19.768 --> 00:04:22.174 And we tried out quite a few folks for auditions. 00:04:22.174 --> 00:04:24.090 None of them seemed to work out, so we thought 00:04:24.090 --> 00:04:27.110 we'd show you a few clips of what did transpire. 00:04:27.110 --> 00:04:27.810 >> [VIDEO PLAYBACK] 00:04:27.810 --> 00:04:31.670 >> RAMON GALVAN: I'm Ramon Galvan filling in for your normal host, David Malan. 00:04:31.670 --> 00:04:40.340 The US military's passcode was 000000, not really safe if you ask me. 00:04:40.340 --> 00:04:43.430 Nevertheless, I love you. 00:04:43.430 --> 00:04:45.650 Unlike David, who circles you. 00:04:48.880 --> 00:04:51.040 Let's not go over this mistake. 00:04:51.040 --> 00:04:53.067 What is this about? 00:04:53.067 --> 00:04:54.733 Let's just see a video with Harry Lewis. 00:04:54.733 --> 00:04:55.116 >> [END VIDEO PLAYBACK] 00:04:55.116 --> 00:04:57.721 >> DAVID J. MALAN: Now, what's most funny about that clip is not 00:04:57.721 --> 00:05:00.720 how Ramon performed in front of the camera, but how Ramon does not know, 00:05:00.720 --> 00:05:02.870 until as of a few moments ago, that we were 00:05:02.870 --> 00:05:05.860 going to play those clips back here for you on the internet. 00:05:05.860 --> 00:05:07.680 So CS50's own, Ramon Galvan. 00:05:07.680 --> 00:05:10.070 Coming back perhaps in some future episode. 00:05:10.070 --> 00:05:12.460 >> Now meanwhile, you may recall we left last times episode 00:05:12.460 --> 00:05:14.670 on a bit of a cliffhanger, where we mentioned 00:05:14.670 --> 00:05:17.250 that Rob Bowden has a twin brother, Paul. 00:05:17.250 --> 00:05:19.450 Who, again, fancies himself a bit of a comedian. 00:05:19.450 --> 00:05:22.200 But he also happened to appear in a popular American game show, 00:05:22.200 --> 00:05:23.696 and we asked you which one. 00:05:23.696 --> 00:05:25.570 Well several of you wrote in with the answer. 00:05:25.570 --> 00:05:27.580 And here's one such example. 00:05:27.580 --> 00:05:31.140 >> In CS50 live, David mentioned about Robert's twin brother, Paul Bowden, 00:05:31.140 --> 00:05:32.590 and asked about to Google it. 00:05:32.590 --> 00:05:34.420 Well looks like he's in Harvard, too. 00:05:34.420 --> 00:05:37.990 And, Who Wants To Be A Millionaire, and yes, if I'm the first one 00:05:37.990 --> 00:05:41.810 to report this, David, sir, I would be glad to be famous on the next CS50 00:05:41.810 --> 00:05:42.310 live. 00:05:42.310 --> 00:05:45.400 So consider yourself famous because the answer was indeed, 00:05:45.400 --> 00:05:46.650 Who Wants To Be A Millionaire. 00:05:46.650 --> 00:05:50.390 And in fact, pictured here is Paul Bowden alongside that TV show's host. 00:05:50.390 --> 00:05:53.344 And we also did a bit of digging, and found this clip for you. 00:05:53.344 --> 00:05:54.010 [VIDEO PLAYBACK] 00:05:54.010 --> 00:05:56.410 -Paul Bowden from Franklin, New Jersey. 00:05:59.290 --> 00:05:59.897 Hey Paul. 00:05:59.897 --> 00:06:00.730 Welcome to the show. 00:06:00.730 --> 00:06:02.650 >> -Thank you. 00:06:02.650 --> 00:06:06.140 >> -Paul it says here you are a Sophomore at Harvard University, obviously 00:06:06.140 --> 00:06:07.840 a smart guy. 00:06:07.840 --> 00:06:09.400 >> -I guess. 00:06:09.400 --> 00:06:11.384 >> -Well in my book that certainly suggests so. 00:06:11.384 --> 00:06:13.800 And I know when you were standing in line for Millionaire, 00:06:13.800 --> 00:06:17.420 a sign from heaven said you're probably going to do well, right? 00:06:17.420 --> 00:06:19.260 >> -You could say that. 00:06:19.260 --> 00:06:22.920 When I was standing in line I had a Polo shirt that was tucked in 00:06:22.920 --> 00:06:26.300 and a bird happened to poop right down the back of my shirt. 00:06:26.300 --> 00:06:28.510 And it was still tucked in. 00:06:28.510 --> 00:06:30.390 But it ended up being good luck. 00:06:30.390 --> 00:06:32.070 >> -It is good luck, see? 00:06:32.070 --> 00:06:33.440 There you go, you're here. 00:06:33.440 --> 00:06:35.086 All right, Paul. 00:06:35.086 --> 00:06:36.440 Are you ready? 00:06:36.440 --> 00:06:36.941 >> -I am ready. 00:06:36.941 --> 00:06:37.440 -All right. 00:06:37.440 --> 00:06:38.685 Then let's play Millionaire. 00:06:41.360 --> 00:06:44.120 And your brother's been sitting behind you, your brother Rob. 00:06:44.120 --> 00:06:45.220 How are you, Rob? 00:06:45.220 --> 00:06:46.150 >> -I'm good how are you? 00:06:46.150 --> 00:06:47.421 >> -Twin brother. 00:06:47.421 --> 00:06:47.920 -Yes. 00:06:47.920 --> 00:06:50.290 -Now you're, the younger though, you came out six minutes later, right? 00:06:50.290 --> 00:06:51.130 Is that correct? 00:06:51.130 --> 00:06:51.650 >> -I am, yes. 00:06:51.650 --> 00:06:53.970 >> -But are you the smarter brother? 00:06:53.970 --> 00:06:55.480 >> -Well, I don't want to brag. 00:06:55.480 --> 00:06:56.765 So I can't answer that. 00:06:56.765 --> 00:06:58.600 >> [END VIDEO PLAYBACK] 00:06:58.600 --> 00:07:02.610 >> -So Rob has a twin, writes another of your classmates, hmm interesting. 00:07:02.610 --> 00:07:04.410 How deep does the rabbit hole go? 00:07:04.410 --> 00:07:08.290 I have a question, why do problem sets take so long to be autograded? 00:07:08.290 --> 00:07:09.860 What goes on behind the scenes? 00:07:09.860 --> 00:07:11.590 So we thought this would actually be a good question 00:07:11.590 --> 00:07:14.930 to answer because it does suggest a bit of an underlying interesting technical 00:07:14.930 --> 00:07:15.620 details. 00:07:15.620 --> 00:07:18.880 Contrary to popular belief, they are not in fact graded by Muppets, but rather 00:07:18.880 --> 00:07:21.950 by an infrastructure that we know as Check 50 on the client. 00:07:21.950 --> 00:07:25.350 And an infrastructure we know its sandbox 50 on the server side. 00:07:25.350 --> 00:07:27.250 >> Now for those unfamiliar, in order to test 00:07:27.250 --> 00:07:30.009 the correctness of some of CS50's problem set problems, 00:07:30.009 --> 00:07:32.050 you can run a command in the CS50 appliance known 00:07:32.050 --> 00:07:35.355 as check 50, where you specify a unique identifier for the test 00:07:35.355 --> 00:07:36.230 that you want to run. 00:07:36.230 --> 00:07:38.050 And then you specify the paths to the file 00:07:38.050 --> 00:07:40.697 or files that you want to upload to the servers for testing. 00:07:40.697 --> 00:07:42.780 Now, when the response comes back from the server, 00:07:42.780 --> 00:07:45.820 hopefully you see all green smiley faces, like those here, 00:07:45.820 --> 00:07:49.000 indicating that I wrote "hello, world" very correctly. 00:07:49.000 --> 00:07:51.630 By contrast, if I did something wrong, like not actually 00:07:51.630 --> 00:07:55.045 naming the file correctly, I might get this scary red unhappy face 00:07:55.045 --> 00:07:58.230 saying hello.c exists, which means it does not 00:07:58.230 --> 00:07:59.669 in fact, as indicated by the red. 00:07:59.669 --> 00:08:01.460 And if something's in yellow, meanwhile, it 00:08:01.460 --> 00:08:04.400 means that those checks didn't even run because of some dependency, 00:08:04.400 --> 00:08:07.030 some earlier test did not in fact succeed. 00:08:07.030 --> 00:08:09.164 >> So what's really happening underneath the hood? 00:08:09.164 --> 00:08:11.080 Well when you run this check 50 command, we're 00:08:11.080 --> 00:08:12.830 essentially zipping up all of your files, 00:08:12.830 --> 00:08:16.510 compressing them, sending them up to see CS50's cluster of servers, where 00:08:16.510 --> 00:08:19.090 we then create what's called a sandbox around them. 00:08:19.090 --> 00:08:21.100 Essentially you can think of this as a folder, 00:08:21.100 --> 00:08:25.250 and as a special user that exists solely for the purpose of compiling 00:08:25.250 --> 00:08:28.790 and running that specific code in isolation from anyone else's, 00:08:28.790 --> 00:08:32.480 so that just in case a student has an accidental infinite loop or worse, 00:08:32.480 --> 00:08:35.200 it's not going to necessarily affect anyone else on the system. 00:08:35.200 --> 00:08:39.200 Nor can any files be manipulated or deleted that shouldn't be allowed. 00:08:39.200 --> 00:08:41.159 >> Now, how does the code get tested? 00:08:41.159 --> 00:08:45.950 Well, we wrote a whole infrastructure called again, sandbox-- CS 50 sandbox. 00:08:45.950 --> 00:08:48.470 And this infrastructure is written, surprise, 00:08:48.470 --> 00:08:49.980 in a language called JavaScript. 00:08:49.980 --> 00:08:53.000 Which you might know, from clientside experiences, but it turns out 00:08:53.000 --> 00:08:55.490 you can also use JavaScript on the server side. 00:08:55.490 --> 00:08:57.450 What do some of the tests actually look like? 00:08:57.450 --> 00:09:01.260 Well here's some server side JavaScript code, and it's just an excerpt thereof. 00:09:01.260 --> 00:09:04.710 But this represents two checks that we might run on your code. 00:09:04.710 --> 00:09:08.360 >> The first of which up top there, checks whether the file hello.c exists, 00:09:08.360 --> 00:09:11.880 and the second one actually checks if your file compiles OK. 00:09:11.880 --> 00:09:15.080 And that is what ultimately generates those unhappy faces 00:09:15.080 --> 00:09:18.479 or those happy faces that you see in the form of check 50 results. 00:09:18.479 --> 00:09:20.270 Now, for much more technical detail, you're 00:09:20.270 --> 00:09:23.436 welcome to take a look at this paper here, which coincidentally was actually 00:09:23.436 --> 00:09:25.680 presented at last year's SIGCSE conference, 00:09:25.680 --> 00:09:28.660 and it dives into much more detail as to how that system works 00:09:28.660 --> 00:09:31.010 and why we built it last year. 00:09:31.010 --> 00:09:33.180 >> Now, in the media of late, has been this expression 00:09:33.180 --> 00:09:35.640 here-- goto fail, the so-called goto fail 00:09:35.640 --> 00:09:38.410 bug that plagued Apple Computer recently. 00:09:38.410 --> 00:09:42.021 Now, we don't introduce this in CS 50, because the goto statement in C 00:09:42.021 --> 00:09:44.770 is generally frowned upon, even though it definitely has its uses. 00:09:44.770 --> 00:09:47.490 And what this means here, goto fail, is that whatever 00:09:47.490 --> 00:09:50.550 program has this line of code, should go to, that is 00:09:50.550 --> 00:09:54.290 jump to, another line of code irrespective of any lines 00:09:54.290 --> 00:09:58.300 in between it, and that line of code will be labeled with the keyword fail. 00:09:58.300 --> 00:10:01.005 >> And fail could be anything, a FUBAR [? BES ?] but in this case, 00:10:01.005 --> 00:10:03.630 Apple chose to call it fail because it's the chunk of code that 00:10:03.630 --> 00:10:06.850 should execute if and when something has failed. 00:10:06.850 --> 00:10:10.717 Now, unfortunately, Apple made a mistake with this statement, as we'll soon see. 00:10:10.717 --> 00:10:12.550 And they recently released this announcement 00:10:12.550 --> 00:10:14.710 in one of their bug fix reports. 00:10:14.710 --> 00:10:16.950 An attacker with a privileged network position 00:10:16.950 --> 00:10:21.880 may capture or modify data in sessions protected by SSL/TLS. 00:10:21.880 --> 00:10:24.250 SSL, recall, was secure sockets layer, and it's 00:10:24.250 --> 00:10:28.070 the technology used to typically encrypt traffic between a web browser, 00:10:28.070 --> 00:10:31.730 say on a Mac or an iPhone, or any other device, and a web server. 00:10:31.730 --> 00:10:33.400 And TLS is related to that. 00:10:33.400 --> 00:10:36.670 >> This issue was addressed by restoring missing validation steps. 00:10:36.670 --> 00:10:40.350 So this was Apple's description of the problem and solution thereto. 00:10:40.350 --> 00:10:41.630 But what did this really mean? 00:10:41.630 --> 00:10:44.171 So we did some digging, and we actually found the source code 00:10:44.171 --> 00:10:49.170 for Apple's own implementation of SSL, which again affects Macs or iPhone, 00:10:49.170 --> 00:10:51.970 particularly if you're using Safari on those computers. 00:10:51.970 --> 00:10:53.890 Here's an excerpt from that code. 00:10:53.890 --> 00:10:56.140 >> Now, you might not recognize some of the functions. 00:10:56.140 --> 00:10:59.560 And you might not recognize the use of a go to statement up until now. 00:10:59.560 --> 00:11:01.480 But this is somewhat familiar syntax. 00:11:01.480 --> 00:11:04.900 We have some if conditions, some indentation, a function, curly braces. 00:11:04.900 --> 00:11:06.340 So not all that foreign. 00:11:06.340 --> 00:11:07.780 But let's zoom in a little bit. 00:11:07.780 --> 00:11:11.590 Here, adjust to those conditions, and here's mention of goto fail. 00:11:11.590 --> 00:11:12.579 Now, what is fail? 00:11:12.579 --> 00:11:14.870 Well let's actually scroll down further in the program. 00:11:14.870 --> 00:11:17.360 These are the lines of code, those three lines that 00:11:17.360 --> 00:11:20.970 are executed if you do indeed go to fail. 00:11:20.970 --> 00:11:22.430 >> Now, what's the issue then? 00:11:22.430 --> 00:11:24.430 Well, let's go back up to those conditions where 00:11:24.430 --> 00:11:28.630 I've highlighted in yellow all mentions of goto fail. 00:11:28.630 --> 00:11:30.860 See anything curious? 00:11:30.860 --> 00:11:32.210 Focus on the bottom there. 00:11:32.210 --> 00:11:32.710 Right? 00:11:32.710 --> 00:11:34.830 The code might be new, but the ideas are not. 00:11:34.830 --> 00:11:37.130 If we zoom in here, you'll notice that the programmer 00:11:37.130 --> 00:11:40.200 has written goto fail twice, but indented both of them. 00:11:40.200 --> 00:11:44.445 But you may have made this same mistake yourself in some problems for CS 50. 00:11:44.445 --> 00:11:47.070 Just because you indent two lines of code inside of a condition 00:11:47.070 --> 00:11:49.111 does not mean that they're both going to execute. 00:11:49.111 --> 00:11:52.240 They're only both going to execute if you actually surround both of them 00:11:52.240 --> 00:11:53.100 with what? 00:11:53.100 --> 00:11:54.320 Curly braces. 00:11:54.320 --> 00:11:57.130 >> So what's really happening if I sort of fix the indentation 00:11:57.130 --> 00:12:01.330 and don't add any curly braces, what's really happening underneath the hood, 00:12:01.330 --> 00:12:03.920 is that goto fail has essentially left alliance here, 00:12:03.920 --> 00:12:07.100 which means it's going to execute no matter what. 00:12:07.100 --> 00:12:09.640 And you're going to go to, or jump to, those three 00:12:09.640 --> 00:12:12.500 lines of code we looked at a moment ago. 00:12:12.500 --> 00:12:14.330 So what's the implication? 00:12:14.330 --> 00:12:17.760 Well, take a look at those bottom most two lines right here. 00:12:17.760 --> 00:12:20.450 Those lines will never, ever get reached. 00:12:20.450 --> 00:12:22.780 Because no matter what, that second goto fail 00:12:22.780 --> 00:12:25.790 is going to compel the program to jump right over those lines. 00:12:25.790 --> 00:12:28.030 And long story short, those last two lines 00:12:28.030 --> 00:12:31.100 are actually important for the correctness of SSL. 00:12:31.100 --> 00:12:35.610 >> Indeed, if they do not execute, it is possible or an adversary, a bad guy, 00:12:35.610 --> 00:12:38.210 to wage what is generally known as a man in the middle attack, 00:12:38.210 --> 00:12:41.860 pretending to be a secure website like Facebook, or Amazon, or Google. 00:12:41.860 --> 00:12:45.680 But really just see-- having an encrypted connection to you, 00:12:45.680 --> 00:12:48.792 and they then forward your traffic along, for better or for worse. 00:12:48.792 --> 00:12:50.750 Possibly your username, possibly your password, 00:12:50.750 --> 00:12:54.080 possibly your credit card information, to the actual site in question. 00:12:54.080 --> 00:12:55.410 Or not even at all. 00:12:55.410 --> 00:12:57.656 In other words, this breaks SSL. 00:12:57.656 --> 00:12:59.280 Now thankfully, Apple did address this. 00:12:59.280 --> 00:13:01.930 Both for Mac OS and iOS recently. 00:13:01.930 --> 00:13:04.790 But if you'd like to double check your computer is now up to date, 00:13:04.790 --> 00:13:08.630 assuming you have auto updates on, head to gotofail.com 00:13:08.630 --> 00:13:11.440 and you'll see a nice little test that will tell you as much. 00:13:11.440 --> 00:13:14.190 Meanwhile, if you'd like to take a look at the actual source code, 00:13:14.190 --> 00:13:16.990 this is a long URL, but here's the entire source code for that file 00:13:16.990 --> 00:13:19.740 if you'd like to get a sense of what the real world programming is 00:13:19.740 --> 00:13:22.310 like, and frankly real world bugs. 00:13:22.310 --> 00:13:25.390 >> Speaking of bugs, this meme was circulated quite a bit of late. 00:13:25.390 --> 00:13:28.670 99 little bugs in the code, 99 little bugs in the code, 00:13:28.670 --> 00:13:32.650 take one down, patch it around, 127 little bugs in the code. 00:13:32.650 --> 00:13:34.010 So what is this referring to? 00:13:34.010 --> 00:13:36.410 Possibly, this is an experience you yourself have had, 00:13:36.410 --> 00:13:39.400 where you try to chase down some bug, and then another, or maybe 00:13:39.400 --> 00:13:42.290 even more bugs spring up as a result of your having tried 00:13:42.290 --> 00:13:43.829 to address one problem. 00:13:43.829 --> 00:13:45.620 In fact, for this to hit home even further, 00:13:45.620 --> 00:13:48.080 let's pull up a face that is perhaps familiar. 00:13:48.080 --> 00:13:49.730 Hal, from Malcolm in the Middle. 00:13:49.730 --> 00:13:50.850 >> [VIDEO PLAYBACK] 00:13:50.850 --> 00:13:52.818 >> [MUSIC PLAYING] 00:14:17.587 --> 00:14:18.420 [END VIDEO PLAYBACK] 00:14:18.420 --> 00:14:21.128 DAVID J. MALAN: And now some hellos from some of your classmates. 00:14:21.128 --> 00:14:24.405 Up first is Khalid, and a friend of his who hail from northern Virginia 00:14:24.405 --> 00:14:26.030 in the United States. 00:14:26.030 --> 00:14:30.590 >> KHALID: Ahoy CS50 mates, my name is Khalid [INAUDIBLE]. 00:14:30.590 --> 00:14:35.580 Meet my parrot, [INAUDIBLE] I live in northern Virginia. 00:14:35.580 --> 00:14:41.070 I'm an eighth grader and I'm excited to be part of CS50 class. 00:14:41.070 --> 00:14:46.340 This is great to experience a college but stay at home. 00:14:46.340 --> 00:14:49.980 As you can guess, I am enrolled in the online learning program. 00:14:49.980 --> 00:14:54.380 Feel free to experience my first project here. 00:14:54.380 --> 00:14:56.579 See you around. 00:14:56.579 --> 00:14:58.620 DAVID J. MALAN:And now let's head to Kansas City, 00:14:58.620 --> 00:15:00.464 Missouri where Derek awaits. 00:15:00.464 --> 00:15:03.380 Derek was at work when he filmed this so you might hear a bit of noise 00:15:03.380 --> 00:15:07.170 in the background since he works in a data center. 00:15:07.170 --> 00:15:10.520 >> DEREK MITCHELL: Hello world, my name is Derek Mitchell. 00:15:10.520 --> 00:15:12.930 I am in Kansas City, Missouri. 00:15:12.930 --> 00:15:16.790 And I'm taking the CS50 class because I really 00:15:16.790 --> 00:15:19.830 need to learn some programming for my job. 00:15:19.830 --> 00:15:20.770 This is where I work. 00:15:20.770 --> 00:15:27.030 I am a regional support technician for Cabela's, world's foremost outfitter. 00:15:27.030 --> 00:15:31.160 And I'm just trying to learn some more programming so I can excel at my career 00:15:31.160 --> 00:15:33.690 and just be a better technician. 00:15:33.690 --> 00:15:40.600 So again, my name is Derek Mitchell and this is CS50. 00:15:40.600 --> 00:15:45.950 >> [SPEAKING ITALIAN] 00:15:45.950 --> 00:15:47.110 >> FEDERICO: Hello world. 00:15:47.110 --> 00:15:48.318 My name is Federico Grivelli. 00:15:48.318 --> 00:15:49.210 I am from Italy. 00:15:49.210 --> 00:15:52.670 I was born in one of the largest cities in the country, Milan. 00:15:52.670 --> 00:15:56.720 And I was actually raised in a smaller city next to Milan. 00:15:56.720 --> 00:16:00.740 So here starts my desire on expanding my horizons. 00:16:00.740 --> 00:16:04.910 And this why today I am a foreign exchange student in Washington state. 00:16:04.910 --> 00:16:07.260 Of course, the United States of America. 00:16:07.260 --> 00:16:10.545 So American education is really different from Italian. 00:16:10.545 --> 00:16:14.150 Here I get much more hands on experience, 00:16:14.150 --> 00:16:17.870 rather than studies and memorization. 00:16:17.870 --> 00:16:24.430 So this was me, my name again is Federico Grivelli, and this is a CS50. 00:16:24.430 --> 00:16:27.240 >> DAVID J. MALAN: And now a hello from someone we weren't expecting. 00:16:27.240 --> 00:16:28.380 >> SARAH COFFEY: Hello world. 00:16:28.380 --> 00:16:32.030 My name is Sarah Coffey, I'm from Maltham, Massachusetts, 00:16:32.030 --> 00:16:35.810 and I'm married to CS50's own Dan Coffey. 00:16:35.810 --> 00:16:39.592 Dan, I just wanted to wish you a very happy birthday. 00:16:39.592 --> 00:16:42.550 DAVID J. MALAN:He doesn't know this is about to happen, but CS50's own, 00:16:42.550 --> 00:16:44.770 Danny Coffey, is right now in the control room. 00:16:44.770 --> 00:16:49.125 But is about to be on the internet, because today is 29th birthday. 00:16:51.865 --> 00:16:53.308 Come on out Dan. 00:16:57.160 --> 00:17:01.306 Please come out, Dan, otherwise this is about to be very awkward. 00:17:01.306 --> 00:17:04.010 Dan? 00:17:04.010 --> 00:17:08.040 This year is Dan Coffey, did not know this was going to be happening-- we 00:17:08.040 --> 00:17:10.780 of course have prepared this. 00:17:10.780 --> 00:17:20.980 So happy 29th birthday, and we hope you are, indeed, surprised. 00:17:20.980 --> 00:17:23.741 No, that, other way, other way. 00:17:23.741 --> 00:17:24.240 No it was. 00:17:24.240 --> 00:17:24.889 >> DAN COFFEY: There we go. 00:17:24.889 --> 00:17:26.430 >> DAVID J. MALAN: Dan Coffey, everyone. 00:17:26.430 --> 00:17:28.460 Thank you very much Dan, for coming out. 00:17:28.460 --> 00:17:32.400 And now, 60 seconds of pandas. 00:17:32.400 --> 00:17:33.676 >> [VIDEO PLAYBACK] 00:17:33.676 --> 00:17:36.156 >> [MUSIC PLAYING] 00:18:32.077 --> 00:18:32.910 [END VIDEO PLAYBACK] 00:18:32.910 --> 00:18:34.670 DAVID J. MALAN: Now you may recall from a recent episode, 00:18:34.670 --> 00:18:37.830 that we introduced LaunchCode, an initiative in Saint Louis, Missouri, 00:18:37.830 --> 00:18:40.200 run by volunteers who have been following along 00:18:40.200 --> 00:18:43.304 with CS50's curriculum and guiding citizens of Saint Louis 00:18:43.304 --> 00:18:46.470 through that material toward an end of helping to pair them with programming 00:18:46.470 --> 00:18:48.530 jobs at the end of the semester. 00:18:48.530 --> 00:18:51.360 You may recall in fact, that this initiative was so popular 00:18:51.360 --> 00:18:55.749 in Saint Louis, that they nearly overflowed the local opera house. 00:18:55.749 --> 00:18:57.540 Well, LaunchCode's founders very graciously 00:18:57.540 --> 00:18:59.610 came to campus recently and agreed to sit down 00:18:59.610 --> 00:19:02.830 with us in Sanders Theatre for a chat about what LaunchCode is 00:19:02.830 --> 00:19:04.589 and how it's been going on. 00:19:04.589 --> 00:19:07.880 DAVID J. MALAN:We're here today with our friends from LaunchCode who have flown 00:19:07.880 --> 00:19:10.410 in all the way from St. Louis to say hello. 00:19:10.410 --> 00:19:11.279 Hello everyone. 00:19:11.279 --> 00:19:12.070 JIM MCKELVEY:Hello. 00:19:12.070 --> 00:19:14.819 DAVID J. MALAN: Who do we have here with us today from LaunchCode. 00:19:14.819 --> 00:19:16.304 JIM MCKELVEY: So, I'm Jim McKelvey. 00:19:16.304 --> 00:19:17.720 BRENDAN LIND:And I'm Brendan Lind. 00:19:17.720 --> 00:19:19.050 ZACH LOU: And I'm Zach Lou. 00:19:19.050 --> 00:19:20.020 DAVID J. MALAN: And for those unfamiliar, 00:19:20.020 --> 00:19:22.005 could you tell us a little about what LaunchCode is? 00:19:22.005 --> 00:19:24.380 >> JIM MCKELVEY: So LaunchCode is a job placement system 00:19:24.380 --> 00:19:26.880 that we are pioneering starting in St. Louis, 00:19:26.880 --> 00:19:28.600 but we're going to bring it nationwide. 00:19:28.600 --> 00:19:31.460 The idea basically is to get companies to change their hiring 00:19:31.460 --> 00:19:34.640 practices to accept people who have nontraditional credentials. 00:19:34.640 --> 00:19:39.350 So as we know, as programmers, that a lot of the best programmers 00:19:39.350 --> 00:19:41.720 are self-taught to some extent. 00:19:41.720 --> 00:19:44.869 And companies don't necessarily recognize 00:19:44.869 --> 00:19:46.160 this in their hiring practices. 00:19:46.160 --> 00:19:49.240 So if you're a good coder, you still don't necessarily 00:19:49.240 --> 00:19:51.080 have a way to a good job. 00:19:51.080 --> 00:19:53.400 >> And so, we started working with a hundred companies 00:19:53.400 --> 00:19:55.790 from billion dollar firms like Enterprise, 00:19:55.790 --> 00:19:59.670 and MasterCard, down to two-man start-ups. 00:19:59.670 --> 00:20:03.720 And we've gotten them all to agree to take LaunchCode candidates into, 00:20:03.720 --> 00:20:05.230 basically an apprenticeship system. 00:20:05.230 --> 00:20:07.920 >> DAVID J. MALAN: And how did you find CS50's materials in the first place. 00:20:07.920 --> 00:20:09.461 >> JIM MCKELVEY: So it was really funny. 00:20:09.461 --> 00:20:14.310 My wife took your class online through Harvard Extension. 00:20:14.310 --> 00:20:17.560 And she took Fall 2012 CS50. 00:20:17.560 --> 00:20:22.010 And while we were, I'm a computer scientist by training. 00:20:22.010 --> 00:20:25.180 And so I was helping her through the class, I was watching it. 00:20:25.180 --> 00:20:30.980 And she said, you know, this is being offered online through edX, 00:20:30.980 --> 00:20:36.960 and we're placing these people, who have very little traditional credentials, 00:20:36.960 --> 00:20:38.870 and we're like, this would be fantastic. 00:20:38.870 --> 00:20:40.540 So that's how we found out about it. 00:20:40.540 --> 00:20:41.535 Through m wife, Anna. 00:20:41.535 --> 00:20:42.994 And your Harvard Extension Program. 00:20:42.994 --> 00:20:44.201 DAVID J. MALAN: That's funny. 00:20:44.201 --> 00:20:47.620 It's such a small decision, her taking the classes had such an impact then. 00:20:47.620 --> 00:20:49.940 >> JIM MCKELVEY: It was super lucky. 00:20:49.940 --> 00:20:53.931 And we were really excited to see that you guys were working with edX 00:20:53.931 --> 00:20:56.430 and making it available, and all the supplemental materials. 00:20:56.430 --> 00:20:58.840 And it's fantastic resource for training. 00:20:58.840 --> 00:20:59.590 DAVID J. MALAN:OK. 00:20:59.590 --> 00:21:02.596 Well, in the news, we actually came across a look 00:21:02.596 --> 00:21:05.720 at what the first night of LaunchCode was when you were in the opera house. 00:21:05.720 --> 00:21:07.520 Can you give us a firsthand account of what 00:21:07.520 --> 00:21:09.840 your experience was like that evening? 00:21:09.840 --> 00:21:11.880 >> JIM MCKELVEY: Yeah, so I was in Rome. 00:21:11.880 --> 00:21:14.950 And Brendan called me at 3:00 in the morning, and said, 00:21:14.950 --> 00:21:17.140 we've overflowed all three venues. 00:21:17.140 --> 00:21:21.360 So we had the Christ Church Cathedral, the Downtown Library, 00:21:21.360 --> 00:21:24.520 and the Soldiers Memorial, which are three fairly large venues. 00:21:24.520 --> 00:21:26.390 And we were expecting a few hundred people. 00:21:26.390 --> 00:21:28.550 We had over 1,000 people sign up. 00:21:28.550 --> 00:21:30.890 So we overflowed everything and Brendan calls me, 00:21:30.890 --> 00:21:33.840 like, we need a bigger building. 00:21:33.840 --> 00:21:36.370 And they got us this giant, this giant opera 00:21:36.370 --> 00:21:38.717 house, where we held the first class. 00:21:38.717 --> 00:21:40.050 DAVID J. MALAN: Oh that's great. 00:21:40.050 --> 00:21:42.590 JIM MCKELVEY:And people were so grateful. 00:21:42.590 --> 00:21:45.930 I mean, the people who we are reaching are 00:21:45.930 --> 00:21:48.089 people who you just want to help these folks. 00:21:48.089 --> 00:21:50.630 DAVID J. MALAN: And from what you've seen, just how realistic 00:21:50.630 --> 00:21:53.460 is it, someone who enters the course with no prior background. 00:21:53.460 --> 00:21:56.150 And some months later, they have 13 weeks of CS50 00:21:56.150 --> 00:21:58.310 under their belt to actually feel confident enough 00:21:58.310 --> 00:22:01.000 and be qualified enough for an actual programming job. 00:22:01.000 --> 00:22:03.590 >> JIM MCKELVEY: So David, we really don't know, OK? 00:22:03.590 --> 00:22:06.770 Because we haven't done it at any sort of scale yet. 00:22:06.770 --> 00:22:10.910 You know, our data points right now are what I've learned was possible. 00:22:10.910 --> 00:22:13.533 And then the 50 some people that we've placed, 00:22:13.533 --> 00:22:15.200 we know generally where they are. 00:22:15.200 --> 00:22:18.270 And our guess is that somebody who comes through CS50 00:22:18.270 --> 00:22:21.397 is going to be generally as skilled as some 00:22:21.397 --> 00:22:23.480 of the people we have already successfully placed. 00:22:23.480 --> 00:22:25.620 >> So we haven't proven its scale yet. 00:22:25.620 --> 00:22:29.140 And I'm not saying that it's a complete in education by any means. 00:22:29.140 --> 00:22:31.990 But it's such a great start. 00:22:31.990 --> 00:22:33.640 And it gives people a context. 00:22:33.640 --> 00:22:36.310 And it also, you know, it's a rigorous class. 00:22:36.310 --> 00:22:40.020 So anyone who completes this class has proven something. 00:22:40.020 --> 00:22:43.175 That they've demonstrated some character or a combination of you 00:22:43.175 --> 00:22:48.170 know, either tenacity or intelligence, or whatever that magical formula is 00:22:48.170 --> 00:22:51.660 that gets them through the pretty tough class, 00:22:51.660 --> 00:22:54.420 we think that's going to bode very well for their success. 00:22:54.420 --> 00:22:57.340 And we have companies that are willing to back up on that. 00:22:57.340 --> 00:22:59.700 So, so we don't really know. 00:22:59.700 --> 00:23:03.630 But we're very optimistic that anyone who gets through CS50, 00:23:03.630 --> 00:23:06.080 we can get a job. 00:23:06.080 --> 00:23:09.320 >> BRENDAN LIND: And the thing is that LaunchCode is not 00:23:09.320 --> 00:23:11.120 like your typical entry level hire. 00:23:11.120 --> 00:23:13.870 Right, it's not where you come in and say 00:23:13.870 --> 00:23:16.410 normally you might need a C.S. degree and two years of work 00:23:16.410 --> 00:23:18.800 experience to get a lot of jobs, right? 00:23:18.800 --> 00:23:22.680 But then, LaunchCode comes in, you don't need any of those things. 00:23:22.680 --> 00:23:24.620 You don't need to be qualified to that point. 00:23:24.620 --> 00:23:26.370 Where you have to be is have that aptitude 00:23:26.370 --> 00:23:27.780 and drive to get to that level. 00:23:27.780 --> 00:23:28.960 So it's an apprenticeship. 00:23:28.960 --> 00:23:31.920 And it lasts until you're at that level, where 00:23:31.920 --> 00:23:34.040 you would be brought in for the normal position. 00:23:34.040 --> 00:23:35.910 And the company can let you go at any point. 00:23:35.910 --> 00:23:38.000 >> DAVID J. MALAN: So the companies are the ones doing, ultimately, 00:23:38.000 --> 00:23:39.177 that initial partnership. 00:23:39.177 --> 00:23:40.010 BRENDAN LIND: Right. 00:23:40.010 --> 00:23:43.045 So what CS50-- what we're doing trying to do with CS50 00:23:43.045 --> 00:23:46.320 is get them to the point where then, hey if you can take CS50, 00:23:46.320 --> 00:23:48.620 like you have that drive, you have that will to learn, 00:23:48.620 --> 00:23:53.460 and you have that aptitude to self-learn and work in a company, 00:23:53.460 --> 00:23:56.160 to handle whatever it is that is needed. 00:23:56.160 --> 00:23:58.530 And then we can get them, we get them in the door. 00:23:58.530 --> 00:24:02.640 And they get paid, they get paid $15 an hour for the duration apprenticeship. 00:24:02.640 --> 00:24:05.880 And whenever they're ready, the company turns them into a salaried position. 00:24:05.880 --> 00:24:08.570 If they don't, if the company doesn't think that they're on their way, 00:24:08.570 --> 00:24:09.445 they can let them go. 00:24:09.445 --> 00:24:14.750 And so far, that success is that pretty much everybody is still 00:24:14.750 --> 00:24:15.630 with their company. 00:24:15.630 --> 00:24:16.540 >> DAVID J. MALAN:OK. 00:24:16.540 --> 00:24:18.350 So right now you're focused on Saint Louis, 00:24:18.350 --> 00:24:20.880 but I gather you'd like to take the initiative nationally. 00:24:20.880 --> 00:24:22.790 So what is indeed next for you? 00:24:22.790 --> 00:24:25.630 >> JIM MCKELVEY: So next are a series of cities around the country. 00:24:25.630 --> 00:24:28.710 So, we don't want to go national until we refine the model, 00:24:28.710 --> 00:24:32.470 and maybe laid a couple of those sidewalks through the dirt. 00:24:32.470 --> 00:24:34.830 The completion of this first CS50 class is 00:24:34.830 --> 00:24:38.080 going to be really important, because we're getting good data from that. 00:24:38.080 --> 00:24:43.079 But once we know what works and what we really should be doing and scaling, 00:24:43.079 --> 00:24:45.120 then we're going to scale as quickly as possible, 00:24:45.120 --> 00:24:46.710 because the need exists everywhere. 00:24:46.710 --> 00:24:50.260 And we're not trying to make this some sort of local, Saint Louis phenomenon. 00:24:50.260 --> 00:24:52.740 We're just using that as a test bed. 00:24:52.740 --> 00:24:55.900 And then we'll be expanding you know, as quickly as we can 00:24:55.900 --> 00:24:58.160 to places that have similar needs. 00:24:58.160 --> 00:25:00.070 >> DAVID J. MALAN: Well, thank you so much for everything you've been doing. 00:25:00.070 --> 00:25:01.610 We're flattered to even be part of it. 00:25:01.610 --> 00:25:02.660 It's been quite inspiring. 00:25:02.660 --> 00:25:03.660 >> JIM MCKELVEY: Thank you. 00:25:03.660 --> 00:25:08.610 This has been so generous of just a world class education that 00:25:08.610 --> 00:25:12.660 is available for people who genuinely appreciate it. 00:25:12.660 --> 00:25:14.410 I wish you could meet some of the students 00:25:14.410 --> 00:25:18.470 and see the people who you know, it's changing lives. 00:25:18.470 --> 00:25:22.610 And I just wish we could reach through the cameras and bring them here. 00:25:22.610 --> 00:25:25.090 But it's so meaningful. 00:25:25.090 --> 00:25:28.189 And it's moving the needle and it's really good. 00:25:28.189 --> 00:25:28.730 So thank you. 00:25:28.730 --> 00:25:29.980 >> DAVID J. MALAN: Thank you from us as well. 00:25:29.980 --> 00:25:30.900 Appreciate it. 00:25:33.660 --> 00:25:35.660 Thanks so much for joining us. 00:25:35.660 --> 00:25:39.550 launchcodestl.com for more. 00:25:39.550 --> 00:25:43.109 >> So we got chatting shortly after that chat about what more we could do. 00:25:43.109 --> 00:25:44.400 And we came upon the following. 00:25:44.400 --> 00:25:48.010 We are so pleased to announce the first ever CS50 Hackathon that 00:25:48.010 --> 00:25:50.500 will be going on the road to Saint Louis. 00:25:50.500 --> 00:25:51.780 The LaunchCode edition. 00:25:51.780 --> 00:25:54.230 In fact, we will be taking with us, if you'd like to meet these folks. 00:25:54.230 --> 00:25:56.563 If you yourself hail from St. Louis, or would ultimately 00:25:56.563 --> 00:25:59.850 like to tune in online, CS50's own Andrew will be there. 00:25:59.850 --> 00:26:04.720 CS50's Chang, Colton, Dan, whom you just met, 00:26:04.720 --> 00:26:11.040 Devin, Gabriel, Jason, Ramon, who you also met earlier. 00:26:11.040 --> 00:26:15.920 Rob Bowden, Shelly, whom you may remember from such films as-- 00:26:15.920 --> 00:26:17.370 and [? Zemaila ?]. 00:26:17.370 --> 00:26:20.600 >> So indeed, if you would like to join us in St. Louis or online 00:26:20.600 --> 00:26:24.800 at live.cs50.net, tune in for the next live show on Friday 00:26:24.800 --> 00:26:27.332 March 28 at 6:00 PM Eastern Time. 00:26:27.332 --> 00:26:29.790 We're going to be awake for quite a few hours that evening. 00:26:29.790 --> 00:26:32.170 And we hope you'll stay up with us as well. 00:26:32.170 --> 00:26:33.896 That's it for this week's CS50 Live. 00:26:33.896 --> 00:26:35.770 Thanks so much to everyone behind the camera. 00:26:35.770 --> 00:26:37.320 Thanks so much to our contributors. 00:26:37.320 --> 00:26:39.880 We'll see you in St. Louis, this was CS50. 00:27:07.810 --> 00:27:10.350 >> RAMON: What does the fox say?