Тип работы:
Предмет:
Язык работы:


Расширяемый генератор синтаксически корректных программ для обучения программированию

Работа №142517

Тип работы

Бакалаврская работа

Предмет

прикладная информатика

Объем работы31
Год сдачи2022
Стоимость4650 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
42
Не подходит работа?

Узнай цену на написание


Введение 4
Постановка задачи 5
Глава 1. Обзор и сравнение существующих генераторов программ­ного кода 6
1.1. Понятие генерации программного кода 6
1.2. Automated C++ Program Generator using English Language
Interface 7
1.3. Automatic code generation for C and C++programming .... 7
1.4. Csmith 7
1.5. Liveness-Driven Random Program Generation (ldrgen) 7
1.6. Yarpgen 8
1.7. Deepsmith 8
1.8. SL Random Program Generator 8
1.9. Pyfuzz 8
1.10. Сравнительный анализ найденных инструментов и статей . . 8
1.10.1 Результаты сравнения 11
Глава 2. Разработка инструмента генерации программ 12
2.1. Требования к системе генерации 12
2.2. Схема генерации программ 12
2.3. Промежуточное представление 13
2.4. Шаблоны программ 14
2.5. Архитектура системы 15
2.6. Компоненты системы 17
2.6.1 Веб-сервер 17
2.6.2 Исполнитель программ 17
2.6.3 База данных 17
2.6.4 Сторона клиента 17
2.6.5 Менеджер шаблонов 18
Глава 3. Реализация инструмента генерации программ 19
3.1. Используемые технологии 19
3.1.1 Менеджер шаблонов 19
3.1.2 Веб-сервер 20
3.1.3 База данных 20
3.1.4 Исполнитель программ 20
3.2. Шаблоны программ 21
3.2.1 Внутреннее представление шаблона 21
3.2.2 Конструирование шаблонов 23
3.3. Промежуточное представление (AST) 25
3.4. Генерация текста программы 25
3.5. API 26
3.6. Проверка ответов 27
Заключение 28
Список литературы 29

В настоящее время знание языка программирования является необхо­димым для специалиста в отрасли информационных технологий, а обучение им - крайне востребованным. На сегодняшний день программы по обучению языкам программирования есть не только в университетах, но и на различных образовательных платформах в интернете. В связи с ростом числа учащихся подобных курсов и ослабления контакта между студентом и преподавателем острее встает проблема создания учебных материалов, в частности практиче­ских заданий. Требуется создавать их в большем объеме и в то же время де­лать их разнообразными во избежание списывания. Специфически для курсов по изучению языков программирования возникает необходимость создания множества примеров программ на определенную тему или по конкретному шаблону. Создание подобных примеров вручную в нескольких вариантах (в идеале по отдельности для каждого ученика) затруднительно. Таким образом, создание удобного программного инструмента, позволяющего автоматиче­ски генерировать примеры кода на различных языках программирования для учебных задач представляет собой актуальную проблему.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


Целью и основной задачей дипломной работы было создание генератора программ для обучения программированию. В ходе выполнения работы были получены следующие результаты:
1. Было проведено исследование существующих решений по генерации программ на предмет их применимости в обучающих целях. В ходе исследования были выявлены достоинства и недостатки имеющихся решений.
2. Были сформулированы требования к генератору обучающих программ, учитывающие используемые модели в аналогах, их достоинства и недо­статки. Из основных недостатков были выявлены: отсутствие возмож­ности задать основную логику программы; мало функциональные моде­ли задания шаблона кода при их наличии; отсутствие веб-интерфейса; отсутствие возможности хранения шаблонов и сгенерированных про­грамм; отсутствие возможности генерации изображений.
3. Был реализован инструмент генерации программ, поддерживающий управ­ление шаблонами кода, имеющий потенциал к расширению в сторону поддержки новых языков программирования, в настоящий момент под­держивающий генерацию кода на языке Python с помощью основных синтаксических конструкций.
Таким образом, цель данной работы достигнута в полном объеме.


[1] А Хафизова и М Заславский. «Генератор случайных программ как инструмент обучения программированию». В: СБОРНИК ДО­КЛАДОВ СТУДЕНТОВ И АСПИРАНТОВ НА КОНФЕРЕНЦИИ ПРОФЕССОРСКО-ПРЕПОДАВАТЕЛЬСКОГО СОСТАВА. 2019, с. 191.
[2] Ambuj Kumar и Saroj Kaushik. «Automated C++ Program Generator using English Language Interface». В: ().
[3] S. Patade и др. «AUTOMATIC CODE GENERATION FOR C AND C++ PROGRAMMING». В: IRJET 08 (05 2021), с. 4732—4736.
[4] Xuejun Yang и др. Csmith. URL: https : / /embed . cs . utah . edu/ csmith/ (дата обр. 10.05.2022).
[5] Gergo Barany. «Liveness-driven random program generation». В: International Symposium on Logic-Based Program Synthesis and Transformation. Springer. 2017, с. 112—127.
[6] Intel. Yarpgen. URL: https : //github . com/intel/yarpgen (дата обр. 10.05.2022).
[7] Chris Cummins и др. «Compiler fuzzing through deep learning». В: Proceedings of the 27th ACM SIGSOFT International Symposium on Software Testing and Analysis. 2018, с. 95—105.
[8] Ariel Baruch. SL Random Program Generator. URL: https : //www . cs.bgu.ac.il/~arielbar/sl/#/code (дата обр. 10.05.2022).
[9] Steven Myint. pyfuzz. URL: https : / /github . com/myint/pyfuzz (дата обр. 10.05.2022).
[10] Steven Myint. Random Python Program Generator. URL: https : // www.4geeks.de/cgi-bin/webgen.py (дата обр. 10.05.2022).
[11] AST. URL: https://en.wikipedia.org/wiki/Abstract_syntax_ tree (дата обр. 15.05.2022).
[12] ECMA International. Standard ECMA-404. The JSONData Interchange Format. 2017.
[13] Moodle. URL: https : / / moodle . org / ?lang = ru (дата обр. 15.05.2022).
[14] Jemerov D. и Isakova S. Kotlin in action. Manning Publications Company, 2017.
[15] Docker. URL: https://www.docker.com/ (дата обр. 10.05.2022)....29


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2024 Cервис помощи студентам в выполнении работ