Семь работ, которые складываются в один путь: сначала — как устроено программирование изнутри, затем — как собрать из этого настоящее веб-приложение.
Это курс не про «выучить язык». Каждая работа здесь решает задачу, которую нельзя решить копированием готового решения из интернета.
От консольной программы на C до веб-приложения с искусственным интеллектом. Каждая следующая работа опирается на предыдущую.
Курс начинается с языка, на котором видно, что происходит на самом деле. Программа, которая угадывает загаданное число за семь вопросов вместо ста. Проверка настоящего номера банковской карты по алгоритму Луна. И сравнение алгоритмов: во сколько раз бинарный поиск быстрее перебора.
Каждый алгоритм пишется руками, без готовых функций. Смысл модуля — не выучить синтаксис C, а понять, почему выбор алгоритма важнее скорости компьютера.
Самый инженерный модуль курса. Ребята реализуют с нуля то, что в других языках уже готово: связный список, стек, очередь и хеш-таблицу. Итоговая работа — телефонная книга, которая находит запись почти мгновенно, потому что под ней хеш-таблица, написанная руками.
Всё написано с нуля. После этого модуля привычные list и dict в Python перестают быть магией — ребёнок знает, что у них внутри.
После строгого C начинается Python — и разница чувствуется сразу. Работы модуля: программа, которая читает большой набор данных и строит по нему статистику, и взлом шифра Цезаря через частотный анализ букв.
Здесь же ребята переписывают свои алгоритмы из первых модулей на Python и сравнивают со встроенными — видят разницу и понимают её причину.
Данные нужно где-то хранить между запусками программы. Ребята проектируют структуру базы, создают таблицы со связями и пишут запросы. Итог — рабочее приложение учёта, которое помнит всё после закрытия.
Схему базы ребята проектируют сами — до написания кода. Это первый опыт, когда сначала думаешь о структуре данных, а потом уже программируешь.
Первая работа, которую видно в браузере. Ребята верстают страницу, оформляют её и добавляют интерактивность на JavaScript. Задача узкая и достижимая: сделать интерфейс, который не стыдно поставить на своё будущее приложение.
Вёрстка своя, а для оформления используем готовый CSS-фреймворк — как и в оригинальном CS50. Так время уходит на логику, а не на выравнивание кнопок.
Здесь всё изученное соединяется. Ребята поднимают собственный веб-сервер на Flask, подключают к нему базу данных и внешние сервисы. Получается настоящее приложение: трекер, мини-блог или доска задач — с формами, сохранением и живыми данными из интернета.
Приложение собирается учениками целиком: и серверная часть, и интерфейс, и работа с данными. Самый технически насыщенный модуль курса.
Итоговая работа объединяет весь год: интерфейс, сервер, база данных и обращение к языковой модели. Каждый выбирает свою идею — помощник по учёбе, генератор идей, умный дневник — и доводит её до работающего приложения, которое можно открыть по ссылке.
Проект авторский от идеи до защиты. Это работа, в которой видно всё, чему ребёнок научился за год, — и её можно показать при поступлении.
Это университетская база по программированию: те же темы и та же логика, с которых начинают на первых курсах технических вузов.
Каждый проект закрывает свой слой. Пройдя их подряд, подросток перестаёт видеть отдельные технологии и начинает понимать, как из этих слоёв собирается любое современное приложение — от сайта до сервиса, которым пользуются миллионы.
Проекты курса мы выкладываем в открытый репозиторий академии. Можно посмотреть код, разобрать реализацию алгоритмов и запустить приложение у себя.
Первое занятие бесплатное. Посмотрим, что ребёнок уже умеет, и честно скажем, готов ли он к такому уровню.