• Basic principles of algorithm design • How to represent well-known data structures in Python • How to implement well-known algorithms in Python • How to transform new problems inlO well-known algorithmic problems with efficient solutions • How to analyze algorithms and Python programs using both mathematical tools and basic experiments and benchmarks • How lo understand several clsssical algorithms and data structures in depth, and be able lo implement these efficienUy in Python
- Linked Lists,
- Stacks,
- Queues.
- Trees,
- Priority Queues,
- Searching,
- Sorting,
- Hashing,
- Algorithm Design Techniques.
- Greedy,
- Divide and Conquer,
- Dynamic Programming and Symbol Tables.
- selection sort
- recursion
- quicksort
- hash tables
- breadth-first search
- dijstra's algorithm
- greedy algorithms
- dynamic programming
- k-nearest neighbors