The Data Structures and Algorithms course helps students build their understanding of the basics of data structures and how algorithms are implemented in high-level programming languages. We will explore common algorithms to the practice problems programmers face every day. These practical applications include sorting and searching, divide and conquer, greedy algorithms, and dynamic programming. A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. This course goes deeper into the theory about how to break a large problem into pieces and solve them recursively.
This course provides students with practice problems that will allow them to solidify their understanding of the new data structures and algorithms. During every unit students will be given challenges where they need to deconstruct a series of open-ended problems into smaller components (inputs, outputs, series of functions). Students will also get a chance to build larger programs through projects that leverage the new ideas and methods that they learn in each unit. By the end of the course students will be able to identify which data structure and algorithm best fits their programming needs.
Prerequisites: AP Computer Science A or Advanced Computer Science with Python