Computer Science
June 7

Все сферы computer science

Map of computer science

ComputerScience-Map.png (1920×1352)

Theoretical Computer Science

🧠 Theoretical Computer Science

Computational complexity

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

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

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

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

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

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

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” (узкое место в железе)

Turing machine

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

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

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

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

Computability theory

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

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

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

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

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

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

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

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

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

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

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, это стартовая точка.