performance engineering
Practice writing fast software. Learn to do it right.
старт:
10 січ. 2025 р.
27 занять + 12 QA сесій
290 $/міс
10% донатимо ЗСУ
про курс
Алгоритміка заклала фундамент мислення, тепер настав час зазизрнути ще глибше. Адже хороші програмісти знають інструменти, що використовують, а найкращі з них можуть мислити про виконання програми на різних рівнях - від мови програмування до операційної системи та процесора. Ці знання дозволяють знаходити вузькі місця в коді, писати швидкі, коректні, надійні асинхронні та багатопоточні програми, приймати правильні архітектурні рішення.
Курс є важливим для подальшого вивчення Compilers, Databases та Operating Systems i потребує знань з Aлгоритмів.
навчальний план
буде гаряче
Найпопулярніші техніки оптимізації алгоритмів
Sentinel та як він дозволяє пришвидшити код
Чи всі інструкції CPU однаково швидкі?
Як Twitter та Facebook пришвидшили продакшн код в 100 разів
Оптимізації наносекунд в High-frequency trading (HFT) компаніях
Реалізація віртуальної машини як Java Virtual Machine (JVM)
Python vs C. У скільки разів та чому Python сповільнює код?
CPU
Техніки оптимізації наносекунд в HFT компаніях.
Пришвидшення продакшн-коду за рахунок memory hierarchy
OOP мертвий. Хай живе Data-Oriented Design
Нюанси написання сache-friendly алгоритмів та структур даних
Кеш операційної системи та вплив на реалізацію File I/O
Інструменти для вимірювання cache performance
Cache
Нюанси написання сache-friendly алгоритмів та структур даних.
Bitmap-індекси в базах даних
Деталі представлення та роботи з типами int, float, string
Як влаштований variable length int під капотом у Protobuf?
Unicode або як Twitter обмежує розмір твіта?
Bit hacks
А Bit about Bytes
Представлення даних на рівні окремих бітів та байтів.
Реалізуємо Memory allocator та Garbage collector
Alignment даних. Вплив на пам'ять та швидкодію
Тонкощі реалізації структур даних в продакшн
Сегменти пам'яті. Як влаштований Stack і Heap
Memory
Реалізуємо Memory allocator та Garbage collector.
Пришвидшення за рахунок Instruction-level parallelism (ILP)
Використання SIMD та Branch prediction на прикладах
Вступ до асемблеру. Навчимося писати та читати прості програми
Reverse-engineering
Low-level optimizations
Оптимізації коду на рівні компілятору.
Як влаштована Virtual Memory та Page Tables під капотом
Як працюють System calls та context switches
Key features OS provide for users
How Page Faults can dramatically affect performance?
Operating system
Основні задачі ОС та її вплив на швидкодію.
Реалізуємо свій Shell
Fork + Exec
Як досягається координація між процесами через pipe
Processes
Напишемо свій Shell для координації роботи процесів.
Threads vs. Processes vs. Coroutines: погляд зсередини
Реалізуємо Event loop
Synchronization objects та Data races. Як реалізувати м'ютекс?
Напишемо Thread pool та виправимо багато конкурентних багів
Multithreading and Concurrency
Від потоків до написання власного EventLoop.
читає
Іван Петрушенко
Engineering Lead y Squad, Founder в CS Osvita.
Former: Dell Software Engineer, Fiverr Senior Software Engineer, Ring Machine Learning Engineer.
Реєстрація. Перший крок за вами
реєстрація
перший крок за вами
Вітаємо, перший крок до курсу зроблено!
Я приймаю умови Публічної оферти та надаю згоду на обробку своїх персональних даних відповідно до Політики конфіденційності.
відгуки
що говорять випускники
Software Engineer @Meta
Владислав Каплун
Під час проходження курсу отримав неабияке задоволення від структурованого підходу. Куратор вражає вмінням доступно та розгорнуто подавати інформацію. Отримані знання з курсу також мають практичний застосунок у моїй роботі, що підкреслює цінність отриманої освіти.
ML Lead @Facebook
Саша Савсуненко
Буде цікаво та складно, всім хайлі рекомендед! Курс допоміг мені швидше розібратись з складним кодом на новому проекті, зрозуміти структури даних та оптимізації, що використовуються. Ці речі має знати кожен програміст.
Software Engineer @Microsoft
Валентин Бочкарьов
Під час підготовки до інтерв‘ю у FAANG проходив курс Algorithms in Practice, а згодом і Performance Engineering. Зараз я з впевненістю можу сказати, що обидва курси допомогли мені отримати оффер від Oracle та Microsoft.
Head Of Engineering @Artur'In
Віталій Маковський
Це був один з найвражаючих навчальних досвідів у моєму житті. Викладач зумів передати глибокі знання з предмета і зробив цей процес захоплюючим. Під час навчання ви випробуєте себе і, що не менш важливо, познайомитесь з цікавими людьми.
Software Engineer @Meta
Роман Перегончук
Курс просто супер! Це дуже класний спосіб отримати нові знання, познайомитись з цікавими людьми і як бонус підготуватись до технічних інтерв'ю. Одна з моїх найкращих інвестицій, можу рекомендувати всім!
Software Engineer @Meta
Назарій Іванчук
Я отримав справжнє задоволення від вивчення таких фундаментальних тем, як оптимізація алгоритмів та робота з кешем. Особливо цінними виявилися розділи про підвищення ефективності на рівні CPU та пам'яті. Завдяки чіткій і доступній подачі матеріалу, здобуті знання одразу знайшли практичне застосування.
Software Engineer @Amazon
Кирило Попирко
Курс дуже добре структурований: починається з високорівневих абстракцій і поступово заглиблюється в деталі. Приклади базуються на реальних проєктах; цікаві та практичні домашні завдання (навіть довелося знешкоджувати бомбу!). Вартує кожної хвилини і кожної вкладеної гривні.
Senior Software Engineer @SingleStore (formerly MemSQL)
Вячеслав Очеретний
Дуже рекомендую цей курс і платформу загалом!
що на вас чекає
have fun and dive deep
Вівторок, п'ятниця о 18:30, тривалість 1.5 години. Мова викладання—українська. Додаткові матеріали—англійською.
зустрічі в Zoom двічі на тиждень
Ком'юніті для обговорення лекцій та обміну хитрими тестами до задач.
закрита Slack група
Панує атмосфера відкритості, доброзичливості, дисциплінованості та русофобії.