Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019)

Материал из 0x1.tv

Версия от 12:22, 4 сентября 2021; StasFomin (обсуждение | вклад) (Batch edit: replace PCRE (\n\n)+(\n) with \2)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Докладчик
Валерий Лаптев.jpg
Валерий Лаптев

За 5 лет эксплуатации была накоплена информация о достоинствах и недостатках учебного языка программирования и среды Semantic IDE. Принято решение реализовать полноценную обучающую среду для программистов на базе СПО силами студентов направления «Программная инженерия».

Архитектура системы состоит из 2 систем: исполняющей и управляющей. Исполняющая подсистема — это интегрированная среда программирования на учебном языке, разрабатываемая на базе VSCode. Редактор дорабатывается до семантического редактора Semantic IDE. Программы на учебном языке транслируются в С++, который компилируется gcc в исполняемый модуль. Front-end транслятора реализуется с использованием ANTLR на языке C#, back-end реализуется «в лоб» на С++. Исполняющая система является клиентом для серверной части — управляющей подсистемы. Управляющая подсистема, в свою очередь, состоит из подсистем генерации заданий, проверки решений и оценки решений.

Система строится на базе БД PostgreSQL, функционал реализуется на языке C# с использованием .NET Core. Подсистема генерации осуществляет генерацию разнообразных заданий (тестовых и на программирование) на основе настроек, шаблонов, и с учётом достигнутого уровня обученности. Подсистема проверки первоначально проверяет решение на плагиат, а затем осуществляет проверку и оценку решения.

Подсистема построена как олимпиадная система, но оценивание осуществляется на основе нескольких моделей. В частности, оценивается не только правильность решения, но и качество кода на основе метрик, и деятельность программистов в исполняющей системе.

Видео

on youtube

Презентация

Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019).pdf

Thesis

После введения ЕГЭ в 2009 году в АГТУ на ИТ-специальности стали поступать студенты, которые не изучали программирование в школе. Возникла задача построить обучение программированию с нуля. В результате анализа средств обучения было принято решение разработать учебный язык программирования и реализовать среду для начального обучения программированию на этом языке.

К 2012 году была разработана среда программирования Semantic IDE, которая стала использоваться в учебном процессе. Основные концепции:

  • среда поддерживает работу с одно- и многомодульными программами;
  • среда обеспечивает независимый от платформы механизм накопления программных компонент на учебном языке;
  • среда обеспечивает разработку обучающих материалов непосредственно в редакторе без привлечения сторонних средств;
  • редактор кода оперирует конструкциями языка программирования и объектами программы; изменение ключевых слов в коде невозможно;
  • ошибки определяются в момент набора кода программы;
  • редактор позволяет набирать код и в русской, и в английской лексике;
  • обеспечена возможность переключения лексики и синтаксиса языка программирования, причём это не приводит к повторному анализу кода программы.

Разработка велась силами студентов направления «Программная инженерия» под руководством автора. Основной разработчик был один, но иногда привлекались другие студенты. По итогам 5-летнего использования среды Semantic IDE в учебном процессе можно сделать следующие выводы:

  • Участие в реальном проекта сильно повышало мотивацию студентов.
  • Русская лексика учебного языка упрощает для начинающих понимание и усвоение основ программирования.
  • Отсутствие синтаксических ошибок при наборе кода позволяет больше внимания уделять решению задачи, и скорость набора программы существенно выше, чем в традиционном текстовом редакторе.
  • Отсутствие операций с буфером обмена не позволяет использовать «копипаст» и стимулирует студентов писать функции.
  • Нетрадиционный язык программирования и нетекстовый формат файла программы значительно снижает количество попыток нечестного выполнения заданий.

Однако анализ самого проекта показывает, что имеется ряд серьёзных недостатков:

  1. Проектная документация отсутствует, поэтому проект сложно развивать.
  2. Проект был реализован с использованием бесплатных средств от Микрософт, поэтому работает только на платформе Windows и перенос его на Linux или в Интернет по трудоёмкости сравним с новой разработкой.
  3. Среда является локальной, предназначена для одного пользователя и не содержит никаких средств для коллективной работы.
  4. Учебный язык интерпретируется, исполняемый файл не создаётся, и программы работают только в среде, что не всегда удобно.

Кроме того, практика обучения показала, что многие начинающие программисты испытывают трудности при переходе от дружественной среды Semantic IDE к профессиональным средам с языком С++, даже несмотря на возможности переключения лексики и синтаксиса в Semantic IDE. Поэтому было решено разработать более развитую обучающую среду с использованием свободного ПО. Основные концепции:

  1. Система должна обучать деятельности — программированию.
  2. Система должна управлять деятельностью обучаемого в процессе обучения.
  3. Управление деятельностью должно быть адаптивным на основе контроля усвоения учебного материала.
  4. Система должна быть способна генерировать неограниченное количество заданий для обучения и контроля.
  5. Система должна уметь оценивать и результаты деятельности, и саму деятельность обучаемого как индивидуально, так и в составе группы.

На основании этих принципов была спроектирована архитектура проекта.

Архитектура проекта

В систему входит 2 основных подсистемы: исполняющая и управляющая, которые взаимодействуют как клиент и сервер, — и две вспомогательных подсистемы: клиент преподавателя и сервер базы данных.

Исполняющая подсистема представляет собой интегрированную среду, в которой обучаемый работает с кодом на учебном языке программирования.

Управляющая подсистема взаимодействует со всеми подсистемами, и только она взаимодействует с сервером базы данных. В состав управляющей подсистемы входят: подсистема «антиплагиат», подсистема проверки задания, подсистема оценки задания, подсистема генерации заданий, подсистема адаптивного управления обучением на основе оценивания общего уровня усвоения.

Исполняющая подсистема

В качестве редактора интегрированной среды выбран свободно распространяемый редактор VSCode. Он поддерживает множество языков программирования (в частности, Python и C#) и включает разнообразные механизмы расширения и настройки. Важным фактором выбора послужила поддержка Git «из коробки».

Программа на учебном языке проверяется парсером, который реализуется на C# с использованием платформы NET Core. Парсер сгенерирован с использованием генератора парсеров ANTLR, для которого была разработана грамматика учебного языка, уточнённая на основе опыта использования среды Semantic IDE.

Интегрированная среда разрабатывается таким образом, чтобы её можно было использовать как автономно, так и в качестве клиента управляющей подсистемы.

В автономном варианте, если ошибки отсутствуют, код конвертируется в С++, причём код С++ можно видеть в редакторе.

В варианте клиента корректный код на учебном языке отправляется управляющей подсистеме для проверки и оценки, а управляющая подсистема сообщает результаты клиенту и сохраняет все данные в БД.

Управляющая подсистема

Основной подсистемой в составе управляющей подсистемы является подсистема адаптивного управления. Все остальные подсистемы являются подчинёнными и вызываются по мере необходимости.

Для каждого конкретного обучаемого в конкретном сеансе работы система управления формирует запрос на генерацию задания в соответствии с уровнем обученности данного ученика, и вызывает подсистему генерации заданий. Получив от подсистемы генерации вариант, управляющая система отправляет его клиенту.

Получив от клиента решение и лог деятельности обучаемого, подсистема управления запускает подсистемы проверки. Первой вызывается подсистема «антиплагиат», оценивающая вероятность плагиата решения.

Затем код решения передаётся подсистеме проверки выполнения, которая проверяет тестирование программы по схеме олимпиадных систем-контестеров. Результат тестирования передаётся подсистеме оценки, которая оценивает его по одной из моделей оценивания (строгая, нестрогая, со штрафами) в зависимости от настроек.

Затем решение передаётся подсистеме оценивания качества кода, которая оценивает решение на основе набора метрик. Лог деятельности передаётся подсистеме оценивания деятельности.

Отдельные результаты оценивания передаются в подсистему общей оценки уровня обученности.

Все подсистемы управляющей системы разрабатываются на языке C# с использованием платформы NET Core. Модульная структура управляющей системы позволяет проводить эксперименты с различными моделями и алгоритмами оценивания.

Сервер базы данных

База данных хранит следующую информацию:

  • пользователи системы;
  • множество выполненных заданий для подсистемы «антиплагиат»;
  • множество тестовых вопросов разного типа для проверки знаний;
  • наборы конкретных заданий по разным темам разной сложности;
  • множество типовых шаблонов заданий для генерации конкретных вариантов.

Для каждого пользователя в базе данных сохраняются результаты выполнения, проверки и оценивания каждого задания. Кроме того, сохраняется лог каждого сеанса для оценивания деятельности обучаемого. На основе этой информации управляющая подсистема оценивает общий уровень усвоения и определяет траекторию обучения.

Сервер базы данных построен на основе свободно распространяемой СУБД PostgreSQL.

Текущее состояние проекта

В настоящее время все разработки выполняются группой студентов под управлением автора в рамках курсового проектирования по различным дисциплинам.

Первая версия системы «антиплагиат» была разработана в рамках дисциплины «Объектно-ориентированное программирование» на языке С++ с использованием компилятора GNU C++.

Первая версия исполняющей системы разработана в рамках дисциплины «Командный проект». Для разработки Language Server для VSCode использовался язык программирования C# (Net Core 2.1) и генератор парсеров ANTLR 4, для расширения редактора использовался TypeScript.

Конвертер в С++ реализуется «в лоб» по грамматике методом рекурсивного спуска. Конвертер настоящее время реализуется в 2 вариантах: на языке С++ в среде Code::Blocks с компилятором GNU gcc, и на языке C# на платформе NET Core в самом редакторе VSCode.

Первая версия управляющей системы разработана в рамках дисциплины «Командный проект». Разработана первоначальная структура БД, ядро управляющей систмы, интерфейсы для взаимодействия с подсистемами. Начата разработка подсистемы генерации заданий, подсистемы проверки задания и оценки задания. Для отработки взаимодействия клиента и сервера написан веб-клиент преподавателя.

Разработка управляющей системы и веб-клиента осуществлялась на языке C# с использованием ASP.NET Core 2.1, Entity Framework Core 2.1, HTML5, библиотеки Bootstrap 3 и jQuery 1.11. Разработка ведётся с использованием Rider IDE 2018, предоставленной нашим студентам компанией JetBrains по программе JetBrains Product Pack for Students.

Для обеспечения командной работы с исходным кодом используется платформа Github.

Работа системы проверялась в ОС Windows 7 и выше, и в Linux-дистрибутивах, основанных на дистрибутиве Debian — начиная с Ubuntu 14.04.

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

Обучающая среда по программированию на базе СПО (Валерий Лаптев, OSEDUCONF-2019)!.jpg

Примечания и ссылки

Plays:137   Comments:0