1 00:00:04,306 --> 00:00:05,972 ERIK DEMAINE: I mean, there are a couple 2 00:00:05,972 --> 00:00:08,160 of different approaches to teaching this class. 3 00:00:08,160 --> 00:00:10,860 One is to make it fun. 4 00:00:10,860 --> 00:00:15,240 I really like to make material as engaging 5 00:00:15,240 --> 00:00:17,209 and as accessible as possible. 6 00:00:17,209 --> 00:00:19,500 So, especially if you have relatively little experience 7 00:00:19,500 --> 00:00:21,010 in algorithms-- you've just taken 8 00:00:21,010 --> 00:00:25,290 6006-- and some of these algorithms 9 00:00:25,290 --> 00:00:26,700 get really complicated. 10 00:00:26,700 --> 00:00:31,630 And they're hard to understand and it 11 00:00:31,630 --> 00:00:35,730 makes you wonder, how did they ever come up with that? 12 00:00:35,730 --> 00:00:38,230 So I like to talk about that. 13 00:00:38,230 --> 00:00:41,390 In some of the lectures, I'll kind of 14 00:00:41,390 --> 00:00:43,564 give an idea of how they might have gotten there. 15 00:00:43,564 --> 00:00:45,980 It's like, oh we could start with this really simple step. 16 00:00:45,980 --> 00:00:48,230 It's really inefficient, but at least it solves a problem. 17 00:00:48,230 --> 00:00:50,521 But then we have this extra thing and this extra thing, 18 00:00:50,521 --> 00:00:52,930 and eventually you get to the really fast solution, 19 00:00:52,930 --> 00:00:55,820 so it's less of the mystery of how you got there, 20 00:00:55,820 --> 00:00:58,320 or how the original researchers got there. 21 00:00:58,320 --> 00:01:02,120 And I also try to remind students, 22 00:01:02,120 --> 00:01:04,800 especially in the harder topics, that this is not easy stuff 23 00:01:04,800 --> 00:01:07,510 and you should think about it a little more. 24 00:01:07,510 --> 00:01:12,320 Do the problem sets and you'll learn it-- figure it out 25 00:01:12,320 --> 00:01:13,070 at a deeper level. 26 00:01:13,070 --> 00:01:14,700 But a lot of this material is hard, 27 00:01:14,700 --> 00:01:19,520 and I think being honest about that makes it more reasonable. 28 00:01:19,520 --> 00:01:21,020 Students don't feel bad for thinking 29 00:01:21,020 --> 00:01:23,186 that it's hard, because the first time you learn it, 30 00:01:23,186 --> 00:01:24,590 it is hard. 31 00:01:24,590 --> 00:01:27,020 But the whole algorithmic way of thinking 32 00:01:27,020 --> 00:01:29,961 of setting up a problem-- what should the input and the output 33 00:01:29,961 --> 00:01:32,460 be-- and then thinking about all different solutions for how 34 00:01:32,460 --> 00:01:36,770 to fill in the middle I think is a really powerful perspective, 35 00:01:36,770 --> 00:01:39,600 and it can shape pretty much your entire life, 36 00:01:39,600 --> 00:01:42,760 but especially if you're doing computer science. 37 00:01:42,760 --> 00:01:45,030 It's a really useful way of thinking, 38 00:01:45,030 --> 00:01:47,580 and I've gotten lots of letters later from students 39 00:01:47,580 --> 00:01:51,950 where they're doing some job, some computer thing and they 40 00:01:51,950 --> 00:01:54,350 ran this problem and then they discover-- and then they 41 00:01:54,350 --> 00:01:55,849 looked back at their notes and said, 42 00:01:55,849 --> 00:01:59,000 oh, this is the right data structure I should use now. 43 00:01:59,000 --> 00:02:01,150 And they solve it, and they tell me about it. 44 00:02:01,150 --> 00:02:07,084 And it's kind of exciting to see years later the way of thinking 45 00:02:07,084 --> 00:02:08,750 and lots of the solutions and techniques 46 00:02:08,750 --> 00:02:11,840 you see in this class really are useful out there in the world, 47 00:02:11,840 --> 00:02:15,670 so it's a useful class to take. 48 00:02:15,670 --> 00:02:17,300 It's a relatively hard class. 49 00:02:17,300 --> 00:02:19,630 The exams are challenging. 50 00:02:19,630 --> 00:02:22,170 We try to make them not super challenging, 51 00:02:22,170 --> 00:02:25,060 but it's hard, especially whenever 52 00:02:25,060 --> 00:02:27,610 creativity is involved. 53 00:02:27,610 --> 00:02:31,800 It's hard to do that live in an exam. 54 00:02:31,800 --> 00:02:34,830 So students may not perform super well my class, 55 00:02:34,830 --> 00:02:37,780 but still they get the idea that this is a way 56 00:02:37,780 --> 00:02:40,680 to approach problems, and they understand 57 00:02:40,680 --> 00:02:42,950 some of the techniques. 58 00:02:42,950 --> 00:02:46,220 And over time, they can fill in whatever holes they 59 00:02:46,220 --> 00:02:48,524 left behind, and say, you know, it 60 00:02:48,524 --> 00:02:50,690 seems like a problem where dynamic programming would 61 00:02:50,690 --> 00:02:51,440 be really useful. 62 00:02:51,440 --> 00:02:54,280 It's time I really learned dynamic programming. 63 00:02:54,280 --> 00:02:57,000 Dynamic programming is one that we actually teach both in 006 64 00:02:57,000 --> 00:03:01,135 and 046, because it's really conceptually weird. 65 00:03:03,689 --> 00:03:05,730 It's actually really easy once you understand it, 66 00:03:05,730 --> 00:03:08,188 but getting to that point of understanding is really tough. 67 00:03:08,188 --> 00:03:10,340 So we spend a lot of time on it so 68 00:03:10,340 --> 00:03:12,930 that the ideas-- and more exposure you get to it, 69 00:03:12,930 --> 00:03:15,020 the clearer it will become. 70 00:03:15,020 --> 00:03:17,550 I think by the end of 6046, they have a pretty good idea. 71 00:03:17,550 --> 00:03:20,360 But if not, years later, if they come back it, 72 00:03:20,360 --> 00:03:24,670 I'm sure it'll be a lot easier this third time around. 73 00:03:24,670 --> 00:03:27,229 So a lot of these concepts are-- I mean, 74 00:03:27,229 --> 00:03:28,770 the ideas are actually really simple. 75 00:03:28,770 --> 00:03:35,390 They're just hard to shift your mind into that kind of mindset, 76 00:03:35,390 --> 00:03:38,030 but once you do, things become really clear. 77 00:03:38,030 --> 00:03:43,010 So hope is, by the end of the semester, they get there.