Main purpose of this course is to master effective algorithms to solve coding problems and to introduce main data structures. It is assumed that one has little to none knowledge of C++ and I would personally suggest to use C++ for solving proposed tasks. All algorithms will also be written in Python3, so doing assignments on Python3 is also acceptable.
- Introduction
- Functions & Recursion
- Linear Search & Two Pointers
- Prefix Sum & Sliding Window
-
$O(n^2)$ Sorts -
$O(n\log{n})$ Sorts - Linear Sorts
- Divide and Conquer
- Greedy Algorithms
- Dynamic Programming 1D
- Dynamic Programming 2D
- Strings
- Array, Vector, List
- Stack & Queue
- Sets & Hash Maps
- Heap
- Binary Sort Trees
- Graphs I
- Graphs II
- Spanning Trees
For any questions zagorulia.ds at phystech.edu or what_is_spin in Telegram.