Образовательная веб-платформа для поддержки изучения дисциплины "Алгоритмы и структуры данных" в НИУ ВШЭ.
Алгоритмы и структуры данных — фундаментальный навык, проверяемый на собеседованиях в любой IT-компании. Однако существующие ресурсы для их изучения часто фрагментированы: есть книги с теорией, и есть тренажеры, сфокусированные исключительно на написании кода с жесткой автоматической проверкой. Это не всегда позволяет развить именно аналитическое мышление.
Платформа ITishnik предлагает иной подход. Мы смещаем акцент с безошибочной реализации на конкретном языке программирования на глубокое понимание и анализ. Наш сервис предоставляет студентам и преподавателям НИУ ВШЭ инструменты для эффективного обучения через задачи нестандартных форматов:
- Анализ результата выполнения кода;
- Рефакторинг и улучшение существующих решений;
- Поиск логических ошибок в предложенном алгоритме.
Ответы на задачи принимаются в гибком виде — это может быть псевдокод, текстовое пояснение или конечный результат. В связи с этим в проекте отсутствует традиционное автоматическое тестирование. Проверка решений осуществляется непосредственно преподавателем, который выставляет итоговую оценку.
Платформа построена на ролевой модели:
- Студент видит свои задания и дедлайны, решает аналитические задачи и может оставить комментарий-фидбэк по ним.
- Преподаватель управляет курсом, загружает задачи, проверяет решения студентов и может использовать генеративный ИИ как для помощи в составлении новых заданий, так и для содействия в ручной проверке ответов.
Проект построен с использованием современных и надежных технологий:
Проект имеет интегрированную структуру, типичную для ASP.NET Core приложений с SPA-фронтендом.
/
├── src/ # Корневая папка с исходным кодом всего решения
│ └── Web/ # Основной проект ASP.NET Core (Backend)
│ └── ClientApp/ # Исходный код Frontend на Angular
└── README.md
Это руководство поможет вам настроить и запустить проект локально.
Перед началом убедитесь, что у вас установлено следующее программное обеспечение:
- .NET SDK 9.0
- Node.js 20.x (включая npm)
- PostgreSQL (СУБД должна быть установлена и запущена)
- API-ключ для Gemini (его можно получить в Google AI Studio)
Для безопасного хранения чувствительных данных (ключи API, пароли, строки подключения) мы используем механизм User Secrets. Это предотвращает попадание секретов в систему контроля версий.
-
Перейдите в директорию веб-проекта:
cd src/Web -
Измените файл
appsettings.Development.jsonи скопируйте в него следующую конфигурацию. Она содержит нечувствительные параметры для окружения разработки.{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information", "Microsoft.EntityFrameworkCore.Database.Command": "Information" } }, "AllowedHosts": "*", "GeminiProxyAddress": "http://127.0.0.1:1080", "EmailSettings": { "SmtpServer": "smtp.yandex.ru", "Port": 465, "FromName": "Твой портал \"Айтишник\"", "FromEmail": "tvoy.itishnik@yandex.ru", "Username": "tvoy.itishnik" } }Примечание: Если вы не используете прокси для доступа к Gemini API, удалите строку
GeminiProxyAddress. ИзменитеEmailSettingsпо необходимости -
Инициализируйте user-secrets и установите ваши секретные значения. Выполняйте эти команды, находясь в папке
src/Web.# Строка подключения к вашей локальной базе данных PostgreSQL dotnet user-secrets set "ConnectionStrings:ItishnikDb" "Host=localhost;Port=5432;Database=itishnik_db;Username=postgres;Password=your_password" # Ваш API-ключ от Google Gemini dotnet user-secrets set "GoogleAi:ApiKey" "YOUR_GEMINI_API_KEY_HERE" # Пароль от почтового ящика, указанного в EmailSettings dotnet user-secrets set "EmailSettings:Password" "YOUR_EMAIL_APP_PASSWORD_HERE"
-
Примените миграции к базе данных. Эта команда создаст все необходимые таблицы.
dotnet ef database update
- Откройте новый терминал и перейдите в директорию клиентского приложения:
cd src/Web/ClientApp - Установите все необходимые зависимости:
npm install
- Вернитесь в первый терминал (где вы находитесь в
src/Web). - Запустите серверную часть:
Будет запущен Backend и Frontend на
dotnet run
https://localhost:44447.
Теперь у вас полностью развернута локальная среда для работы над проектом!