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 — это ваш напарник, но код пишете вы.
Философия курса
Принципы обучения
Learn by Doing — 70% практики, 30% теории
Матрёшка проектов — каждая задача = кирпичик большого проекта
Прогрессивная сложность — от
printf
до квантовых симуляторовКонтекстное обучение — теория всегда привязана к задаче
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-ассистента, что доказывает:
AI может быть отличным инструментом для создания образовательного контента
Будущее обучения — в персонализированных интерактивных курсах
Программирование можно изучать через игру и сюжет
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, памяти, сетях и криптографии.
Что делать, если застрял?
Прочитайте подсказки в README эпизода
Используйте Cursor AI для объяснения ошибок
Экспериментируйте с кодом
В крайнем случае — посмотрите
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 приветствуются уже сейчас!
Ссылки
Репозиторий: github.com/gfazzz/moonlight-course 🌟
Идея на Eurecable: eurecable.com/ideas/971
Документация: См.
README.md
,CURRICULUM.md
,SCENARIO.md
в репозиторииЛицензия: MIT
P.S.
⭐ Понравился проект? Поставьте звёздочку на GitHub! Это мотивирует продолжать разработку.
Если вы:
🎓 Преподаватель CS и хотите использовать курс в обучении
💼 Рекрутер и ищете кандидатов с глубоким пониманием C
🛠️ Разработчик и хотите контрибьютить
📝 Блогер/YouTuber и хотите сделать обзор курса
Пишите! Проект открыт для сотрудничества. Создавайте Issues и Pull Requests на 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
# И вперёд! 🎯
