Dive into data structures and algorithms by solving practical algorith and data structure problems. Solve defined problems related to a particular data structure and algorithm. Consequently, evaluate and assess different data structures and algorithms for any open-ended problem and implement a solution based on design choices.
Overview and refreshing Python skills. Learn the framework to deconstruct any open-ended problem and then understand the concepts of time and space complexity.
Implementing diferent data structures that can be used to store data and explore different methods to manipulate the data structures and examine their efficiencies. Get to understand advantages and applications of different data structures. Learn how to approach open ended problems and select appropriate data structures based on requirements.
Implementing basic algorithms such as searching and sorting on different data structures and examine the efficiency of these algorithms. Use recursion to implement these algorithms and then learn how some of these algorithms can be implemented without recursion.
Build on algorithm skills by learning more advanced algorithms such as brute-force greedy algorithms, graph algorithms, and dynamic programming which optimizes recursion by storing results to sub problems. Finally implement an A* search algorithm.