1 00:00:00,506 --> 00:00:09,296 [Silence] 2 00:00:09,796 --> 00:00:12,126 >> This is CS50! 3 00:00:12,126 --> 00:00:14,476 So this is already week 11, 4 00:00:14,476 --> 00:00:18,056 which means week 12 is almost here and thus is the end 5 00:00:18,056 --> 00:00:20,836 of CS 50, but a few things remain on the horizon. 6 00:00:20,836 --> 00:00:24,846 So one, very excitingly, quiz 1 is this Wednesday, 7 00:00:24,846 --> 00:00:27,026 not in here to the same locations as last time. 8 00:00:27,296 --> 00:00:29,286 See the PDF that's linked on the course's home page. 9 00:00:29,286 --> 00:00:31,536 Last night's review session is already online, 10 00:00:31,826 --> 00:00:33,396 but genuinely more excitingly 11 00:00:33,396 --> 00:00:35,386 on the horizon is the CS50 Hackathon. 12 00:00:35,386 --> 00:00:37,966 So as promised, this is going to be an opportunity on Friday, 13 00:00:37,966 --> 00:00:40,496 December 2, which is going to be the first evening 14 00:00:40,496 --> 00:00:44,486 of reading period, to dive into your final project 15 00:00:44,486 --> 00:00:47,346 with the couple of hundred of your classmates alongside you. 16 00:00:47,346 --> 00:00:49,376 We're going to charter some harbored shuttles, 17 00:00:49,546 --> 00:00:52,266 going to drive down to Tech Square and Kendall Square, 18 00:00:52,266 --> 00:00:54,486 which is where Microsoft Nerd Center is, 19 00:00:54,786 --> 00:00:56,906 which is their Research and Development Center, 20 00:00:57,396 --> 00:00:58,856 which is a very sexy place. 21 00:00:58,856 --> 00:01:02,866 And awaiting you will be scenes like this as well as pizza 22 00:01:02,866 --> 00:01:06,746 around 8:00 p.m., Chinese food from the Kong at 1:00 a.m., 23 00:01:07,056 --> 00:01:09,046 and then for those of you still awake 24 00:01:09,046 --> 00:01:10,416 at 5:00 a.m. we will get back 25 00:01:10,416 --> 00:01:12,546 in the shuttle and take you to IHOP. 26 00:01:12,546 --> 00:01:15,826 So we will start the RSVP process for this 27 00:01:15,826 --> 00:01:17,236 over the next week or two. 28 00:01:17,236 --> 00:01:21,256 Space is limited, so we may end up lottering, but more details 29 00:01:21,256 --> 00:01:24,186 on that on the home page and via e-mail before long. 30 00:01:24,306 --> 00:01:28,936 And then this is around 5:30 a.m. last year, here at IHOP. 31 00:01:29,446 --> 00:01:31,116 We got the Early Bird Special there -- 32 00:01:31,116 --> 00:01:33,126 still dark outside, you can see. 33 00:01:33,126 --> 00:01:35,596 So also on the horizon and the culmination of all 34 00:01:35,596 --> 00:01:38,306 of CS50 is the CS50 Fair, so this is on Friday, 35 00:01:38,306 --> 00:01:41,196 December 9 to which the entire campus is invited, 36 00:01:41,376 --> 00:01:44,186 where a spectacle like this will await you, 37 00:01:44,186 --> 00:01:47,036 including stress balls and popcorn and candy 38 00:01:47,036 --> 00:01:48,806 and final projects galore. 39 00:01:48,806 --> 00:01:50,966 Think Middle School Science Fair, but much, 40 00:01:50,966 --> 00:01:52,636 much cooler with computers. 41 00:01:52,636 --> 00:01:57,376 And so that will be again, the climax of your experience here. 42 00:01:57,376 --> 00:02:01,146 So over the course of last week, beyond hating some of those bugs 43 00:02:01,146 --> 00:02:03,396 in the Google Earth plug and there were some other fun bugs, 44 00:02:03,686 --> 00:02:05,446 this screenshot was taken by one 45 00:02:05,446 --> 00:02:09,136 of our students whereby he somehow accidentally replicated 46 00:02:09,136 --> 00:02:13,986 just one staff member on his Google Earth; in fact, many, 47 00:02:13,986 --> 00:02:16,546 many, many times as you can see in the 2D Earth there. 48 00:02:16,846 --> 00:02:18,226 So that was in fact a bug. 49 00:02:18,626 --> 00:02:21,446 I would be remiss if I didn't acknowledge my own bug, 50 00:02:21,446 --> 00:02:24,156 so you'll recall that just as our Facebook gifts came in, 51 00:02:24,156 --> 00:02:26,726 I really screwed up a final demonstration 52 00:02:26,726 --> 00:02:29,886 of this library called jQuery, which is meant to simplify you. 53 00:02:29,886 --> 00:02:32,956 So Javascript, in particularly technologies like ajax, 54 00:02:32,956 --> 00:02:36,086 which again allow you to get more data from server to client, 55 00:02:36,266 --> 00:02:38,306 even after the initial web page has loaded. 56 00:02:38,306 --> 00:02:40,386 So this demo does actually work. 57 00:02:40,386 --> 00:02:43,866 Realize that foolishly I had commented out one line of code 58 00:02:44,036 --> 00:02:46,726 about five minutes prior to that demonstration, blowing up 59 00:02:46,726 --> 00:02:48,686 and commenting out an important line of code, 60 00:02:48,956 --> 00:02:50,876 turns out is bad for demonstration. 61 00:02:50,876 --> 00:02:53,456 So realize the code that you do have from last week is good. 62 00:02:53,966 --> 00:02:57,826 But then I proceeded to one-up myself further last week, 63 00:02:57,826 --> 00:03:00,136 as you may recall, with a little demo involving sending 64 00:03:00,136 --> 00:03:00,936 text messages. 65 00:03:01,306 --> 00:03:03,146 So let's just fess up. 66 00:03:03,146 --> 00:03:06,156 I'm very content putting this admission out on the Internet, 67 00:03:06,156 --> 00:03:09,536 so this was the while loop, which we've been using 68 00:03:09,536 --> 00:03:11,046 since week one, ironically, 69 00:03:11,046 --> 00:03:14,736 and in this while loop we used a library called PHPMailer, 70 00:03:14,736 --> 00:03:17,476 which allows you to create a male object, so to speak, 71 00:03:17,476 --> 00:03:19,956 and then add an address to it, add a body to it, 72 00:03:20,156 --> 00:03:23,616 and then call a send function, which if you use the right types 73 00:03:23,616 --> 00:03:26,156 of e-mail addresses you can generate text messages, 74 00:03:26,156 --> 00:03:27,906 and not e-mails per se. 75 00:03:27,906 --> 00:03:32,476 Unfortunately failure to RTFM means that I did not realize, 76 00:03:32,566 --> 00:03:35,106 despite its very clear name, that adding an address 77 00:03:35,426 --> 00:03:37,646 to the mail literally adds an address; 78 00:03:37,956 --> 00:03:40,136 it does not subtract the prior address. 79 00:03:40,466 --> 00:03:43,996 So as a result of this gaff and specifically this line, 80 00:03:44,406 --> 00:03:46,246 some of you might have been all too aware 81 00:03:46,596 --> 00:03:48,926 that Aaron first got a text message, 82 00:03:49,086 --> 00:03:51,386 but then on the second iteration of this while loop Aaron 83 00:03:51,386 --> 00:03:54,376 and Abel got a text message, and then on the third iteration 84 00:03:54,376 --> 00:03:57,746 of this loop, Aaron and Abel and Abigail got a text message. 85 00:03:58,026 --> 00:04:01,386 On the fourth iteration of this loop, Aaron, Abel, Abigail 86 00:04:01,386 --> 00:04:05,016 and Adriana got a text message, each individually. 87 00:04:05,346 --> 00:04:07,386 SO this kind of scales up fairly quickly. 88 00:04:07,386 --> 00:04:11,026 In fact, if you do the math, 1 plus 2 plus dot-dot-dot, 89 00:04:11,026 --> 00:04:14,216 all the way up, actually gives us the same running time 90 00:04:14,216 --> 00:04:16,856 of selection sort, which if you recall, 91 00:04:17,316 --> 00:04:19,286 did a whole lot of operations. 92 00:04:19,286 --> 00:04:21,216 Indeed, if you add all of these operations 93 00:04:21,216 --> 00:04:23,676 up you get a little something in big O(n) squared. 94 00:04:23,916 --> 00:04:27,496 Big O(n) squared in a loop with 600 students 95 00:04:27,496 --> 00:04:31,826 at 10 cents per text message, tends to add up, so in the 5 96 00:04:31,826 --> 00:04:34,526 or 8 seconds of cluelessness that I had here on stage 97 00:04:34,526 --> 00:04:38,236 and on camera, we sent 10,000 text messages 98 00:04:38,276 --> 00:04:41,746 to your classmates, and Aaron has my particular apology 99 00:04:41,746 --> 00:04:43,836 since he was on the receiving end of most of those. 100 00:04:43,836 --> 00:04:49,176 So be very careful when using loops apparently. 101 00:04:49,936 --> 00:04:55,216 So without harping too much on that, where are we headed today? 102 00:04:55,216 --> 00:04:57,776 Oh, and incidentally, if you take nothing else away 103 00:04:57,776 --> 00:05:01,346 from this, too, thank God I inserted this artificial delay 104 00:05:01,346 --> 00:05:02,356 into this loop here. 105 00:05:02,356 --> 00:05:04,906 The goal originally was just to avoid getting blacklisted 106 00:05:04,906 --> 00:05:07,346 by a mail server, because if you send too many mails at once, 107 00:05:07,576 --> 00:05:10,376 a lot of servers will pull back on the reigns and say, no, 108 00:05:10,376 --> 00:05:11,876 you can't keep sending all these messages. 109 00:05:12,096 --> 00:05:15,036 Now, in my case this actually inserted enough of a delay 110 00:05:15,036 --> 00:05:18,246 that we only got to student number 138, but again, 111 00:05:18,246 --> 00:05:20,806 if you add up 1 plus 2 plus 3, dot dot dot all the way 112 00:05:20,806 --> 00:05:23,926 up to 138, you get about 10,000 text messages. 113 00:05:23,926 --> 00:05:28,426 So in any case, after CS50, which is the point 114 00:05:28,426 --> 00:05:30,916 at which we're almost at, you can head off in all sorts 115 00:05:30,916 --> 00:05:31,786 of different directions. 116 00:05:31,786 --> 00:05:34,036 This is actually the same chart that's 117 00:05:34,036 --> 00:05:35,326 on the back of today's handout. 118 00:05:35,326 --> 00:05:36,786 You got this way back in week zero 119 00:05:36,786 --> 00:05:38,366 which is CS50's own unofficial guide 120 00:05:38,366 --> 00:05:39,556 to computer science at Harvard. 121 00:05:39,786 --> 00:05:43,096 So statistically about half of you will not go 122 00:05:43,096 --> 00:05:44,796 on to future courses in computer science, 123 00:05:44,796 --> 00:05:45,796 and that's perfectly fine. 124 00:05:45,796 --> 00:05:48,316 Hopefully 50 in particular will nonetheless serve you well 125 00:05:48,316 --> 00:05:51,036 as you return to your own field, but for those of you curious 126 00:05:51,036 --> 00:05:53,896 in pursuing either a concentration or a secondary 127 00:05:54,156 --> 00:05:56,316 or just more coursework so that you return 128 00:05:56,316 --> 00:05:59,936 to your own field all the more empowered with tools and ideas 129 00:05:59,936 --> 00:06:02,266 that you can solve problems specific to your own domain, 130 00:06:02,516 --> 00:06:05,396 realize that from 50 in the middle here, you can go off 131 00:06:05,396 --> 00:06:08,466 in all of the directions that these areas point in here. 132 00:06:08,696 --> 00:06:11,076 And I'll defer to our booklet here and also 133 00:06:11,076 --> 00:06:13,396 to CS50's own course shopping tool if you'd like to read 134 00:06:13,396 --> 00:06:16,236 up more on the descriptions, but just to help you simplify, 135 00:06:16,486 --> 00:06:18,776 realize that after taking CS50 you can go off 136 00:06:18,776 --> 00:06:21,266 in several very specific directions 137 00:06:21,416 --> 00:06:22,926 as soon as this spring. 138 00:06:23,226 --> 00:06:25,946 So the course list you see here are all of the courses 139 00:06:25,946 --> 00:06:28,436 for which 50 is the only prerequisite, 140 00:06:28,436 --> 00:06:30,526 so you have a whole menu of options ahead of you, 141 00:06:30,756 --> 00:06:32,336 and it really does span the gamut 142 00:06:32,336 --> 00:06:34,326 of topics in computer science. 143 00:06:34,326 --> 00:06:37,246 In general, and this is perhaps a gross oversimplification, 144 00:06:37,246 --> 00:06:39,266 there's two main branches in computer science. 145 00:06:39,536 --> 00:06:41,916 There's systems and there's theory, and theory tends 146 00:06:41,916 --> 00:06:44,766 to be more a disservice to the entire field 147 00:06:44,766 --> 00:06:48,096 of paper-pencil whereas systems is more empirical, writing code, 148 00:06:48,096 --> 00:06:51,796 running experiments, networking and software and the like. 149 00:06:51,796 --> 00:06:54,846 And in these several courses can you get a taste of all 150 00:06:54,846 --> 00:06:56,316 of these various directions. 151 00:06:56,556 --> 00:07:01,146 To ward off an FAQ, rather these here are the Fall 2012 classes, 152 00:07:01,146 --> 00:07:02,916 and these are all summarized again in this booklet, 153 00:07:03,086 --> 00:07:04,456 and we'll put this PDF online. 154 00:07:04,666 --> 00:07:07,726 But to ward off an FAQ, between me and all of the TFs 155 00:07:07,726 --> 00:07:12,136 and CAs we've probably taken all possible CS courses here as well 156 00:07:12,136 --> 00:07:14,256 as some even down the road -- bottom right-hand corner -- 157 00:07:14,256 --> 00:07:17,736 at MIT, so this is quite the laundry list of courses which is 158 00:07:17,736 --> 00:07:19,876 to say most of us can advise you on directions 159 00:07:19,876 --> 00:07:20,936 in which you might want to go. 160 00:07:20,936 --> 00:07:24,576 A more compelling FAQ -- now, notice the contrast here -- 161 00:07:24,766 --> 00:07:27,266 look at all of the course I took, and now look 162 00:07:27,266 --> 00:07:29,446 at the courses Mark took, if you would 163 00:07:29,446 --> 00:07:31,056 like to just take Mark's courses, 164 00:07:31,056 --> 00:07:33,816 and Bill only took these courses here. 165 00:07:33,816 --> 00:07:37,906 So I'll leave it to you to infer exactly 166 00:07:37,936 --> 00:07:40,256 where computer science can take you here. 167 00:07:41,106 --> 00:07:43,566 So these guys have done quite well 168 00:07:43,566 --> 00:07:44,896 with their background alone. 169 00:07:44,896 --> 00:07:47,306 Oh, and finally -- and this is actually a more sincere note, 170 00:07:47,306 --> 00:07:49,766 because what we are about to do is introduce you to a number 171 00:07:49,766 --> 00:07:51,196 of the computer science faculty here 172 00:07:51,196 --> 00:07:53,716 to give you a sense not just of future courses 173 00:07:53,756 --> 00:07:55,316 that you can take here specifically, 174 00:07:55,556 --> 00:07:58,836 but really to give you a sense of computer science itself 175 00:07:58,836 --> 00:08:02,256 as a field, and what it means to be in theory or systems or all 176 00:08:02,256 --> 00:08:05,026 of the various subfields of those two big buckets. 177 00:08:05,026 --> 00:08:08,236 But here, I was going through my transcripts from college 178 00:08:08,236 --> 00:08:11,906 and grad school -- when these were four courses that I took 179 00:08:12,206 --> 00:08:15,236 over the course of mostly just senior year in grad school, 180 00:08:15,236 --> 00:08:17,026 and if I'm allowed to hop up very briefly 181 00:08:17,026 --> 00:08:19,066 on my little soapbox, I really regret 182 00:08:19,066 --> 00:08:20,896 in retrospect not having explored more 183 00:08:20,896 --> 00:08:22,366 when I was in college. 184 00:08:22,366 --> 00:08:24,516 Thankfully I did take 50, for instance, sophomore year, 185 00:08:24,516 --> 00:08:27,326 and that certainly took me off in a different direction, 186 00:08:27,556 --> 00:08:30,056 but some of my favorite course, honestly in senior year 187 00:08:30,056 --> 00:08:33,716 and in grad school were Dramatic Arts I, which is a survey class 188 00:08:33,716 --> 00:08:36,706 of the theater, GOV 1540, the American Presidency, 189 00:08:36,706 --> 00:08:38,416 which is like story time all week long 190 00:08:38,416 --> 00:08:41,766 with Professor Roger Porter, Latina, which is me the senior 191 00:08:41,766 --> 00:08:44,036 with a whole bunch of freshman filling a language requirement, 192 00:08:44,036 --> 00:08:46,646 but it was still interesting, and then Anthro 1010, 193 00:08:46,646 --> 00:08:48,216 which is Introduction to Archeology, 194 00:08:48,356 --> 00:08:50,716 where I had a little admitted grad school life crisis, 195 00:08:50,936 --> 00:08:53,686 thinking, wow, this will be a lot more fun digging in the dirt 196 00:08:53,686 --> 00:08:56,576 than it would be in the computer lab, but I stayed true 197 00:08:56,576 --> 00:08:57,406 to CS there in the end. 198 00:08:57,406 --> 00:08:58,716 And this is only to say 199 00:08:59,056 --> 00:09:01,936 that I really do regret not having explored other course 200 00:09:01,936 --> 00:09:05,096 instances in CS, or the courses in other fields altogether. 201 00:09:05,096 --> 00:09:06,036 And the fact that so many 202 00:09:06,036 --> 00:09:08,816 of you took 50 this year is really quite inspiring, 203 00:09:08,816 --> 00:09:10,326 because so many of you self-describe 204 00:09:10,576 --> 00:09:13,076 as not really being bound for computer science. 205 00:09:13,076 --> 00:09:15,366 So if you take nothing else away this entire semester, 206 00:09:15,366 --> 00:09:17,286 do at least at one point -- and here's the soapbox -- 207 00:09:17,636 --> 00:09:20,966 veer off on whatever path you're on far sooner than senior year, 208 00:09:21,156 --> 00:09:22,486 because learning a little bit 209 00:09:22,486 --> 00:09:25,196 about a new field that's unfamiliar can definitely change 210 00:09:25,196 --> 00:09:25,796 your life. 211 00:09:25,856 --> 00:09:27,756 And with that said, allow me to introduce three 212 00:09:27,756 --> 00:09:29,376 of the computer science faculty in turn: 213 00:09:29,596 --> 00:09:32,216 Professor Krzysztof Kgajos, Professor Harry Lewis 214 00:09:32,216 --> 00:09:34,586 and Professor Hanspeter Pfister to give you a sense 215 00:09:34,806 --> 00:09:37,126 of what might lie ahead for you. 216 00:09:37,216 --> 00:09:37,916 Professor Kgajos? 217 00:09:38,516 --> 00:09:57,696 [Applause] 218 00:09:58,196 --> 00:10:01,866 >> Well, too bad that David stopped my presentation 219 00:10:01,866 --> 00:10:04,216 with a punch line slide. 220 00:10:05,076 --> 00:10:06,316 Anyway, my name's Krzysztof. 221 00:10:06,316 --> 00:10:09,176 I teach CS 179, the Design of Usable 222 00:10:09,556 --> 00:10:12,036 and Useful Interactive Systems. 223 00:10:12,446 --> 00:10:16,476 I feel like very soon I'm going to change the official title 224 00:10:16,476 --> 00:10:20,886 of the course because I'm frankly being a little tired 225 00:10:20,886 --> 00:10:26,326 of seeing yet another slide tweaking an application 226 00:10:26,326 --> 00:10:30,006 that helps college students have better parties. 227 00:10:30,836 --> 00:10:32,946 These are useful things, but there's more to the world 228 00:10:32,946 --> 00:10:34,196 than just these two things. 229 00:10:34,936 --> 00:10:36,716 So who should be taking this class? 230 00:10:36,976 --> 00:10:42,196 This class is designed for people who want 231 00:10:42,196 --> 00:10:43,856 to have a say in what they code. 232 00:10:44,496 --> 00:10:47,966 If all you want to do in life is geek out and try fantastic code 233 00:10:48,066 --> 00:10:50,036 and solve fantastic engineering problems, 234 00:10:50,276 --> 00:10:51,486 this is not the class for you. 235 00:10:52,126 --> 00:10:54,706 If you want to have a say in what it is that your group, 236 00:10:54,706 --> 00:10:57,286 your company, your team does, 237 00:10:57,696 --> 00:10:59,176 I think this is a very useful class. 238 00:10:59,176 --> 00:11:01,356 In this class you will be learning how to look 239 00:11:01,356 --> 00:11:02,856 at the world through somebody else's eyes, 240 00:11:03,196 --> 00:11:05,086 how to decide what a good problem is, 241 00:11:05,466 --> 00:11:06,866 and how to evaluate success -- 242 00:11:07,136 --> 00:11:08,796 oh, and by the way, you will also build. 243 00:11:09,976 --> 00:11:14,836 So let me say it again in a little bit more detail. 244 00:11:14,886 --> 00:11:18,456 In this class we will spend a lot of time observing people 245 00:11:18,456 --> 00:11:19,866 and understanding how they function, 246 00:11:19,926 --> 00:11:22,066 and looking for problems that they have in their lives 247 00:11:22,106 --> 00:11:24,086 that they do not even know that they have -- 248 00:11:24,586 --> 00:11:28,166 problems that are so entrenched, so pervasive 249 00:11:28,166 --> 00:11:30,796 that we don't even realize that they're problems, 250 00:11:30,796 --> 00:11:31,756 that they could be fixed 251 00:11:31,756 --> 00:11:33,206 and that they would be valuable to be fixed. 252 00:11:33,906 --> 00:11:36,756 These problems are hard to find, because you need to learn how 253 00:11:36,756 --> 00:11:40,576 to look at the world from somebody else's vantage point. 254 00:11:42,236 --> 00:11:43,886 You will also learn how 255 00:11:43,886 --> 00:11:46,266 to invent really creative solutions. 256 00:11:47,316 --> 00:11:50,696 You will learn how to explore a very broad solution of possible, 257 00:11:51,066 --> 00:11:52,986 very broad space of possible solutions, 258 00:11:53,756 --> 00:11:57,416 go beyond the obvious, and then identify the directions 259 00:11:57,416 --> 00:12:01,546 that are most promising to pursue. 260 00:12:02,266 --> 00:12:05,356 Again, you will learn how to actually create designs 261 00:12:06,136 --> 00:12:08,276 and designs that are supposed to serve somebody other 262 00:12:08,276 --> 00:12:10,736 than yourself, and in the process you will actually learn 263 00:12:11,816 --> 00:12:12,606 what's wrong with you. 264 00:12:12,866 --> 00:12:15,556 There's something fundamentally wrong with everyone 265 00:12:15,616 --> 00:12:17,106 who is taking a computer science class. 266 00:12:17,926 --> 00:12:20,636 You are disqualified from designing products 267 00:12:20,696 --> 00:12:22,886 for other people, because you are weird, you are unusual, 268 00:12:23,516 --> 00:12:24,416 and it is very important 269 00:12:24,416 --> 00:12:26,666 to understand what makes you different from other people 270 00:12:26,696 --> 00:12:27,896 and you will learn it in this class. 271 00:12:29,366 --> 00:12:33,716 You will learn how to evaluate the products that you build 272 00:12:33,716 --> 00:12:36,026 in such a way that you know that others can use it, 273 00:12:36,606 --> 00:12:38,746 and you will know whether you've succeeded or not. 274 00:12:39,906 --> 00:12:41,586 Finally, as I said, you will build. 275 00:12:42,106 --> 00:12:44,446 You will be building mobile applications, 276 00:12:46,086 --> 00:12:48,466 and you will be working in teams, and this will be one 277 00:12:48,466 --> 00:12:49,966 of the hardest parts of the course. 278 00:12:50,866 --> 00:12:54,536 So I'm going to give you a few examples of the types 279 00:12:54,576 --> 00:12:58,086 of activities you will be doing in the class, and also a few 280 00:12:58,086 --> 00:13:02,136 of the intellectual questions that we'll answer in the class. 281 00:13:03,626 --> 00:13:06,106 So as I said, you'll do a lot of observing. 282 00:13:06,106 --> 00:13:08,956 You will be looking for ways in which people misuse their tools 283 00:13:09,306 --> 00:13:11,036 to find what it is that they really need. 284 00:13:12,196 --> 00:13:15,236 You will learn techniques for analyzing qualitative data 285 00:13:15,236 --> 00:13:17,406 so that you can actually make sense of your observations, 286 00:13:17,556 --> 00:13:19,746 find patterns, and find things 287 00:13:19,846 --> 00:13:21,876 that were initially hidden from you. 288 00:13:23,796 --> 00:13:26,116 You will be trying out your ideas a lot, 289 00:13:26,116 --> 00:13:28,126 and you will be trying them very quickly 290 00:13:28,126 --> 00:13:30,446 and you'll be trying them in a variety of different ways. 291 00:13:31,316 --> 00:13:33,916 You will be trying to convince yourself and others 292 00:13:33,966 --> 00:13:36,276 that you have a story for your product, for your idea, 293 00:13:36,636 --> 00:13:38,286 that addresses a real problem 294 00:13:38,626 --> 00:13:40,086 and solves it in a compelling way. 295 00:13:41,206 --> 00:13:44,496 You'll try out many different solutions very cheaply before 296 00:13:44,496 --> 00:13:47,516 you actually invest valuable resources 297 00:13:47,746 --> 00:13:49,536 into your final prototype. 298 00:13:52,476 --> 00:13:53,676 >> Vanilla Ice concert? 299 00:13:54,516 --> 00:13:56,206 Too bad it'll take eight hours of e-mail chain 300 00:13:56,206 --> 00:13:57,556 to get the block mates together. 301 00:13:58,396 --> 00:14:00,526 >> Oh, I remember when I used to use e-mail chains. 302 00:14:00,696 --> 00:14:01,596 >> Oh, hey, Caleb. 303 00:14:01,866 --> 00:14:03,066 What do you use instead of e-mail chains? 304 00:14:03,856 --> 00:14:06,856 >> Check this out -- OrGroup, the organic event planner. 305 00:14:08,606 --> 00:14:10,536 >> So that's a concert. 306 00:14:11,936 --> 00:14:18,886 >> It starts tomorrow night at 8 p.m. 307 00:14:18,886 --> 00:14:19,636 >> Invite our block mates? 308 00:14:21,196 --> 00:14:24,286 >> Yeah, and let's call it Vanilla Ice at Boston. 309 00:14:24,546 --> 00:14:26,346 >> Okay. We're done. 310 00:14:27,686 --> 00:14:28,776 >> That's it? 311 00:14:29,466 --> 00:14:30,286 >> That's right. 312 00:14:30,286 --> 00:14:32,056 Now we just wait to see what our block mates think. 313 00:14:32,546 --> 00:14:34,966 >> It's somewhat whimsical. 314 00:14:35,246 --> 00:14:36,276 It's a video prototype. 315 00:14:36,406 --> 00:14:38,436 It's an example of experience prototyping. 316 00:14:38,876 --> 00:14:41,056 These guys, once they had a pretty good idea 317 00:14:41,056 --> 00:14:44,796 of what it is they wanted to build, they've generated a movie 318 00:14:45,676 --> 00:14:49,156 that really in fine detail, tried to tell a story 319 00:14:49,156 --> 00:14:50,706 of how their product would be used. 320 00:14:50,706 --> 00:14:53,496 After watching this movie, they and their colleagues were able 321 00:14:53,496 --> 00:14:56,416 to tell whether the idea makes sense, does it feel right, 322 00:14:56,516 --> 00:14:59,366 does it really -- is it really going 323 00:14:59,366 --> 00:15:00,766 to make a difference in somebody's life? 324 00:15:00,766 --> 00:15:02,026 So that's yet another activity 325 00:15:02,026 --> 00:15:03,266 that we will be doing in this class. 326 00:15:03,736 --> 00:15:05,436 And you were laughing at the fidelity 327 00:15:05,436 --> 00:15:07,316 of the interactive prototype. 328 00:15:07,996 --> 00:15:09,026 It was great, wasn't it? 329 00:15:09,616 --> 00:15:11,516 It took them an hour to implement, 330 00:15:12,466 --> 00:15:14,216 but it was good enough 331 00:15:14,606 --> 00:15:19,056 to let you know how this idea would actually work in practice. 332 00:15:20,516 --> 00:15:23,136 And then at each stage when you create these prototypes, 333 00:15:23,436 --> 00:15:25,946 we'll be using slightly different tools and methods 334 00:15:26,166 --> 00:15:29,146 to actually find out, 335 00:15:29,376 --> 00:15:33,046 to estimate whether these prototypes represent something 336 00:15:33,046 --> 00:15:34,496 that will be successful in practice. 337 00:15:35,006 --> 00:15:40,266 One way in which we'll be trying to predict the success will be 338 00:15:40,266 --> 00:15:41,906 through peer critiques. 339 00:15:42,286 --> 00:15:45,516 Ours is the only class in the School of Engineering 340 00:15:45,516 --> 00:15:46,676 that has studio sessions. 341 00:15:46,676 --> 00:15:49,756 You will be meeting once a week on Fridays, presenting your work 342 00:15:49,756 --> 00:15:51,896 and offering and receiving critiques. 343 00:15:52,326 --> 00:15:55,866 You will have to learn how to be insightful, offer critiques 344 00:15:56,646 --> 00:15:57,546 that are to the point, 345 00:15:57,636 --> 00:16:01,496 that actually uncover something worth uncovering, but are 346 00:16:01,496 --> 00:16:04,156 yet constructive and can help people design better things. 347 00:16:04,156 --> 00:16:07,606 You will be generating many ideas, so the one idea 348 00:16:07,606 --> 00:16:09,976 that you have at the very end is really great. 349 00:16:10,586 --> 00:16:16,196 And as I said, you will build great things, things that often 350 00:16:16,686 --> 00:16:19,066 that some students choose to pursue even beyond the class. 351 00:16:20,686 --> 00:16:23,236 So a few examples of the mysteries 352 00:16:23,236 --> 00:16:25,546 that we'll reveal in 179. 353 00:16:26,876 --> 00:16:30,016 We'll explore the mysteries of creativity. 354 00:16:30,126 --> 00:16:31,176 What is creativity? 355 00:16:31,366 --> 00:16:32,276 What is creative? 356 00:16:32,746 --> 00:16:34,136 How can you be creative? 357 00:16:34,196 --> 00:16:35,856 How can you make your team creative? 358 00:16:37,276 --> 00:16:39,056 And is lobster strudel creative? 359 00:16:41,606 --> 00:16:44,226 You will learn how people form mental models 360 00:16:44,226 --> 00:16:47,716 of complex systems, why they fail 361 00:16:48,326 --> 00:16:51,096 in operating complex systems and why you will fail 362 00:16:51,416 --> 00:16:52,786 to predict how they will fail. 363 00:16:55,876 --> 00:16:59,846 You will learn whether the mouse is ultimate pointing device 364 00:17:00,096 --> 00:17:01,086 or whether you can do better. 365 00:17:02,286 --> 00:17:03,446 This is the first mouse ever. 366 00:17:05,406 --> 00:17:08,196 We'll review the mysteries of whether Mac is better than PC. 367 00:17:08,336 --> 00:17:13,376 We will look at how peoples' abilities, 368 00:17:13,566 --> 00:17:15,976 peoples' motor abilities, perceptual abilities 369 00:17:15,976 --> 00:17:19,526 and cognitive abilities change the very moment we sit 370 00:17:19,526 --> 00:17:21,206 up and start walking. 371 00:17:21,826 --> 00:17:22,906 Are we the same person? 372 00:17:23,396 --> 00:17:25,576 I'll try to convince you 373 00:17:25,576 --> 00:17:27,116 that we're actually very different people 374 00:17:27,166 --> 00:17:30,716 and that the way we design mobile user interfaces is 375 00:17:30,716 --> 00:17:34,376 actually entirely inadequate and we need a fundamental revolution 376 00:17:34,376 --> 00:17:36,546 in mobile interactive design. 377 00:17:37,436 --> 00:17:41,786 We'll also look at the issues of esthetics, how do you design 378 00:17:41,866 --> 00:17:45,056 to elicit various responses in your users, 379 00:17:45,056 --> 00:17:47,886 how do you convey different moods, feelings, 380 00:17:48,836 --> 00:17:52,456 and other meanings that you want to attach to your design. 381 00:17:52,806 --> 00:17:57,476 We will talk about how you can manipulate peoples' perception 382 00:17:57,476 --> 00:18:00,746 of time, how you can make them think that things happen quickly 383 00:18:00,746 --> 00:18:04,336 when in fact they took quite awhile. 384 00:18:04,416 --> 00:18:07,876 We will talk about how you can embed crowds in your programs, 385 00:18:08,486 --> 00:18:12,566 how you can make hundreds of people work quietly 386 00:18:12,566 --> 00:18:16,346 in the background, contributing pieces 387 00:18:16,346 --> 00:18:19,386 to your program's execution in such a way that you end 388 00:18:19,386 --> 00:18:22,996 up creating interactive systems that appear incredibly smart, 389 00:18:23,336 --> 00:18:26,946 smarter than what any current artificial intelligence 390 00:18:26,946 --> 00:18:27,636 can accomplish. 391 00:18:28,886 --> 00:18:30,866 We'll also look at how companies 392 00:18:30,866 --> 00:18:36,386 and politicians run large-scale automated studies every time you 393 00:18:36,386 --> 00:18:40,116 interact with their products and how they use the results 394 00:18:40,116 --> 00:18:43,396 of these studies to redesign their products and sites 395 00:18:44,156 --> 00:18:46,136 and tools in such a way that you end 396 00:18:46,136 --> 00:18:49,276 up doing what they want you to do. 397 00:18:49,406 --> 00:18:53,246 And finally, you will learn why hippos are the most dangerous 398 00:18:53,246 --> 00:18:55,416 mammals other than humans on the planet. 399 00:18:57,726 --> 00:19:04,056 So to take this class, you need to have taken CS50. 400 00:19:04,056 --> 00:19:05,936 The timing has just changed. 401 00:19:05,986 --> 00:19:09,226 We have just asked the registrar to move the lectures to Tuesdays 402 00:19:09,226 --> 00:19:11,276 and Thursdays at 10:00 in the morning. 403 00:19:12,076 --> 00:19:13,726 No longer Monday-Wednesday; we're moving 404 00:19:13,726 --> 00:19:14,986 to Tuesdays and Thursdays. 405 00:19:15,756 --> 00:19:18,336 Apologies for this late change. 406 00:19:18,926 --> 00:19:21,346 This class has mandatory studios on Fridays. 407 00:19:21,346 --> 00:19:24,316 We may have a late Thursday option, 408 00:19:24,316 --> 00:19:26,326 but probably just Fridays, 409 00:19:26,766 --> 00:19:29,186 and there will be weekly assignments mostly done 410 00:19:29,276 --> 00:19:31,826 in teams. 411 00:19:32,286 --> 00:19:37,626 In this class, I try to subvert your understanding 412 00:19:37,786 --> 00:19:38,946 of what computer science is. 413 00:19:39,896 --> 00:19:42,666 One view of computer science is that it's all 414 00:19:42,666 --> 00:19:45,446 about the technology, it's about coding, it's about computers, 415 00:19:45,446 --> 00:19:48,056 it's about the green tongue. 416 00:19:48,156 --> 00:19:50,536 I believe computer science is -- 417 00:19:50,906 --> 00:19:54,706 whoa, I forgot I had this animation; where is it? 418 00:19:54,766 --> 00:19:59,276 Okay. I believe that computer science is a fantastic 419 00:19:59,666 --> 00:20:01,396 intellectual problem-solving toolkit, 420 00:20:01,876 --> 00:20:05,406 a problem-solving toolkit that you can take outside 421 00:20:05,406 --> 00:20:07,496 into the real world to solve problems [inaudible], 422 00:20:07,496 --> 00:20:11,436 and this is the message of CS 179. 423 00:20:12,376 --> 00:20:12,816 Harry? 424 00:20:13,516 --> 00:20:19,546 [Applause] 425 00:20:20,046 --> 00:20:21,256 >> So as Harry comes up, I just wanted 426 00:20:21,256 --> 00:20:23,526 to give a more personal introduction. 427 00:20:23,526 --> 00:20:25,886 So Professor Lewis was my own professor back in the day. 428 00:20:25,886 --> 00:20:28,506 I took CS 121, which is Theory of Computation, 429 00:20:28,786 --> 00:20:32,226 which to be honest, for me was the hardest class I ever took, 430 00:20:32,226 --> 00:20:33,376 at least up until that point. 431 00:20:33,706 --> 00:20:35,536 But this was this amazing class 432 00:20:35,536 --> 00:20:37,836 which in retrospect I actually grew really to love, 433 00:20:37,836 --> 00:20:39,036 enough so that I ended up TF'g 434 00:20:39,036 --> 00:20:40,826 for Harry some four or five times. 435 00:20:41,026 --> 00:20:44,136 His theory of computation, as you'll perhaps soon see, 436 00:20:44,136 --> 00:20:47,526 is really about understanding the fundamentals of computers, 437 00:20:47,526 --> 00:20:49,586 what you can, what you cannot do to them, and it turns 438 00:20:49,586 --> 00:20:52,806 out there are problems out there that simply cannot be solved, 439 00:20:52,806 --> 00:20:55,886 or at least cannot be solved in our lifetimes computationally, 440 00:20:56,676 --> 00:20:59,176 even as much as you might actually want to. 441 00:20:59,176 --> 00:21:02,346 And so what Harry's focus today in particular will be 442 00:21:02,346 --> 00:21:05,396 on is a new course, CS20, which is truly one of those courses 443 00:21:05,396 --> 00:21:07,156 that I wish existed back in my day, 444 00:21:07,636 --> 00:21:09,296 since computer science theory is quite often 445 00:21:09,296 --> 00:21:10,446 about proving things. 446 00:21:10,446 --> 00:21:13,106 And my only proof background frankly was Geometry 447 00:21:13,106 --> 00:21:14,886 and like the angle/side/angle theorems 448 00:21:14,886 --> 00:21:15,856 and those sorts of things. 449 00:21:15,856 --> 00:21:18,526 And so for me not being really the mathematically-minded kid, 450 00:21:18,526 --> 00:21:21,086 and definitely not among those more comfortable, 451 00:21:21,256 --> 00:21:24,366 would have loved this basic framework 452 00:21:24,366 --> 00:21:28,166 with which you get equipped in CS20. 453 00:21:28,166 --> 00:21:29,026 Professor Lewis? 454 00:21:29,026 --> 00:21:29,716 >> Thank you so much. 455 00:21:29,716 --> 00:21:31,766 It's nice to be back in CS50. 456 00:21:31,766 --> 00:21:34,216 CS50 started under a slightly different name 457 00:21:34,706 --> 00:21:39,696 when I taught it I think in '82, so I haven't gotten back 458 00:21:39,696 --> 00:21:42,176 in front of the CS50 class all that often 459 00:21:42,176 --> 00:21:43,046 but it's nice to be here. 460 00:21:43,046 --> 00:21:45,386 And I hope you all become computer science concentrators. 461 00:21:45,806 --> 00:21:49,826 If by the way, you actually do want to become a CS concentrator 462 00:21:49,826 --> 00:21:50,926 and you're a sophomore and you have 463 00:21:50,926 --> 00:21:52,676 to declare your concentration this week, 464 00:21:52,676 --> 00:21:55,006 I have office hours all afternoon 465 00:21:55,006 --> 00:21:57,556 and you can visit my homepage to see 466 00:21:57,556 --> 00:22:00,756 when else you can get your form signed. 467 00:22:01,186 --> 00:22:03,946 So as David said, I'm here to talk about CS20, 468 00:22:04,456 --> 00:22:08,526 which is called Discrete Mathematics for Computer Science 469 00:22:08,526 --> 00:22:11,136 and is subtitled "All the math you should know 470 00:22:11,136 --> 00:22:13,786 to do computer science that they won't teach you in Math 1 471 00:22:13,786 --> 00:22:17,676 and Math 21 and the Calculus and Linear Algebra sequence." 472 00:22:17,676 --> 00:22:19,716 And it's a course we never had, 473 00:22:20,486 --> 00:22:25,166 because it was always assumed back in the days when most 474 00:22:25,166 --> 00:22:27,666 of our concentrators came out of Applied Mathematics 475 00:22:27,666 --> 00:22:29,146 and Mathematics and Engineering, 476 00:22:29,626 --> 00:22:33,166 that people could pick it up as they go. 477 00:22:33,646 --> 00:22:36,476 But we decided to pull it all together in one place 478 00:22:37,056 --> 00:22:42,146 and teach it as a new course starting in the Spring. 479 00:22:42,146 --> 00:22:44,486 Now, there's a couple of different ways to talk 480 00:22:44,486 --> 00:22:47,116 about what this course is about. 481 00:22:47,686 --> 00:22:52,436 This is one way, which is to throw up some topics. 482 00:22:52,436 --> 00:22:55,766 So these are terms that may mean something to you 483 00:22:55,766 --> 00:22:58,966 or may not mean something to you -- graphs, counting, proofs, 484 00:22:59,026 --> 00:23:02,146 logic, probability, number theory, 485 00:23:02,146 --> 00:23:05,596 and some of them may be familiar even though they're not familiar 486 00:23:05,596 --> 00:23:07,696 to you by that name. 487 00:23:07,926 --> 00:23:12,866 But you can go to the CS20 website and look at the list 488 00:23:12,866 --> 00:23:15,466 of topics if that's really what you want to know. 489 00:23:15,466 --> 00:23:17,456 I suspect that's not what you really want to know, 490 00:23:17,456 --> 00:23:19,486 and in some sense that's not even really what the course 491 00:23:19,486 --> 00:23:20,306 is about. 492 00:23:20,726 --> 00:23:25,446 What the course is really about is teaching you how to think, 493 00:23:26,536 --> 00:23:29,516 teaching you how to solve problems of the kinds 494 00:23:29,516 --> 00:23:32,276 that computer scientists come across -- 495 00:23:32,276 --> 00:23:35,726 not how to write the code for the problems but how to figure 496 00:23:36,496 --> 00:23:41,266 out how fast something will run 497 00:23:41,346 --> 00:23:47,126 or whether an algorithm is a good one or not, 498 00:23:47,326 --> 00:23:50,516 teaching you how to prove things formally, 499 00:23:50,516 --> 00:23:55,176 which is a really useful skill in life but is a critical skill 500 00:23:55,586 --> 00:23:59,436 in computer science, since very often the difference 501 00:23:59,436 --> 00:24:01,006 between code that runs and code 502 00:24:01,006 --> 00:24:05,076 that doesn't run is whether someone has applied good logical 503 00:24:05,076 --> 00:24:09,256 reasoning to how it works and more generally, 504 00:24:09,256 --> 00:24:10,876 as I say how to think. 505 00:24:10,956 --> 00:24:15,006 Now, so there's a whole grab bag of tools and processes 506 00:24:15,046 --> 00:24:17,876 that we're going to try to teach in CS20, which is going 507 00:24:17,876 --> 00:24:21,316 to get us to some interesting pedagogy, which I'll talk 508 00:24:21,316 --> 00:24:24,036 about at the end of my few minutes here. 509 00:24:24,616 --> 00:24:30,706 But by way of background, this is on the critical path, 510 00:24:30,706 --> 00:24:35,476 on the prerequisite path to courses like CS 121 and 124 511 00:24:35,476 --> 00:24:40,476 but we don't expect that many of you, or even most of you 512 00:24:40,476 --> 00:24:43,416 who will be going on in computer science will necessarily be 513 00:24:43,416 --> 00:24:45,626 taking CS 20. 514 00:24:45,686 --> 00:24:49,836 So in particular, if you were on the math team, 515 00:24:49,836 --> 00:24:52,266 certainly if you were the captain of the math team 516 00:24:52,266 --> 00:24:54,506 in high school, don't take CS 20. 517 00:24:54,506 --> 00:24:56,786 You'll pick up what you need to know that you don't get 518 00:24:56,866 --> 00:24:59,866 from the regular math sequence easily enough. 519 00:24:59,866 --> 00:25:04,246 If you've taken Math 23 or Math 25 or God forbid, 520 00:25:04,246 --> 00:25:07,366 Math 55, don't take CS 20. 521 00:25:07,366 --> 00:25:11,846 You'll only intimidate the rest of the class. 522 00:25:12,406 --> 00:25:15,206 There is a placement test, a sort of a placement test, 523 00:25:15,206 --> 00:25:21,066 up on the CS20 website, and there are no answers given, 524 00:25:21,066 --> 00:25:24,156 but just see if you can recognize what's going 525 00:25:24,156 --> 00:25:25,816 on in a number of the problems, 526 00:25:25,816 --> 00:25:27,636 and if they mostly look familiar to you. 527 00:25:27,636 --> 00:25:30,846 Even if you couldn't solve them without doing some checking, 528 00:25:31,286 --> 00:25:32,916 you're probably beyond CS20. 529 00:25:33,226 --> 00:25:35,506 And by all means, stay away 530 00:25:35,506 --> 00:25:38,146 if you can't handle a very well-intentioned course 531 00:25:38,196 --> 00:25:39,706 that is having startup problems, 532 00:25:39,706 --> 00:25:42,606 because anytime a new course is offered there are going 533 00:25:42,606 --> 00:25:44,666 to be startup problems and there'll be glitches 534 00:25:44,666 --> 00:25:47,306 and it will not be the well-oiled machine 535 00:25:47,306 --> 00:25:49,856 that you're used to from CS50. 536 00:25:49,856 --> 00:25:54,776 Okay? So with that, let me give you three examples of the kinds 537 00:25:54,776 --> 00:25:59,126 of problems -- I say we're going to do problem-solving -- 538 00:25:59,486 --> 00:26:02,626 problems that come up in computer science courses. 539 00:26:02,866 --> 00:26:04,466 These are all problems that I've taught 540 00:26:04,466 --> 00:26:06,946 in other computer science courses that are kinds of things 541 00:26:06,946 --> 00:26:11,786 that we'll work through in CS20. 542 00:26:12,066 --> 00:26:14,546 And each of these problems has an interesting bit 543 00:26:14,546 --> 00:26:16,626 of Harvard history associated with it. 544 00:26:17,056 --> 00:26:18,446 So the first one is this. 545 00:26:19,226 --> 00:26:23,286 There is -- this is not Annenberg at breakfast time. 546 00:26:23,336 --> 00:26:27,706 This is a stack of pancakes, and it is -- 547 00:26:27,706 --> 00:26:32,426 I want you to imagine that it is your job 548 00:26:32,426 --> 00:26:36,336 as the waiter carrying the stack of pancakes to the table 549 00:26:37,136 --> 00:26:40,226 to get the stack in order so the biggest pancake is 550 00:26:40,226 --> 00:26:43,066 at the bottom, the smallest pancake is on the top, 551 00:26:43,436 --> 00:26:46,596 and the rest of the pancakes are, as we would say 552 00:26:46,596 --> 00:26:51,886 in computer science, sorted from largest to smallest. 553 00:26:52,666 --> 00:26:56,216 And the question is, how can you efficiently do that? 554 00:26:57,086 --> 00:27:01,356 And the answer is kind of an interesting problem, 555 00:27:01,816 --> 00:27:05,166 because if you think about it for a little while, 556 00:27:05,436 --> 00:27:10,176 there's a fairly simple 2n algorithm where n is the number 557 00:27:10,176 --> 00:27:13,996 of pancakes, namely -- well, let's see, 558 00:27:14,536 --> 00:27:16,216 there are the five pancakes. 559 00:27:16,216 --> 00:27:17,906 The fifth one is already on the bottom, 560 00:27:17,906 --> 00:27:19,286 so we don't need to do anything. 561 00:27:19,286 --> 00:27:21,556 We can just sort the top four. 562 00:27:22,426 --> 00:27:26,076 And one thing you can do is you can flip the top through. 563 00:27:26,076 --> 00:27:28,106 Did I say that the only thing you're allowed to do is 564 00:27:28,106 --> 00:27:30,236 to grab a wad of pancakes off the top? 565 00:27:30,236 --> 00:27:33,696 That's an important constraint, so you grab a wad 566 00:27:33,696 --> 00:27:37,926 of pancakes off the top, putting your thumb squarely 567 00:27:37,926 --> 00:27:41,026 on the middle of somebody's pancake, and your finger's 568 00:27:41,026 --> 00:27:44,306 on the bottom of somebody else's pancakes, and flip the wad over. 569 00:27:44,306 --> 00:27:47,876 So if you flip the top two pancakes over here 570 00:27:47,876 --> 00:27:49,776 so that four is on the top, 571 00:27:50,276 --> 00:27:53,746 then you can flip the whole top four over, and four will be 572 00:27:53,746 --> 00:27:56,146 on the bottom, right above five where it belongs, 573 00:27:56,536 --> 00:27:58,206 and then you can repeat this process 574 00:27:58,206 --> 00:28:00,286 with the remaining three pancakes. 575 00:28:00,726 --> 00:28:03,636 So you get two flips to get one pancake where it belongs, 576 00:28:03,636 --> 00:28:07,236 and it's going to take about 2n flips, maybe 2n-1, 577 00:28:07,236 --> 00:28:10,256 something like that, to get all the pancakes in order. 578 00:28:10,646 --> 00:28:12,146 So I posed this problem 579 00:28:13,366 --> 00:28:19,126 in the course that's now called Applied Math 107, 580 00:28:19,546 --> 00:28:23,356 and one bright young man went off and worked on it and came 581 00:28:23,356 --> 00:28:25,576 up with a better algorithm, and let's see 582 00:28:25,576 --> 00:28:26,986 if anybody recognizes him. 583 00:28:26,986 --> 00:28:30,606 This is a photo from about the time when he did this. 584 00:28:31,146 --> 00:28:37,836 Yes. Are you laughing because it's a mug shot, 585 00:28:37,836 --> 00:28:40,496 or are you laughing because you recognize who it is? 586 00:28:41,056 --> 00:28:41,206 Who? 587 00:28:41,206 --> 00:28:42,896 >> It's Bill Gates. 588 00:28:42,966 --> 00:28:43,926 >> Yeah, it's Bill Gates. 589 00:28:44,746 --> 00:28:47,586 That's Bill Gates, looking like he's going 590 00:28:47,586 --> 00:28:49,106 to own the world someday, doesn't he? 591 00:28:50,656 --> 00:28:51,376 Anyway, there he was. 592 00:28:51,376 --> 00:28:56,616 So he's actually got a paper on sorting by prefix reversal, 593 00:28:56,616 --> 00:28:59,296 which is the pancake problem. 594 00:28:59,296 --> 00:29:03,746 So the pancakes are just of course some kind of metaphor 595 00:29:03,746 --> 00:29:05,706 for some kind of computer operations 596 00:29:05,706 --> 00:29:07,076 that you would carry out on data. 597 00:29:07,076 --> 00:29:08,676 That's problem number 1, so that's sort 598 00:29:08,676 --> 00:29:09,546 of a counting problem. 599 00:29:09,826 --> 00:29:10,946 Here's the second problem. 600 00:29:11,836 --> 00:29:14,266 So this is the Monty Hall problem. 601 00:29:14,266 --> 00:29:16,086 How many people have ever heard of the Monty Hall problem? 602 00:29:16,086 --> 00:29:18,306 About half of you -- that's good. 603 00:29:18,406 --> 00:29:20,786 But about half of you haven't, right? 604 00:29:21,946 --> 00:29:22,836 No, those who haven't? 605 00:29:24,126 --> 00:29:25,736 A few, only a few. 606 00:29:25,736 --> 00:29:27,336 Okay, well, do this quickly. 607 00:29:28,056 --> 00:29:30,346 Monty Hall is a quiz show host. 608 00:29:30,796 --> 00:29:32,176 He's got three doors. 609 00:29:32,756 --> 00:29:36,586 There's a million dollars behind one door. 610 00:29:36,786 --> 00:29:37,846 You're the contestant. 611 00:29:38,436 --> 00:29:40,306 He asks you to pick a door, you pick a door. 612 00:29:40,306 --> 00:29:43,616 He opens one of the other doors and a goat is behind there, 613 00:29:43,616 --> 00:29:46,096 and then he asks you, okay, now that I've shown you 614 00:29:46,096 --> 00:29:48,936 where the goat is, do you want to stick with door 3, 615 00:29:48,936 --> 00:29:52,306 which is the one you chose, or do you want to switch to door 2. 616 00:29:53,556 --> 00:29:55,556 And what's the answer? 617 00:29:55,816 --> 00:29:57,216 >> You should switch. 618 00:29:57,416 --> 00:29:59,026 >> The answer is you should switch, 619 00:29:59,506 --> 00:30:04,206 which a lot of very smart people refuse to believe. 620 00:30:04,556 --> 00:30:05,826 And not only should you switch, 621 00:30:05,826 --> 00:30:09,136 but you can calculate how much you actually should be willing 622 00:30:09,136 --> 00:30:11,966 to pay Monty for the privilege of switching. 623 00:30:13,316 --> 00:30:16,246 This is a problem in probability theory. 624 00:30:16,686 --> 00:30:18,866 The thing that makes this problem particularly interesting 625 00:30:18,866 --> 00:30:21,176 to me was -- I taught this in a course 626 00:30:21,176 --> 00:30:23,316 and then I wrote a textbook that came out of the course, 627 00:30:23,836 --> 00:30:28,526 and because we were using Monty Hall's name, decided to write 628 00:30:28,636 --> 00:30:31,786 to Monty Hall and ask him if he minded if we used his name, 629 00:30:32,266 --> 00:30:34,346 and Monty Hall wrote back the following letter. 630 00:30:34,346 --> 00:30:36,136 "Dear Larry" -- Larry was my co-author. 631 00:30:36,746 --> 00:30:39,076 It said da-da-da, fine, go ahead and do it, 632 00:30:39,076 --> 00:30:42,256 but I'd like to ask you a question. 633 00:30:42,726 --> 00:30:45,096 You say the player should switch doors. 634 00:30:45,096 --> 00:30:47,196 Now, I don't know much about algorithms, 635 00:30:47,196 --> 00:30:48,966 but I see it wouldn't make any difference 636 00:30:48,966 --> 00:30:51,346 after the player having been shown, 637 00:30:51,346 --> 00:30:53,876 why should he attempt to switch to door B? 638 00:30:53,876 --> 00:30:56,856 So it turns out Monty Hall actually didn't understand the 639 00:30:56,856 --> 00:31:00,796 Monty Hall problem, which is kind of an amazing, 640 00:31:01,856 --> 00:31:03,126 amazing thing to think about. 641 00:31:03,126 --> 00:31:04,676 Okay, so that's problem number 2. 642 00:31:05,206 --> 00:31:07,176 Problem number 3 is not really a problem. 643 00:31:07,176 --> 00:31:09,736 I just want to talk about the abstraction of graphs, 644 00:31:10,096 --> 00:31:13,196 which we'll spend some time on in CS20. 645 00:31:13,796 --> 00:31:14,666 There's a graph. 646 00:31:14,666 --> 00:31:17,076 Anybody know what that is a graph of? 647 00:31:17,876 --> 00:31:19,936 That is the Facebook social network. 648 00:31:19,936 --> 00:31:23,856 It's a graph with about a billion nodes, 649 00:31:24,106 --> 00:31:25,616 800, something like that. 650 00:31:25,616 --> 00:31:28,316 I forget what the exact number is supposed to be these days, 651 00:31:28,866 --> 00:31:31,546 and countless -- well, not countless, 652 00:31:31,576 --> 00:31:35,116 but a very large number of edges connecting the nodes. 653 00:31:35,636 --> 00:31:37,746 The cities and countries are just shown there 654 00:31:37,816 --> 00:31:39,696 for graphic effect. 655 00:31:39,776 --> 00:31:41,516 This is really just an abstraction. 656 00:31:42,146 --> 00:31:45,926 And the interesting thing about this and why you might want 657 00:31:45,926 --> 00:31:47,706 to think that graphs, too, 658 00:31:47,706 --> 00:31:49,526 are something worth understanding a little bit 659 00:31:49,526 --> 00:31:54,176 about, is another little piece of theoretical computer science 660 00:31:54,676 --> 00:31:58,706 at Harvard history, which is this e-mail 661 00:31:59,236 --> 00:32:05,126 which I received in January of 2004. 662 00:32:05,126 --> 00:32:09,316 Professor, I have been interested in graph theory 663 00:32:09,316 --> 00:32:12,636 and its implications to social networks for awhile now, 664 00:32:12,636 --> 00:32:15,966 so I did some research that has to do with linking people 665 00:32:15,966 --> 00:32:18,176 through articles they appear in from the Crimson. 666 00:32:18,176 --> 00:32:20,016 I thought people would find this interesting, 667 00:32:20,496 --> 00:32:22,836 so I've set up a preliminary site that allows people 668 00:32:22,836 --> 00:32:25,506 to find the connection through the people and articles 669 00:32:25,506 --> 00:32:28,446 or any person that the most frequently mentioned person 670 00:32:28,896 --> 00:32:31,346 in the time frame I looked at. 671 00:32:31,346 --> 00:32:32,356 This person is you. 672 00:32:32,356 --> 00:32:34,866 The reason this person was me of course, 673 00:32:34,866 --> 00:32:38,866 was because I had been Dean of the College, 674 00:32:38,866 --> 00:32:40,866 and so people were always throwing things at me 675 00:32:40,866 --> 00:32:43,476 and it came out in the Crimson pretty much every day 676 00:32:43,476 --> 00:32:45,086 as bad old Dean Lewis. 677 00:32:45,296 --> 00:32:48,756 That e-mail was of course, from Mark Elliott Zuckerberg, 678 00:32:49,176 --> 00:32:53,856 who had taken my Theory of Computation course. 679 00:32:53,856 --> 00:32:56,566 I had a very interesting reaction. 680 00:32:56,566 --> 00:32:58,736 I said, can I see it before I said yes. 681 00:32:58,736 --> 00:33:00,976 It's all public information, but there's somehow a point 682 00:33:00,976 --> 00:33:03,936 at which aggregation of public information feels 683 00:33:03,936 --> 00:33:05,976 like an invasion of privacy. 684 00:33:05,976 --> 00:33:09,386 Imagine that that was my first reaction when I saw this idea 685 00:33:09,386 --> 00:33:13,516 with me as the central node in the social network graph. 686 00:33:14,006 --> 00:33:16,446 So but then he showed it to me and I said, aw, sure, 687 00:33:16,446 --> 00:33:19,796 what the hell, seems harmless, and let him do it, 688 00:33:19,796 --> 00:33:21,616 which is my way with students. 689 00:33:21,616 --> 00:33:23,596 I'm always quite indulgent about these things. 690 00:33:23,596 --> 00:33:26,456 All right, so those are three little examples 691 00:33:26,456 --> 00:33:30,886 of quote unquote, "theoretical computer science," 692 00:33:30,886 --> 00:33:33,456 and they explain just by way 693 00:33:33,456 --> 00:33:36,576 of stories why theoretical computer science is important 694 00:33:36,576 --> 00:33:37,626 to know something about. 695 00:33:38,106 --> 00:33:39,796 Now, a little bit about the course. 696 00:33:39,796 --> 00:33:42,936 This is a brand new course, and it's going to be taught 697 00:33:42,936 --> 00:33:45,996 in a new way, never been done before. 698 00:33:46,276 --> 00:33:50,076 We are renovating a classroom, 699 00:33:50,336 --> 00:33:53,256 which Professor Kgajos is also going to get to use, I believe. 700 00:33:53,326 --> 00:33:56,616 Maybe not -- I'm not sure about that actually, 701 00:33:56,696 --> 00:33:58,786 but I will certainly be using it. 702 00:33:59,056 --> 00:34:02,076 I mean, I don't have anything to say 703 00:34:02,076 --> 00:34:03,046 about whether he gets to use it. 704 00:34:03,046 --> 00:34:04,376 I think he might have changed his mind 705 00:34:04,376 --> 00:34:05,886 about whether he wants to use it. 706 00:34:06,046 --> 00:34:09,676 It didn't come out right. 707 00:34:09,946 --> 00:34:11,966 So because this is a course that's going 708 00:34:11,966 --> 00:34:15,796 to teach you problem-solving, we're going to spend class time, 709 00:34:16,056 --> 00:34:17,616 Monday, Wednesday, Friday at 10:00, 710 00:34:17,876 --> 00:34:20,586 mostly solving problems in small groups. 711 00:34:21,316 --> 00:34:23,966 So we're going to have little rearrangable tables 712 00:34:24,286 --> 00:34:25,616 with chairs around them. 713 00:34:25,936 --> 00:34:33,146 Think kindergarten, okay, but the idea is that we want people 714 00:34:33,146 --> 00:34:36,476 to learn from each other as well as from us, 715 00:34:37,226 --> 00:34:40,386 the activity of solving problems. 716 00:34:40,386 --> 00:34:43,366 And the role of the staff is going to be to go around 717 00:34:43,886 --> 00:34:48,496 and teach and coach people on how to make progress and how 718 00:34:48,496 --> 00:34:53,536 to be persuasive that their solutions are actually correct. 719 00:34:54,036 --> 00:34:57,286 So that's my two-bit introduction to CS20. 720 00:34:58,136 --> 00:35:00,356 Go check out the Web site. 721 00:35:00,356 --> 00:35:04,506 As I say, it's good background for all kinds 722 00:35:04,506 --> 00:35:05,956 of computer science courses. 723 00:35:06,226 --> 00:35:09,686 We don't have it officially in the prerequisite chain to any, 724 00:35:09,686 --> 00:35:14,066 because for generations people have taken those more advanced 725 00:35:14,066 --> 00:35:16,946 courses without having this in one place, 726 00:35:17,476 --> 00:35:20,636 and if you can't figure out from the course site whether you 727 00:35:20,636 --> 00:35:23,496 belong in the course or not, by all means consult me. 728 00:35:23,686 --> 00:35:24,046 Thank you. 729 00:35:25,516 --> 00:35:30,546 [Applause] 730 00:35:31,046 --> 00:35:33,366 >> Lastly let me introduce Professor Hanspeter Pfister, 731 00:35:33,366 --> 00:35:36,286 who teaches 171, a course on visualization, 732 00:35:36,286 --> 00:35:40,126 and it's to Hanspeter that even I often turn anytime CS50's 733 00:35:40,126 --> 00:35:43,066 about to release some handout or some chart or some new dataset, 734 00:35:43,306 --> 00:35:44,966 we first seek to get his blessing, 735 00:35:44,966 --> 00:35:47,076 lest we do the field a disservice. 736 00:35:47,076 --> 00:35:48,056 So Hanspeter Pfister'. 737 00:35:49,166 --> 00:35:51,226 >> Thank you, David, and thanks a lot of inviting me, 738 00:35:51,226 --> 00:35:53,006 giving me the opportunity to talk to you all. 739 00:35:53,546 --> 00:35:55,886 It's great to see you all -- wow, it's a big class! 740 00:35:56,726 --> 00:35:59,326 So I'm teaching CS 171, as David said. 741 00:35:59,326 --> 00:36:02,016 I've been teaching it for about four years now, so this is going 742 00:36:02,016 --> 00:36:05,446 to be my fifth year, and I'm very excited to teach this class 743 00:36:05,516 --> 00:36:07,286 because it gives me an opportunity to talk 744 00:36:07,286 --> 00:36:09,456 about my own research, which is visualization 745 00:36:09,456 --> 00:36:11,706 and computer graphics. 746 00:36:11,706 --> 00:36:13,586 You probably know what visualization is. 747 00:36:13,676 --> 00:36:15,546 It's about conveying information 748 00:36:15,546 --> 00:36:19,816 through visual representations -- so graphs, charts, maps, 749 00:36:20,836 --> 00:36:25,666 social graphs, tree maps, bubble charts, VAT visualizations, 750 00:36:25,666 --> 00:36:27,216 such as election maps, et cetera. 751 00:36:27,796 --> 00:36:30,446 And we're going to look at a lot of examples, in the course, 752 00:36:30,726 --> 00:36:35,256 and one of the goals of the class s to teach you a form 753 00:36:35,256 --> 00:36:37,656 of visual literacy that you may not have yet, 754 00:36:37,656 --> 00:36:41,216 which is to recognize when data is being mistreated 755 00:36:41,216 --> 00:36:42,416 with a bad visualization. 756 00:36:43,056 --> 00:36:45,136 So usually at the beginning of the class, 757 00:36:45,256 --> 00:36:49,246 we'll do a quick visualization critique, 758 00:36:49,636 --> 00:36:52,066 which will tell you basically what to look 759 00:36:52,066 --> 00:36:54,866 for in a visualization, and how you can distinguish good 760 00:36:55,076 --> 00:36:56,276 from bad visualizations. 761 00:36:56,556 --> 00:36:58,796 And that of course has the goal of preparing you 762 00:36:58,796 --> 00:37:00,806 to create your own great visualizations. 763 00:37:02,076 --> 00:37:03,946 Now, why is visualization important? 764 00:37:04,696 --> 00:37:07,256 Well, first of all it has to do with the data 765 00:37:07,256 --> 00:37:08,426 that we're generating today. 766 00:37:09,016 --> 00:37:10,616 And I don't need to explain this to you. 767 00:37:10,616 --> 00:37:11,336 You're living it. 768 00:37:11,456 --> 00:37:14,396 You're actually probably a prime user of data online. 769 00:37:14,926 --> 00:37:17,596 Data has become so predominant nowadays 770 00:37:17,666 --> 00:37:19,906 that we simply can't make sense of it anymore 771 00:37:20,156 --> 00:37:21,556 without computational means. 772 00:37:22,296 --> 00:37:24,586 And computation is great, but computation 773 00:37:24,586 --> 00:37:25,956 and visualization is even better. 774 00:37:26,576 --> 00:37:28,446 So we can look at the data in a way 775 00:37:28,766 --> 00:37:33,206 that is not normally possible with just computation. 776 00:37:34,606 --> 00:37:36,126 Now, this explosion 777 00:37:36,126 --> 00:37:39,576 of information doesn't just happen online; it also happens 778 00:37:39,576 --> 00:37:41,846 in the sciences, and as a matter of fact it happens 779 00:37:41,846 --> 00:37:43,146 in our physical spaces. 780 00:37:43,766 --> 00:37:44,726 So Joe Hellerstein 781 00:37:44,726 --> 00:37:48,116 at UC Berkeley calls this the Industrial Revolution of Data. 782 00:37:48,766 --> 00:37:51,916 We have machines that automatically generate data. 783 00:37:51,916 --> 00:37:53,436 We have RFID tags. 784 00:37:53,886 --> 00:37:56,286 We have sensors in our roads and our bridges. 785 00:37:56,846 --> 00:37:58,936 We have new scientific instruments 786 00:37:58,936 --> 00:38:01,886 that automatically scan the sky or that look 787 00:38:01,886 --> 00:38:04,626 for subatomic particles, et cetera, 788 00:38:04,626 --> 00:38:06,586 and of course we have all the mobile devices. 789 00:38:07,056 --> 00:38:09,266 And everything around us is collecting data, 790 00:38:09,716 --> 00:38:12,766 either with our knowledge or without, so the amount 791 00:38:12,766 --> 00:38:16,626 of data is growing exponentially and there is no end in sight. 792 00:38:17,606 --> 00:38:21,596 So having a way to make sense of the data is crucial, I believe, 793 00:38:21,686 --> 00:38:24,556 in basically every job that you could imagine today. 794 00:38:25,286 --> 00:38:28,706 Now, looking at data this way isn't very useful. 795 00:38:29,586 --> 00:38:33,276 It's probably a good first step, but it doesn't tell you much, 796 00:38:33,666 --> 00:38:35,716 and all you see is a bunch of numbers. 797 00:38:36,236 --> 00:38:40,086 So visualization allows you to look at your data in a form 798 00:38:40,086 --> 00:38:42,086 that is more digestible for humans, 799 00:38:42,456 --> 00:38:44,116 and that is through the visual system. 800 00:38:45,416 --> 00:38:47,576 Now, one of the main goals of visualization is 801 00:38:47,576 --> 00:38:51,756 to analyze data, so it allows us to dig into the data in a way 802 00:38:51,756 --> 00:38:54,886 that is not possible without interactivity 803 00:38:54,886 --> 00:38:56,636 and without a graphical output. 804 00:38:57,356 --> 00:38:59,666 So here is an example of the baby name wizard. 805 00:39:00,286 --> 00:39:02,326 Let me just ask, how many of you have looked 806 00:39:02,326 --> 00:39:03,296 at the baby name wizard? 807 00:39:04,816 --> 00:39:06,476 Nobody. How many of you have babies? 808 00:39:08,106 --> 00:39:09,306 Okay, that explains it. 809 00:39:11,506 --> 00:39:14,986 Let me tell you, once you have a baby on the way, this is going 810 00:39:14,986 --> 00:39:17,966 to be a favorite activity of yours and your partners, 811 00:39:19,006 --> 00:39:21,186 which is to bicker about baby names. 812 00:39:22,606 --> 00:39:26,146 And Martin Wattenberg, who is now at Google and who, 813 00:39:26,146 --> 00:39:29,696 in between did fabulous work at IBM with the Many Eyes system, 814 00:39:30,096 --> 00:39:32,876 created this visualization actually in the service 815 00:39:32,876 --> 00:39:34,676 of a book that his wife wrote. 816 00:39:34,876 --> 00:39:38,016 So the book is basically statistical information 817 00:39:38,016 --> 00:39:40,676 about different baby names and the frequency 818 00:39:40,676 --> 00:39:42,636 at which they are used in the United States. 819 00:39:43,276 --> 00:39:46,566 And what you're seeing in this visualization is I believe the 820 00:39:46,566 --> 00:39:51,406 top 1,000 baby names in the U.S., going back to the 1880s. 821 00:39:51,856 --> 00:39:53,576 So this is going back a long time. 822 00:39:54,116 --> 00:39:55,996 Now, this graph doesn't look very informative. 823 00:39:56,336 --> 00:40:00,276 It's basically a stacked area chart, and you can mouse over it 824 00:40:00,376 --> 00:40:03,586 to see the different names, but it doesn't tell you much 825 00:40:03,586 --> 00:40:06,086 until you click at one of the names. 826 00:40:07,066 --> 00:40:10,286 And now you're seeing basically the frequency 827 00:40:10,446 --> 00:40:12,956 at which this name has been popular over time. 828 00:40:13,966 --> 00:40:16,596 It's important to look on the axes here, 829 00:40:16,596 --> 00:40:18,146 so on the right we see the number 830 00:40:18,146 --> 00:40:22,326 of babies per 1 million that have this name. 831 00:40:22,786 --> 00:40:25,286 And as you see, Anthony is still pretty popular, 832 00:40:25,286 --> 00:40:26,756 maybe a little bit on the decline. 833 00:40:27,656 --> 00:40:30,106 Now, this is an interactive visualization, 834 00:40:30,106 --> 00:40:32,346 so we can actually start typing here. 835 00:40:32,906 --> 00:40:34,626 So here are all the names that start with "A," 836 00:40:34,626 --> 00:40:37,846 and we can look for example for Ana. 837 00:40:39,316 --> 00:40:42,646 And as we see, Ana used to be very popular and kind 838 00:40:42,646 --> 00:40:45,796 of lost popularity and might now be a little bit more 839 00:40:45,796 --> 00:40:46,456 on the upswing. 840 00:40:47,736 --> 00:40:49,236 So tell you a little personal story. 841 00:40:49,236 --> 00:40:51,456 When we named our first daughter, 842 00:40:52,086 --> 00:40:53,786 my wife's name is Jennifer and she had 843 00:40:53,786 --> 00:40:55,476 about six Jennifers in her class. 844 00:40:55,476 --> 00:40:56,696 It was a very popular name. 845 00:40:57,016 --> 00:41:02,676 We can actually look at that -- Jennifer. 846 00:41:02,676 --> 00:41:05,646 So that peak, that's when my wife went to school. 847 00:41:07,396 --> 00:41:10,326 So we wanted to give our daughter a name that wasn't 848 00:41:10,326 --> 00:41:11,486 so popular, and we thought, well, 849 00:41:11,486 --> 00:41:14,716 let's go to some older names, and so we figured, well, 850 00:41:14,716 --> 00:41:16,096 Lilly, Lilly's a great name. 851 00:41:16,396 --> 00:41:17,856 So we named our first daughter Lilly. 852 00:41:18,406 --> 00:41:23,416 And sure enough, other people had the same idea. 853 00:41:25,486 --> 00:41:28,606 The point here is not to talk about baby names, of course; 854 00:41:28,666 --> 00:41:31,716 the point here is to talk about interactive visualization 855 00:41:32,016 --> 00:41:33,836 and how it's important and useful 856 00:41:34,076 --> 00:41:35,576 if you want to analyze data. 857 00:41:35,876 --> 00:41:38,276 It's a lot more fun to play with this application 858 00:41:38,626 --> 00:41:39,486 than to read the book. 859 00:41:39,676 --> 00:41:41,976 Actually, the best thing is to get the application 860 00:41:41,976 --> 00:41:48,296 and the book and do both. 861 00:41:48,296 --> 00:41:50,476 Another example is from the "New York Times" 862 00:41:50,976 --> 00:41:53,746 where you can use visualization to reveal patterns. 863 00:41:54,386 --> 00:41:57,706 So here is one of their many great examples 864 00:41:57,706 --> 00:41:58,646 of visualizations. 865 00:41:59,116 --> 00:42:02,276 This shows you how different groups spend their day, 866 00:42:03,156 --> 00:42:06,966 and they collected information that is publicly available 867 00:42:07,356 --> 00:42:09,876 about how different groups of people spent their day. 868 00:42:10,426 --> 00:42:12,426 So you can recognize some activity. 869 00:42:12,516 --> 00:42:15,376 So we're sleeping, we're watching some TV, 870 00:42:15,576 --> 00:42:18,386 we might be traveling or we might do household activities. 871 00:42:18,866 --> 00:42:22,526 Of course, every now and then we do some work or we eat, right. 872 00:42:23,046 --> 00:42:24,866 And now we can drill into this data. 873 00:42:24,866 --> 00:42:29,036 We can look at how employed people spend their day compared 874 00:42:29,036 --> 00:42:31,086 to let's say, unemployed people. 875 00:42:31,086 --> 00:42:32,286 What do you expect will happen? 876 00:42:33,746 --> 00:42:37,806 Less work, right, but more TV. 877 00:42:39,066 --> 00:42:45,716 We can look for example, at the mix of high school graduates 878 00:42:45,716 --> 00:42:48,426 versus bachelor's versus people with advanced degrees, 879 00:42:49,166 --> 00:42:52,926 so here are high school graduates, here are people 880 00:42:52,926 --> 00:42:54,086 with a bachelor's degree. 881 00:42:54,086 --> 00:42:56,046 They tend to work a little bit more, 882 00:42:56,586 --> 00:42:58,996 and people with advanced degrees tend to work even more -- 883 00:42:59,616 --> 00:43:01,956 or maybe they eat more, I don't know. 884 00:43:02,936 --> 00:43:07,236 If you don't have children, versus if you have one child, 885 00:43:07,846 --> 00:43:10,426 you can see that you tend to watch less TV. 886 00:43:10,636 --> 00:43:12,706 If you have two or more children, God bless you, 887 00:43:12,706 --> 00:43:14,176 and you can't watch TV at all. 888 00:43:16,176 --> 00:43:19,646 Anyways, so this is just a really nice way to look 889 00:43:19,646 --> 00:43:22,106 at this data and to reveal patterns, and of course, 890 00:43:22,516 --> 00:43:25,776 I can also click on this and get the actual distribution, 891 00:43:26,216 --> 00:43:28,946 and again, I can still drill into it and see how 892 00:43:28,946 --> 00:43:30,316 that distribution changes. 893 00:43:32,046 --> 00:43:36,436 So revealing patterns through interactive visualizations, 894 00:43:36,606 --> 00:43:38,736 again, something that is not possible if you look 895 00:43:38,736 --> 00:43:40,266 at this data just in a spreadsheet. 896 00:43:40,786 --> 00:43:46,796 And finally, visualizations are great for presentations, right, 897 00:43:46,796 --> 00:43:50,216 so when you present something at your future workplace, 898 00:43:50,216 --> 00:43:53,056 or even now, when you're in school, it's important 899 00:43:53,056 --> 00:43:55,026 to have good visualizations of your data. 900 00:43:55,796 --> 00:43:58,326 But it's also important to tell a story with our data. 901 00:43:58,786 --> 00:44:01,986 And again, the "New York Times" is doing a fabulous job at this. 902 00:44:02,526 --> 00:44:04,766 And I'd like to play you a movie where they talk 903 00:44:04,766 --> 00:44:09,986 about what I would consider an arcane baseball fact, 904 00:44:10,426 --> 00:44:13,256 which probably some of you are recognizing it a really 905 00:44:13,256 --> 00:44:16,696 important thing, which again, I didn't grow up with baseball 906 00:44:16,696 --> 00:44:19,926 so I may not recognize it as that, but the visualization 907 00:44:19,926 --> 00:44:21,446 that you'll see and the story 908 00:44:21,446 --> 00:44:24,056 that you'll hear will convince you that wow, 909 00:44:24,056 --> 00:44:26,826 this is really cool, and just looking 910 00:44:26,826 --> 00:44:29,686 at the raw data wouldn't actually have that effect. 911 00:44:30,456 --> 00:44:31,186 So let me play this. 912 00:44:32,256 --> 00:44:33,586 >> Mariano Rivera is one 913 00:44:33,586 --> 00:44:35,346 of the most dominant closers in history. 914 00:44:36,076 --> 00:44:38,366 But what may be most remarkable is that he's done it 915 00:44:38,366 --> 00:44:39,416 by confounding hitters 916 00:44:39,416 --> 00:44:42,066 with mostly one pitch, his signature cutter. 917 00:44:42,836 --> 00:44:45,206 John Flaherty of the Yes Network, faced Rivera 918 00:44:45,206 --> 00:44:47,876 as a hitter and also caught him when he played for the Yankees. 919 00:44:48,306 --> 00:44:50,666 >> From a hitter's standpoint, he's out on the mound. 920 00:44:50,666 --> 00:44:53,476 It feels like he's not even putting any effort into it 921 00:44:53,666 --> 00:44:57,206 and the ball explodes on you, and from a catching standpoint, 922 00:44:57,206 --> 00:44:59,146 he's the easiest guy ever to catch 923 00:44:59,206 --> 00:45:00,896 because he throws the ball right where you want it. 924 00:45:01,436 --> 00:45:03,966 >> Rivera uses a seemingly effortless delivery, 925 00:45:03,966 --> 00:45:06,856 which he can flawlessly repeat, pitch after pitch. 926 00:45:07,146 --> 00:45:09,196 His cutter is thrown very much like a fast ball, 927 00:45:09,196 --> 00:45:11,586 but the pitch has significant lateral movement. 928 00:45:12,056 --> 00:45:13,836 He creates and adjusts this movement 929 00:45:14,086 --> 00:45:15,386 with the different pressure he puts 930 00:45:15,386 --> 00:45:16,626 on the ball with his fingers. 931 00:45:17,336 --> 00:45:20,066 The pitch's lateral movement keeps it off the bat's sweet 932 00:45:20,066 --> 00:45:23,036 spot, moving in on the hands of a left-handed batter 933 00:45:23,036 --> 00:45:24,826 and toward the end of the bat of a righty. 934 00:45:25,556 --> 00:45:27,706 To a hitter, Rivera's cutter first appears 935 00:45:27,706 --> 00:45:29,926 like a straight fast ball, making it hard 936 00:45:29,926 --> 00:45:32,586 to distinguish the two pitches during the first fractions 937 00:45:32,586 --> 00:45:34,846 of a second when the hitter must decide if, 938 00:45:35,146 --> 00:45:36,466 when, and where to swing. 939 00:45:37,396 --> 00:45:39,606 Hitters often rely on reading a pitch's spin 940 00:45:39,606 --> 00:45:42,826 to determine what pitch is coming, but Rivera's fast ball 941 00:45:42,826 --> 00:45:45,576 and cutter have what appear to the hitter as the same spin. 942 00:45:45,966 --> 00:45:48,276 Many pitchers throw their cutters more like sliders, 943 00:45:48,446 --> 00:45:50,686 with their fingers pulling down on the side of the ball. 944 00:45:51,026 --> 00:45:53,206 This can create more downward and lateral movement 945 00:45:53,206 --> 00:45:56,156 than a cutter, but it also creates the signature spin 946 00:45:56,156 --> 00:45:58,206 of a slider, a spinning red dot 947 00:45:58,716 --> 00:46:00,996 that the hitter can recognize and adjust to. 948 00:46:01,596 --> 00:46:04,276 With identical deliveries and spins on Rivera's pitches, 949 00:46:04,536 --> 00:46:07,746 hitters are at a loss to identify and then attack a pitch 950 00:46:08,276 --> 00:46:10,166 until it is too late, and the balls end 951 00:46:10,166 --> 00:46:11,796 up in very different locations. 952 00:46:13,046 --> 00:46:15,716 Here are the nearly 1,300 pitches that Rivera threw 953 00:46:15,716 --> 00:46:18,456 in 2009, each frozen at the point 954 00:46:18,456 --> 00:46:20,626 when the batter must make his swing decisions, 955 00:46:21,086 --> 00:46:24,376 but with few clues to determine the pitch's ultimate location, 956 00:46:24,756 --> 00:46:27,206 the batter can be faced with guessing at these outcomes. 957 00:46:28,356 --> 00:46:30,856 Here are the cutters to left-handers. 958 00:46:31,526 --> 00:46:33,186 Here are the cutters to right-handers 959 00:46:33,866 --> 00:46:35,516 and fast balls to right-handers. 960 00:46:35,946 --> 00:46:38,136 He throws almost no fast balls to lefties. 961 00:46:38,306 --> 00:46:41,486 As this map of his 2009 pitches shows, 962 00:46:42,006 --> 00:46:44,696 Rivera is remarkably adept at hitting the corners, 963 00:46:45,166 --> 00:46:47,166 keeping the ball away from the middle of the plate, 964 00:46:47,516 --> 00:46:49,866 the easiest spot for a batter to make good contact. 965 00:46:50,486 --> 00:46:52,796 >> Looking from this perspective it's not surprising 966 00:46:52,796 --> 00:46:55,216 that the real hot spot is that side on a leftie. 967 00:46:55,216 --> 00:46:58,086 I think he can hit that spot with his eyes closed. 968 00:46:58,406 --> 00:47:01,546 >> Rivera's simple but effective formula has made him baseball's 969 00:47:01,546 --> 00:47:02,626 most dominant closer. 970 00:47:03,176 --> 00:47:07,196 >> How many of you knew what a cutter is before this? 971 00:47:08,326 --> 00:47:10,426 Okay, a good ten percent -- that's good. 972 00:47:11,976 --> 00:47:13,076 So consider this. 973 00:47:13,266 --> 00:47:17,316 You're reading this story in the paper with text only, right. 974 00:47:17,316 --> 00:47:19,456 I think you'd have a very different impression 975 00:47:19,696 --> 00:47:21,736 of what's going on, and I probably wouldn't read it 976 00:47:21,736 --> 00:47:23,656 because I'd be bored after the first paragraph. 977 00:47:24,806 --> 00:47:27,236 And then consider the other alternative is you look 978 00:47:27,236 --> 00:47:28,146 at the raw data. 979 00:47:28,146 --> 00:47:31,536 The raw data of course, is trajectories of his pitches 980 00:47:32,076 --> 00:47:35,976 over a season or more, and just looking at that data 981 00:47:36,086 --> 00:47:37,786 in itself wouldn't be that interesting. 982 00:47:38,326 --> 00:47:40,606 What's really making this come alive is the story 983 00:47:40,606 --> 00:47:43,086 that they're telling around it, and this combination 984 00:47:43,086 --> 00:47:45,686 of storytelling and visualization 985 00:47:46,046 --> 00:47:48,506 that I think makes the point very effectively 986 00:47:48,806 --> 00:47:49,946 and that will be memorable. 987 00:47:51,316 --> 00:47:53,306 So visualization help you analyze, 988 00:47:53,406 --> 00:47:55,896 they help you reveal pattern in your data 989 00:47:55,896 --> 00:47:58,726 and they help you tell stories or present your data. 990 00:47:59,156 --> 00:48:05,166 And as Donald Norman, a famous user interaction person said, 991 00:48:05,386 --> 00:48:06,956 it is things that make us smart. 992 00:48:07,156 --> 00:48:09,226 It goes back to the beginning of humanity. 993 00:48:09,556 --> 00:48:12,786 We invented writing to make us smarter, we invented graphics 994 00:48:12,946 --> 00:48:15,216 to make us smarter, and visualization is 995 00:48:15,366 --> 00:48:17,216 on the same line of evolution. 996 00:48:17,696 --> 00:48:18,486 And why's that? 997 00:48:18,576 --> 00:48:21,286 Well, it's because we have limited cognitive abilities. 998 00:48:21,766 --> 00:48:25,276 We can only store so much information, and we'll discuss 999 00:48:25,276 --> 00:48:28,156 that in the course and we'll show you many examples 1000 00:48:28,156 --> 00:48:31,706 of how the perceptual system is very good at revealing patterns, 1001 00:48:32,096 --> 00:48:34,176 and also how sometimes it really fails us. 1002 00:48:37,806 --> 00:48:39,616 So visualization helps us think. 1003 00:48:41,186 --> 00:48:44,846 Many of you might use doodling or sketching 1004 00:48:44,846 --> 00:48:47,276 or mind mapping even, to help you think 1005 00:48:47,276 --> 00:48:48,346 about certain problems. 1006 00:48:49,276 --> 00:48:51,616 It reduces the load on the working memory, 1007 00:48:51,616 --> 00:48:53,566 which is very limited, as I mentioned, 1008 00:48:54,156 --> 00:48:55,626 and it offloads cognition. 1009 00:48:55,696 --> 00:48:58,626 It's sort of an external device that helps us think 1010 00:48:58,626 --> 00:49:00,116 about the data and about problem. 1011 00:49:00,576 --> 00:49:03,216 And of course, it uses the power of human perception, 1012 00:49:03,676 --> 00:49:06,756 so we have about 50 percent of our brain dedicated 1013 00:49:06,756 --> 00:49:11,506 to visual processing, and it's our most important organ, 1014 00:49:11,826 --> 00:49:15,366 and so it's just fitting that we use it to analyze data. 1015 00:49:16,646 --> 00:49:19,306 So the goals in the course are first of all, 1016 00:49:19,306 --> 00:49:22,566 to teach you principles of effective visualizations, 1017 00:49:23,016 --> 00:49:27,896 and as I mentioned to give you a visual vocabulary or a way 1018 00:49:27,896 --> 00:49:30,816 to think about good and bad visualizations. 1019 00:49:31,746 --> 00:49:33,866 Then we'll learn about gathering data. 1020 00:49:34,006 --> 00:49:37,586 We'll use Python as our tool, so you'll learn how 1021 00:49:37,586 --> 00:49:40,826 to scrape Web sites for your pleasure 1022 00:49:40,936 --> 00:49:42,926 and hopefully not illegally. 1023 00:49:44,096 --> 00:49:45,516 We'll also learn how 1024 00:49:45,516 --> 00:49:48,406 to implement interactive visualizations using a language 1025 00:49:48,406 --> 00:49:51,156 called Processing, which is a Java framework 1026 00:49:51,546 --> 00:49:54,656 that is relatively easy to pick up and that allows it 1027 00:49:54,656 --> 00:49:56,716 to create interactive visualization 1028 00:49:56,716 --> 00:49:59,126 such as you've seen in the baby name wizard. 1029 00:49:59,956 --> 00:50:02,756 And throughout the course, there'll be a mix 1030 00:50:02,756 --> 00:50:03,976 of programming homeworks 1031 00:50:04,036 --> 00:50:07,326 and there'll also be a final group project where you get 1032 00:50:07,326 --> 00:50:09,306 to create your own visualizations. 1033 00:50:09,926 --> 00:50:12,996 The group project is really sort of the culmination of the class, 1034 00:50:13,456 --> 00:50:17,906 and we make it as open-ended as possible, so the description is, 1035 00:50:17,976 --> 00:50:20,316 you find a problem that's of interest to you, 1036 00:50:20,676 --> 00:50:23,806 you have to collect data that solves some 1037 00:50:23,956 --> 00:50:28,006 of the questions you might have for this particular problem, 1038 00:50:28,506 --> 00:50:31,276 and then you create an interactive visualization to dig 1039 00:50:31,276 --> 00:50:33,676 into the data and to hopefully answer your questions. 1040 00:50:35,396 --> 00:50:37,446 So let me show you couple of examples 1041 00:50:37,446 --> 00:50:39,736 of what previous students have done in the class. 1042 00:50:41,126 --> 00:50:42,556 First is a few screenshots. 1043 00:50:42,556 --> 00:50:45,806 So this is a project that was done by Samir Paul 1044 00:50:45,806 --> 00:50:48,556 and Jesse Rader about three or four years ago, 1045 00:50:48,556 --> 00:50:51,716 and it's been very popular because it's a visual interface 1046 00:50:52,146 --> 00:50:55,636 for the queue guide, and it allows you to filter the data. 1047 00:50:56,106 --> 00:50:59,306 You can adjust workload rating, you can adjust the difficulty, 1048 00:50:59,746 --> 00:51:00,886 and you can find of course, 1049 00:51:00,956 --> 00:51:02,886 the scores of all the different courses, 1050 00:51:03,356 --> 00:51:06,586 and the bar charts give you the distribution of this course. 1051 00:51:07,246 --> 00:51:09,496 And it's great to find the easiest courses 1052 00:51:09,526 --> 00:51:12,396 that give the highest grades. 1053 00:51:12,396 --> 00:51:15,316 Jason Gao looked at the distribution 1054 00:51:15,316 --> 00:51:17,776 of energy consumption on the Harvard campus. 1055 00:51:17,816 --> 00:51:19,746 Again, this is data that is available 1056 00:51:20,176 --> 00:51:22,996 but that nobody really looks at because it's just 1057 00:51:22,996 --> 00:51:26,076 in a spreadsheet, so by putting the data onto a map 1058 00:51:26,496 --> 00:51:29,336 and by making the map interactive, we could dig 1059 00:51:29,336 --> 00:51:33,786 into the data and find at what time of year which kind 1060 00:51:33,896 --> 00:51:39,056 of facilities and houses used what kind of energy. 1061 00:51:39,166 --> 00:51:41,536 Naveen Sinha is a foodie. 1062 00:51:41,536 --> 00:51:45,636 He's now a grad student at CES, and he created a visualization 1063 00:51:45,636 --> 00:51:48,156 to look at different restaurants in the Boston neighborhood, 1064 00:51:48,436 --> 00:51:50,346 and he compared the restaurant ratings 1065 00:51:50,346 --> 00:51:54,256 of four different publications, the Boston Magazine, the Globe, 1066 00:51:54,256 --> 00:51:55,396 the Herald and the Phoenix. 1067 00:51:55,976 --> 00:51:58,326 And as you can see, these ratings are quite different 1068 00:51:58,326 --> 00:52:01,816 and so he normalized them and he looked at the distribution, 1069 00:52:01,816 --> 00:52:03,146 and you can actually look at that 1070 00:52:03,146 --> 00:52:06,506 and you can select restaurants based on the ratings or based 1071 00:52:06,506 --> 00:52:08,456 on what you might perceive as the best rating. 1072 00:52:09,946 --> 00:52:12,426 Karen Hansen, she is a distance student. 1073 00:52:12,926 --> 00:52:14,466 She actually lives in California, 1074 00:52:14,466 --> 00:52:18,706 so CS 171 is also taught through the Extension school and we have 1075 00:52:18,706 --> 00:52:21,676 about 20 to 30 distance students each year. 1076 00:52:22,156 --> 00:52:24,736 And she was in the Admissions Office at UC Berkeley, 1077 00:52:24,736 --> 00:52:27,386 and she looked at the distribution of students 1078 00:52:27,466 --> 00:52:31,206 that applied to UC Berkeley and the distribution of how many 1079 00:52:31,206 --> 00:52:33,936 of those got accepted and where they came from, et cetera. 1080 00:52:34,716 --> 00:52:37,786 Actually this would be fun to do for Harvard, I believe. 1081 00:52:38,926 --> 00:52:44,696 Xiao He looked at publications and how they change over time, 1082 00:52:44,696 --> 00:52:48,226 so he looked at publications in the Systems Biology department, 1083 00:52:48,776 --> 00:52:51,076 and was particularly interested to see, 1084 00:52:51,406 --> 00:52:54,766 did the publication pattern change before or after tenure. 1085 00:52:55,416 --> 00:52:59,936 And I'll let you free to guess what the pattern was he found. 1086 00:53:00,266 --> 00:53:03,396 And it'd be actually fun to do this on a larger scale 1087 00:53:03,396 --> 00:53:06,786 for different departments, such as Computer Science. 1088 00:53:07,796 --> 00:53:10,856 And lastly let me show you David Jacopille's project, 1089 00:53:10,856 --> 00:53:12,516 which he produced last year. 1090 00:53:13,116 --> 00:53:15,836 In each of the projects we ask the students 1091 00:53:15,876 --> 00:53:18,576 to create a little screen cast, two-minute screen cast 1092 00:53:18,576 --> 00:53:20,146 that we show at the end of the course. 1093 00:53:20,696 --> 00:53:22,846 And so I'll show you David's screen cast, 1094 00:53:22,846 --> 00:53:23,936 just to give you an idea 1095 00:53:24,336 --> 00:53:26,736 of the interactive visualization that he created. 1096 00:53:28,176 --> 00:53:29,416 >> Hi, I'm Dave Jacopille. 1097 00:53:29,706 --> 00:53:30,946 I love the New York Times, 1098 00:53:31,006 --> 00:53:34,106 but I couldn't tell you quantitatively why, so I decided 1099 00:53:34,106 --> 00:53:35,646 to get some data and visualize it. 1100 00:53:36,266 --> 00:53:39,656 My dataset includes 24 years of New York Times articles, 1101 00:53:39,756 --> 00:53:43,396 from '87 to 2010, 2.2 million articles total. 1102 00:53:44,146 --> 00:53:46,126 Those articles are positioned here on the timeline. 1103 00:53:46,126 --> 00:53:50,606 By hovering over the timeline you can see a one-day bin 1104 00:53:50,986 --> 00:53:54,136 of all the articles that day, particularly around 2 to 300. 1105 00:53:55,386 --> 00:53:57,976 The World Map highlights all of the countries mentioned that day 1106 00:53:57,976 --> 00:53:59,116 and helps give an impression 1107 00:53:59,116 --> 00:54:01,036 of the global emphasis of the times. 1108 00:54:02,176 --> 00:54:04,826 Pending across the timeline shows Africa being the most 1109 00:54:04,826 --> 00:54:05,636 lightly covered. 1110 00:54:06,716 --> 00:54:11,066 By hovering over the countries on the map, 1111 00:54:11,066 --> 00:54:12,066 you have a different view of the data. 1112 00:54:12,066 --> 00:54:13,676 Here you are seeing all of the days 1113 00:54:13,676 --> 00:54:16,356 that a country was mentioned in the Times. 1114 00:54:17,166 --> 00:54:19,356 China is clearly on the Times radar. 1115 00:54:19,906 --> 00:54:23,406 Nvidia was covered about every ten days. 1116 00:54:25,236 --> 00:54:26,566 Going back to the timeline, 1117 00:54:26,996 --> 00:54:28,986 you can see there's something plotted that's kind 1118 00:54:28,986 --> 00:54:29,626 of spiky here. 1119 00:54:30,456 --> 00:54:33,346 This is currently article count, 1120 00:54:33,346 --> 00:54:35,196 and these spikes are the Sunday Edition. 1121 00:54:36,956 --> 00:54:38,966 Apparently it isn't just advertisements; 1122 00:54:38,966 --> 00:54:40,426 you get twice the articles on Sunday. 1123 00:54:41,966 --> 00:54:45,676 If we zoom out, take a look at all 24 years, 1124 00:54:46,936 --> 00:54:48,436 you can see larger trends. 1125 00:54:48,506 --> 00:54:50,816 Article count, for instance, is dropping a little bit 1126 00:54:50,816 --> 00:54:55,076 in the past couple of years, but to compensate for that, 1127 00:54:55,076 --> 00:54:58,106 if you switch to words per article you can see there's a 1128 00:54:58,106 --> 00:55:00,246 bit of an upward trend in the words per article. 1129 00:55:00,586 --> 00:55:01,816 Articles are getting a little longer. 1130 00:55:03,736 --> 00:55:06,426 Another interesting discovery was positive words. 1131 00:55:06,886 --> 00:55:11,356 I made a positive word list, and all of a sudden in '97, 1132 00:55:12,116 --> 00:55:14,836 there was a huge uptick in positive words. 1133 00:55:15,896 --> 00:55:18,456 Maybe somebody sent out a memo that asked everyone 1134 00:55:18,456 --> 00:55:20,906 to be more upbeat in their reporting. 1135 00:55:21,716 --> 00:55:25,466 Finally, whatever view you're in, there's a sidebar over here 1136 00:55:25,466 --> 00:55:27,046 that provides a lot more details. 1137 00:55:27,046 --> 00:55:31,276 >> So I think this is a good example of first 1138 00:55:31,276 --> 00:55:32,366 of all, collecting data. 1139 00:55:32,366 --> 00:55:34,966 He mentioned in the beginning he collected 2 million articles, 1140 00:55:34,966 --> 00:55:36,656 which wasn't a small feat, actually. 1141 00:55:36,656 --> 00:55:39,486 He had to do a lot of web scraping to get that data. 1142 00:55:39,826 --> 00:55:41,316 Then he had to process the data. 1143 00:55:41,316 --> 00:55:44,116 Usually when you collect the data it's not in a usable form, 1144 00:55:44,516 --> 00:55:47,736 so he wrote some Python scripts to clean up the data to get rid 1145 00:55:47,736 --> 00:55:50,226 of filler words, of articles, et cetera, 1146 00:55:50,646 --> 00:55:53,006 and finally he created this visualization. 1147 00:55:53,386 --> 00:55:57,046 And I think it's a nice mix of interactivity and sort 1148 00:55:57,046 --> 00:55:58,546 of insights in filtering. 1149 00:55:59,126 --> 00:56:02,896 So CS 171 is online. 1150 00:56:02,896 --> 00:56:05,616 You can go to CS171 dot org to see more, 1151 00:56:05,726 --> 00:56:07,286 and you find a syllabus there 1152 00:56:07,746 --> 00:56:10,066 and the last year's schedule of lectures. 1153 00:56:10,676 --> 00:56:12,596 In the spring it will be very similar 1154 00:56:12,596 --> 00:56:13,876 to what you're finding there now. 1155 00:56:14,626 --> 00:56:18,076 Just to give you a list of the topics here, so we're starting 1156 00:56:18,076 --> 00:56:19,486 out with some fundamentals, 1157 00:56:19,566 --> 00:56:23,046 talking about the perceptual system and what makes good 1158 00:56:23,046 --> 00:56:24,456 and bad visual encodings. 1159 00:56:25,016 --> 00:56:27,316 Then we talk a little bit about interaction techniques. 1160 00:56:28,086 --> 00:56:30,316 And then we start to talk about different methods 1161 00:56:30,696 --> 00:56:35,006 to visualize statistical graphs, maps, trees and networks, 1162 00:56:35,496 --> 00:56:37,376 and of course, higher-dimensional data. 1163 00:56:38,326 --> 00:56:39,966 I should actually mention to Harry, 1164 00:56:39,966 --> 00:56:43,166 the Facebook data you showed, which is a wonderful example 1165 00:56:43,166 --> 00:56:46,636 of network visualization, didn't actually have any plot 1166 00:56:46,636 --> 00:56:47,526 of the countries on it. 1167 00:56:47,886 --> 00:56:50,466 This was just the raw Facebook data, and the amazing thing is 1168 00:56:50,466 --> 00:56:53,576 that the countries pop out visually because of course, 1169 00:56:53,576 --> 00:56:55,596 the data is distributed on the land masses. 1170 00:56:56,546 --> 00:56:59,436 So we end up with a few guest lectures. 1171 00:56:59,436 --> 00:57:01,976 I usually have a great line-up of guest lectures. 1172 00:57:02,406 --> 00:57:05,796 Ben Fry, the creator of Processing, Martin Wattenberg, 1173 00:57:05,796 --> 00:57:08,056 whose baby name wizard you just saw, and his partner, 1174 00:57:08,056 --> 00:57:10,016 Fernanda Viegas, they're not 1175 00:57:10,016 --> 00:57:12,156 at Google doing great visualization work there, 1176 00:57:12,546 --> 00:57:15,176 Bang Wong from the Broad Institute and Janet Iwasa, 1177 00:57:15,216 --> 00:57:18,436 talking about biological visualization, et cetera. 1178 00:57:18,486 --> 00:57:22,526 So we end up with a really nice overview 1179 00:57:22,526 --> 00:57:25,096 of what visualization practitioners do currently 1180 00:57:25,286 --> 00:57:26,116 in their daily work. 1181 00:57:26,636 --> 00:57:28,696 And I believe that's it. 1182 00:57:28,696 --> 00:57:31,666 Oh, I should mention the course takes place Tuesday 1183 00:57:31,666 --> 00:57:36,806 and Thursday, 2:30 to 4:00 p.m., and we have sections on Fridays 1184 00:57:37,276 --> 00:57:39,326 that you are highly encouraged to attend; however, 1185 00:57:39,326 --> 00:57:41,696 they're not mandatory, and during sections 1186 00:57:41,696 --> 00:57:43,636 on Fridays we usually talk about some 1187 00:57:43,636 --> 00:57:45,206 of the implementation details. 1188 00:57:45,656 --> 00:57:47,276 For example, if you don't know Python, 1189 00:57:47,276 --> 00:57:51,146 we try to give introductions to Python or Processing 1190 00:57:51,146 --> 00:57:53,736 or other tools that you might use through the course. 1191 00:57:54,706 --> 00:57:55,446 Thank you very much. 1192 00:57:56,516 --> 00:58:01,706 [Applause] 1193 00:58:02,206 --> 00:58:04,096 >> So it really is quite remarkable, to be honest, 1194 00:58:04,096 --> 00:58:05,566 how much the CS Department has evolved, 1195 00:58:05,566 --> 00:58:06,546 even since when I was here. 1196 00:58:06,546 --> 00:58:10,596 Back in my day you took CS50 then 51 then 121 then 124 then 1197 00:58:10,596 --> 00:58:13,826 141 -- there was very much a linear path 1198 00:58:13,826 --> 00:58:15,146 through the department, but as you saw 1199 00:58:15,146 --> 00:58:16,876 at the beginning today there's so many directions 1200 00:58:16,876 --> 00:58:19,206 in which you can go, even if you're not looking to major 1201 00:58:19,206 --> 00:58:21,096 or minor in computer science. 1202 00:58:21,096 --> 00:58:23,336 As our three presentations today here suggest, 1203 00:58:23,556 --> 00:58:25,866 it really is applicable to all sorts of domains. 1204 00:58:25,866 --> 00:58:27,746 And for all of those other courses, 1205 00:58:27,746 --> 00:58:29,416 realize that we will post later today 1206 00:58:29,416 --> 00:58:32,716 at CS50 dot net slash lectures, five or ten-minute clips 1207 00:58:32,716 --> 00:58:34,616 from a whole bunch of other CS courses, if you would 1208 00:58:34,616 --> 00:58:35,926 like to shop those virtually. 1209 00:58:36,346 --> 00:58:38,156 In the meantime, tonight we have office hours; 1210 00:58:38,156 --> 00:58:39,006 tomorrow night as well. 1211 00:58:39,006 --> 00:58:42,016 Wednesday is quiz 1 and next Monday is your very last CS50 1212 00:58:42,016 --> 00:58:43,166 lecture ever. 1213 00:58:43,486 --> 00:58:45,456 We will see you think. 1214 00:58:45,456 --> 00:58:47,546 Ah, this so sweet! 1215 00:58:47,866 --> 00:58:50,606 See you then!