1 00:00:00,267 --> 00:00:02,739 And with that let's wrap up this course. 2 00:00:02,739 --> 00:00:07,127 In the prerequisite to this course, Introduction to Algorithms, we learned 3 00:00:07,127 --> 00:00:11,512 about basic algorithms along with some conceptions like recursion and Big O, 4 00:00:11,512 --> 00:00:16,373 that set the foundation for learning about implementing and evaluating algorithms. 5 00:00:16,373 --> 00:00:19,363 In this course we learned what a data structure is, and 6 00:00:19,363 --> 00:00:22,990 how data structures go hand in hand with algorithms. 7 00:00:22,990 --> 00:00:26,340 We started off by exploring a data structure that many of us 8 00:00:26,340 --> 00:00:31,740 use in our day to day programming, arrays, or lists as they're known in Python. 9 00:00:31,740 --> 00:00:35,670 We took a peek under the hood at how arrays are created and stored, and 10 00:00:35,670 --> 00:00:39,720 examined some of the common operations carried out on arrays. 11 00:00:39,720 --> 00:00:43,310 These are operations that we write and execute all the time, but 12 00:00:43,310 --> 00:00:47,350 here we took a step back and evaluated the run times of these operations, and 13 00:00:47,350 --> 00:00:50,230 how they affect the performance of our code. 14 00:00:50,230 --> 00:00:53,765 After that we jumped into an entirely new world where we wrote 15 00:00:53,765 --> 00:00:56,685 our own data structure, a signally linked list. 16 00:00:56,685 --> 00:01:00,718 Admittedly, linked lists aren't used much in day to day problem solving. 17 00:01:00,718 --> 00:01:05,358 But it's a good data structure to start off with, because it is fairly straight 18 00:01:05,358 --> 00:01:09,183 forward to understand and not that much different from an array. 19 00:01:09,183 --> 00:01:12,486 We carried out the same exercise as we did on arrays in that we 20 00:01:12,486 --> 00:01:14,478 looked at common data operations. 21 00:01:14,478 --> 00:01:18,996 But since this was a type we defined on our own, we implemented these operations 22 00:01:18,996 --> 00:01:22,974 ourselves and got to examine with a fine-tooth comb, how our code and 23 00:01:22,974 --> 00:01:27,740 the structure of the type, affected the run time of these operations. 24 00:01:27,740 --> 00:01:30,845 The next topic we tackled was essentially worlds colliding. 25 00:01:30,845 --> 00:01:35,715 We implemented a sorting algorithm, to sort two different data structures. 26 00:01:35,715 --> 00:01:39,516 Here we got to see how all of the concepts we've learned so far, 27 00:01:39,516 --> 00:01:43,966 algorithmic thinking, time and space complexity and data structures, 28 00:01:43,966 --> 00:01:47,431 all come together to tackle the problem of sorting data. 29 00:01:47,431 --> 00:01:51,419 This kind of exercise is one we're going to focus on moving forward, 30 00:01:51,419 --> 00:01:55,822 as we try to solve more real world programming problems using different data 31 00:01:55,822 --> 00:01:57,569 structures and algorithms. 32 00:01:57,569 --> 00:02:01,310 If you stuck with this content so far, keep up the great work. 33 00:02:01,310 --> 00:02:04,480 This can be a complex topic, but a really interesting one. 34 00:02:04,480 --> 00:02:05,830 And if you take your time with it, 35 00:02:05,830 --> 00:02:10,100 you will get a deeper understanding of programming and problem solving. 36 00:02:10,100 --> 00:02:13,340 As always, check the notes for more resources and happy coding.