1 00:00:06,100 --> 00:00:09,376 In designing complex systems, it's important to break the big problem down 2 00:00:09,376 --> 00:00:14,422 into smaller and smaller pieces. We've see that idea again and again 3 00:00:14,422 --> 00:00:18,591 throughout the course. But in the next few videos, we're 4 00:00:18,591 --> 00:00:22,680 going to look at another idea for managing the complexity of big systems. 5 00:00:24,030 --> 00:00:27,500 This idea has to do with reducing the amount of repetition in our code. 6 00:00:28,930 --> 00:00:33,346 It's a concept called abstraction, and the way it's going to work, is that we're 7 00:00:33,346 --> 00:00:37,762 going to take function definitions, cases where we have two or more examples of 8 00:00:37,762 --> 00:00:42,523 very similar functions and pull out from them, a more general function, which will 9 00:00:42,523 --> 00:00:49,730 let us later plug in the details of the different functions. 10 00:00:49,730 --> 00:00:53,321 So we're going to get less code, and more of our code will be more general or more 11 00:00:53,321 --> 00:00:57,510 abstract. It's going to be kind of fun, and what's 12 00:00:57,510 --> 00:01:00,796 going to happen here is that all of this discipline you've learned about type 13 00:01:00,796 --> 00:01:04,082 comments and templates and template rules, well all of that's going to pay 14 00:01:04,082 --> 00:01:08,120 off in a really big way in these videos.