Computer Science
June 7, 2025

Все сферы computer science

Map of computer science

Video

ComputerScience-Map.png (1920×1352)

🧠Theoretical Computer Science

⚙️Computer Engineering

📱Applications

🧠 Theoretical Computer Science

Turing machine

  • Это абстрактная математическая модель вычислителя: у неё бесконечная лента (память), головка, которая читает/записывает символы и сдвигается влево/вправо, и конечный набор состояний с таблицей правил (функцией перехода). ТМ формализует понятие «алгоритм» и служит базой для изучения вычислимости и разрешимости задач.
  • Понимание модели: лента, головка, состояния, функция перехода.
  • Формальное представление задачи: язык — множество строк, которые ТМ должна принимать.
  • Как строить простые ТМ: уметь описать таблицу переходов или словесно алгоритм (например, ТМ, принимающая anbna^n b^nanbn).
  • Концепции остановки/приёма/отклонения/зацикливания.
  • Универсальная машина — идея и зачем нужна.
  • Halting Problem: доказательство нерешаемости (свёртка/контрпример через самоприменение).
  • Редукции: уметь свести одну проблему к другой, чтобы показать (не)разрешимость.
  • Классы вычислимости: decidable (recursive), RE (recursively enumerable), co-RE.
  • Связь со сложностью: базовое понимание временной и пространственной сложности на ТМ (объявление классов P, NP, PSPACE через ресурсы для ТМ).
  • Варианты ТМ и эквивалентность моделей (многоленточная ↔ одноленточная, НТМ ↔ ДТМ в смысле перечислимости, но время/эффективность различаются).

Hardware

Важно понимать основные принципы работы и взаимодействия компонентов

Классификация физических устройств

  • Входные устройства (Input Devices): Клавиатура, Мышь, Сенсорный экран, Микрофон, Сканер, Камера, Геймпад
  • Выходные устройства (Output Devices): Монитор, Принтер, Колонки / наушники, Вибромотор, проектор и т. д.
  • Внутренние компоненты компьютера: CPU (Central Processing Unit), GPU (Graphics Processing Unit), RAM (оперативная память), Storage (накопитель), Motherboard (материнская плата), Power Supply (блок питания)
  • Периферийные устройства: Клавиатура, мышь, Принтер, Веб-камера, Внешний жёсткий диск, USB-флешка
  • Сетевые устройства: Router (роутер), Modem (модем), Network card (сетевая карта), Wi-Fi адаптер
  • Мобильное и встраиваемое "железо": Смартфоны, планшеты, Контроллеры (Arduino, Raspberry Pi), Сенсоры, камеры, микрочипы

Как данные перемещаются в системе

  • Что такое шина (bus) — линии, по которым данные бегают между компонентами.
  • Что делает операционная система — как она управляет вводом/выводом.
  • Как работают прерывания (interrupts) — механизм, с помощью которого устройства “общаются” с процессором.
  • Например: Клавиатура → CPU → RAM → GPU → монитор

Как работает процессор (в общих чертах)

  • Что такое инструкция и машинный код
  • Как выполняется программа (fetch–decode–execute cycle)
  • Что такое регистры, кэш, потоки, многоядерность

Память и хранение данных

  • RAM (временная, быстрая память)
  • ROM, Flash, SSD, HDD (постоянное хранение)
  • Кэш-память процессора (ещё быстрее, но малая)
  • Иерархию памяти (memory hierarchy)

Ввод/Вывод и периферия

  • Как устройства подключаются (USB, HDMI, PCIe и т. д.)
  • Что такое драйвер — программа, которая “переводит” сигналы устройства в понятные ОС команды.

Архитектура компьютера (часто это отдельная тема в курсе CS)

  • Архитектура фон Неймана (CPU + память + ввод/вывод)
  • Различия между x86, ARM, RISC-V
  • Что такое инструкции, тактовая частота, конвейеризация (pipelining)

Аппаратная оптимизация (для программистов)

  • Почему одни операции быстрее других
  • Почему последовательный доступ к памяти эффективнее случайного
  • Как кэш влияет на производительность
  • Что такое “bottleneck” (узкое место в железе)

Computability theory

это раздел теоретической информатики и математической логики, изучающий, какие задачи можно решить с помощью алгоритмов, а какие — принципиально нет.

Модели вычислений

  • Машина Тьюринга — абстрактная модель компьютера, способная выполнять любые вычислимые операции.
  • Лямбда-исчисление, рекурсивные функции, Post-машины — альтернативные формализации вычислений.
  • Все эти модели эквивалентны по вычислительной мощности (тезис Чёрча-Тьюринга).

Решаемые и неразрешимые задачи

  • Решаемая (decidable) — существует алгоритм, который всегда даёт ответ.
  • Неразрешимая (undecidable) — никакой алгоритм не может гарантировать ответ для всех входных данных.

Классы сложности

  • Рекурсивные множества — можно точно определить принадлежность элемента.
  • Рекурсивно перечислимые множества — можно перечислить, но не всегда проверить принадлежность.
  • Тьюринг-редуцируемость — сравнение сложности задач через возможность свести одну к другой.

Тьюринговские степени (Turing degrees)

  • Иерархия сложности невычислимых задач.
  • Позволяет классифицировать уровни "неразрешимости".

📚 Рекомендуемые источники

Computational complexity

P (Polynomial time) - Это задачи, которые можно эффективно решить на обычном компьютере — то есть время решения растёт не слишком быстро при увеличении размера задачи.

NP (Nondeterministic Polynomial time) - Это задачи, для которых проверить решение легко, но найти его трудно. Если кто-то даст тебе ответ, ты сможешь проверить его за полиномиальное время.

NP-Complete - Это самые трудные задачи из NP. Если найдёшь эффективное решение хотя бы одной из них, можно будет эффективно решать все NP-задачи.

BQP (Bounded-error Quantum Polynomial time) - Это задачи, которые эффективно решаются на квантовом компьютере, но не обязательно на обычном.

PSPACE - Это задачи, которые можно решить, если у нас достаточно памяти (пространства), даже если времени нужно очень много.

Algorithms

Базовые алгоритмы

  • Сортировка: Bubble Sort, Merge Sort, Quick Sort, Heap Sort.
  • Поиск: бинарный поиск, линейный поиск.
  • Жадные алгоритмы: выбор локально оптимального решения (например, задача о рюкзаке).
  • Разбивка задачи на подзадачи (Merge Sort, Quick Sort).
  • Динамическое программирование: оптимизация повторяющихся вычислений (Fibonacci, задача о рюкзаке).
  • Backtracking: перебор с откатом (решение судоку, восьми ферзей).

Алгоритмы на графах

  • DFS и BFS: обход графа в глубину и ширину.
  • Алгоритмы кратчайшего пути: Dijkstra, Bellman-Ford, Floyd-Warshall.
  • Алгоритмы поиска минимального остовного дерева: Kruskal, Prim.
  • Топологическая сортировка, поиск компонент связности.

Анализ алгоритмов и алгоритмическая сложность

  • Оценка времени выполнения (Time Complexity): определить, сколько операций выполняет алгоритм в зависимости от размера входных данных.
  • Оценка использования памяти (Space Complexity): Сколько дополнительной памяти требует алгоритм.
  • Асимптотическая оценка: O(n), O(n log n), O(n²) и т.д.
  • Асимптотический анализ: Big O (О-большое) — верхняя граница сложности; Ω (Омега) — нижняя граница; Θ (Тета) — точная оценка.
  • Анализ циклов и рекурсии: Как вложенные циклы влияют на сложность; Как рекурсивные вызовы накапливают затраты.
  • Амортизированный анализ: Средняя стоимость операции в серии вызовов
  • Сложные классы задач: P, NP, NP-complete, NP-hard — классификация задач по вычислимости.

Структуры данных как основа алгоритмов

  • Массивы, списки, стеки, очереди.
  • Деревья, графы, хеш-таблицы.
  • Связь между структурами данных и выбором алгоритма.

🔗 Рекомендуемые источники

Information theory

Информация и энтропия

  • Сколько информации содержится в этих данных?
  • Насколько они случайны или предсказуемы?
  • Энтропия — мера количества информации или неопределённости в сообщении.
    • Если символы случайны — энтропия высокая (информации много).
    • Если данные повторяются — энтропия низкая (можно сжать).

Compression (сжатие) - идея уменьшить количество бит, необходимых для представления информации, без потери данных (lossless) или с допустимой потерей (lossy). Сжатие напрямую связано с энтропией.

Error Correction (коррекция ошибок) - Когда данные передаются по шумному каналу (например, по радио), могут появляться ошибки. Теория информации изучает, как кодировать данные так, чтобы можно было исправить ошибки.

  • “Проверочные биты” (parity checking) - Мы добавляем избыточные биты к сообщению. При получении можно обнаружить и даже исправить ошибки.
  • Примеры: Hamming code; Reed–Solomon; LDPC, Turbo Codes (используются в 4G/5G)

Coding Theory - это часть теории информации, но со своим направлением — она ближе к математике и коммуникациям. Теория кодирования занимается:

  • построением кодов (способов записи информации),
  • обеспечением надёжной передачи,
  • минимизацией ошибок при передаче по каналам с шумом.

Дополнительно — что ещё включает теория информации

  • Channel capacity (пропускная способность канала) - Максимальное количество информации, которое можно передать без ошибок. → Это знаменитая формула Шеннона.
  • Source coding — оптимальное представление источника данных (сжатие).
  • Channel coding — защита данных от ошибок (добавление избыточности).
  • Mutual information — сколько информации один сигнал несёт о другом.
  • Entropy rate — скорость поступления новой информации в потоке данных.

Cryptography

Symmetric Cryptography (симметричное шифрование) - Один и тот же ключ используется для шифрования и расшифрования. Быстро, но требует безопасного обмена ключами.

  • Примеры: AES (Advanced Encryption Standard); DES, ChaCha20

Asymmetric Cryptography (асимметричное шифрование) - Используются два ключа. Преимущество — не нужно передавать секретный ключ напрямую:

  • Открытый ключ (public key) доступен всем. Им можно зашифровать сообщение.
  • Закрытый ключ (private key) знает только владелец. Им можно расшифровать сообщение.
    • Примеры алгоритмов: RSA; ECC (Elliptic Curve Cryptography); Diffie–Hellman (для обмена ключами)

Hash Functions (хеш-функции) - Односторонние функции, которые превращают данные в короткий “отпечаток” (hash).

  • Нельзя получить исходные данные из хеша.
  • Используются для проверки целостности, паролей, цифровых подписей.
  • Примеры:SHA-256, SHA-3, MD5 (устарел).

Digital Signatures (цифровые подписи) - Позволяют доказать подлинность сообщения.

  • Отправитель подписывает данные своим закрытым ключом,
  • Любой может проверить подпись его открытым ключом.
  • Примеры: RSA-Signature, ECDSA, Ed25519.

Key Exchange (обмен ключами) - Механизмы, позволяющие двум сторонам безопасно договориться о ключе шифрования даже если злоумышленник слушает канал.

  • Примеры: Diffie–Hellman, Elliptic Curve Diffie–Hellman (ECDH)

Cryptographic Protocols (криптографические протоколы) - Комбинируют разные методы шифрования и подписи в единые схемы защиты. Примеры:

  • TLS/SSL — защищает соединения в интернете (HTTPS)
  • PGP — для безопасной электронной почты
  • Signal Protocol — используется в мессенджерах Signal, WhatsApp

Post-Quantum Cryptography (постквантовая криптография) - Раздел, разрабатывающий устойчивые к квантовым компьютерам алгоритмы.

  • Примеры: Lattice-based cryptography, Hash-based signatures

Logic

1. Булева логика и логические операции

  • Основные операции: AND, OR, NOT, XOR, NAND.
  • Используются в схемах, программировании, цифровых устройствах.
  • Пример: if (A && B) — логическое И.

2. Логика высказываний (Propositional Logic)

  • Работа с утверждениями, которые могут быть истинными или ложными.
  • Формулы строятся из переменных и логических связок.
  • Применяется в верификации программ и автоматическом доказательстве теорем.

3. Предикатная логика (First-order Logic)

  • Расширяет логику высказываний: вводит кванторы (, ) и отношения.
  • Позволяет описывать более сложные свойства объектов.
  • Используется в базах данных, ИИ, формальных спецификациях.

4. Модальная логика

  • Добавляет понятия возможности, необходимости, времени.
  • Применяется в моделировании поведения систем, например, в верификации протоколов.

5. Логика в программировании

  • Функциональное программирование (λ-исчисление) — логическая модель вычислений.
  • Логическое программирование (Prolog) — программы как логические утверждения.
  • Типы и логика — связь между логикой и системами типов (Curry–Howard correspondence).

6. Автоматическое доказательство теорем

  • Алгоритмы, проверяющие корректность логических утверждений.
  • Используются в системах формальной верификации (например, Coq, Isabelle).

📚 Рекомендуемые источники

Data structures

Это раздел, который изучает способы организации и хранения данных, чтобы к ним можно было эффективно обращаться и изменять.

📘 Что нужно знать:

  • Как устроена каждая структура;
  • Каковы их преимущества и недостатки;
  • Какова их асимптотическая сложность (Big O);
  • Где они применяются (поиск, сортировка, маршрутизация и т.д.).

Formal methods

Это раздел, где используются математические модели для доказательства корректности алгоритмов и систем (особенно — критически важных, например, авиационных, медицинских, банковских).

📘 Что нужно знать:

  • Понимать, что это строгие математические модели поведения систем;
  • Используются логика, автоматы, теория множеств;
  • Применяются для верификации (доказательства правильности программ) и моделирования состояний (Model Checking).

Применение:

• Авиация, медицина, безопасность — где ошибки недопустимы.
• Протоколы связи, распределённые системы.
• Инструменты: TLA+, Coq, SPIN, Z3.

Graph theory

это раздел математики и информатики, изучающий структуры из узлов (вершин) и связей между ними (рёбер). Он лежит в основе сетей, маршрутов, зависимостей и многих алгоритмов.

Граф — это структура, состоящая из:

  • вершин (nodes / vertices)
  • рёбер (edges), которые соединяют пары вершин.

🔹 Виды графов

  1. Неориентированный (Undirected) — связь в обе стороны.
  2. Ориентированный (Directed / Digraph) — рёбра имеют направление.
  3. Взвешенный (Weighted) — каждому ребру присвоен вес (например, расстояние, стоимость).
  4. Ациклический (Acyclic) — граф без циклов. Важный частный случай — DAG (Directed Acyclic Graph), используется, например, в системах сборки и блокчейнах.
  5. Дерево (Tree) — частный случай графа без циклов, с иерархической структурой.

🔸 Основные понятия

  • Degree (степень) - Количество рёбер, связанных с вершиной
  • Path (путь) - Последовательность рёбер, соединяющих вершины
  • Cycle (цикл) - Путь, который возвращается в исходную вершину
  • Connected graph - Любые две вершины соединены каким-либо путём
  • Subgraph - Подмножество вершин и рёбер исходного графа
  • Adjacency list / matrix - Способы хранения графа в памяти
  • Связность — можно ли добраться от одной вершины до другой
  • Компоненты связности — изолированные подграфы

🔹 Основные алгоритмы на графах

  • BFS (Breadth-First Search) - Поиск в ширину, минимальное количество шагов. Полезен для поиска кратчайшего пути в невзвешенных графах
  • DFS (Depth-First Search) - Поиск в глубину, обход всех вершин. Используется для поиска, проверки связности, топологической сортировки
  • Dijkstra - Нахождение кратчайшего пути в графе с положительными весами
  • Алгоритм Беллмана-Форда — работает с отрицательными весами
  • A* - Эвристический поиск (например, в играх, маршрутах)
  • Алгоритм Флойда-Уоршелла — находит кратчайшие пути между всеми парами вершин
  • Алгоритмы остовного дерева: Kruskal / Prim - минимизируют суммарный вес связей
  • Topological Sort - Упорядочивание вершин в DAG
  • Tarjan / Kosaraju - Нахождение strongly connected components
  • PageRank - Алгоритм Google для оценки важности страниц

🔹 Применение Graph Theory

  • Сети: интернет, социальные сети, маршрутизация.
  • Игры: навигация, ИИ, поиск путей.
  • Базы данных: графовые БД (Neo4j, ArangoDB).
  • Компиляторы: зависимость модулей и оптимизация.
  • Машинное обучение: графовые нейросети (GNN).

🔹 Что нужно знать

  1. Термины: вершины, рёбра, степени, циклы.
  2. Типы графов и их свойства.
  3. Как представлять графы в коде (матрица, список).
  4. Базовые алгоритмы поиска, кратчайших путей и связности.
  5. Где графы применяются в реальных задачах.

📚 Рекомендуемые ресурсы

Automata theory

Теория автоматов — это раздел теории вычислений, изучающий абстрактные машины (автоматы) и задачи, которые они могут решать. Это фундамент для понимания языков, компиляторов и вычислимости.

🧠 Что такое автомат

  • Автомат — это математическая модель вычислительного устройства, которое принимает входную строку и переходит между состояниями по заданным правилам.
  • Пример: конечный автомат, который проверяет, соответствует ли строка шаблону (например, содержит чётное число нулей).

🔍 Основные типы автоматов

1. Конечный автомат (Finite Automaton, FA)

  • Работает с регулярными языками.
  • Имеет конечное число состояний.
  • Применяется в:
    • регулярных выражениях,
    • анализе текста,
    • проектировании цифровых схем.

2. Недетерминированный конечный автомат (NFA)

  • Может переходить в несколько состояний одновременно.
  • Эквивалентен DFA по мощности, но часто проще в построении.

3. Автомат с магазином (Pushdown Automaton, PDA)

  • Имеет стек — может хранить дополнительную информацию.
  • Распознаёт контекстно-свободные языки.
  • Используется в синтаксическом анализе (парсинге) языков программирования.

4. Машина Тьюринга (Turing Machine)

  • Мощнейшая модель автомата.
  • Имеет бесконечную ленту и может выполнять любые вычислимые функции.
  • Основа для определения вычислимости и алгоритмической сложности.

📚 Как это связано с Computer Science

  • Компиляторы: используют автоматы для лексического и синтаксического анализа.
  • Теория языков: классификация языков по сложности (регулярные, контекстно-свободные, и т.д.).
  • Верификация программ: проверка корректности поведения через модели автоматов.
  • Искусственный интеллект: моделирование поведения агентов через автоматы состояний.

📘 Рекомендуемые ресурсы

Computational geometry

это раздел информатики, изучающий алгоритмы для решения задач, сформулированных в терминах геометрии. Он лежит в основе графики, робототехники, ГИС и физического моделирования.

📐 Что изучает Computational Geometry

Цель — разработка эффективных алгоритмов для работы с геометрическими объектами: точками, линиями, многоугольниками, поверхностями и телами.

🧠 Основные задачи и алгоритмы (Copilot)

  • Convex Hull — построение наименьшего выпуклого многоугольника, охватывающего все точки.
  • Line Intersection — определение, пересекаются ли отрезки.
  • Polygon Triangulation — разбиение многоугольника на треугольники.
  • Voronoi Diagram — разбиение пространства по ближайшим точкам.
  • Delaunay Triangulation — триангуляция, максимизирующая минимальные углы.
  • Point Location — определение, в каком регионе находится точка.
  • Range Searching — поиск объектов в заданной области.
  • Closest Pair of Points — нахождение двух ближайших точек.

🧠 Основные задачи и алгоритмы (ChatGPT)

  • Оболочки и огибающие: Convex Hull (оболочка множества точек) — алгоритмы Graham scan, Jarvis march
  • Поиск пересечений: Проверка, пересекаются ли отрезки, линии или многоугольники
  • Разбиение пространства: Triangulation (триангуляция), Voronoi diagrams (диаграммы Вороного), Delaunay triangulation
  • Ближайшие соседи: Nearest Neighbor Search, KD-trees
  • Обработка коллизий: Проверка столкновений в 2D/3D (bounding boxes, convex shapes)
  • Расстояния и площади: Алгоритмы вычисления расстояний между точками, линиями и поверхностями
  • Point in Polygon: Проверка, находится ли точка внутри фигуры
  • Sweep Line Algorithms: Универсальный подход для обработки геометрических событий по порядку (например, пересечения линий)

🔸 Структуры данных

  • KD-Tree — для поиска ближайших точек в многомерном пространстве.
  • Quad-Tree / Octree — деление 2D/3D-пространства на ячейки.
  • Bounding Volume Hierarchy (BVH) — ускорение коллизий и рендеринга.
  • Spatial Hashing — быстрая индексация объектов в пространстве.

🧩 Применение

  • Компьютерная графика — рендеринг, коллизии, моделирование.
  • Робототехника — планирование пути, избегание препятствий.
  • Геоинформационные системы (GIS) — анализ карт, построение маршрутов.
  • CAD/CAE — моделирование объектов и взаимодействий.
  • Физические симуляции — расчёт столкновений, деформаций.

🔹 Что нужно знать

  1. Основные геометрические примитивы и их свойства.
  2. Как представлять фигуры в коде (координаты, векторы, полигоны).
  3. Базовые алгоритмы пересечений, оболочек, расстояний.
  4. Пространственные структуры данных (KD-tree, Quad-tree).
  5. Понимание численной точности и ошибок вычислений с float.

📚 Рекомендуемые ресурсы

Parallel programming

Это область, изучающая, как выполнять несколько задач одновременно, чтобы ускорить вычисления и эффективнее использовать ресурсы компьютера.

⚙️ Основная идея

Вместо того чтобы выполнять одну «главную задачу» (Main Job) последовательно, программа делит её на несколько подзадач (Job1, Job2, Job3, Job4), которые могут выполняться параллельно — то есть одновременно, на разных процессорах, машинах, потоках или ядрах.

Каждая задача, в свою очередь, может быть разбита на ещё более мелкие задачи (Smaller Jobs).

Когда все подзадачи завершены, их результаты объединяются обратно в один общий результат.

🔹 Основные понятия

  1. Поток (Thread) — отдельная последовательность инструкций, выполняющаяся внутри программы.
  2. Процесс (Process) — независимая программа с собственными ресурсами.
  3. Синхронизация (Synchronization) — механизм, который предотвращает ошибки, когда потоки обращаются к общим данным одновременно.
  4. Mutex, Semaphore, Lock — инструменты для контроля доступа к ресурсам.
  5. Race Condition — ошибка, возникающая, когда порядок выполнения потоков влияет на результат.
  6. Deadlock — ситуация, когда потоки ждут друг друга бесконечно.

🔸 Типы параллелизма

  1. Data Parallelism — обработка разных частей данных одновременно.
    📘 Пример: параллельная обработка изображений.
  2. Task Parallelism — выполнение разных задач одновременно.
    📘 Пример: один поток считает, другой сохраняет данные на диск.
  3. Pipeline Parallelism — данные проходят через несколько этапов, каждый выполняется параллельно.
    📘 Пример: обработка видео: чтение → декодирование → фильтрация → вывод.

📚 Рекомендуемые ресурсы

Quantum computation

Квантовые вычисления — это модель, основанная на принципах квантовой механики, где информация хранится и обрабатывается не классическими битами (0 или 1), а квантовыми битами (кубитами), которые могут быть одновременно в нескольких состояниях.

🔹 Ключевые квантовые принципы

  1. Суперпозиция (Superposition)
    Кубит может быть одновременно в состоянии 0 и 1 — это даёт возможность обрабатывать множество вариантов параллельно.
  2. Запутанность (Entanglement)
    Кубиты могут быть связаны так, что изменение одного мгновенно влияет на другой — используется для квантовых алгоритмов и криптографии.
  3. Измерение (Measurement)
    Когда кубит измеряется, он «разрушается» в одно из возможных состояний (0 или 1) с определённой вероятностью.
  4. Интерференция (Interference)
    Амплитуды вероятностей могут усиливать или ослаблять друг друга, позволяя «отфильтровывать» неверные ответы.

🔸 Основные понятия и инструменты

  • Qubit — основной элемент квантовой информации.
  • Quantum Gate — операция, изменяющая состояние кубита (аналог логических вентилей, но работает с матрицами). Аналог логических операций, но обратимы и унитарны.
    • Hadamard (H) — создаёт суперпозицию.
    • Pauli-X — аналог NOT.
    • CNOT — условная операция, основа квантовой запутанности.
  • Quantum Circuit — комбинация квантовых вентилей, выполняющих алгоритм.
  • Bloch Sphere — визуализация состояния одного кубита.
    • Полюса: |0⟩ и |1⟩, экватор — суперпозиции.
    • Вращения на сфере — это квантовые гейты (операции).
  • Quantum Algorithms — алгоритмы, использующие квантовые эффекты для ускорения задач (например, алгоритм Шора и Гровера).

🚀 Применение

  • Квантовая факторизация (алгоритм Шора) — угроза классической криптографии.
  • Поиск в неструктурированных данных (алгоритм Гровера).
  • Симуляция квантовых систем — химия, материалы, биология.
  • Квантовое машинное обучение — пока экспериментально.

📚 Ресурсы для изучения

  • Quantum Country — интерактивный курс, который использует технику повторения с интервалами, чтобы ты действительно запомнил основы квантовой механики и вычислений. Отлично подходит для начинающих, особенно если ты хочешь не просто прочитать, а понять.
  • IBM Quantum Experience — платформа, где ты можешь запускать квантовые алгоритмы на реальных квантовых компьютерах IBM. Есть визуальные редакторы, симуляторы и обучающие материалы. Всё бесплатно и доступно через браузер.
  • Qiskit — Python-библиотека от IBM для квантового программирования. Позволяет создавать, визуализировать и запускать квантовые схемы. Подходит для тех, кто хочет писать код и экспериментировать с алгоритмами.
  • QuTiP — библиотека для симуляции квантовых систем, особенно полезна для физиков и тех, кто хочет моделировать динамику квантовых состояний. Поддерживает работу с уравнениями Линблада, плотностными матрицами и квантовыми операторами.
  • Quantum Computing for the Very Curious — тот же сайт, но конкретно эта часть — это глубокое введение в теорию, включая суперпозицию, запутанность и алгоритмы. Написано доступно, но не упрощённо.
  • Microsoft Quantum Docs — документация по Q# и Azure Quantum. Если хочешь попробовать квантовое программирование в экосистеме Microsoft, это стартовая точка.

⚙️Computer Engineering

Scheduling

Scheduling (планирование) — это механизм ОС, который решает, какой процесс или поток, когда и на каком CPU будет выполняться.

Схема:

  • Processes → задачи, которые хотят выполняться.
  • Scheduler → компонент ядра, распределяющий задачи.
  • CPUs (multiprocessing) → несколько ядер, на которых задачи могут выполняться параллельно.

Ключевые темы:

  1. Process vs Thread — планируются именно потоки.
  2. CPU core — один поток на одно ядро в момент времени.
  3. Context switch — переключение между потоками.
  4. Time slice (quantum) — сколько времени поток может работать.
  5. Scheduling policies — приоритеты, real-time vs normal.
  6. Multiprocessing / Multicore — параллельное выполнение на нескольких ядрах.
  7. Preemptive scheduling — ОС может принудительно прервать поток.

Computer Architecture

Область "Computer Architecture" охватывает ключевые темы, связанные с внутренним устройством и функционированием вычислительных систем — от процессоров до специализированных ускорителей. Чтобы разбираться в теме, нужно изучить архитектуру CPU, GPU, FPGA, память, инструкции, параллелизм и оптимизацию.


🧠 Базовые концепции архитектуры

  • Von Neumann vs. Harvard Architecture — различия в организации памяти и инструкций.
  • Instruction Set Architecture (ISA) — набор команд, поддерживаемых процессором (например, x86, ARM, RISC-V).
  • Microarchitecture — реализация ISA: конвейеры, кэш, ALU, регистры.

⚙️ Архитектура CPU

  • Control Unit — управление выполнением инструкций.
  • Arithmetic Logic Unit (ALU) — выполнение арифметических и логических операций.
  • Registers — быстрые хранилища данных.
  • Pipelining — конвейерная обработка инструкций.
  • Branch Prediction & Speculative Execution — ускорение выполнения за счёт предсказаний.
  • Out-of-Order Execution — выполнение инструкций вне очереди для повышения производительности.

🧮 Архитектура GPU

  • SIMD & SIMT модели — параллельная обработка данных.
  • Multiprocessors & CUDA cores — архитектура NVIDIA/AMD для массовых вычислений.
  • Memory Hierarchy in GPUs — глобальная, shared, local память.

🔧 FPGA и программируемая логика

  • Logic Blocks & LUTs — базовые элементы логики.
  • Interconnects & Switch Boxes — маршрутизация сигналов.
  • HDL (Verilog/VHDL) — языки описания аппаратуры.
  • Reconfigurable Computing — настройка архитектуры под задачу.

🧩 Память и кэш

  • Memory Hierarchy — регистры, кэш (L1/L2/L3), RAM, SSD/HDD.
  • Cache Coherence & Consistency — согласованность данных в многопроцессорных системах.
  • Virtual Memory & Paging — управление адресным пространством.

🚀 Производительность и оптимизация

  • Latency vs. Throughput — задержка и пропускная способность.
  • Amdahl’s Law & Gustafson’s Law — теоретические пределы ускорения.
  • Power Efficiency & Thermal Design — энергопотребление и охлаждение.

🧠 Современные тренды

  • RISC vs. CISC — простые vs. сложные инструкции.
  • Chiplet Architectures — модульные процессоры.
  • AI Accelerators (TPU, NPU) — специализированные блоки для нейросетей.
  • Heterogeneous Computing — совместная работа CPU, GPU, FPGA.

Software and programming languages

Чтобы разбираться в программных слоях и языках программирования, нужно понимать, как они взаимодействуют с аппаратной частью и между собой. Каждый уровень — от BIOS до веб-приложений — требует специфических языков и знаний.


🧱 Иерархия программного стека

  1. Silicon (Аппаратная часть) - Физические транзисторы, схемы, логика HDL: Verilog, VHDL
  2. BIOS / Firmware - Низкоуровневое ПО, запускающее систему
  3. Операционная система (OS) - Управление ресурсами, планирование задач
  4. Системные библиотеки / API - Интерфейсы между ОС и приложениями
  5. Приложения (Desktop) - Программы для пользователя
  6. Браузер - Интерпретатор
  7. Веб-приложения - Клиент-серверные системы

🧠 Языки программирования

  • Assembly — ближе всего к железу, используется в BIOS, драйверах.
  • C / C++ — системное программирование, ядро ОС, драйверы.
  • Rust — альтернатива C++ с безопасностью памяти.
  • Java / C# / Swift — кроссплатформенные приложения, GUI, мобильные приложения.
  • Python / PHP / Ruby — серверная логика, скрипты, автоматизация.
  • JavaScript / TypeScript — фронтенд, интерактивность в браузере.
  • SQL — работа с базами данных.
  • Perl — текстовая обработка, администрирование.

🔄 Как слои взаимодействуют

  • BIOS → OS: BIOS инициализирует железо и передаёт управление загрузчику ОС.
  • OS → Applications: ОС предоставляет API, файловую систему, управление памятью.
  • Applications → Browser/Web Apps: Приложения могут быть локальными или веб-ориентированными, взаимодействуют с браузером.
  • Web Apps → Server: Через HTTP-запросы, обрабатываются серверными языками.

📚 Что изучать по слоям

  • BIOS / Firmware: Ассемблер, архитектура x86, загрузка
  • OS: Процессы, потоки, память, файловая система
  • Applications: GUI, API, многопоточность
  • Browser: DOM, JS-движки, рендеринг
  • Web Apps: HTTP, REST, MVC, базы данных

Compilers and interpreters

Компиляторы и интерпретаторы — это два разных способа преобразования исходного кода (на высокоуровневом языке) в машинный код, понятный компьютеру. Компилятор переводит весь код сразу, а интерпретатор — построчно во время выполнения. Это влияет на скорость, отладку и переносимость программ.


🧠 Основные различия

  • Принцип работы
    • Компилятор переводит весь код в машинный язык до запуска.
    • Интерпретатор выполняет код построчно во время работы.
  • Скорость выполнения:
    • Компилятор быстрее, так как код уже переведён.
    • Интерпретатор медленнее, потому что перевод идёт в реальном времени.
  • Отладка:
    • При компиляции ошибки видны только после завершения компиляции.
    • При интерпретации ошибки проявляются сразу при выполнении строки.
  • Файл вывода:
    • Компилятор создаёт исполняемый файл (например, .exe, .out).
    • Интерпретатор не создаёт отдельного файла.
  • Примеры языков:
    • Компилятор: C, C++, Rust, Go.
    • Интерпретатор: Python, JavaScript, Ruby, PHP.
  • Портативность:
    • Компилятор требует перекомпиляции под каждую платформу.
    • Интерпретатор позволяет запускать один и тот же код на разных платформах.

🧩 Как это выглядит на практике

  • Компилятор (например, GCC для C):
    • Исходный код → компиляция → исполняемый файл → запуск.
    • Ошибки видны только после компиляции.
    • Подходит для производительных систем и финального релиза.
  • Интерпретатор (например, Python):
    • Исходный код → интерпретация → выполнение.
    • Удобен для скриптов, быстрой отладки, кроссплатформенности.
    • Часто используется в веб-разработке и автоматизации.

🔄 Гибридные подходы

Некоторые языки используют оба подхода:

  • Java: компилируется в байт-код → интерпретируется JVM или JIT-компилируется.
  • JavaScript (в браузере): интерпретируется, но современные движки (V8, SpiderMonkey) используют JIT-компиляцию для ускорения.
  • Python (PyPy): интерпретатор с JIT-компиляцией.

📚 Что изучать по теме

  • Компиляторы: Лексический анализ, синтаксический разбор, генерация кода
  • Интерпретаторы: AST, интерпретация, управление памятью
  • JIT-компиляция: Оптимизация во время выполнения
  • Среды выполнения: JVM, CLR, V8

Operating systems

Чтобы разбираться в операционных системах, нужно изучить управление процессами, памятью, файловой системой, вводом-выводом и синхронизацией. Эти темы лежат в основе всех популярных ОС — от Windows и Linux до Android и macOS.


🧠 Основы операционных систем

  • Что такое ОС и зачем она нужна
  • Роль ОС как посредника между пользователем и аппаратурой
  • Типы ОС: многозадачные, многопользовательские, распределённые, встраиваемые

⚙️ Управление процессами

  • Процессы и потоки: различия и взаимодействие
  • Планирование процессов (scheduling): FIFO, Round Robin, приоритеты
  • Состояния процесса: создание, выполнение, ожидание, завершение
  • Контекст переключения (context switching)
  • Системные вызовы и API для управления процессами

🧩 Синхронизация и конкуренция

  • Критические секции и гонки (race conditions)
  • Мьютексы, семафоры, мониторы
  • Deadlock: причины, обнаружение, предотвращение
  • Примитивы синхронизации в POSIX и Windows

🧮 Управление памятью

  • Физическая и виртуальная память
  • Страничная организация (paging), сегментация
  • Алгоритмы замещения страниц: LRU, FIFO, Clock
  • MMU (Memory Management Unit) и TLB (Translation Lookaside Buffer)

📁 Файловая система

  • Иерархия каталогов, пути, разрешения
  • Типы файловых систем: FAT, NTFS, ext4, APFS
  • Буферизация, кэширование, журналирование
  • Метаданные, inode, блоки

🔌 Ввод/вывод и драйверы

  • Абстракция устройств: блоковые и символьные
  • Буферизация и асинхронный ввод/вывод
  • Драйверы устройств и взаимодействие с ядром
  • Прерывания и обработчики

🔐 Безопасность и управление доступом

  • Модель прав доступа: ACL, RBAC, DAC
  • Аутентификация и авторизация
  • Изоляция процессов и контейнеризация
  • SELinux, AppArmor, Windows UAC

🧱 Архитектура ядра

  • Монолитное ядро vs. микроядро
  • Модули ядра и расширяемость
  • Примеры: Linux, Windows NT, XNU (macOS)

📡 Сетевые функции ОС

  • Сокеты, TCP/IP стек
  • DHCP, DNS, ARP
  • Брандмауэры, NAT, VPN

🧪 Практика и симуляторы

  • Linux: top, ps, strace, lsof, htop
  • Windows: Process Explorer, Resource Monitor
  • Симуляторы: NachOS, PintOS, QEMU

Хороший видео курс

CS 162: Operating Systems and Systems Programming

Software Engineering

Чтобы разбираться в Software Engineering (инженерии программного обеспечения), нужно изучить принципы проектирования, тестирования, управления версиями, формальных методов и архитектуры программ. Это дисциплина, объединяющая технические и организационные аспекты разработки ПО.

Вот ключевые темы, которые стоит изучить:


🧠 Основы Software Engineering

  • Что такое инженерия ПО и чем она отличается от просто программирования
  • Жизненный цикл разработки: от идеи до поддержки
  • Модели разработки: Waterfall, Agile, Scrum, Kanban, V-Model

🧩 Объектно-ориентированное проектирование (OOD)

  • Классы, объекты, наследование, инкапсуляция, полиморфизм
  • Принципы SOLID: устойчивость архитектуры
  • Паттерны проектирования: Singleton, Factory, Observer, Strategy
  • UML-диаграммы: классы, последовательности, состояния

🧪 Тестирование

  • Unit Testing: проверка отдельных функций/модулей
  • Integration Testing: проверка взаимодействия компонентов
  • System Testing: проверка всей системы
  • Test-Driven Development (TDD): сначала тест, потом код
  • Инструменты: JUnit, PyTest, NUnit

🔄 Контроль версий

  • Git: коммиты, ветки, слияния, rebase
  • GitHub/GitLab/Bitbucket: хостинг и CI/CD
  • Стратегии ветвления: Git Flow, trunk-based development
  • Разрешение конфликтов и ревью кода

📐 Формальные методы

  • Математические модели для проверки корректности программ
  • Логика, спецификации, доказательства
  • Примеры: Z notation, TLA+, model checking
  • Используются в критических системах: авиация, медицина, безопасность

🧱 Архитектура программного обеспечения

  • Модульность, слоистость, компоненты
  • Монолит vs. микросервисы
  • REST, GraphQL, gRPC
  • API-дизайн и контрактное программирование

📚 Что ещё важно

  • Управление требованиями: сбор, анализ, приоритизация
  • DevOps: автоматизация сборки, тестирования, доставки
  • Документация: техническая, пользовательская, архитектурная
  • Этические аспекты: безопасность, приватность, лицензии

Networking

Чтобы разбираться в компьютерных сетях, нужно изучить модели взаимодействия, протоколы, топологии, устройства, безопасность и практические инструменты. Это фундамент для понимания интернета, локальных сетей и распределённых систем.

Вот подробный список тем, которые охватывают область Computer Networking:


🌐 Базовые понятия

  • Что такое сеть: соединение устройств для обмена данными.
  • Типы сетей:
    • LAN — локальная сеть (дом, офис)
    • MAN — городская сеть
    • WAN — глобальная сеть (интернет)
    • VPN — виртуальная частная сеть
    • PAN — персональная сеть (Bluetooth)

🧱 Модель OSI и TCP/IP

  • OSI (7 уровней): физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной.
  • TCP/IP (4 уровня): сетевой доступ, интернет, транспорт, приложение.
  • Назначение уровней: разделение функций, стандартизация, отладка.

📡 Сетевые протоколы

  • TCP vs. UDP: надёжность vs. скорость.
  • IP (IPv4/IPv6): адресация и маршрутизация.
  • HTTP/HTTPS: веб-протоколы.
  • DNS: преобразование доменов в IP.
  • DHCP: автоматическая выдача IP-адресов.
  • FTP, SMTP, SSH: передача файлов, почта, удалённый доступ.

🔌 Сетевые устройства

  • Router: маршрутизация между сетями.
  • Switch: соединение устройств внутри сети.
  • Hub: устаревший вариант коммутатора.
  • Access Point: точка доступа Wi-Fi.
  • Firewall: фильтрация трафика.

🧩 Топологии сети

  • Bus: общая шина.
  • Star: центральный узел.
  • Ring: кольцо.
  • Mesh: каждый с каждым.
  • Hybrid: комбинации.

🔐 Безопасность в сетях

  • Шифрование: TLS/SSL, VPN.
  • Аутентификация: пароли, сертификаты.
  • Фаерволы и IDS/IPS: защита от атак.
  • DDoS, MITM, ARP Spoofing: типы угроз.

🧪 Практика и инструменты

  • Wireshark: анализ сетевого трафика.
  • tcpdump: консольный сниффер.
  • nmap: сканирование портов.
  • ping, traceroute: диагностика соединений.
  • iptables, ufw: настройка фаерволов.

Data Management

Чтобы разбираться в области управления данными и инфраструктуры хранения, нужно изучить базы данных, язык SQL, архитектуру дата-центров, типы хранилищ и методы обеспечения надёжности и масштабируемости. Это основа для любой современной системы, работающей с данными.

Вот ключевые темы, которые охватывает область Data Management:


🧠 Основы управления данными

  • Что такое данные: структурированные, неструктурированные, полу-структурированные
  • Метаданные, схемы, форматы хранения (CSV, JSON, XML, Parquet)
  • Принципы качества данных: целостность, актуальность, консистентность

🗃️ Базы данных

  • Реляционные базы данных (RDBMS): таблицы, связи, ключи
    • Примеры: PostgreSQL, MySQL, Oracle, SQL Server
  • Нереляционные базы данных (NoSQL): документы, графы, ключ-значение
    • Примеры: MongoDB, Redis, Cassandra, Neo4j
  • In-memory базы: Redis, Memcached
  • Встраиваемые базы: SQLite

🧮 SQL (Structured Query Language)

  • SELECT, INSERT, UPDATE, DELETE — базовые операции
  • JOIN, GROUP BY, HAVING — работа с множеством таблиц
  • Индексы, представления (views), процедуры
  • Оптимизация запросов и план выполнения
  • Безопасность: права доступа, инъекции

🏢 Дата-центры и инфраструктура

  • Серверы, стойки, хранилища, сетевые компоненты
  • Типы хранилищ: HDD, SSD, NAS, SAN
  • RAID-массивы: отказоустойчивость и производительность
  • Энергоснабжение, охлаждение, резервирование
  • Облачные дата-центры: AWS, Azure, GCP

🔄 Репликация и резервное копирование

  • Master-slave, multi-master, eventual consistency
  • Snapshot, incremental backup, point-in-time recovery
  • Disaster recovery и failover

📡 Доступ и масштабирование

  • Шардирование: горизонтальное масштабирование
  • Кэширование: Redis, CDN
  • Балансировка нагрузки: HAProxy, NGINX
  • CAP-теорема: согласованность, доступность, устойчивость к разделению

🧪 Практика и инструменты

  • SQL-песочницы: DB-Fiddle, SQLite Browser
  • Мониторинг: pgAdmin, Grafana, Prometheus
  • ETL-инструменты: Apache NiFi, Airflow, Talend
  • ORM-библиотеки: SQLAlchemy, Entity Framework

Performance

Чтобы разбираться в производительности компьютерных систем, нужно изучить методы анализа, метрики, типы нагрузок, инструменты мониторинга и подходы к бенчмаркингу. Это критично для оценки эффективности, выявления узких мест и оптимизации систем.

Вот ключевые темы, которые охватывает область Performance Analysis & Benchmarking:


🧠 Основы производительности

  • Что такое производительность: скорость, отклик, пропускная способность
  • Различие между latency (задержка) и throughput (пропускная способность)
  • Влияние архитектуры, ОС, памяти, сети и кода на производительность

📊 Метрики и показатели

  • CPU usage, memory usage, disk I/O, network throughput
  • Load average, context switches, cache hits/misses
  • Tail latency: задержка в худших случаях
  • Garbage collection, frame rate (в графике), FPS

🔍 Анализ производительности

  • Профилирование: выявление узких мест в коде
  • Трассировка: отслеживание событий и вызовов
  • Логирование: сбор информации о поведении системы
  • Анализ системных вызовов: strace, perf, dtrace

🧪 Бенчмаркинг

  • Синтетические тесты: искусственные сценарии (например, sysbench, Geekbench)
  • Реальные нагрузки: моделирование поведения пользователей
  • Микробенчмаркинг: тестирование отдельных функций
  • Стресс-тестирование: проверка пределов системы
  • A/B тесты: сравнение двух версий

🛠️ Инструменты

  • Linux: htop, vmstat, iostat, perf, dstat
  • Windows: Resource Monitor, Performance Monitor
  • Web: Lighthouse, WebPageTest, GTmetrix
  • Code-level: Valgrind, gprof, JMH (Java), BenchmarkDotNet (.NET)

🔄 Практика и подходы

  • Сбор baseline: нормальное поведение системы
  • Построение графиков: визуализация метрик
  • Автоматизация тестов: CI/CD + нагрузочные тесты
  • Интерпретация результатов: статистика, доверительные интервалы

Computer Graphics

Чтобы разбираться в компьютерной графике, нужно изучить принципы рендеринга, работу с пикселями и полигонами, трансформации, освещение, текстуры, шейдеры и API. Эта область объединяет математику, программирование и визуальное искусство.

Вот ключевые темы, которые охватывает область Computer Graphics:


🧠 Основы графики

  • Разница между растровой и векторной графикой
  • Пиксели, разрешение, цветовые модели (RGB, HSV, CMYK)
  • Буфер кадра (frame buffer), глубина цвета

📐 Геометрия и трансформации

  • Векторы, матрицы, координаты
  • Трансформации: масштабирование, вращение, перенос
  • Мировая, видовая и экранная системы координат
  • Проекции: ортографическая и перспективная

🧱 Рендеринг

  • Растровизация (rasterization): преобразование примитивов в пиксели
  • Ray tracing: трассировка лучей для реалистичного освещения
  • Z-buffer: управление глубиной
  • Back-face culling: отбрасывание невидимых граней

💡 Освещение и затенение

  • Модели освещения: Phong, Blinn-Phong, Lambert
  • Ambient, diffuse, specular компоненты
  • Тени: shadow mapping, ray tracing
  • Global illumination: реалистичное распространение света

🧩 Текстуры и материалы

  • UV-развёртка: наложение текстур на модели
  • Мипмапы: оптимизация текстур
  • Normal maps, bump maps: имитация рельефа
  • PBR (Physically Based Rendering): реалистичные материалы

🎨 Шейдеры и GPU

  • Vertex Shader: обработка вершин
  • Fragment Shader: обработка пикселей
  • GLSL, HLSL: языки шейдеров
  • OpenGL, DirectX, Vulkan: графические API

🧪 Практика и инструменты

  • Blender: моделирование и рендеринг
  • Unity, Unreal Engine: игровые движки
  • WebGL, Three.js: графика в браузере
  • GIMP, Krita: растровая графика
  • Inkscape: векторная графика

📱Applications

Optimization

Чтобы разбираться в оптимизации, нужно изучить математические методы, алгоритмы поиска экстремумов, типы задач, эвристики и реальные применения — от логистики и финансов до геймдева и машинного обучения.

Вот ключевые темы, которые охватывает область Optimization:


🧠 Основы оптимизации

  • Что такое оптимизация: нахождение наилучшего решения из множества возможных
  • Целевая функция (objective function): что мы минимизируем или максимизируем
  • Ограничения (constraints): допустимые границы решений
  • Типы задач: линейные, нелинейные, дискретные, стохастические

📐 Математические методы

  • Градиентный спуск (Gradient Descent): движение по направлению наибольшего уменьшения
  • Метод Ньютона: использование производных второго порядка
  • Симплекс-метод: решение линейных задач
  • Метод Лагранжа: оптимизация с ограничениями
  • Convex vs. non-convex: выпуклые задачи проще решать

🔍 Алгоритмы и эвристики

  • Жадные алгоритмы (Greedy): локально оптимальные шаги
  • Динамическое программирование: разбиение задачи на подзадачи
  • Эволюционные алгоритмы: мутации, отбор, популяции
  • Симуляция отжига (Simulated Annealing): стохастический поиск
  • Рой частиц (Particle Swarm): коллективный поиск

🧩 Применения

  • Финансы: портфельная оптимизация, риск/доходность
  • Склад и логистика: маршруты, упаковка, распределение
  • Игры: балансировка, поведение ИИ, подбор параметров
  • Машинное обучение: обучение моделей, подбор гиперпараметров
  • Производство: планирование, минимизация затрат

🧪 Практика и инструменты

  • Python: scipy.optimize, cvxpy, pulp
  • Excel Solver: простые задачи
  • MATLAB: мощные численные методы
  • Julia: высокая производительность для научных задач
  • PyTorch, TensorFlow: оптимизация в нейросетях

Boolean Satisfiability

Чтобы разбираться в булевой выполнимости (SAT), нужно изучить логику высказываний, формулы в КНФ, алгоритмы поиска решений и их применение в программировании, верификации и оптимизации. Это фундаментальная тема в теории вычислений и искусственном интеллекте.

Вот ключевые темы, которые охватывает область Boolean Satisfiability (SAT):


🧠 Основы логики

  • Булевы переменные: принимают значения true или false
  • Логические операции: AND (∧), OR (∨), NOT (¬), XOR
  • Формулы: комбинации переменных и операций
  • Истинностные таблицы: проверка всех возможных комбинаций

📐 Конъюнктивная нормальная форма (CNF)

  • Формула в виде AND от OR-групп:
    Пример: (x₁ ∨ x₂ ∨ ¬x₃) ∧ (¬x₁ ∨ ¬x₂ ∨ ¬x₃)
  • Каждая OR-группа — это клаузула, содержащая литералы (переменные или их отрицания)
  • SAT-задача: существует ли присваивание переменным, при котором вся формула истинна?

🔍 Алгоритмы решения SAT

  • Brute Force: перебор всех комбинаций (экспоненциально)
  • DPLL (Davis–Putnam–Logemann–Loveland): рекурсивный поиск с упрощениями
  • CDCL (Conflict-Driven Clause Learning): современный SAT-решатель с обучением на конфликтах
  • Heuristics: выбор переменных, упорядочивание, сокращение поиска

🧩 Применения SAT

  • Проверка корректности программ (formal verification)
  • Решение головоломок и логических задач
  • Планирование и оптимизация
  • Компиляторы и анализ кода
  • Аппаратная верификация (FPGA, ASIC)

🧪 Практика и инструменты

  • MiniSAT, PicoSAT, Z3 — популярные SAT-решатели
  • SMT (Satisfiability Modulo Theories): расширение SAT с арифметикой, массивами, типами
  • PySAT — Python-библиотека для работы с SAT
  • SATLIB — коллекция тестов и задач

Artificial intelligence

Чтобы разбираться в искусственном интеллекте (AI), нужно изучить машинное обучение, нейронные сети, обработку языка, планирование, восприятие и этику. Это междисциплинарная область, объединяющая математику, программирование, логику и когнитивные науки.

Вот ключевые темы, которые охватывает область Artificial Intelligence:


🧠 Основы ИИ

  • Что такое искусственный интеллект: имитация человеческого мышления и поведения
  • Разделение на узкий (Narrow AI) и общий (General AI)
  • Задачи: классификация, прогнозирование, планирование, обучение, взаимодействие

📊 Машинное обучение (ML)

  • Обучение с учителем: классификация, регрессия
  • Обучение без учителя: кластеризация, понижение размерности
  • Обучение с подкреплением: агент, среда, награды
  • Алгоритмы: Decision Trees, SVM, k-NN, Naive Bayes
  • Модели: линейная регрессия, логистическая регрессия, ансамбли

🧠 Нейронные сети и Deep Learning

  • Перцептрон, многослойные сети (MLP)
  • Сверточные сети (CNN): обработка изображений
  • Рекуррентные сети (RNN, LSTM): последовательности и временные ряды
  • Transformer: архитектура для NLP и генерации
  • Обучение: градиентный спуск, обратное распространение ошибки

🗣️ Обработка естественного языка (NLP)

  • Токенизация, стемминг, лемматизация
  • Word embeddings: Word2Vec, GloVe, BERT
  • Задачи: перевод, чат-боты, анализ тональности, генерация текста
  • Модели: GPT, T5, BERT, LLaMA

🧩 Планирование и рассуждение

  • Поиск: BFS, DFS, A*, Minimax
  • Логика: пропозициональная, предикатная
  • Системы правил: экспертные системы
  • Планирование действий: STRIPS, PDDL

👁️ Восприятие и сенсоры

  • Компьютерное зрение: распознавание объектов, сегментация
  • Обработка аудио: распознавание речи, синтез
  • Робототехника: сенсоры, SLAM, управление движением

🔐 Этические и социальные аспекты

  • Прозрачность и объяснимость моделей
  • Смещения (bias) и справедливость
  • Приватность и безопасность
  • Влияние на рынок труда и общество

🧪 Практика и инструменты

  • Python: NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch
  • Jupyter Notebooks: интерактивная среда
  • Hugging Face: модели и датасеты
  • OpenCV: компьютерное зрение
  • Google Colab: облачные вычисления

Machine Learning

Чтобы разбираться в машинном обучении, нужно изучить три ключевых парадигмы — обучение с учителем, без учителя и с подкреплением — а также структуру нейронных сетей, методы обучения и практические применения. Это основа современного искусственного интеллекта.

Вот подробный список тем, которые охватывает область Machine Learning:


🧠 Основы машинного обучения

  • Что такое ML: алгоритмы, которые учатся на данных
  • Целевая функция, гипотезы, обобщение
  • Переобучение (overfitting) и недообучение (underfitting)
  • Bias-variance tradeoff: баланс между точностью и устойчивостью

📊 Обучение с учителем (Supervised Learning)

  • Данные с метками (labels): вход → желаемый выход
  • Задачи: классификация (например, распознавание образов), регрессия (например, прогноз цен)
  • Алгоритмы:
    • Decision Trees
    • Support Vector Machines (SVM)
    • k-Nearest Neighbors (k-NN)
    • Линейная и логистическая регрессия
    • Random Forest, Gradient Boosting

🧩 Обучение без учителя (Unsupervised Learning)

  • Данные без меток: поиск структуры
  • Задачи: кластеризация, понижение размерности
  • Алгоритмы:
    • k-Means
    • DBSCAN
    • PCA (Principal Component Analysis)
    • Autoencoders

🕹️ Обучение с подкреплением (Reinforcement Learning)

  • Агент взаимодействует со средой, получает награды
  • Цель: максимизировать суммарную награду
  • Основные элементы: состояние, действие, награда, политика
  • Алгоритмы:
    • Q-Learning
    • SARSA
    • Deep Q-Networks (DQN)
    • Policy Gradient, PPO

🧠 Нейронные сети

  • Архитектура: входной слой, скрытые слои, выходной слой
  • Активации: ReLU, Sigmoid, Tanh
  • Обратное распространение ошибки (backpropagation)
  • Градиентный спуск и его варианты: SGD, Adam, RMSProp

Computer vision

Чтобы разбираться в компьютерном зрении (Computer Vision), нужно изучить методы извлечения информации из изображений и видео: от распознавания объектов до построения 3D-сцен. Эта область объединяет обработку изображений, машинное обучение и нейронные сети.

Вот ключевые темы, которые охватывает Computer Vision:


🧠 Основы компьютерного зрения

  • Что такое компьютерное зрение: автоматическое понимание визуальных данных
  • Различие между Image Processing и Computer Vision: первое — преобразование, второе — интерпретация
  • Типы задач: классификация, детекция, сегментация, отслеживание, реконструкция

🔍 Распознавание объектов

  • Обнаружение: нахождение объектов на изображении (bounding boxes)
  • Классификация: определение типа объекта
  • Сегментация: выделение точных границ объектов (semantic, instance)
  • Модели: YOLO, SSD, Faster R-CNN, Mask R-CNN

🧠 Нейронные сети для CV

  • CNN (Convolutional Neural Networks): основа для обработки изображений
  • Transfer Learning: использование предобученных моделей (ResNet, VGG, EfficientNet)
  • Vision Transformers (ViT): альтернатива CNN для изображений
  • Обработка видео: 3D-CNN, RNN, Temporal models

🧩 Пространственное восприятие

  • Depth estimation: оценка глубины сцены
  • Optical flow: отслеживание движения
  • SLAM (Simultaneous Localization and Mapping): построение карты и позиционирование
  • 3D reconstruction: восстановление формы объектов

🧪 Практика и инструменты

  • OpenCV: базовая обработка и анализ изображений
  • MediaPipe: отслеживание рук, лица, позы
  • Detectron2, MMDetection: библиотеки для детекции и сегментации
  • LabelImg, CVAT: инструменты для разметки данных
  • Google Colab: запуск моделей в облаке

Image processing

Чтобы разбираться в обработке изображений (Image Processing), нужно изучить методы преобразования, анализа и извлечения информации из цифровых изображений. Эта область лежит на стыке математики, компьютерного зрения и графики.

Вот ключевые темы, которые охватывает Image Processing:


🧠 Основы цифрового изображения

  • Пиксели, разрешение, глубина цвета
  • Цветовые модели: RGB, HSV, YCbCr, Grayscale
  • Форматы изображений: PNG, JPEG, BMP, TIFF

📐 Преобразования изображений

  • Геометрические трансформации: масштабирование, поворот, сдвиг
  • Фильтрация: размытие (Gaussian), резкость, медианный фильтр
  • Гистограмма: выравнивание, нормализация
  • Морфологические операции: эрозия, дилатация, открытие, закрытие

🔍 Выделение признаков

  • Детекторы границ: Sobel, Canny, Laplacian
  • Сегментация: пороговая, кластеризация, watershed
  • Контуры и формы: нахождение объектов, аппроксимация
  • Optical Flow: отслеживание движения

🧠 Распознавание и классификация

  • Обнаружение объектов: Haar Cascades, YOLO, SSD
  • Распознавание лиц, жестов, текста (OCR)
  • Feature Matching: SIFT, SURF, ORB
  • Обучение моделей: CNN, Transfer Learning

🧪 Практика и инструменты

  • OpenCV: библиотека для обработки изображений
  • PIL / Pillow: работа с изображениями в Python
  • scikit-image: научная обработка изображений
  • MATLAB: мощные функции для визуализации и анализа
  • ImageJ: биомедицинская обработка

Natural Language Processing

Чтобы разбираться в Natural Language Processing (NLP), нужно освоить этапы обработки текста — от токенизации и синтаксического анализа до обучения моделей и генерации языка. Важно понимать как машинное обучение применяется к языковым данным, включая классификацию, извлечение информации и диалоговые системы.

Вот структурированный обзор ключевых тем:


🧠 Основы NLP

  • Что такое NLP: область ИИ, позволяющая компьютерам понимать, интерпретировать и генерировать человеческий язык.
  • Два направления:
    • Natural Language Understanding (NLU) — анализ и интерпретация текста.
    • Natural Language Generation (NLG) — создание текста на основе данных.

📊 Этапы обработки текста

  • Токенизация: разбиение текста на слова, фразы или символы.
  • Стемминг и лемматизация: приведение слов к базовой форме.
  • POS-теггинг: определение частей речи (глагол, существительное и т.д.).
  • Синтаксический анализ: построение дерева зависимостей.
  • Семантический анализ: извлечение смысла, разрешение неоднозначностей.
  • Прагматический анализ: интерпретация контекста и намерений.

🧩 Задачи NLP

  • Классификация текста: спам-фильтры, анализ тональности.
  • Извлечение сущностей (NER): имена, даты, места.
  • Ответы на вопросы: поиск релевантной информации.
  • Перевод текста: машинный перевод.
  • Резюмирование: автоматическое сокращение текста.
  • Диалоговые системы: чат-боты, голосовые ассистенты.

🧠 Модели и алгоритмы

  • Bag of Words, TF-IDF: представление текста как чисел.
  • Word Embeddings: Word2Vec, GloVe, FastText — векторное представление слов.
  • Sequence Models: RNN, LSTM, GRU — работа с последовательностями.
  • Transformer-модели: BERT, GPT, T5 — современные архитектуры.
  • Transfer Learning: использование предобученных моделей.

🧪 Инструменты и библиотеки

  • NLTK: классическая библиотека для базовой обработки.
  • spaCy: быстрая и промышленная NLP-библиотека.
  • Hugging Face Transformers: доступ к современным моделям.
  • Stanford NLP: академический инструмент.
  • TextBlob: простая библиотека для анализа тональности и перевода.

Knowledge Representation

Чтобы разбираться в представлении знаний (Knowledge Representation), нужно изучить способы формального описания понятий, связей между ними и логических выводов. Это основа для построения экспертных систем, графов знаний, семантического поиска и объяснимого ИИ.

Вот ключевые темы, которые охватывает Knowledge Representation:


🧠 Основы представления знаний

  • Что такое знание: факты, правила, связи, контексты
  • Различие между данными, информацией и знаниями
  • Цель: структурировать знания так, чтобы компьютер мог их использовать для вывода и принятия решений

📐 Формальные модели

  • Логика высказываний: простые утверждения и их комбинации (AND, OR, NOT)
  • Предикатная логика: утверждения с переменными и кванторами (∀, ∃)
  • Фреймы: структуры с атрибутами и значениями (например, объект "торт" с полями "ингредиенты", "назначение")
  • Семантические сети: графы понятий и связей между ними
  • Онтологии: формальные описания понятий и их иерархий (например, OWL)

🔍 Типы связей и понятий

  • Иерархия: "торт" — это "еда", "еда" — это "материальный объект"
  • Ассоциации: "торт" связан с "праздник", "день рождения", "мука", "масло"
  • Части и целое: "торт" состоит из "ингредиентов"
  • Причинно-следственные связи: "если праздник, то может быть торт"

🧩 Вывод и логика

  • Deductive reasoning: логический вывод из известных фактов
  • Inference engines: системы, делающие выводы на основе правил
  • Rule-based systems: IF-THEN конструкции
  • Consistency checking: проверка противоречий

🧪 Практика и инструменты

  • RDF (Resource Description Framework): описание сущностей и их связей
  • SPARQL: язык запросов к графам знаний
  • OWL (Web Ontology Language): создание онтологий
  • Neo4j: графовая база данных
  • ConceptNet: открытая семантическая сеть

Big Data

Чтобы разбираться в Big Data, нужно понимать архитектуру хранения и обработки больших объёмов данных, освоить инструменты вроде Hadoop и Spark, и научиться строить масштабируемые пайплайны для анализа, потоковой обработки и визуализации. Это ключ к работе с данными в реальном времени, машинному обучению и бизнес-аналитике.

Вот структурированный обзор ключевых тем:


🧠 Основы Big Data

  • Определение: данные, которые слишком объёмны, разнообразны или быстро поступают, чтобы обрабатываться традиционными методами.
  • 3V-модель:
    • Volume — объём
    • Velocity — скорость поступления
    • Variety — разнообразие форматов (текст, видео, сенсоры)
  • 5V-модель:
    • Volume — объём
    • Velocity — скорость поступления
    • Variety — разнообразие форматов
    • Veracity — достоверность
    • Value — ценность

🗃️ Хранилища и форматы

  • HDFS (Hadoop Distributed File System): распределённое хранение
  • NoSQL базы: MongoDB, Cassandra, HBase — для гибких структур
  • Data Lakes vs. Data Warehouses:
    • Data Lake — сырые данные, гибкость
    • Warehouse — структурированные данные, аналитика
  • Форматы: Parquet, Avro, ORC — оптимизированы для Big Data

🔄 Обработка данных

  • Batch Processing: обработка больших объёмов за раз (Hadoop MapReduce)
  • Stream Processing: обработка в реальном времени (Apache Kafka, Spark Streaming, Flink)
  • ETL/ELT: извлечение, трансформация, загрузка данных

⚙️ Инструменты и технологии

  • Хранилище: HDFS, S3, Google Cloud Storage
  • Обработка: Apache Spark, Hadoop, Flink
  • Потоки: Kafka, Pulsar
  • Оркестрация: Airflow, Luigi
  • Визуализация: Tableau, Power BI, Grafana
  • ML/AI на Big Data: MLlib (Spark), H2O.ai, TensorFlow

📊 Аналитика и ML

  • MLlib: библиотека машинного обучения для Spark
  • Feature Engineering: подготовка признаков на больших объёмах
  • Distributed Training: обучение моделей на кластерах
  • BI-интеграция: подключение к Tableau, Superset

🔐 Безопасность и масштабирование

  • Распределённые вычисления: кластеры, контейнеры, Kubernetes
  • Резервирование и отказоустойчивость: replication, checkpointing
  • Доступ и авторизация: Kerberos, Ranger, IAM

🧪 Практика и проекты

  • Анализ логов веб-сервера (Apache/Nginx)
  • Потоковая обработка Twitter-данных
  • ETL-пайплайн для e-commerce
  • Предсказание спроса на основе временных рядов
  • SLA Institute, GeeksforGeeks

Internet of Things

Чтобы разбираться в Internet of Things (IoT), нужно понять, как физические устройства подключаются к интернету, обмениваются данными и взаимодействуют друг с другом. Это объединяет сенсоры, сети, облачные платформы и аналитику для создания умных систем.

Вот ключевые темы, которые охватывает Internet of Things:


🧠 Основы IoT

  • Что такое IoT: сеть физических объектов с датчиками, ПО и подключением к интернету
  • Цель: автоматизация, мониторинг, управление и анализ в реальном времени
  • Примеры: умный дом, промышленная автоматизация, носимые устройства, агротех

🔌 Аппаратная часть

  • Сенсоры: температура, влажность, движение, свет, давление
  • Актуаторы: моторы, реле, дисплеи — реагируют на команды
  • Микроконтроллеры: Arduino, ESP32, Raspberry Pi
  • Связь: Wi-Fi, Bluetooth, Zigbee, LoRa, NB-IoT

🌐 Сетевые протоколы

  • MQTT: лёгкий протокол для обмена сообщениями
  • CoAP: оптимизирован для constrained устройств
  • HTTP/REST: стандартный веб-протокол
  • WebSockets: двусторонняя связь в реальном времени

☁️ Облачные платформы

  • IoT Hub: Azure, AWS IoT Core, Google Cloud IoT
  • Функции: сбор данных, управление устройствами, аналитика
  • Edge Computing: обработка данных на устройстве, а не в облаке

🔐 Безопасность

  • Аутентификация устройств: сертификаты, токены
  • Шифрование: TLS, VPN
  • Обновления прошивки: OTA (Over-the-Air)
  • Управление доступом: IAM, ACL

📊 Аналитика и автоматизация

  • Сбор данных: телеметрия, логи
  • Обработка: фильтрация, агрегация, ML
  • Реакция: триггеры, правила, автоматические действия
  • Визуализация: Grafana, Power BI, Kibana

🧪 Практика и инструменты

  • Node-RED: визуальное программирование IoT-логики
  • Home Assistant: автоматизация умного дома
  • Blynk, ThingsBoard: интерфейсы и дашборды
  • PlatformIO: разработка прошивок

Cybersecurity

Кибербезопасность охватывает множество направлений — от защиты сетей и приложений до анализа угроз и этичного хакинга. Взлом (hacking) делится на легальный — тестирование систем на уязвимости, и нелегальный — атаки ради кражи данных или нанесения ущерба.

Ниже — структурированный обзор основных направлений и практик:


🔐 Основные направления кибербезопасности

  • Network Security — защита сетей от атак (DDoS, MITM, ARP spoofing).
  • Application Security — поиск и устранение уязвимостей в ПО (XSS, SQL Injection).
  • Cloud Security — защита облачных сервисов и данных.
  • Endpoint Security — защита конечных устройств (ПК, смартфоны).
  • Data Security — шифрование, контроль доступа, резервное копирование.
  • Identity & Access Management (IAM) — управление учётными записями и правами.
  • Incident Response — реагирование на инциденты и расследование атак.
  • Threat Intelligence — анализ угроз и прогнозирование атак.
  • Red Team / Blue Team:
    • Red Team — имитация атак (этичный хакинг).
    • Blue Team — защита и мониторинг.

🧑‍💻 Типы хакинга

  • Ethical Hacking (White Hat) — тестирование систем на уязвимости с разрешения владельца.
  • Black Hat — нелегальные атаки ради выгоды или ущерба.
  • Grey Hat — исследование уязвимостей без разрешения, но без злого умысла.
  • System Hacking — взлом ОС и приложений.
  • Web Hacking — атаки на сайты и веб-приложения.
  • Network Hacking — перехват и подмена сетевого трафика.
  • Social Engineering — манипуляции людьми для получения доступа.
  • Password Cracking — подбор или кража паролей.
  • Malware Injection — внедрение вредоносного ПО.

⚙️ Что делают специалисты

  • Настраивают защиту сетей и приложений.
  • Проводят пентесты и Red Team-упражнения.
  • Реагируют на инциденты и расследуют атаки.
  • Разрабатывают политики безопасности.
  • Обучают сотрудников правилам кибергигиены.
  • Используют инструменты: Wireshark, Nmap, Burp Suite, Metasploit, Splunk.

Computational Science

Computational Science — это область, которая объединяет математику, информатику и прикладные науки для моделирования, анализа и решения сложных задач с помощью вычислений. Она используется там, где классические аналитические методы слишком сложны или невозможны, а эксперименты слишком дорогие или опасные.

Вот ключевые направления и то, что в них делают:


🧠 Основы Computational Science

  • Использование математических моделей для описания физических, биологических и социальных процессов.
  • Применение численных методов для решения уравнений и симуляций.
  • Разработка алгоритмов и программного обеспечения для высокопроизводительных вычислений.
  • Валидация моделей через сравнение с экспериментами и наблюдениями.

🔬 Основные направления

  • Моделирование физических процессов
    • Турбулентность, климат, астрофизика, квантовая механика.
  • Биологические и медицинские симуляции
    • Модели клеток, геномики, эпидемиологии.
  • Химия и материаловедение
    • Молекулярная динамика, моделирование реакций, новые материалы.
  • Инженерия
    • Моделирование конструкций, аэродинамика, оптимизация систем.
  • Социальные и экономические системы
    • Агентные модели, прогнозирование рынков, транспортные сети.

⚙️ Методы и инструменты

  • Численные методы: интегрирование, решение дифференциальных уравнений, оптимизация.
  • Моделирование и симуляции: Monte Carlo, агентные модели, конечные элементы.
  • Высокопроизводительные вычисления (HPC): суперкомпьютеры, параллельные алгоритмы, GPU.
  • Big Data и машинное обучение: анализ больших массивов данных, предсказательные модели.
  • Визуализация: графики, 3D-модели, анимации для анализа результатов.

🧪 Практика и применение

  • Прогноз погоды и климатические модели.
  • Симуляции в аэрокосмической отрасли.
  • Разработка лекарств через моделирование молекул.
  • Оптимизация логистики и транспортных систем.
  • Исследования в физике элементарных частиц.

Simulation

Симуляции — это метод имитации реальных или гипотетических процессов с помощью моделей и вычислений. Они позволяют исследовать сложные системы, прогнозировать поведение и тестировать гипотезы без физического эксперимента. Это ключевой инструмент в науке, инженерии, экономике и медицине.

Вот основные направления и аспекты симуляций:


🧠 Зачем нужны симуляции

  • Изучение систем, которые невозможно протестировать напрямую (ядерные реакции, климат, эпидемии).
  • Снижение затрат на физические эксперименты.
  • Прогнозирование поведения систем в будущем.
  • Визуализация сложных процессов.
  • Проверка гипотез и моделей.

🔬 Где применяются симуляции

  • Физика — моделирование частиц, гравитации, турбулентности.
  • Химия — молекулярная динамика, реакции, материалы.
  • Биология и медицина — рост клеток, распространение вирусов, симуляция органов.
  • Инженерия — аэродинамика, механика конструкций, теплопередача.
  • Экономика и финансы — рыночные модели, агентные симуляции, стресс-тесты.
  • Социальные науки — поведение толпы, распространение информации.
  • Компьютерные науки — симуляция сетей, алгоритмов, распределённых систем.

⚙️ Типы симуляций

  • Детерминированные — результат полностью предсказуем при заданных условиях.
  • Стохастические — включают случайность (например, Монте-Карло).
  • Агентные — множество автономных агентов взаимодействуют по правилам.
  • Непрерывные — моделируют процессы во времени (например, уравнения Навье–Стокса).
  • Дискретные — пошаговые модели (например, клеточные автоматы).
  • Гибридные — комбинация разных подходов.

🧪 Что нужно знать для работы с симуляциями

  • Математика: дифференциальные уравнения, линейная алгебра, вероятности.
  • Численные методы: интегрирование, аппроксимация, решение уравнений.
  • Программирование: Python, C++, MATLAB, Julia.
  • Параллельные вычисления: OpenMP, MPI, CUDA.
  • Визуализация: Matplotlib, ParaView, Blender, Unity.
  • Валидация: сравнение с экспериментами, чувствительность к параметрам.

🔧 Инструменты и среды

  • MATLAB / Simulink — инженерные симуляции.
  • COMSOL — физика и мультифизика.
  • ANSYS — механика, термика, электромагнетизм.
  • NetLogo — агентные модели.
  • Python + NumPy/SciPy — универсальные симуляции.
  • Unity / Unreal — визуальные симуляции и интерактивные среды.
  • GROMACS / LAMMPS — молекулярная динамика.

Super Computing

Supercomputing — это область, связанная с использованием сверхмощных вычислительных систем для решения задач, требующих огромных ресурсов. Это основа для моделирования климата, ядерной физики, биоинформатики, аэродинамики и других научных и инженерных задач.

Вот ключевые аспекты, которые нужно знать:


🧠 Что такое суперкомпьютинг

  • Вычисления, выходящие за рамки обычных ПК или серверов.
  • Использование тысяч (или миллионов) ядер и параллельных алгоритмов.
  • Применение в задачах, где важны скорость, масштаб и точность.
  • Часто работает на кластерах с распределённой памятью и специализированными сетями.

⚙️ Основные компоненты

  • Процессоры (CPU): массово параллельные архитектуры.
  • Графические ускорители (GPU): для численных и ML-задач.
  • Память: многослойная, с высокой пропускной способностью.
  • Сеть: InfiniBand, Omni-Path — для быстрой передачи между узлами.
  • Файловая система: распределённая (например, Lustre, GPFS).
  • ОС и планировщики: Linux, SLURM, PBS — управление задачами.

🔬 Где применяется

  • Климатическое моделирование — прогнозы, глобальные симуляции.
  • Аэродинамика и механика — моделирование потоков, конструкций.
  • Биоинформатика — анализ геномов, белков, молекулярная динамика.
  • Физика частиц — симуляции коллайдеров, квантовые расчёты.
  • Искусственный интеллект — обучение больших моделей (GPT, BERT).
  • Криптография и безопасность — перебор, анализ, моделирование атак.

🧪 Что нужно знать

  • Параллельное программирование: OpenMP, MPI, CUDA.
  • Оптимизация производительности: профилирование, балансировка нагрузки.
  • Численные методы: линейная алгебра, дифференциальные уравнения.
  • Алгоритмы: FFT, sparse matrix operations, Monte Carlo.
  • Языки: C/C++, Fortran, Python (с NumPy, Dask, Numba).
  • Визуализация: ParaView, VisIt — для анализа результатов.

🔧 Инструменты и платформы

  • HPC-кластеры: локальные или облачные (Azure HPC, AWS ParallelCluster).
  • Симуляторы: GROMACS, LAMMPS, OpenFOAM, NAMD.
  • Библиотеки: BLAS, LAPACK, PETSc, ScaLAPACK.
  • Мониторинг: Ganglia, Prometheus, Grafana.
  • Контейнеризация: Singularity, Docker для HPC.

Human Computer Interaction

Human-Computer Interaction (HCI) — это междисциплинарная область, изучающая, как люди взаимодействуют с компьютерами и цифровыми системами. Она объединяет дизайн интерфейсов, психологию восприятия, эргономику и технологии, чтобы создавать удобные, эффективные и доступные интерфейсы.


🧠 Основы HCI

  • Определение: HCI — это наука и практика проектирования взаимодействия между человеком и компьютером.
  • Цель: сделать технологии интуитивными, доступными и полезными.
  • Междисциплинарность: включает информатику, когнитивную психологию, дизайн, эргономику и социологию.

🔍 Ключевые направления

  • User Interface (UI) Design — разработка визуальных и интерактивных элементов интерфейса.
  • User Experience (UX) — обеспечение удобства, удовлетворённости и эффективности взаимодействия.
  • Interaction Design — проектирование способов взаимодействия (клики, жесты, голос, AR/VR).
  • Accessibility — создание интерфейсов для людей с ограниченными возможностями.
  • Usability Testing — тестирование удобства использования и выявление проблем.
  • Cognitive Models — изучение того, как люди воспринимают и обрабатывают информацию.
  • Affective Computing — системы, учитывающие эмоции пользователя.

⚙️ Что делают специалисты в HCI

  • Разрабатывают интерфейсы для приложений, веб-сайтов, устройств.
  • Проводят исследования пользователей (опросы, наблюдения, A/B-тесты).
  • Анализируют когнитивные нагрузки и эргономику интерфейсов.
  • Создают прототипы и тестируют их на реальных пользователях.
  • Оптимизируют взаимодействие для разных устройств: ПК, смартфоны, VR/AR.
  • Внедряют стандарты доступности (WCAG, ADA).

🧪 Практика и инструменты

  • Прототипирование: Figma, Sketch, Adobe XD.
  • Тестирование: UsabilityHub, Hotjar, UserTesting.
  • Исследования: eye-tracking, heatmaps, интервью.
  • Методы анализа: когнитивные walkthrough, heuristic evaluation.
  • Современные технологии: голосовые интерфейсы, AR/VR, мультимодальные системы.

Virtual Reality

Virtual Reality (VR) — это технология, которая создаёт искусственную цифровую среду, в которую пользователь погружается с помощью специальных устройств. Она используется для игр, обучения, медицины, архитектуры и научных симуляций.


🧠 Основы VR

  • Определение: имитация реальности или фантастических миров через компьютерные технологии.
  • Цель: полное погружение пользователя в виртуальную среду.
  • Ключевые элементы: визуализация, звук, взаимодействие, отслеживание движений.

🎮 Устройства и технологии

  • VR-шлемы (HMD): Oculus Quest, HTC Vive, PlayStation VR.
  • Контроллеры: отслеживание рук и жестов.
  • Трекеры: датчики движения, камеры, гироскопы.
  • Haptic feedback: перчатки, костюмы с тактильной отдачей.
  • Room-scale VR: перемещение в пространстве с отслеживанием.

🔍 Направления применения

  • Игры и развлечения — полное погружение в игровые миры.
  • Образование и тренинги — симуляции для медицины, авиации, инженерии.
  • Медицина — реабилитация, психотерапия, хирургические тренировки.
  • Архитектура и дизайн — визуализация проектов, виртуальные туры.
  • Наука и инженерия — симуляции физических процессов, моделирование.
  • Социальные платформы — виртуальные встречи, метавселенные.

⚙️ Технологические основы

  • 3D-графика: моделирование и рендеринг сцен.
  • Game Engines: Unity, Unreal Engine — создание VR-приложений.
  • Motion Tracking: отслеживание головы, рук, тела.
  • Latency & FPS: минимизация задержек для комфорта.
  • VR Interaction Models: жесты, голос, gaze-based interaction.

🧪 Практика и инструменты

  • Unity + XR Toolkit — разработка VR-приложений.
  • Unreal Engine VR — высокореалистичные симуляции.
  • Blender/3ds Max — создание 3D-моделей.
  • SteamVR, OpenXR — платформы для запуска VR.
  • VRChat, AltspaceVR — социальные VR-пространства.

Augmented Reality

Augmented Reality (AR) — это технология, которая накладывает цифровые объекты и информацию на реальный мир, создавая смешанную среду. В отличие от VR, где пользователь полностью погружается в виртуальную реальность, AR дополняет окружающую действительность.


🧠 Основы AR

  • Определение: совмещение реального мира с виртуальными элементами.
  • Цель: улучшить восприятие и взаимодействие с окружающей средой.
  • Ключевые элементы: камера, датчики, алгоритмы распознавания, визуализация объектов.

🎮 Устройства и технологии

  • Смартфоны и планшеты: ARKit (Apple), ARCore (Google).
  • Очки и гарнитуры: Microsoft HoloLens, Magic Leap, AR Glasses.
  • Камеры и сенсоры: LiDAR, глубинные камеры, GPS.
  • Wearables: умные часы, AR-контактные линзы (экспериментальные).

🔍 Направления применения

  • Игры и развлечения — Pokémon Go, AR-квесты.
  • Образование — интерактивные учебники, лабораторные симуляции.
  • Медицина — визуализация органов, хирургическая навигация.
  • Архитектура и дизайн — наложение 3D-моделей на реальные пространства.
  • Розничная торговля — примерка одежды, мебели, косметики.
  • Навигация — подсказки и маршруты поверх реального мира.
  • Индустрия — ремонт и обслуживание оборудования с AR-инструкциями.

⚙️ Технологические основы

  • Computer Vision: распознавание объектов и поверхностей.
  • SLAM (Simultaneous Localization and Mapping): построение карты и отслеживание позиции.
  • 3D-моделирование: создание виртуальных объектов.
  • Интерактивность: жесты, голос, gaze-based interaction.
  • Интеграция с IoT: подключение реальных устройств к AR-интерфейсу.

🧪 Практика и инструменты

  • Unity + AR Foundation — разработка AR-приложений.
  • Unreal Engine AR — реалистичная графика и симуляции.
  • Blender/3ds Max — создание 3D-объектов.
  • Vuforia, Wikitude — SDK для AR.
  • Snap Lens Studio — создание AR-эффектов для соцсетей.

Telepresence

Telepresence — это технология, позволяющая человеку взаимодействовать с удалённой средой через робота, аватар или интерфейс, создавая эффект физического присутствия. Она объединяет робототехнику, видеосвязь, сенсоры и управление в реальном времени.

Вот ключевые аспекты, которые нужно знать:


🧠 Основы Telepresence

  • Определение: удалённое присутствие человека в другой физической точке через цифровые средства.
  • Цель: обеспечить ощущение присутствия, взаимодействия и контроля на расстоянии.
  • Ключевые элементы: камера, микрофон, экран, сенсоры, роботизированная платформа.

🤖 Где применяется

  • Медицина — удалённые консультации, телехирургия, наблюдение за пациентами.
  • Образование — участие в лекциях, лабораториях, экскурсиях.
  • Бизнес — виртуальное присутствие на встречах, переговорах, конференциях.
  • Промышленность — удалённый контроль оборудования, инспекция объектов.
  • Исследования — телеприсутствие в опасных или труднодоступных зонах (космос, океан, зоны бедствий).
  • Социальные технологии — помощь людям с ограниченной мобильностью.

⚙️ Технологические компоненты

  • Роботизированные платформы: мобильные, стационарные, с манипуляторами.
  • Видеосвязь: HD-камера, микрофон, динамики, экран для обратной связи.
  • Сенсоры: глубина, движение, температура, давление.
  • Управление: через браузер, VR-интерфейс, джойстик, голос.
  • Сеть: стабильная связь с низкой задержкой (5G, Wi-Fi 6, Ethernet).
  • Интеграция с AR/VR: усиление эффекта присутствия.

🧪 Практика и инструменты

  • Double Robotics, BeamPro — телеприсутствие в офисах и школах.
  • VGo, Ohmni — лёгкие мобильные роботы для общения.
  • Telerobotics SDKs — разработка собственных решений.
  • WebRTC, ROS — коммуникация и управление.
  • Unity + VR — визуализация и взаимодействие в виртуальной среде.

Robotics

Robotics — это область, объединяющая механику, электронику, программирование и искусственный интеллект для создания машин, способных взаимодействовать с окружающей средой. Роботы могут выполнять задачи автономно или под управлением человека, от промышленной сборки до медицинских операций и космических миссий.

Вот ключевые направления и аспекты:


🧠 Основы робототехники

  • Определение: проектирование, конструирование и программирование машин, способных к физическим действиям.
  • Цель: автоматизация, точность, безопасность, расширение возможностей человека.
  • Типы роботов: мобильные, стационарные, манипуляторы, дроны, гуманоиды, микророботы.

⚙️ Основные компоненты

  • Механика: рама, суставы, приводы, колёса, шасси.
  • Электроника: микроконтроллеры, сенсоры, аккумуляторы, моторы.
  • Программирование: управление движением, логика поведения, обработка данных.
  • Сенсоры: камера, ультразвук, инфракрасные, IMU, LiDAR.
  • Актуаторы: сервомоторы, шаговые двигатели, гидравлика.
  • Связь: Bluetooth, Wi-Fi, Zigbee, CAN-шина.

🔍 Направления применения

  • Промышленность — сборка, сварка, упаковка, контроль качества.
  • Медицина — хирургические роботы, реабилитация, доставка препаратов.
  • Сельское хозяйство — посадка, сбор урожая, мониторинг.
  • Логистика — складские роботы, автономные тележки.
  • Образование — STEM-наборы, учебные платформы.
  • Военные и спасательные операции — разведка, разминирование, доставка.
  • Домашние роботы — уборка, помощь, социальные функции.

🤖 Направления в разработке

  • Мобильная робототехника — автономные перемещения, SLAM, навигация.
  • Манипуляторы — точное управление руками и захватами.
  • Гуманоидные роботы — имитация человеческих движений и взаимодействия.
  • Роботы-рои — координация множества простых роботов.
  • Социальные роботы — взаимодействие с людьми, распознавание эмоций.
  • Биоинспирированные роботы — имитация животных, насекомых, рыб.

🧪 Практика и инструменты

  • Arduino, Raspberry Pi, ESP32 — микроконтроллеры и платы управления.
  • ROS (Robot Operating System) — фреймворк для разработки роботов.
  • Gazebo, Webots, V-REP — симуляторы для тестирования.
  • OpenCV — компьютерное зрение.
  • TensorFlow, PyTorch — машинное обучение для поведения и распознавания.
  • SolidWorks, Fusion 360 — CAD для проектирования механики.