about the course
The principles behind algorithms and data structures are relevant to any tech stack. Understanding them makes your code more reliable, faster, and higher quality, allowing you to see multiple solutions and choose the best one.
We’ll explore how algorithms are used in production, derive key ideas from scratch, solve numerous challenges, and examine the difficulties faced by creators of popular libraries.
Curriculum
It’s Going to Be Intense!
-
Asymptotics of Iterative and Recursive Programs
-
Probabilistic Analysis of Algorithms
Analysis of algorithms
-
Class of problems covered by the two-pointer method
-
Prefix sums on arrays and matrices
Two pointers technique
-
Core Idea as a Technique for Speeding Up Code
-
Jump Search & Galloping Search
-
Binary Search in Production Systems and on Unsorted Data
-
Lower Bound for the Search Problem
Searching and sqrt decomposition
-
External Sort – Sorting gigabytes of data efficiently
-
Convex Hull Problem – Or how to optimally surround the enemy with a wall
-
Quick Sort & Quick Select – Featuring the Dutch National Flag problem
-
The Link Between Selection Sort & Heap Sort
Sorting and "divide&conquer"
-
Find Most Similar Websites
-
Implementing TTL Support in Redis
-
Top-K Most Popular Elements
Heap and linear data structures
-
LRU Cache & Optimal Cache Eviction Algorithms
-
Huffman Coding – How to compress data efficiently
-
Event Scheduling Problem
-
Minimum Spanning Tree
Greedy algorithms
-
Combinatorial Objects & Their Enumeration
-
Backtracking – How to efficiently solve Sudoku
-
• • Tail Recursion & Tail Call Optimization –
Recursion
-
Reservoir Sampling on MapReduce
-
How to Compactly Represent a Hash Table in Memory
-
Collision Resolution: Chaining and Linear Probing
-
Bloom Filter – What to Do If Data Doesn’t Fit in Memory?
Probabilistic algorithms and data structures
-
The Algorithm Behind Spell Checkers
-
How to Win at Blackjack and “Elegantly” Reduce Image Size
-
Knapsack and the Optimal Path for a Robot in a Maze
Dynamic programming
-
Understanding DFS & BFS – Implementing a Web Crawler and PSTree in Linux
-
Circular Dependency Errors – What Does Topological Sort Have to Do with It?
-
Finding the Shortest Paths – Dijkstra, Bellman-Ford
-
Binary Search Trees – How to Easily Balance Them? (AVL, Treap)
Graphs and trees
read by

Ivan Petrushenko
Engineering Lead at Squad, Founder at CS Osvita.
Former: Dell Software Engineer, Fiverr Senior Software Engineer, Ring Machine Learning Engineer.
algorithms for interview
Solve problems at the speed of thought.
{format}
start:
{3 months | 27 classes}
{3 months}
{12,000₴/month}