
Algorithms
in Practices
Solve problems at the speed of thought.
The revolution needs builders

Це було саме те, чого мені не вистачало. Результат не забарився — я в компанії своєї мрії.
// Дмитро Коваленко,
@Netflix

Найкращий курс з Алгоритмів і крапка.
// Дмитро Космаков,
@Amazon

Мені екстремально сподобалось.
// Максим Крамаренко,
@Netflix

Структурована, оригінальна та весела подача складних тем.
// Тимур Пірієв,
@Lyft @ex-Google

Завдяки курсу я успішно пройшов співбесіду в IBM.
// Сергій Старовойт,
@IBM

Це було саме те, чого мені не вистачало. Результат не забарився — я в компанії своєї мрії.
// Дмит ро Коваленко,
@Netflix
ПРО КУРС
Python швидкий настільки, наскільки добре ви розумієте, що відбувається під капотом. На цьому курсі ми відкриємо те, що зазвичай приховано: модель памʼяті CPython, PyObject, алокації та фрагментацію, GIL і конкурентність потоків, multiprocessing, async та zero-copy підходи. Ви навчитеся не «припускати», а міряти, профілювати й оптимізувати. Ви переконаєтесь, що робота з пам’яттю чи потоками — це не дрібниці, а фундамент, що визначає швидкість, стійкість та вартість вашої системи.
Цей курс переводить розробника у категорію those who understand Python beneath Python — інженерів, що контролюють поведінку інтерпретатора, вміють будувати scalable-рішення, зменшувати latency та споживання RAM, писати код стійкий до високих навантажень. Результат — відчутний приріст продуктивності програм і повний контроль над тим, як вони працюють зсередини.
Програма не для пасивного перегляду, а для глибокої роботи: дослідження, експерименти, оптимізація й, можливо, переписування того, що здавалося правильним роками.
prerequisites
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
:: Практичний досвід програмування від 1 року
ДВІЧІ на тиждень
Субота
10:00 UTC+3
Середа
18:30 UTC+3
// live зустрічі з записом
Стек
Будь-яка мова програмування
// live зустрічі з записом
ПРОГРАМА
:: 32 live заняття
:: 8 Q&A сесій
:: до 30 студентів в групі
Graphs and Trees
About the implementation of Web Crawler and text autocompletion on the site.
- DFS and BFS in action: implementing Web Crawler and PSTree commands in Linux
- Cyclic dependencies and topological sorting
- Finding the shortest paths: Dijkstra vs. Bellman-Ford
- Binary Search Trees and how to easily balance them: AVL, Treap
- Efficient implementation of autocompletion on Ternary Search Tree
Dynamic programming
How do text editors, Photoshop, and even card game strategies work?
- The algorithm behind spell checkers
- How LaTeX and Microsoft Word align text
- Git diff and what does computational biology have to do with it?
- How to win at Blackjack and elegantly reduce image size
- Knapsack and the optimal path of the robot in the maze
Probabilistic algorithms and data structures
Let's implement our hash table and represent it compactly in memory.
- How to compactly represent a hash table in memory
- Collision Resolution. Chaining and Linear Probing
- Bloom filter or what to do if the data does not fit into memory?
- Rabin-Karp algorithm for the Pattern matching problem
Greedy
How do greedy algorithms help create the most efficient caching and data compression strategies?
- LRU Cache and optimal caching algorithms
- Huffman Coding: How to Compress Data Without Loss
- Optimal Event Planning: When Does the Greedy Approach Work?
- Minimum Spanning Tree: the shortest path to connect everything
Heap and Linear data structures
Application structures for storing, processing, and quickly accessing data using the example of Redis and SingleStore.
- Dynamic Arrays: How to Make Them Fast
- Shuffle task and its relationship with Reservoir Sampling on MapReduce
- Union-Find: Fast union and search in sets
- Implementing TTL support in Redis
- Top-K of the most popular elements: effective approaches
- Linked List and its variations for databases
- Monotonic Stack and Circular Queue: Modifications of Classical Structures
- XML validation and RPN for expression evaluation
Sorting and Divide-and-Conquer
From classic ideas to non-obvious optimizations and specialized methods for sorting gigabytes of data.
- Convex Hull: How to Optimally Surround the Country with a 404 Wall
- External sort: sorting gigabytes of data that don't fit in memory
- Quick sort and Quick select: Dutch National Flag task
- Relationship between Selection sort and Heap sort
- Non-asymptotic optimizations Merge sort
- Radix sort: how to sort 1,000,000 numbers faster than Quick sort
- Scanline method: processing events in sorted order
Searching and Sqrt decomposition
The nuances of effective search in production and its connection to root optimization methods.
- How to write error-free code using invariants
- Linear search for Minesweeper and Run-length encoding
- The root idea: a technique for speeding up code
- Binary search in production systems and on unsorted data
- Jump search and Galloping search: when binary search is not the only option
- Lower bound on the complexity of the search task
Two pointers & Sliding window & Prefix sums
Як перетворити O(n²) на O(n): техніки, що стоять за face detection у camera hardware, OLAP-запитами в базах даних та половиною LeetCode-задач у FAANG-інтерв'ю
• Two pointers: opposite ends і same direction — паттерни, що перетворюють O(n²) на O(n) без зміни ідеї алгоритму
• Sliding window: робота з рухомим вікном даних і умови монотонності, за яких воно працює
• Prefix sums: O(1) на запит про суму діапазону замість O(n) — фундамент під range queries
• 2D prefix sums та integral images: основа Viola–Jones face detection, що досі живе у camera hardware
• Difference arrays: bulk-оновлення діапазонів за O(1) на запит — як це працює у системах бронювання
Практика
• Алгоритм, що лежить в основі SQL JOIN, повнотекстового пошуку (inverted index у Google і Elasticsearch) та рекомендацій типу «common friends» у соцмережах
• Реалізуємо integral image — структуру з 2D prefix sums, яку у 2001 році використали в алгоритмі Viola–Jones для першого face detection у реальному часі на CPU тих років
Recursion
From tail recursion to regular expressions. How to use recursion for combinatorics and parsing.
- Implementing regular expressions: how does regex parsing work?
- Combinatorial objects and their enumeration
- Backtracking: How to Complete a Sudoku and Find Your Way Out of a Maze
- Tail recursion and Tail Call optimization
Brute-force and Two pointers technique
From a naive solution to two-pointer optimization in databases and machine learning.
- Iterative search: when "head-on" is also a solution
- Stress test writing techniques: how to test algorithms on edge cases
- Two-pointer method: how to speed up brute-force
- Prefix sums: optimizing calculations in arrays and matrices
Analysis of algorithms
From API performance evaluation to probabilistic algorithm analysis.
- Heavy Hitters in DevOps: how to quickly identify requests generating more than X% of traffic
- Web server API performance analysis
- Asymptotic analysis of iterative and recursive algorithms
- Analysis of probabilistic algorithms
ЯК ПРОХОДИТЬ
НАВЧАННЯ
01
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли
Zoom
01
фідбек та ітерації
// Д омашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопрацювання та пояснює пробіли
Zoom
01
фідбек та ітерації
// Домашки не задаємо для галочки. Викладач перевіряє ваші результати та відправляє на доопра цювання та пояснює пробіли
Zoom
ПРАКТИЧНА
РОБОТА
:: 30 завдань
:: пишете власну СУБД
:: ФІДБЕК ВИКЛАДАЧА
// Рекомендуємо виділяти 6–10 годин на тиждень для виконання домашніх завдань, щоб отримати максимальний результат від курсу.
Title
<h5 class="font_5">Sub title</h5>
<h5 class="font_5"><br></h5>
Description
ЩО ЗМІНИТЬСЯ
ПІСЛЯ КУРСУ
1
як ти проходиш coding interview
// 80% технічних співбесід у Big Tech — задачі на алгоритми і структури даних. Після курсу ти заходиш на будь-яку з них з чіткою структурою мислення — і можеш пояснити своє рішення на кожному кроці.
2
як ти підходиш до задачі
// Аналізуєш обмеження до першого рядка коду — впізнаєш клас задачі, знаєш інструмент і розумієш trade-offs між підходами. Бачиш фінішну пряму ще на старті.
3
як ти читаєш
код
// Бачиш реальну ціну кожного рядка крізь абстракції — де фреймворк приховує дорогу операцію, де рекурсія з'їдає пам'ять, де красивий метод насправді O(n²).
ВИКЛАДАЧ
ТА АВТОР ПРОГРАМИ

Іван Петрушенко
Engineering Lead y @SQUAD, Founder в @CS Osvita.
Former: @Dell Software Engineer, @Fiverr Senior Software Engineer, @Ring Machine Learning Engineer.
:: випустив понад 300 інженерів
:: 14 років інженерного досвіду з високонавантаженими системами
:: випускник Stanford University
Перевірено випускниками -
ТОП інженерами з індустрії
amazon
netflix
booking.com
spotify
meta

Mykhailo Panchuk
Senior Software Engineer @Emlen.io, commander in the Armed Forces of Ukraine
The course helped me fully return to programming after the service. The program is very well structured and has many practical cases. The homework is intense and time-consuming, but it is thanks to them that the material is really learned. The teacher Ivan Petrushenko really knows how to motivate to study, and is ready to help and explain everything that is not clear. The lecture format is interactive: a lot of communication and the opportunity to hear the opinions of classmates.

Vasyl Tsyvinskyi
Software Developer at the Unmanned Systems Forces
I was working on a situational awareness system in the Armed Forces of Ukraine. I chose a course on algorithms because it was the foundation I was lacking — I don’t have a technical university education, so I wanted to systematize the base. The course turned out to be really difficult if you do everything to the maximum: over a hundred solved problems, competitions with like-minded people, a constant intellectual challenge.
The atmosphere in the group was very strong — we supported each other, and communication did not end with the course.

Vasyl Nedvyha
Principal Technical Architect @Adobe
Learning is not easy, like everything that has value. The course allowed me to deepen my knowledge in programming and find meaning in some technical topics that did not make much sense before. Due to a well-thought-out and fundamental learning plan — from mathematics to algorithms.
I also wanted to thank the entire CS Osvita team for organizing the learning process and improving the product.

Yurii Biliaiev
Senior Software Engineer @ Kinaxis
The key feature of this course is the simple and understandable explanation of complex topics with a deep dive into the fundamentals. A course on how to become a better engineer. It helped me close the gaps in my knowledge and systematize the basic concepts. In addition, it is a great opportunity to meet like-minded people. The learning format is lively, dynamic and very practical. This course is significantly different from typical ones — deeper, clearer, more practical.

Vladyslav Posudevskyi
Software Engineer @Netflix
If you are still thinking, don't think. You have to take this course!
An incredible combination of theory and practice: classes are held live with attention to each student, and homework assignments are skillfully selected and help to deeply consolidate knowledge. I recommend it.

Pavlo Mykhailov
Software Engineer @Grammarly
Very well structured and in-depth course that helps you understand how algorithms and data structures work «under the hood». Lots of practical exercises with real-world examples. Definitely recommend!

Serhii Starovoit
Software Engineer @IBM
I was very satisfied. Due to the change of project and work, time was short, and my knowledge of algorithms, to be honest, was heading towards zero, despite 7 years of experience in development. Therefore, the training required a lot of effort and time, but I never regretted signing up. The course helped me feel confident in interviews — and thanks to this, I successfully passed the interview at IBM. I highly recommend it!

Dmytro Kosmakov
Senior Software Development Engineer @Amazon
Best algorithms course. No debate.

Ihor Khlaponin
Vice President Software Engineer @JPMorgan
Very methodical and structured approach that allowed to understand algorithms in general and why one or another is used in a specific case. It was interactive and very interesting, not boring like in regular lectures at the university. I also liked the element of the contest — it motivated to work harder to get a better result.

Oleksandr Verboloz
Software Engineer @Booking.com
The algorithmic course exceeded my expectations! The teacher is excellent at motivating and presents the material in an engaging way, which makes learning much easier. Thanks to the course, I finally got the base I was missing. I recommend CS Osvita to both beginners and professionals.

Tymur Piriiev
Software Engineer @Lyft @ex-Google
Structured, original and fun presentation of complex topics. Very high-quality materials that complement the main lectures. Thoughtful homework assignments. My recommendation to everyone.

Maksym Kramarenko
Senior Engineer @Netflix
I really enjoyed it. I definitely learned a lot of new things and remembered cool things that were forgotten in the whirlwind of working on everyday tasks. The difficulty was high enough to get a kick out of each solved task. We covered all the topics that interested me and even more!

Oleksandr Shen
Senior Software Engineer @Coursera
Great course! I really enjoyed solving difficult homework assignments and working on tasks similar to production — it perfectly complements the theory and allows you to better understand the material covered.

Andrii Zaburiannyi
Senior Java Developer @UKEESS
What immediately catches your eye is Ivan's incredibly cool structured presentation of the material. Before the course, I thought that it was almost impossible to understand algorithms, but during the lectures everything seemed to become clear on the fly. I believe that every developer will be able to fill some gap in their knowledge thanks to this course. Special respect for the homework and lecture notes. I had an incredible high from this cool course.

Oleksii Zghurskyi
Software Engineer @Grammarly
Great course, I recommend it. Gave a clear understanding of key topics and a lot of practical skills.

Dmytro Kovalenko
Senior Software Engineer @Netflix
After months of preparation and a couple of unsuccessful interviews, I decided to thoroughly study the basics. I got into school — it was exactly what I was missing. The result was not long in coming — I am in the company of my dreams. I advise you to undergo training to develop a habit of mastering new topics and solving increasingly complex tasks, which will help a lot in your work.

Dmytro Pashchenko
Software Engineer @Apple
It was here that I found the missing piece of the puzzle that filled the gap in my knowledge. It allowed me to gain a deeper understanding of the technologies I work with. For me, completing the courses was a real challenge, but the effort was worth it.

Oleksandra Kulyk
Software Engineer @Spotify
This course is incredibly powerful. It works for both beginners and experienced engineers — thanks to the progressive difficulty of problems and algorithms, plus optional deep dives for extra practice. You'll develop a solid approach to tackling problems of any complexity. 100% recommend.
БРОНЮЙ СВОЄ
МІСЦЕ В ГРУПІ
оплата помісячно
420 $
курс триває 4 місяці
оплата за весь курс
1600 $
за курсом нбу
ПЕРШИЙ КРОК ЗА ТОБОЮ
I accept the terms of the Public Offer Agreement and consent to the processing of my personal data in accordance with the Privacy Policy.
За тебе може заплатити роботодавець?
Напиши нам на hello@csosvita, і ми оформимо все якнайшвидше.
МАЄШ ПИТАННЯ?
МИ ВІДПОВІДАЄМО
// Не знайшли відповідь, яку шукали? Напишіть нам на hello@csosvita.com і ми з усім допоможемо