Algorithms in Practice NEW
Solve problems at the speed of thought.
400 $/місяць
ср, 18:30 / сб, 10:00 (UTC+3)
start:
May 20, 2026
// 40 занять, 4 місяці
400 $/місяць
ср, 18:30 / сб, 10:00 (UTC+3)

what's inside
Алгоритми та структури даних — фундамент, який працює в будь-якій мові програмування, але на рівні middle/senior справа вже не в тому, щоб їх "знати". Справа в тому, щоб вміти виводити рішення з обмежень задачі — від наївного підходу до оптимального, з усвідомленням trade-offs на кожному кроці. Саме цьому ми й вчимо: не запам'ятовувати готові розв'язки, а думати так, щоб приходити до них самостійно.
На курсі ми починаємо з ключових ідей, розбираємо їх глибоко й системно, а потім закріплюємо на великій кількості прикладів та продакшн-кейсів. У результаті ви зможете впевнено розв’язувати задачі рівня LeetCode Hard, проходити техспівбесіди в Big Tech, оптимізувати legacy-код і краще розуміти внутрішню логіку складних систем. Курс побудований як траєкторія: кожна наступна тема логічно виростає з попередньої, а інструменти з’являються саме тоді, коли стають потрібними для наступного кроку — так формується цілісна картина, а не набір розрізнених технік.
Це курс-виклик. 40 занять, сотні задач, код кожного тижня. Тих, хто не виконує домашки — відраховуємо. Тих, хто залишається — чекає розбір їхнього коду, живі дискусії та оточення інженерів, які теж хочуть стати сильнішими. Найкращі студенти наприкінці курсу отримають mock-інтервʼю з інженером із FAANG з персональним фідбеком.
Curriculum
it will be hot
FOR ENGINEERS
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
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
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: робота з рухомим вікном даних і умови монотонності, за яких воно працює
• Префіксні суми: O(1) на запит про суму діапазону замість O(n)
• Двовимірні префіксні суми та 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 тих років.
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
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
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
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
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
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
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
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
Instructor
it will be hot
FOR ENGINEERS

Іван Петрушенко
Engineering Lead y @SQUAD, Founder в @CS Osvita.
Former: @Dell Software Engineer, @Fiverr Senior Software Engineer, @Ring Machine Learning Engineer.
Ready? Take the first step
ready?
take the first step
I accept the terms of the Public Offer Agreement and consent to the processing of my personal data in accordance with the Privacy Policy.
reviews
What alumni say
FOR ENGINEERS
reviews
what alumni say
What our
alumni say

Software Engineer @Spotify
Oleksandra Kulyk
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.

Software Engineer @Apple
Dmytro Pashchenko
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.

Senior Software Engineer @Netflix
Dmytro Kovalenko
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.

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

Senior Java Developer @UKEESS
Andrii Zaburiannyi
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.

Senior Software Engineer @Coursera
Oleksandr Shen
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.

Senior Engineer @Netflix
Maksym Kramarenko
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!

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

Software Engineer @Booking.com
Oleksandr Verboloz
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.

Vice President Software Engineer @JPMorgan
Ihor Khlaponin
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.

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

Software Engineer @IBM
Serhii Starovoit
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!

Software Engineer @Grammarly
Pavlo Mykhailov
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!

Software Engineer @Netflix
Vladyslav Posudevskyi
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.

Senior Software Engineer @ Kinaxis
Yurii Biliaiev
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.

Principal Technical Architect @Adobe
Vasyl Nedvyha
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.

Software Developer at the Unmanned Systems Forces
Vasyl Tsyvinskyi
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.

Senior Software Engineer @Emlen.io, commander in the Armed Forces of Ukraine
Mykhailo Panchuk
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.
communication that drives you
Twice weekly on Zoom — Mondays and Wednesdays at 7:00 PM, 1.5 hours each. All lectures recorded for later review. Taught in Ukrainian. Supplementary materials in English.
Slack is our hub for discussions, clever test cases, and top company referrals.
format that works
Constant feedback in Slack.
No superficial slides — just deep dives into real production challenges.
Certificates earned through real results: completed assignments, active discussions, measurable progress.
environment that energizes
We screen carefully — you'll learn among strong, motivated peers. Skip homework? You're out.
Your instructor is always available. They'll explain until it clicks — whether that's a third code review or staying late after lecture.
That's how we work: learn and grow stronger together.