Большие языковые модели, способные работать в качестве ИИ-ассистента для программиста, уже стали обыденностью. Различные решения, специально адаптированные для генерации кода и поддержки программиста или предоставляющие такую возможность как часть общего функционала, постоянно совершенствуются и их количество растет.

Все шире звучат сообщения о процентах программного кода в компаниях, который был сгенерирован ИИ-ассистентом. Оценки этих сообщений сильно разнятся: от прогнозов о скором увольнении всех программистов до негативного отношения к сгенерированному программному коду. Как бы то ни было – ИИ-ассистент программиста существует и будет занимать свое повседневное место. Пока он не готов заменить человека, но свою пользу уже вносит. Эту пользу ощущают специалисты с опытом и могут правильно использовать как сгенерированные части, так и подсказки ИИ-ассистента.

Но что происходит с начинающими специалистами и со студентами? Велик соблазн взять и решить задачу задав один-два промпта. Тем более, когда эта задача на самые начальные знания. А потом решить задачу посложнее. И, в итоге, упереться в задачу, которую ИИ-ассистент уже не потянет, а своих навыков просто не сформируется.

Вплотную над вопросом интеграции ИИ-ассистента в образовательный процесс задумались в прошлом году, когда стало понятно, что студенты применяют подобные решения вне зависимости от пожел��ний преподавателя решать задачи самостоятельно. Значит надо этот процесс сделать управляемым, чтобы получить запланированный результат.

Задачу интеграции ИИ-ассистента в образовательный процесс прорабатывали не только с точки зрения представителей образования. В обсуждении сценариев внедрения принимали участие специалисты СБЕРа. Также СБЕР предоставил доступ к GigaCode, который и использовался для проведения эксперимента. Конечно, для внедрения в образовательный процесс, тем более на первых курсах, можно использовать любой ИИ-ассистент. Но когда он встроен в IDE и не требуется приобретать лицензии – это гораздо удобнее.

Формирование процесса применения ИИ-ассистента

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

Для первой попытки внедрения ИИ-ассистента в образовательный процесс выбрана дисциплина «Объектно-ориентированное программирование», которая направлена на освоение студентами обозначенной парадигмы программирования, а в качестве языка программирования для освоения практического материала используется C++. Дисциплину изучают студенты первого курса направления «Информационные системы и технологии».

Весь процесс обучения укрупнено можно разделить на 3 принципа:

  1. Основная часть программы дисциплины осталась традиционной.

  2. С начала семестра демонстрировались возможности ИИ-ассистента именно как ассистента: горячие подсказки, объяснение фрагментов кода, рефакторинг кода.

  3. На лабораторной работе после освоения ¾ учебного материала предложен ряд задач для решения с использованием ИИ-ассистента и собрана обратная связь.

На задачах следует остановиться подробнее, т.к. как раз часть задач направлены на понимание того, что генерация кода – это не решение всех проблем. Всего для решения предложено 7 задач:

Задача №1. Массивы – классическая задача на работу с массивами без дополнительных условий. Достаточно легко решается как самостоятельно, так и с использованием ИИ.

Задача №2. Оператор присваивания. Простая задача для решения самостоятельно. Но часть вариантов усложняется тем, что исходные данные заданы в виде рисунка и требуется вычислить площадь заштрихованной фигуры.

Задача №3. Условный оператор, классы. Одна из наиболее сложных задач из предлагаемого перечня. Исходные данные заданы в виде картинки с графиками. Каждая область картинки раскрашена по-разному, но цвет можно вычислить, восстановив функцию. Требуется определить для произвольной точки указанный цвет. Дополнительно задано какие классы должны быть в программе и какие функции.

Задача № 4. Вложенные циклы. Необходимо вывести в консоль разные фигуры из букв и символов.

Задача № 5. Списки. Простые задачи на списки, но класс списка и функции работы с ним необходимо разработать самостоятельно.

Задача №6. Массивы. Простые задачи, но класс массива и функции работы с ним необходимо разработать самостоятельно.

Задача №7. Рекурсия. Разного уровня задачи. Обязательное условие – наличие рекурсии.

Результаты глазами студентов

По результатам решения задач студентам предложили пройти опрос, который направлен на сбор обратной связи по впечатлениям от использования ИИ-ассистента программиста при решении задач, а также определению сложностей, возникших при генерации программного кода. В результате получены ответы от 115 студентов, которые решили задачи с использованием ассистента и прислали ответы.

В первую очередь все студенты отметили, что использовали «горячие» подсказки, которые предлагала IDEс ИИ-ассистентом, а также что все расширяли условия поставленных задач, а не только точное условие писали в промпт. Первый вопрос заключался в оценке общего удобства инструмента разработки (в качестве IDEпредложена VSCode плагином GigaCode). (здесь и далее представлен график плотности вероятности как наиболее презентабельный при таком количестве ответов)

Как видно из графика– большая часть опрошенных студентов положительно оценили удобство инструмента. Также был задан вопрос о соответствии результата запросу – то есть насколько ожидания от ответа совпадают с полученным ответом (очень субъективная оценка, но интересно узнать, что об этом думают студенты).

Фактически – получился очень похожий график, за исключением небольших изменений. То есть ожидания совпадают с результатом по мнению опрошенных студентов. А вот дальше студентам уже предстояло выбрать: какие задачи по их мнению оказались наиболее сложными, а какие наиболее простыми для решения именно с использованием ИИ-ассистента программиста. Вероятно, что для решения самостоятельно ответы могли распределиться и по-другому.

Как видно из диаграмм: наиболее простыми стали задачи № 1 (массивы), 2 (оператор присваивания), 4 (вложенные циклы), а наиболее сложными стали задачи № 3 (условный оператор, классы), 7 (рекурсия). Для понимания такого выбора в опросе предусмотрено поле с неформализованным текстовым ответом.

И вот основные причины такого распределения простых задач:

  • простые задачи (массивы и вложенные циклы) легко решаются с помощью ИИ-ассистента;

  • простые задачи хорошо структурированы и имеют множество примеров в обучающих данных ИИ.

Все ожидаемо и понятно. Даже по заданию исходного условия без пояснений ИИ-ассистент вполне хорошо решит простые задачи. Среди основных причин почему задачи 3 и 7 выбраны наиболее сложными можно выделить:

  • сложные задачи требуют глубокого понимания работы с функциями;

  • задачи с условной логикой требовали дополнительной проверки и ручного уточнения;

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

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

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

Есть некоторые ожидания что программистов заменят полностью. Но большая масса склоняется к мнению, что такой сценарий маловероятен (и сегодняшние первокурсники будут востребованы через 3 года😊

Дальнейшие шаги

Наша первая попытка внедрения ИИ-ассистента в образовательный процесс показала, что это правильный путь. Не надо бороться новшествами – надо их правильно применять. Разумеется, необходима более глубокая и детальная проработка внедрения ИИ-ассистентов в образовательный процесс. В осеннем семестре также рассмотрим возможности применения в других дисциплинах и на старших курсах. Говорить о полном подтверждении гипотезы рано, поскольку понять, что инструмент имеет ограничения и пользоваться в соответствии с ограничениями это разные вещи.

Также в следующем семестре будем внедрять ИИ-ассистента программиста при обучении студентов не ИТ-специальностей. Попробуем обучить решению рутинных задач без помощи программиста – переложить/переименовать/переместить множество файлов, обработать табличные файлы, провести анализ документов и т.д.

 Из интересных комментариев студентов – после подбадривания в виде «ты сможешь это решить», «у тебя получиться» ассистент генерировал более качественное решение.

Немного о себе

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