Конструктивизм в обучении. Планирование занятий с помощью PRIMM-технологии
Содержание конструктивистской теории обучения
Конструктивизм базируется на идее активного участия ученика в процессе обучения. Учащийся строит умственную модель окружающего мира, осмысливает и добавляет новую информацию к уже изученным фактам. Каждый ученик приходит в класс с собственным опытом и будет конструировать новые знания на его основе.
Конструктивизм базируется на следующих принципах1.
- Конструирование знаний. Новые знания создаются на основе существующих. Ученик, кирпичик за кирпичиком, выстраивает новые знания своим уникальным, отличным от остальных, путём. Существующие знания, опыт, убеждения - всё влияет на процесс строительства.
- Обучение - активный процесс. Учёба подразумевает взаимодействие с окружающим миром. Пассивное восприятие информации не даст тех же результатов, что и живая беседа, дискуссия или выполнение практического задания.
- Обучение - социальный процесс. Общение с учителями, родителями и сверстниками формирует опыт, который затем окажет влияние на процесс обучения. Социальное взаимодействие способствует обучению, а изоляция - нет. Поэтому так важны групповые формы работы и взаимодействие учеников друг с другом.
- Контекст важен. Изучаемые факты, теории и формулы не существуют сами по себе в изоляции от окружающей нас действительности. Вещи, которые мы изучаем и запоминаем, связаны с тем, что окружает нас в повседневной жизни.
- Мотивация - ключ к обучению. Без мотивации обучение почти невозможно. Преподавателю необходимо увлечь учеников новой темой, чтобы они обратились к своему существующему опыту и знаниям. Они послужат основой для новой информации.
Одной теории определённо не достаточно, чтобы ответить на важный вопрос: каким образом использовать её на практике?
Вот четыре ключевых элемента урока, построенного с учётом теории конструктивизма:
- учитель выступает скорее в роли координатора нежели человека единогласно руководящего образовательным процессом;
- учитель и ученики обладают как равными полномочиями так и равной ответственностью за организацию эффективной работы;
- обучение происходит в малых группах;
- учитель и учащиеся делятся знаниями между собой.
Практические задания на уроке делятся на три категории:
- ученик знает как их решить;
- ученик может решить задачу, но ему нужна помощь учителя;
- ученик не знает как решить задачу.
Первый тип задач не продвинет понимание темы и нужен для закрепления изученного. Задачи последнего типа скорее вредны, так как вызовут лишь фрустрацию и потерю мотивации. Оптимальными для обучения будут задачи второго типа.
Рассчитывать на одну лишь способность самостоятельно сделать открытие не стоит. Задания должны быть сконструированы так, чтобы ученик мог справиться с ними либо самостоятельно, либо при поддержке преподавателя. В последнем случае учащийся будет находится в зоне ближайшего развития2. С помощью практики и обратной связи, учащийся научится решать такие задачи самостоятельно и расширит зону ближайшего развития. Это подготовит его к решению новых и более сложных задач.
Перейдём к тому, как перечисленные выше теории применить на занятиях по программированию. В публикациях можно встретить следующий тезис: сначала ученики должны научиться читать код, и только потом писать его 3. Примерами заданий на чтения кода можно назвать трассировку и проработанные примеры. Полезными будут те задания, в которых учащиеся встречают часто применяемые паттерны и конструкций - подсчёт количества элементов подходящих под условие, нахождение суммы и произведения, и другие. Получив в своё распоряжение библиотеку таких шаблонов, им будет проще писать собственные программы.
Идеи конструктивизма нашли своё применение в области образовательной робототехники и программирования4. Рассмотрим подход к планированию занятия, который объединяет перечисленные выше идеи.
Структура PRIMM-занятия
Вот пять стадий урока:
- Предсказать (Predict),
- Запустить (Run),
- Изучить (Investigate),
- Модифицировать (Modify),
- Создать (Make).
Как видно, своё название методика получила по первым буквам названий этапов. Рассмотрим каждый из них подробнее5.
Предсказать
Учащимся даётся готовая программа либо в распечатанном виде либо демонстрируется через проектор. Учащиеся обсуждают в группах или парах, каким будет результат работы программы. На этом этапе важен результат выполнения программы а не то, как он достигается. Сейчас учащиеся опираются на существующие знания и опыт. Результат работы программы либо зарисовывается, либо записывается на бумаге. По необходимости, ученикам даются примеры входных данных.
Пример
Какую фигуру нарисует программа:
from turtle import * def mystery(): fillcolor("Green") begin_fill() pencolor("Red") forward (100) right (90) end_fill() forward (100) right (90) forward (100) right (90) forward (100) mystery()
Свой ответ нарисуйте6.
Запустить
Ученики запускают программу на своих компьютерах и проверяют, насколько точными были их предсказания. Вместе с учителем, обсуждают результат запуска программы. В этот момент и может возникнуть диссонанс между ожидаемым и реальным результатами, что создаст внутреннюю мотивацию разобраться в причине такого разногласия.
Важно! Ученики не набирают код программы, а запускают предоставленный учителем файл. Использование готовой программы на первых этапах занятия снимает с учащихся страх чистого листа - необходимости писать код самостоятельно, начиная с пустого окна редактора кода. Постепенно, в ходе занятия, код программы из чужого превращается в свой.
Изучить
Преподаватель даёт ученикам задания с помощью которых они подробнее изучают код программы через трассировку выполнения, объяснение работы отдельных строк кода, расстановку комментариев, указание на очевидные ошибки в коде.
Вопросы на понимание кода программы можно построить воспользовавшись блочной моделью.
Обсуждение происходит в малой группе или в парах. Такая форма работы помогает достичь следующего:
- говоря о программе вслух, учащемуся необходимо использовать правильную терминологию, которая должна быть понятна всем участникам обсуждения;
- проговаривание вслух сложных моментов помогает сосредоточится на отдельных элементах программы и не спешить;
- во время диалога учащиеся задают вопросы и ищут ответы, помогаю друг-другу обмениваться знаниями.
Пример
Ответьте на следующие вопросы
- Что означает число
90
в командеright(90)
?- Для чего нужна команда
forward(100)
?- Что произойдёт, если команду
right(90)
заменить наright(45)
?- Для чего используется служебное слово
def
?
Задания данного этапа подталкивают учащихся к самостоятельному изучению кода.
Модифицировать
Учащиеся редактирует программу-пример, чтобы добавить новые функции. Каждое следующее задание должно быть сложнее предыдущего. Не обязательно требовать добавить новую функцию. Условие задания может подразумевать исправление синтаксических и семантических ошибок, улучшение читаемости кода (расстановка отступов, изменение имён переменных).
Пример
Переименуй функцию
mystery()
вsquare()
. Измени цвет контура и заливки фигуры. Увеличь длину стороны квадрата.Создай функцию
triangle()
на основе функцииsquare()
.
Создать
Учащиеся создают программу с нуля для решения новой задачи. Для этого они использует те же алгоритмические конструкции и функции, что встречались в примере.
Пример
Создай функцию
circle()
, и нарисуй два круга, один внутри другого.Нарисуй фигуру:
PRIMM - методика структурирования занятий по программированию. Она фокусируется на чтении кода перед его написанием, совместном обсуждении и сокращении когнитивной нагрузки на учащихся за счёт изучения структуры программы на разных уровнях - от переменных до фрагментов кода.
Одно занятие не обязательно должно состоять из всех перечисленных выше этапов. На некоторых из них можно остановиться подробнее.
Сноски
Некоторая теория взята из этого блога и сайта-первоисточника.↩︎
Теория социального конструктивизма предложена советским психологом Львом Семёновичем Выготским.↩︎
Orna Muller, David Ginat, and Bruria Haberman: “Pattern-Oriented Instruction and Its Influence on Problem Decomposition and Solution Construction”. In 2007 Technical Symposium on Computer Science Education (SIGCSE’07), 2007, doi:10.1145/1268784.1268830.↩︎
Использование теории конструктивизма в робототехнике и программировании широко популяризировались Сеймуром Пейпертом, автором книги Mindstorms. В ней описывается учебный язык программирования Logo. Кстати, платформа Lego Mindstorms получила своё название благодаря этой книге.↩︎
Примеры PRIMM-уроков взял на этом сайте.↩︎