GitHub: gfazzz/moonlight-course ⭐ | Версия: v0.3 | Язык: C | Статус: 42% готов | Лицензия: MIT

"В мире, где информация — это оружие, код — это ключ к истине"

TL;DR

Предлагаем вашему вниманию интерактивный курс программирования на C, где обучение происходит через захватывающий детективный сюжет. 10 сезонов, 42 эпизода, охватывающих всё: от основ до криптографии, сетей, embedded-систем и квантовых вычислений. Каждая задача — часть большого проекта по расследованию глобального заговора.

🔗 Репозиторий: github.com/gfazzz/moonlight-course (⭐ 4 stars и растёт!)
📊 Версия: v0.3 (Season 1-4 @ 80%, Season 5-10 @ 20%)
🎯 Статус: Готов к использованию, активная разработка
📚 Языки в репозитории: C (69.8%), Shell (15.3%), Makefile (14.9%)


Проблема: программирование скучно?

Признайтесь, сколько раз вы начинали учить новый язык программирования, открывали очередной учебник с заголовком "Hello World" и... забрасывали через неделю?

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

Особенно это касается языка C:

  • Сложный синтаксис

  • Указатели, которые пугают новичков

  • Управление памятью вручную

  • Отсутствие "красивых" фреймворков для быстрого результата

И вот вы сидите, компилируете очередную программу, которая выводит факториал числа, и думаете: "Когда же будет что-то интересное?"


Идея: а что если превратить обучение в детектив?

Представьте: вы не просто учите C. Вы — специалист по кибербезопасности, расследующий глобальный заговор. Каждая строка кода, которую вы пишете, приближает вас к разгадке. Каждая задача — это часть большого проекта.

Вместо скучного "напишите программу для поиска простых чисел" вы получаете:

Briefing: Перехвачено зашифрованное сообщение от вашего бывшего напарника, который, по официальной версии, погиб два года назад. Чтобы расшифровать его, нужно написать декодер на C...

Это и есть Operation MOONLIGHT — курс, где программирование на C неотделимо от захватывающего сюжета.


Как это работает?

Сюжет

Вы — Александр "Морфеус" Соколов, бывший сотрудник ФСБ, специалист по кибербезопасности. В один прекрасный вечер на старый зашифрованный канал приходит сообщение от Виктора Петрова — вашего бывшего напарника, который официально погиб в автокатастрофе два года назад.

MOONLIGHT активирован.
Они знают.
Файлы на старом месте.
Доверяй только коду.
— V.

Что такое MOONLIGHT? Кто "они"? Жив ли Виктор? Начинается расследование, которое затронет:

  • 🏦 Крупнейшие банки и финансовые алгоритмы

  • 🏢 Корпорации с секретными проектами

  • 🕵️ Спецслужбы трёх стран

  • 📟 Embedded-системы и IoT

  • 🤖 Секретные разработки в области ИИ

  • 🚀 И даже космос!

Структура курса: 10 сезонов, 42 эпизода

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

Season 1: Foundations (Основы)

Эпизоды 1-4 • Готовность: 80%

Первый контакт. Расшифровка сообщения Виктора:

  • Episode 01: Странное сообщение — типы данных, ввод/вывод, XOR шифрование

  • Episode 02: Цепочка зацепок — условные операторы, логика

  • Episode 03: Паттерны во времени — циклы, поиск закономерностей

  • Episode 04: Первый инструмент — функции, модули, создание полноценного дешифровщика

Артефакт сезона: Инструмент moonlight-decoder

Season 2: Memory & Pointers (Память и указатели)

Эпизоды 5-8 • Готовность: 80%

Взлом сервера, восстановление данных из повреждённых дампов памяти:

  • Episode 05: Memory Map — массивы, строки, парсинг дампов

  • Episode 06: Pointer Game — указатели, навигация по цепочкам

  • Episode 07: Deep Dive — динамическая память (malloc/free)

  • Episode 08: Fragmentation — поиск утечек памяти с valgrind

Артефакт сезона: Инструмент memory-reconstructor

Season 3: Networks (Сети)

Эпизоды 9-12 • Готовность: 80%

След ведёт к зашифрованным коммуникациям между серверами:

  • Episode 09: Network Basics — TCP/IP, сокеты

  • Episode 10: Socket Programming — клиент-сервер приложения

  • Episode 11: Packet Analysis — raw sockets, packet sniffing

  • Episode 12: Encrypted Communications — перехват трафика

Артефакт сезона: packet-sniffer и moonlight-client

Season 4: Crypto & Algorithms (Криптография)

Эпизоды 13-16 • Готовность: 80%

Перехваченные сообщения защищены военным шифрованием:

  • Episode 13: Crypto Basics — XOR, Caesar cipher, частотный анализ

  • Episode 14: Blockchain & Hashes — SHA-256, Proof-of-Work, поиск подделок

  • Episode 15: Sorting & Search — алгоритмы из TAOCP (Donald Knuth)

  • Episode 16: Data Structures — hash tables, AVL trees, оптимизация

Артефакт сезона: crypto_tool + blockchain_verifier

Season 5: Financial Markets 💰

Эпизоды 17-20 • Готовность: 20% (базовая структура, в разработке)

"Follow the money" — анализ финансовых потоков:

  • Episode 17: Market Microstructure — OHLCV, bid-ask spread

  • Episode 18: Trading Algorithms — SMA, RSI, backtesting

  • Episode 19: Risk & Portfolio — VaR, Sharpe ratio, Monte Carlo

  • Episode 20: Crypto & DeFi — arbitrage, обнаружение манипуляций

Основа: Курс Yale "Financial Markets" (Robert Shiller)
Статус: Теория готова, требуется доработка практики
Артефакт сезона: crypto_arbitrage_bot

Seasons 6-10 (в разработке)

  • Season 6: Embedded & IoT — Arduino, СКУД, IP-камеры

  • Season 7: System Programming — процессы, потоки, IPC

  • Season 8: AI & Data Science — ML на C, статистика

  • Season 9: Advanced Systems — компиляторы, БД, квантовые вычисления

  • Season 10: FINAL MISSION 🚀 — интеграция всех компонентов + satellite tracking!


Примеры: как выглядит обучение

Episode 01: Странное сообщение

Сюжет:

23:47. Москва.

На старый зашифрованный канал приходит сообщение от Виктора.
Но сообщение закодировано простым XOR-шифром.

Нужно написать декодер...

Теория:
Понятное объяснение с метафорами:

Переменная — это коробка с ярлыком. Например, int age = 25; означает, что вы взяли коробку размером 4 байта, наклеили на неё стикер "age" и положили туда число 25.

Задача:

// Расшифруйте сообщение, используя XOR
// Ключ: 0x42
// Входные данные: message.enc

#include <stdio.h>

int main() {
    char encrypted[] = {0x2d, 0x33, 0x37, 0x2b, /* ... */};
    int key = 0x42;
    
    // TODO: Ваш код здесь
    // Подсказка: используйте оператор XOR (^)
    
    return 0;
}

Результат:
После расшифровки вы получите координаты сервера для следующего эпизода!

Episode 08: Fragmentation (утечки памяти)

Сюжет:

Вы нашли логгер на сервере MOONLIGHT, но он работает нестабильно.
Похоже, где-то утечка памяти...

Задача: найти и устранить ВСЕ утечки с помощью valgrind/leaks

Код с багами:

// buggy_logger.c (фрагмент)
void process_log(char* message) {
    char* buffer = malloc(256);
    strcpy(buffer, message);
    printf("[LOG] %s\n", buffer);
    // Упс! Забыли free(buffer) — утечка памяти!
}

Проверка:

$ make test
Running memory leak test...
==12345== LEAK SUMMARY:
==12345==    definitely lost: 512 bytes in 2 blocks

Нужно найти и исправить все утечки, пока тесты не покажут:

==12345== All heap blocks were freed -- no leaks are possible
✅ TESTS PASSED!

Episode 14: Blockchain & Hashes

Сюжет:

Архив MOONLIGHT хранится в blockchain из 15,000 блоков.
Но один из блоков подделан! Найдите его.

Подсказка: используйте djb2 hash и проверяйте целостность цепи

Код:

typedef struct Block {
    uint32_t index;
    uint32_t timestamp;
    uint32_t prev_hash;
    char data[64];
    uint32_t nonce;
    uint32_t hash;
} Block;

// Проверка блока
bool verify_block(Block* block, Block* prev_block) {
    // 1. Hash должен совпадать с вычисленным
    uint32_t computed = hash_block(block);
    if (computed != block->hash) return false;
    
    // 2. prev_hash должен указывать на предыдущий блок
    if (block->prev_hash != prev_block->hash) return false;
    
    return true;
}

// Поиск подделки в 15,000 блоках
int main() {
    Block* chain = load_blockchain("archive.dat");
    for (int i = 1; i < 15000; i++) {
        if (!verify_block(&chain[i], &chain[i-1])) {
            printf("🚨 ПОДДЕЛКА НАЙДЕНА: Блок #%d\n", i);
            printf("Данные: %s\n", chain[i].data);
            break;
        }
    }
}

При успешном выполнении вы получите координаты и новую зацепку в расследовании!


Технические детали

Формат каждого эпизода

📁 episode-XX-название/
├── README.md           # Briefing + теория (с метафорами!)
├── mission.md          # Краткое ТЗ
├── starter.c           # Шаблон кода для старта
├── Makefile            # Автоматизация сборки
├── artifacts/          # Сюда вы пишете свой код
├── solution/           # Эталонное решение (открывать после!)
└── tests/              # Автотесты
    ├── test.sh
    └── expected.txt

Работа с кодом

# Компиляция
make

# Запуск
make run

# Тестирование
make test

# Проверка утечек памяти
make memcheck    # Linux: valgrind
make leaks       # macOS: leaks utility

Интеграция с Cursor AI

Курс задумывался с использованием AI как инструмента. Рекомендуется использовать Cursor IDE:

Вопросы AI:
✅ "Почему эта ошибка компиляции?"
✅ "Объясни, как работает указатель на указатель"
✅ "Что означает segmentation fault?"

❌ "Реши всю задачу за меня"

AI — это ваш напарник, но код пишете вы.


Философия курса

Принципы обучения

  1. Learn by Doing — 70% практики, 30% теории

  2. Матрёшка проектов — каждая задача = кирпичик большого проекта

  3. Прогрессивная сложность — от printf до квантовых симуляторов

  4. Контекстное обучение — теория всегда привязана к задаче

  5. AI как инструмент — учимся программировать с помощью современных технологий

Метафоры вместо сухой теории

Сравните:

Классический учебник:

Указатель — это переменная, которая хранит адрес другой переменной в памяти.

Operation MOONLIGHT:

Указатель — это как адрес дома. Сам адрес (например, "ул. Ленина, 5") это не дом, а запись о том, где находится дом. Оператор & — это "узнать адрес", а * — "открыть дверь по адресу и посмотреть, что внутри".

Какое объяснение понятнее?

Реальные технологии

Все техники и технологии в курсе — реальны:

  • Протоколы взлома основаны на настоящих CVE

  • Слаботочные системы (СКУД, IP-камеры) работают как в реальности

  • Arduino проекты можно собрать физически

  • Финансовые алгоритмы используются в HFT

Но! Применение должно быть этичным и легальным.


Технический стек

Основное

  • Язык: C (стандарт C11)

  • Компилятор: GCC/Clang

  • Build system: Make

  • Отладка: GDB, Valgrind (Linux) / leaks (macOS)

  • IDE: Cursor (рекомендуется) или любой редактор

Библиотеки (по мере изучения)

  • OpenSSL (криптография)

  • pthread (многопоточность)

  • SQLite3 (базы данных)

  • ncurses (TUI)

  • FFmpeg (работа с видео, Season 6)

Платформы

  • ✅ macOS (основная платформа разработки)

  • ✅ Linux (Ubuntu/Debian/Fedora)

  • ✅ FreeBSD (опционально, для системного программирования)

  • ✅ Arduino/ESP32 (Season 6: Embedded & IoT)


Текущий статус разработки

╔═══════════════════════════════════════════════════════╗
║  MOONLIGHT COURSE - Development Status                ║
╠═══════════════════════════════════════════════════════╣
║  🟢 Season 1: Foundations          [██████░░]  80%   ║
║  🟢 Season 2: Memory & Pointers    [██████░░]  80%   ║
║  🟢 Season 3: Networks             [██████░░]  80%   ║
║  🟢 Season 4: Crypto & Algorithms  [██████░░]  80%   ║
║  🟡 Season 5: Financial Markets    [██░░░░░░]  20%   ║
║  🟡 Season 6: Embedded & IoT       [██░░░░░░]  20%   ║
║  🟡 Season 7: System Programming   [██░░░░░░]  20%   ║
║  🟡 Season 8: AI & Data Science    [██░░░░░░]  20%   ║
║  🟡 Season 9: Advanced Systems     [██░░░░░░]  20%   ║
║  🟡 Season 10: Final Mission       [██░░░░░░]  20%   ║
╚═══════════════════════════════════════════════════════╝

📊 Overall Progress: 42% = (4×80% + 6×20%) / 10
🎯 Ready for use: Season 1-4 (16 эпизодов, 4 месяца в комфортном темпе)
🔧 In development: Season 5-10 (базовая структура)
⏱️ Full course: ~12 месяцев при темпе 1 сезон/месяц

Что значит "готов на 80%":

  • ✅ Драматический сюжет с BRIEFING/DEBRIEFING

  • ✅ Расширенная теория (включая концепции из TAOCP для Season 4)

  • ✅ Структура файлов (README, Makefile, starter.c, tests/)

  • ✅ Easter Eggs и референсы к фильмам/сериалам

  • ⏳ Осталось: финальное тестирование, больше решений

Можно ли начинать учиться?
ДА! Первые 4 сезона (16 эпизодов) готовы на 80% и полностью проходимы. Season 5-10 в разработке (базовая структура готова).


Примеры Easter Eggs

Курс полон отсылок к культовым фильмам и сериалам:

Matrix

// Episode 01: starter.c
// "There is no spoon. There is only code."
printf("Wake up, Neo...\n");

Watch Dogs

// Episode 09: net_analyzer_solution.c
// ctOS reference
#define CTOS_PORT 2319  // ctOS control port

Mr. Robot

// Episode 12: interceptor
// fsociety Easter Egg
if (strcmp(target, "allsafe") == 0) {
    printf("🎭 Hello, friend.\n");
}

TAOCP (The Art of Computer Programming)

// Episode 15: Shell Sort с gaps Кнута
// D. Knuth, TAOCP Vol. 3, Section 5.2.1
int knuth_gaps[] = {1, 4, 13, 40, 121, 364, 1093 /* ... */};

И ещё 30+ Easter Eggs по всем сезонам!


Что вы получите после прохождения

Hard Skills

  • ✅ Уверенное программирование на C (от printf до системного программирования)

  • ✅ Работа с памятью и указателями (без страха перед segfault)

  • ✅ Сетевое программирование (TCP/IP, сокеты, raw packets)

  • ✅ Криптография (от XOR до blockchain)

  • ✅ Алгоритмы и структуры данных (TAOCP level)

  • ✅ Embedded-разработка (Arduino/ESP32)

  • ✅ Финансовые алгоритмы (трейдинг, риски, арбитраж)

  • ✅ Основы ML/AI на C

  • ✅ Debugging и профилирование (GDB, valgrind, perf)

Soft Skills

  • ✅ Решение комплексных задач

  • ✅ Работа с AI (Cursor) как инструментом

  • ✅ Чтение документации и исходников

  • ✅ Debugging мышление (трейсим ошибки, как детектив улики)

  • ✅ Этичное использование знаний

Артефакты (реальные проекты)

По итогам курса у вас будет:

  • moonlight-decoder — дешифровщик сообщений

  • memory-reconstructor — восстановление данных из дампов

  • packet-sniffer — анализатор сетевого трафика

  • crypto_tool — инструментарий криптоанализа

  • blockchain_verifier — верификация целостности блокчейна

  • crypto_arbitrage_bot — поиск арбитражных возможностей

  • И ещё 20+ инструментов


Педагогическая база

Курс не взят с потолка. Он основан на проверенных источниках:

CS50 (Harvard University)

Педагогический подход Дэвида Малана:

  • Объяснение сложного простыми словами

  • Практические задачи с контекстом

  • Постепенное усложнение

Head First C (O'Reilly)

Визуальное мышление:

  • Метафоры и аналогии

  • Диаграммы и схемы

  • Реальные примеры применения

The C Programming Language (K&R)

Классика от создателей языка:

  • Идиоматичный C

  • Лучшие практики

  • Понимание "духа" языка

The Art of Computer Programming (Donald Knuth)

Алгоритмы в Season 4:

  • Shell Sort с gap sequence Кнута

  • Knuth Shuffle

  • Sentinel optimization

  • Математический анализ сложности

Financial Markets (Yale, Robert Shiller)

Season 5 построен на основе курса нобелевского лауреата:

  • Market microstructure

  • Trading strategies

  • Risk management

  • DeFi и crypto


Как начать?

Установка

# 1. Клонируйте репозиторий
git clone https://github.com/gfazzz/moonlight-course.git
cd moonlight-course

# 2. Проверьте компилятор
gcc --version

# Если нет:
# macOS: xcode-select --install
# Ubuntu: sudo apt install build-essential
# Fedora: sudo dnf install gcc make

# 3. Изучите введение
cat README.md
cat SCENARIO.md
cat GETTING_STARTED.md

# 4. Начните Episode 01
cd season-1-foundations/episode-01-strange-message/
cat README.md

# 5. Напишите код в artifacts/decoder.c

# 6. Компилируйте и тестируйте
make
make run
make test

Рекомендуемый темп

Оптимальный:

  • Episode: 1-2 эпизода в неделю

  • Season: 1 месяц (4 эпизода)

  • Season 9-10: 2 месяца каждый (более сложные)

  • Весь курс: ~12 месяцев (1 год полноценного обучения)

Доступные сейчас (Season 1-4): ~4 месяца в комфортном темпе

Не торопитесь! Понимание важнее скорости.


Roadmap

v0.1 — Foundations ✅ (завершено)

  • Структура курса

  • Документация

  • Season 1: Episodes 01-04

v0.2 — Memory Masters ✅ (завершено)

  • Season 2: Episodes 05-08

v0.3 — Networks & Crypto ✅ (текущая версия)

  • Season 3: Episodes 09-12

  • Season 4: Episodes 13-16 (с TAOCP!)

v0.4 — Financial Markets (в разработке)

  • Season 5: Financial Markets (OHLCV, trading, risk, DeFi)

v0.5-0.6 — Embedded & Systems (планируется)

  • Season 6: Embedded & IoT (Arduino, СКУД, IP-камеры)

  • Season 7: System Programming (процессы, потоки, IPC)

v0.7-0.9 — AI & Advanced (планируется)

  • Season 8: AI & Data Science

  • Season 9: Advanced Systems (компиляторы, квантовые вычисления)

  • Season 10: Final Mission 🚀

v1.0 — Course Complete 🎯 (финальная цель)

  • Все 42 эпизода на 100%

  • Автоматическая проверка решений

  • Сертификат о прохождении

  • Community-driven contributions

  • Стабильный релиз для образовательных учреждений


Источник идеи

Этот проект родился из идеи на платформе Eurecable — площадке для инновационных проектов и креативных идей.

Концепция демонстрирует, как с помощью современного AI (в частности, Cursor IDE с Claude) можно создать персонализированный интерактивный курс обучения с захватывающим сюжетом и практическими задачами.

Весь курс был разработан за несколько итераций с помощью AI-ассистента, что доказывает:

  1. AI может быть отличным инструментом для создания образовательного контента

  2. Будущее обучения — в персонализированных интерактивных курсах

  3. Программирование можно изучать через игру и сюжет


FAQ

Для кого этот курс?

Подходит:

  • 🎓 Студенты CS, желающие углубить знания C

  • 💻 Разработчики на высокоуровневых языках (Python/JS), желающие понять "как оно работает внутри"

  • 🔐 Будущие специалисты по кибербезопасности

  • 🤖 Embedded-разработчики

  • 📚 Любители детективов и технологий

Требования:

  • Базовые навыки программирования (на любом языке)

  • Умение работать с командной строкой

  • Желание разобраться "как это работает на самом деле"

  • macOS или Linux (Windows с WSL тоже подойдёт)

Нужно ли знать C перед началом?

Нет! Курс начинается с нуля. Единственное требование — базовое понимание программирования (переменные, циклы, функции на любом языке).

Сколько времени займёт прохождение?

Оптимальный темп: 1 сезон = 1 месяц (Season 9-10 по 2 месяца каждый)

  • Season 1-4 (готовые на 80%): ~4 месяца в комфортном темпе

  • Весь курс (все 10 сезонов, когда будет готов): ~12 месяцев (1 год)

    • Season 1-8: по 1 месяцу (8 месяцев)

    • Season 9: 2 месяца (Advanced Systems)

    • Season 10: 2 месяца (Final Mission)

Интенсивный темп: Можно пройти быстрее, но понимание важнее скорости

Можно ли начинать учиться прямо сейчас?

Да! Первые 4 сезона (16 эпизодов) готовы на 80% и полностью проходимы. Это даст вам солидную базу в C, памяти, сетях и криптографии.

Что делать, если застрял?

  1. Прочитайте подсказки в README эпизода

  2. Используйте Cursor AI для объяснения ошибок

  3. Экспериментируйте с кодом

  4. В крайнем случае — посмотрите solution/ (но только после честной попытки!)

А если я найду ошибку или хочу улучшить курс?

Проект будет открыт под MIT лицензией. Contributions welcome! 🎉

Курс платный?

Нет, полностью бесплатный и open-source.


Выводы

Operation MOONLIGHT — это эксперимент: можно ли сделать изучение сложного языка программирования захватывающим?

Вместо сухих учебников — детективная история.
Вместо абстрактных задач — реальные проекты.
Вместо скучной теории — метафоры и визуализации.
Вместо страха перед C — желание докопаться до истины.

Курс демонстрирует:

  • Потенциал AI в создании образовательного контента

  • Эффективность story-driven обучения

  • Важность контекста в программировании

  • Возможность изучать "сложные" технологии с интересом

Проект уже на GitHub!

  • 4 звезды и растёт

  • 📁 41 коммит в основной ветке

  • 📦 Версия v0.3 (активная разработка)

  • 📝 Код на C (69.8%), Shell (15.3%), Makefile (14.9%)

  • 📚 Полная документация и структура

  • 🎯 Season 1-4 готовы на 80% и проходимы прямо сейчас

Roadmap к v1.0:

  • v0.4: Завершение Season 5: Financial Markets (20% → 80%)

  • v0.5-0.6: Season 6-7 (Embedded & IoT, System Programming)

  • v0.7-0.9: Season 8-10 (AI, Advanced Systems, Final Mission)

  • v1.0: Полный курс, автопроверка, сертификаты

  • Community contributions приветствуются уже сейчас!


Ссылки


P.S.

⭐ Понравился проект? Поставьте звёздочку на GitHub! Это мотивирует продолжать разработку.

Если вы:

  • 🎓 Преподаватель CS и хотите использовать курс в обучении

  • 💼 Рекрутер и ищете кандидатов с глубоким пониманием C

  • 🛠️ Разработчик и хотите контрибьютить

  • 📝 Блогер/YouTuber и хотите сделать обзор курса

Пишите! Проект открыт для сотрудничества. Создавайте Issues и Pull Requests на GitHub.


Готовы начать операцию? Удачи, агент. Мир зависит от вашего кода.

GitHub
GitHub
// LOADING...
// MOONLIGHT PROTOCOL INITIALIZED
// ACCESS GRANTED
// WELCOME, MORPHEUS

— The Architect


🚀 Начните прямо сейчас!

v0.3 — Season 1-4 готовы к прохождению

git clone https://github.com/gfazzz/moonlight-course.git
cd moonlight-course
cd season-1-foundations/episode-01-strange-message
cat README.md
# И вперёд! 🎯
Star
Star