💻 Computer Science · Повний курс

Курс з програмування

Фундаментальний Computer Science: 7 модулів від алгоритмів до розробки ПЗ

7
модулів
O(1)
ідеальна складність
ACID
транзакції в БД
4
принципи ООП

Модулі курсу

📊
Модуль 1

Алгоритми та складність

Big O нотація, О-мала і Θ. Алгоритми сортування і пошуку. Метод «розподіляй і пануй», динамічне програмування, жадібні алгоритми.

Big OСортуванняБінарний пошукДПРекурсія
🌳
Модуль 2

Структури даних

Масиви, стеки, черги, зв'язані списки, дерева (BST, AVL, червоно-чорні), купа, хеш-таблиця, граф.

BSTХеш-таблицяКупаГрафBFS/DFS
🏗️
Модуль 3

ООП та шаблони проєктування

Інкапсуляція, успадкування, поліморфізм, абстракція. SOLID принципи. Патерни: Singleton, Factory, Observer, Strategy, MVC.

SOLIDSingletonFactoryObserverMVC
🗄️
Модуль 4

Бази даних

Реляційні БД і SQL. Нормальні форми (1NF–5NF). ACID транзакції. NoSQL: документні, ключ-значення, колонкові, графові.

SQLJOINACIDNoSQLІндекси
🌐
Модуль 5

Веб-технології

HTTP/HTTPS протоколи, REST і GraphQL API, HTML/CSS/JS, браузерний рендеринг, SPA/SSR/SSG, безпека (XSS, CSRF).

REST APIHTTPOAuthSPAWebSocket
⚙️
Модуль 6

Операційні системи

Процеси і потоки, планування CPU, управління пам'яттю (сторінкування), файлові системи, синхронізація, deadlock.

ПотокиПлануванняПам'ятьDeadlockFS
🚀
Модуль 7

Розробка програмного забезпечення

Agile/Scrum, TDD і unit-тести, Git і CI/CD, контейнери (Docker), мікросервіси, архітектурні паттерни, код-рев'ю.

GitCI/CDDockerTDDAgile

Складність основних алгоритмів

АлгоритмЧас (середнє)Час (гірше)Пам'ять
Бінарний пошукO(log n)O(log n)O(1)
Quick SortO(n log n)O(n²)O(log n)
Merge SortO(n log n)O(n log n)O(n)
Heap SortO(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)

Приклад: бінарний пошук

function binarySearch(arr, target) { let left = 0, right = arr.length - 1; while (left <= right) { const mid = Math.floor((left + right) / 2); if (arr[mid] === target) return mid; // знайдено else if (arr[mid] < target) left = mid + 1; else right = mid - 1; } return -1; // не знайдено } // O(log n) час, O(1) пам'ять

Ключові концепції

SOLID принципи

S — єдина відповідальність; O — відкрите/закрите; L — Ліскова; I — розділення інтерфейсів; D — інверсія залежностей.

ACID (БД)

Atomicity, Consistency, Isolation, Durability — властивості транзакцій у реляційних СУБД (PostgreSQL, MySQL).

CAP теорема

Розподілена система може гарантувати лише 2 з 3: Consistency, Availability, Partition tolerance.

Deadlock

4 умови Coffman: взаємовиключення, утримання, відсутність витіснення, кругове очікування. Стратегія: уникнення + виявлення.

REST vs GraphQL

REST: ресурси по URL (GET/POST/PUT/DELETE). GraphQL: одна точка входу, клієнт задає поля — ефективніше для складних запитів.

Git workflow

Commit → Branch → PR → Code Review → Merge. CI/CD автоматизує тести і деплой після кожного push.

Про цей курс

Цей навчальний матеріал систематично розкриває тему від основ до просунутих концепцій. Курс орієнтований на самостійне навчання з практичним акцентом.

Алгоритми та структури даних — ядро комп'ютерних наук та практичного програмування.

План навчання

Проходьте матеріал послідовно, не пропускаючи розділів. Виконуйте практичні вправи після кожного блоку. Повертайтеся до складних частин після засвоєння наступних розділів.

Часті запитання (FAQ)

Що вивчається в курсі з програмування?
Курс 'програмування' систематично охоплює тему від основ до просунутих концепцій. Зміст включає теоретичні блоки, формули з поясненнями, практичні приклади та задачі для закріплення. Матеріал структурований за принципом наростаючої складності.
Який попередній рівень знань потрібен для курсу з програмування?
Курс 'програмування' розрахований на студентів, що вже мають базову математичну підготовку. Якщо ви лише починаєте — рекомендуємо спочатку ознайомитися зі вступними матеріалами у відповідних категоріях calculator.party.
Скільки часу займає проходження курсу з програмування?
Орієнтовний час для проходження курсу 'програмування': 4–8 годин для базового рівня, 10–20 годин для повного засвоєння разом із задачами. Рекомендуємо розбити на сесії по 45–60 хвилин з перервами між ними.
Чи є практичні завдання в курсі з програмування?
Так, курс 'програмування' включає практичні блоки: задачі для розв'язання, тести для перевірки розуміння та посилання на онлайн-калькулятори calculator.party для чисельних прикладів. Теорія завжди підкріплена практикою.
Яка структура і порядок вивчення матеріалів курсу з програмування?
Рекомендований порядок для 'програмування': (1) теорія → (2) шпаргалка з формулами → (3) тренажер вправ → (4) розв'язані задачі → (5) підсумковий тест. Такий шлях забезпечує глибоке і стійке засвоєння матеріалу.