USE OF GENERATIVE ARTIFICIAL INTELLIGENCE PROGRAMMES IN THE PROCESS OF INITIAL PROGRAMMING EDUCATION IN UNIVERSITIES
USE OF GENERATIVE ARTIFICIAL INTELLIGENCE PROGRAMMES IN THE PROCESS OF INITIAL PROGRAMMING EDUCATION IN UNIVERSITIES
Abstract
This work provides a review of the literature on the initial teaching of programming in universities and the use of Generative Artificial Intelligence Programmes (GAIPs) for this purpose.
At the initial training of programming in universities, the tasks of developing five skills are highlighted: abstraction (determining what information about an entity/object should be kept and what should be ignored); generalization (formulating a solution in general terms so that it can be applied to solve different problems); decomposition (breaking complex problems into smaller subtasks that are easier to understand and solve); algorithmicization (defining step by step a set of operations/actions in order to solve a problem); debugging (localization and elimination of errors). It is also noted that there are many programming languages used in initial training at universities, such as Pascal, C++, Python, C#, Java.
The review of the literature on the use of GAIPs in initial programming training at universities indicated the following main problems and tasks: preventing the use of GAIPs to obtain undeserved grades in the subject; developing techniques and examples of using GAIPs in the teaching process to personalize, increase intensity and quality; exploring new directions of using GAIPs, for example, developing skills of using GAIPs to solve real production tasks (GAIPs operator).
The author's experience of using GAIPs for initial programming training of first-year students of the Department of Mathematics and Programming Technologies of Gomel State University named after F.Skorina is described.
1. Введение
1.1. Начальные курсы программирования
Предмет «программирование» является базовым для первых курсов всех инженерных специальностей университетов и очень сложным для большинства студентов . Cравнительный анализ подходов к обучению программированию во вводных курсах приводится в . Сравнительный анализ состояния обучения пяти базовым понятиям во вводных курсах программирования (абстракции, декомпозиции, алгоритмизации, отладке и решении задач) в странах Европы, Северной Америки, Океании, Азии, Латинской Америки и Африки приводится в . В 2020 году IEEE и ACM – две ведущих ассоциации специалистов в области компьютеров и компьютерных наук создали Сomputing Cirricula, который определил стратегию обучения компьютерным наукам, в том числе и вводным курсам программирования .
Среди предлагаемых специалистами средств повышения эффективности обучения программированию на первом курсе университета встречаются:
- визуальные среды программирования , ;
- использование специально разработанных WEB-платформ , , ;
- применение проектно-ориентированного подхода , ;
- специальные обучающие средства обучению программированию ;
- авторские методики обучения программированию , включающие современные подходы к обучению, модифицированную педагогика, создание привлекательной и реалистичной среды обучения программированию ;
- система автоматического оценивания решений студентов ;
- геймификация , ;
- специальное программное средство для контроля прогресса студентов в течение семестра .
1.2. Влияние на обучение программ искусственного интеллекта
В отмечается, что AI-программы, такие как ChatGPT в состоянии выполнять задания вводных курсов по программированию вместо студентов, при этом ChatGPT понимает не только текстовые описания заданий, но и программы, написанные на различных языках программирования таких как Python, Java, C++ и др. Соответственно, перед преподавателями стоит задача изменения соответствующих заданий.
В представлено один из подходов к преподаванию вводных курсов программирования с помощью искусственного интеллекта (AI). Среди прочего, предлагается давать задания на использование AI генерирующего программы по различным представлениям задач: текстовые представления (алгоритмы, написанные на языке программирования или псевдокоде), визуальные представления (например, UML-диаграммы), числовые и формульные представления. Другой вариант заданий – генерация нескольких решений одной и той же задачи с последующим сравнительным анализом реализаций. Третий – объяснение студентом сгенерированных AI решений.
В предлагается использовать ChatCPT для оценивания программ, разработанных студентами, отмечая, что исторически это делалось либо проверкой вручную, либо автоматической проверкой по тестам.
Традиционные подходы к обучению программированию фокусируются на практике написания кода. Но с появлением AI-генераторов кода требуется изменять эти подходы в сторону развития навыков формирования эффективных текстовых запросов к AI-генераторам кодов .
В описывается использование ChatGPT в обработке данных, указывая качестве достоинств такого подхода персонализированное обучение, объяснений концепций, генерация кода с пояснениями, оценивание работ. Обработка данных включает три существенных обязательных курса: базы данных, анализ данных, машинное обучение.
ChatBot, который помогает студентам осваивать оформление программ на языке Python в соответствии со стандартом PEP-8 представлен в .
Анализ всех этих приводит к следующим выводам:
1. Применение программ генеративного искусственного интеллекта неотвратимо и может существенно повысить качество учебного процесса самыми разнообразными и неожиданными пока способами.
2. В настоящее время одной из важнейших задач является защита от использования ПГИИ недобросовестными студентами для сдачи лабораторных и практических работ.
2. Основные результаты
2.1. Цель семестрового курса по программированию и основам алгоритмизации
Автор много лет обучает первокурсников вводному курсу программирования , . На первый курс факультета математики и технологий программирования Гомельского государственного университета им. Ф. Скорины поступают студенты, которые, в большинстве своём, не умеют писать программы, в то же время встречаются первокурсники, которые начали самостоятельное обучение ещё до поступления в университет, сделав собственный выбор языка программирования (в 2023-2024 учебном году это один из 5 языков: Pascal, C++, Python, Java, C#).
Целью семестрового курса по программированию и основам алгоритмизации (в общей сложности 10 академических часов в неделю) – заложить основы базовых теоретических знаний и практических навыков по следующим направлениям:
По текстовой постановке задачи сделать математическую/алгоритмическую постановку
Исходный текст задания может содержать от нескольких строчек до нескольких страниц. Студент должен уметь отделить полезную информацию от несущественной и в завершение этого процесса переформулировать условие задачи в виде математической или алгоритмической постановки, используя в качестве предполагаемых объектов обработки и результатов такие понятия как числа, символы, строки, одномерные и многомерные массивы чисел, символов и строк.
Разработать алгоритм
Разработка алгоритма предполагает текстовое представление последовательности действий, приводящей к получению требуемого по постановке задачи результата по заданным исходным данным. Алгоритм должен быть описан так, чтобы его мог использовать любой студент потока для получения правильного результата по предлагаемым входным данным.
Написать программу
Обучение большинства студентов ведётся на языке программирования Паскаль по следующим причинам:
· Паскаль был задуман как язык для обучения программированию, и потому проще других усваивается студентами, не имеющими никакой предварительной подготовки.
· С 1999 года под руководством автора разрабатывается система дистанционного обучения DL.GSU.BY , , в которой построена эффективная среда автоматизированного персонализированного обучения программированию на языке Паскаль «с чистого листа» школьников различных возрастных диапазонов: 1-4 классы, 5-8 классы, 9-11 классы . Использование данной среды, несмотря на сильную дифференциацию в предварительной подготовке первокурсников, позволяет обеспечить практическую реализацию главной парадигмы авторского обучения «на каждом занятии каждую минуту работает каждый ученик». Ученику всегда предлагается посильное задание, и он сам может регулировать уровень роста сложности предлагаемых к выполнению заданий. В данном случае уместно привести аналогию с множеством лестниц, ведущих на одну и ту же высоту, но ступеньки, у которых сильно разнятся, могут быть очень маленькими, больше, ещё больше, вплоть до очень больших.
· Для студентов имеются подготовленные автором конспекты опорных схем лекций по темам «Введение в программирование», «Одномерный массив – стандартные алгоритмы», «Одномерный массив – технология разработки нестандартных алгоритмов», «Двумерный массив», «Геометрия», «Строки», «Сортировка», «Пользовательские функции и процедуры», «Очередь», которые иллюстрируются фрагментами программ на Паскале.
· Изучается минимальное подмножество синтаксиса языка программирования Паскаль, такие как: встроенные типы данных (символ, строка, целое и вещественное число), одномерный и двумерный массивы встроенных типов, операторы присваивания, условия и циклов FOR и WHILE. Поскольку основная цель не изучение языка программирования Паскаль, а развитие навыков алгоритмизации и программирования.
Поддерживается также и обучение на других языках программирования (С++, Python, C#, Java): имеются конспекты опорных схем лекций для этих языков, выполненные и развивающиеся заинтересованными студентами, осуществляется автоматическая проверка решений на всех этих языках программирования, поддерживается форум, где можно задать вопрос и в течение суток получить ответ от более квалифицированного одногруппника или старшекурсника.
Отправить на автоматическую проверку
Важная особенность выстроенной системы персонализированного обучения заключается в том, что условия задачи предъявляются автоматически; студент, написав решение, может отправить его на проверку и в течение нескольких секунд узнать результат. Для автоматической проверки решение запускается на каждом из подготовленных автором задания входных данных и ответы студента и автора задания сравниваются, в случае неоднозначности проверка ответов решения студента осуществляется специальными программами.
Уступка тестов
Огромное подспорье для начинающих изучение программирования – выдача им тестов: то есть входных данных, на которых их программа выдала неверный ответ вместе с авторским ответом. Это позволяет быстрее и проще понять студентам, в каких именно случаях их программа работает неверно. Последний тест задачи не отдаётся студентам, что позволяет с одной стороны, развивать у студентов навыки самостоятельной разработки тестов, а с другой стороны, обеспечивает невозможность написания «обманных» решений типа «если ввод такой, ответ такой».
Сделать локализацию ошибки, исправить её
Это самая сложная и работа и, по мнению автора, соответствующие навыки достигаются многократными упражнениями в локализации и устранении ошибок.
Заметим, что это всё является основой для дальнейшего обучения языкам и технологиям программирования на старших курсах.
2.2. Система оценивания, исключающая возможность использования ГИИ для незаслуженного повышения оценки
Авторская система оценивания базируется на автоматически формируемой ведомости оценок, в которую включаются отдельными колонками все виды деятельности студента в течение учебного семестра, включающие контроль теории, контроль практики, обучение, техминимум, индивидуальные задания, пропуски занятий. Вместе они формируют фактически оценку отношения студента к учебному процессу. Множители значений в колонках подобраны таким образом, что все студенты, добросовестно относящиеся к занятиям, получают высокие оценки – до 10 и выше. Другой важной оценкой является оценка по контрольному срезу. Оценка по предмету выставляется как минимум из этих двух оценок («Отношение» и «Умение»). Напомню, что в Беларуси 10-балльная система оценивания.
Контрольный срез – это занятие, на котором студенту предъявляется 10 индивидуальных заданий на 1.5 часа, выбранных случайно из имеющегося банка заданий, решённых первокурсниками прошлых лет. Оценка равна количеству полностью решённых задач за эти 1.5 часа. Таким образом, студент должен для 10 различных задач (следовательно, 10 раз) выполнить всё, чему он учился в семестре: сформулировать для себя формальную постановку задачи по исходной текстовой, разработать алгоритм, написать программу на выбранном им языке программирования, в случае ошибок – найти их и исправить. При этом первые 5 задач выбираются из заданий «Техминимум», которые студенты могут решать в течение семестра. Техминимум содержит задания на темы: «Введение в программирование», «Одномерный массив», «Двумерный массив», «Геометрия», «Строки». Таким образом, оценка 5 гарантируется каждому, кто добросовестно занимается в течение семестра, вне зависимости от уровня предварительной подготовки до поступления в университет. Затем следуют 4 задания на темы «Одномерный массив», «Двумерный массив», «Геометрия», «Строки». Здесь задания берутся из банков заданий, недоступных студентам в течение семестра. Последнее 10-е задание на тему «Очередь» берётся из банка заданий, доступных студентам в течение семестра.
С середины семестра, когда изучена вся необходимая базовая теория, каждый студент имеет право писать контрольный срез еженедельно. При этом оценка по контрольному срезу меняется только в сторону увеличения.
Важно отметить, что технически обеспечена ситуация, когда студент должен решать задачи опираясь только на собственные знания. Закрыт доступ в Интернет, равно как и ко всем дискам и папкам локальной сети, кроме специальной папки, из которой автоматически удаляются все файлы при входе студента в систему. Преподаватель осуществляет визуальный контроль, чтобы студенты не пользовались конспектами и телефонами.
Другой важной особенностью системы обучения является необходимость последовательного решения сотен и тысяч маленьких задач в процессе обучения, что с одной стороны, многократно тренирует нужные навыки, а с другой – делает нерациональным обращение к ГИИ тех студентов, которые могут сами решить задачу.
2.3. Факторы повышения мотивации студентов к качественному обучению
Следующие факторы повышают мотивацию студентов к качественному обучению:
Автоматическое персонализированное обучение
Для каждой темы теории задачи организованы в древовидную структуру, с набором «базовых» задач на стволе дерева. В случае невозможности решить задачу студент может нажать кнопку «Не знаю» и попасть на поддерево обучающих заданий, к каждому из которых может быть своё дерево подводящих заданий.
Низкий порог входа
Фактически от студента не требуется никакой предварительной подготовки, есть даже пакет заданий, позволяющий выучить слова program, var, longint, begin, readln, writeln, end (включая расположение соответствующих латинских букв на клавиатуре) и их перевод, которые используются при написании программ на Паскале
Множество точек входа
Студент может начинать обучение в каждой из тем либо в разделе «Техминимум», где находятся простейшие задания, либо в разделе «Обучение», где находятся более сложные задания, либо в разделе «Индивидуальные задания», где для каждой темы имеется набор заданий, из которого студент может выбирать интересное для себя и посильное задание.
Персонализация
Фактически система обучения ориентирована на выбор каждым студентом оптимального для себя маршрута обучения. В разделах «Техминимум» и «Обучение» обеспечивается автоматическое предложение задач к решению в зависимости от того, успешно или нет была решена предыдущая задача.
Интенсификация
Автоматическая выдача условий задач и проверка решений в течение минуты сильно интенсифицируют учебный процесс, а всевозможные таблицы результатов, отражающие текущие достижения студентов, мотивируют многих студентов работать лучше и больше.
Свобода в выборе языка разработки программ
В настоящее время студенты выбирают на практике между пятью языками программирования: Pascal, Python, Java, C#, C++. Если возникнет потребность, могут быть добавлены новые языки.
2.4. Направления использования ГИИ в обучении студентами
С 2023-2024 учебного года автор предложил студентам активно пользоваться программами генеративного искусственного интеллекта. Для этого на форуме системы DL.GSU.BY для первокурсников, изучающих программирование, была заведена специальная тема «Учимся с помощью искусственного интеллекта», в первом сообщении которой приводятся ссылки на различные программы генерирующие тексты программ, с предложением пользоваться ими в случае следующих затруднительных ситуаций:
· если не работает решение – загружаете решение – получаете советы
· если не можете придумать решение – загружаете условие – получаете советы и тексты решений
· если не можете придумать тест, на котором не работает решение, загружаете условие задачи и решение, получаете тест, на котором решение не работает.
О результатах использования предложено писать ответными сообщениями в этой же теме:
что спрашивали, какой ответ получили, получена ли помощь?
Уже имеются первые отклики от студентов, как отрицательные, так и положительные. Вот некоторые фрагменты из них:
Позитивный отклик:
«Пользуюсь ChatGPT 3.5 уже более месяца, очень полезная штука. Помогает учиться самостоятельно и не только. Любого рода вопросы, даже если совсем трудно понять, может объяснить по многу раз, самыми разными путями, языками и т.д. Сложные задачи решает плохо, однако если написать четкий алгоритм сложной задачи, то вполне может решить. Очень хорошо помогает осваивать новые темы тем, кто изучает другие языки программирования (C++, Java, Python, C# и др.)
Если нужен аналог-конспекта по основным темам, и не только, пишешь ему сообщение вида:
**скопированный конспект для PascalABC**
Привет, переделай, пожалуйста, конспект для ... (ваш язык программирования) переписываешь в тетрадь, учишься.
Так же помогает разобраться с "тупиком" в задаче, найти ошибку в коде, указать на неправильную логику решения и найти правильный путь.
Что лично мне понравилось, так это, что он отвечает без эмоций. Даже если ты совсем уж "не понимаешь", бот пытается максимально помочь даже с простыми вопросами. Приятным бонусом является то, что бот подстраивается под твои умения и решает задачи только теми методами, которые тебе известны (для этого в начале общения лучше указать, что ты умеешь, чтобы бот не использовал неизвестные тебе способы решения)».
Негативный отклик:
«Данный бот очень далек от совершенства по некоторым пунктам:
1) Часто пишет полную ерунду, так как не может понять, что ему нужно сделать, касается задач типа дан двумерный массив из каждой его строки найти максимальное значение и занести это значение в одномерный массив, и потом из одномерного массива вывести минимальное (то есть задачи с 2-мя и более заданиями).
2) Пишет непонятно и очень мудрено, так же оформление страдает, код размашистый и постоянно с большими буквами так же не удобно его читать.
3) Если задача довольная сложная, то он часто использует функции и если сразу ему не сказать, чтобы он их не использовал, то в итоге получишь непонятное, неработающее нечто.
Но у бота есть и плюсы:
1) Бот дает хорошие советы по коду, а также его объяснения кратки и понятны (меня его подсказки много раз выручали.
2) Бот помогает учиться, если при работе в техминимуме и в обучении сотрудничать с ботом, то разбор новой темы идет намного легче, но для каждого все фломастеры разные, то мне было бы проще работать по книжке, так как свой первый язык программирования я учил по книжке.
ТАКЖЕ: бот подходит для помощи в изучении, а не для сдачи задач, так как если все задачи будут очень грязными с длинными названиями переменных, то это явно бот.
В итоге: потенциал есть, но пока что бот очень сырой, плюс поиск в ошибок в коде я не тестил, но при условии, что он код еле пишет, то, думаю, ошибки он будет искать плоховато».
По предварительному мнению автора, программы генеративного искусственного интеллекта могут сильно помочь в изучении языка программирования, в особенности, отличного от Паскаля, при условии, что студент умеет учиться самостоятельно.
Обобщённо говоря, студент может получить товарища или персонального учителя, который в состоянии помочь ему на всех этапах решения задачи, в том числе:
- по текстовой постановке задачи сделать математическую/алгоритмическую постановку;
- разработать алгоритм;
- написать программу по алгоритму;
- сделать локализацию ошибки, исправить её;
- придумать тест, на котором не работает программа при условии вдумчивого отношения студента к вопросам и ответам.
2.5. Направления использования ПГИИ в обучении преподавателем
В настоящее время автор планирует:
- для «проблемных» задач собирать и систематизировать «общение студентов с ПГИИ» (видеозапись и/или скрины диалога, результаты)
- по результатам анализа собранных материалов разработать методические рекомендации по работе с ПГИИ для решения учебных задач
- разработать рекомендации по обучению специальности «Оператор ПГИИ».
3. Заключение
В настоящей работе приведен обзор литературы по вводным курсам обучения программированию и проблемам и достижениями при использовании в этих курсах программ генеративного искусственного интеллекта. Далее приведен авторский опыт обучения программированию и использования программ генеративного искусственного интеллекта на факультете математики и технологий программирования Гомельского государственного университета им. Ф.Скорины. Автор считает, что в перспективе программы генеративного искусственного интеллекта могут существенно повысить персонализацию, а, следовательно, и качество обучения. Однако для этого требуется не только развитие самих программ, но корректировка методик в сторону подготовки студентов к обучению с помощью таких программ.