Модулі курсу
Алгоритми та складність
Big O нотація, О-мала і Θ. Алгоритми сортування і пошуку. Метод «розподіляй і пануй», динамічне програмування, жадібні алгоритми.
Структури даних
Масиви, стеки, черги, зв'язані списки, дерева (BST, AVL, червоно-чорні), купа, хеш-таблиця, граф.
ООП та шаблони проєктування
Інкапсуляція, успадкування, поліморфізм, абстракція. SOLID принципи. Патерни: Singleton, Factory, Observer, Strategy, MVC.
Бази даних
Реляційні БД і SQL. Нормальні форми (1NF–5NF). ACID транзакції. NoSQL: документні, ключ-значення, колонкові, графові.
Веб-технології
HTTP/HTTPS протоколи, REST і GraphQL API, HTML/CSS/JS, браузерний рендеринг, SPA/SSR/SSG, безпека (XSS, CSRF).
Операційні системи
Процеси і потоки, планування CPU, управління пам'яттю (сторінкування), файлові системи, синхронізація, deadlock.
Розробка програмного забезпечення
Agile/Scrum, TDD і unit-тести, Git і CI/CD, контейнери (Docker), мікросервіси, архітектурні паттерни, код-рев'ю.
Складність основних алгоритмів
| Алгоритм | Час (середнє) | Час (гірше) | Пам'ять |
|---|---|---|---|
| Бінарний пошук | O(log n) | O(log n) | O(1) |
| Quick Sort | O(n log n) | O(n²) | O(log n) |
| Merge Sort | O(n log n) | O(n log n) | O(n) |
| Heap Sort | O(n log n) | O(n log n) | O(1) |
| BFS / DFS (граф) | O(V + E) | O(V + E) | O(V) |
| Dijkstra (heap) | O((V+E)log V) | O((V+E)log V) | O(V) |
| Хеш-таблиця (пошук) | O(1) | O(n) | O(n) |
| AVL дерево (пошук) | O(log n) | O(log n) | O(n) |
Приклад: бінарний пошук
Ключові концепції
S — єдина відповідальність; O — відкрите/закрите; L — Ліскова; I — розділення інтерфейсів; D — інверсія залежностей.
Atomicity, Consistency, Isolation, Durability — властивості транзакцій у реляційних СУБД (PostgreSQL, MySQL).
Розподілена система може гарантувати лише 2 з 3: Consistency, Availability, Partition tolerance.
4 умови Coffman: взаємовиключення, утримання, відсутність витіснення, кругове очікування. Стратегія: уникнення + виявлення.
REST: ресурси по URL (GET/POST/PUT/DELETE). GraphQL: одна точка входу, клієнт задає поля — ефективніше для складних запитів.
Commit → Branch → PR → Code Review → Merge. CI/CD автоматизує тести і деплой після кожного push.
Про цей курс
Цей навчальний матеріал систематично розкриває тему від основ до просунутих концепцій. Курс орієнтований на самостійне навчання з практичним акцентом.
Алгоритми та структури даних — ядро комп'ютерних наук та практичного програмування.
План навчання
Проходьте матеріал послідовно, не пропускаючи розділів. Виконуйте практичні вправи після кожного блоку. Повертайтеся до складних частин після засвоєння наступних розділів.