Конструктивизм в обучении. Планирование занятий с помощью PRIMM-технологии

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

3 ноября 2023 г.

Содержание конструктивистской теории обучения

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

Конструктивизм базируется на следующих принципах1.

  • Конструирование знаний. Новые знания создаются на основе существующих. Ученик, кирпичик за кирпичиком, выстраивает новые знания своим уникальным, отличным от остальных, путём. Существующие знания, опыт, убеждения - всё влияет на процесс строительства.
  • Обучение - активный процесс. Учёба подразумевает взаимодействие с окружающим миром. Пассивное восприятие информации не даст тех же результатов, что и живая беседа, дискуссия или выполнение практического задания.
  • Обучение - социальный процесс. Общение с учителями, родителями и сверстниками формирует опыт, который затем окажет влияние на процесс обучения. Социальное взаимодействие способствует обучению, а изоляция - нет. Поэтому так важны групповые формы работы и взаимодействие учеников друг с другом.
  • Контекст важен. Изучаемые факты, теории и формулы не существуют сами по себе в изоляции от окружающей нас действительности. Вещи, которые мы изучаем и запоминаем, связаны с тем, что окружает нас в повседневной жизни.
  • Мотивация - ключ к обучению. Без мотивации обучение почти невозможно. Преподавателю необходимо увлечь учеников новой темой, чтобы они обратились к своему существующему опыту и знаниям. Они послужат основой для новой информации.

Одной теории определённо не достаточно, чтобы ответить на важный вопрос: каким образом использовать её на практике?

Вот четыре ключевых элемента урока, построенного с учётом теории конструктивизма:

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

Практические задания на уроке делятся на три категории:

  • ученик знает как их решить;
  • ученик может решить задачу, но ему нужна помощь учителя;
  • ученик не знает как решить задачу.

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

Рассчитывать на одну лишь способность самостоятельно сделать открытие не стоит. Задания должны быть сконструированы так, чтобы ученик мог справиться с ними либо самостоятельно, либо при поддержке преподавателя. В последнем случае учащийся будет находится в зоне ближайшего развития2. С помощью практики и обратной связи, учащийся научится решать такие задачи самостоятельно и расширит зону ближайшего развития. Это подготовит его к решению новых и более сложных задач.

Со временем ученик, с помощью учителя, увеличивает свою зону ближайшего развития

Со временем ученик, с помощью учителя, увеличивает свою зону ближайшего развития

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

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

Структура PRIMM-занятия

Вот пять стадий урока:

  1. Предсказать (Predict),
  2. Запустить (Run),
  3. Изучить (Investigate),
  4. Модифицировать (Modify),
  5. Создать (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.

Запустить

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

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

Изучить

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

Вопросы на понимание кода программы можно построить воспользовавшись блочной моделью.

Обсуждение происходит в малой группе или в парах. Такая форма работы помогает достичь следующего:

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

Пример

Ответьте на следующие вопросы

  1. Что означает число 90 в команде right(90)?
  2. Для чего нужна команда forward(100)?
  3. Что произойдёт, если команду right(90) заменить на right(45)?
  4. Для чего используется служебное слово def?

Задания данного этапа подталкивают учащихся к самостоятельному изучению кода.

Модифицировать

Учащиеся редактирует программу-пример, чтобы добавить новые функции. Каждое следующее задание должно быть сложнее предыдущего. Не обязательно требовать добавить новую функцию. Условие задания может подразумевать исправление синтаксических и семантических ошибок, улучшение читаемости кода (расстановка отступов, изменение имён переменных).

Пример

Переименуй функцию mystery() в square(). Измени цвет контура и заливки фигуры. Увеличь длину стороны квадрата.

Создай функцию triangle() на основе функции square().

Создать

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

Пример

Создай функцию circle(), и нарисуй два круга, один внутри другого.

Нарисуй фигуру:


PRIMM - методика структурирования занятий по программированию. Она фокусируется на чтении кода перед его написанием, совместном обсуждении и сокращении когнитивной нагрузки на учащихся за счёт изучения структуры программы на разных уровнях - от переменных до фрагментов кода.

Одно занятие не обязательно должно состоять из всех перечисленных выше этапов. На некоторых из них можно остановиться подробнее.

Сноски

  1. Некоторая теория взята из этого блога и сайта-первоисточника.↩︎

  2. Теория социального конструктивизма предложена советским психологом Львом Семёновичем Выготским.↩︎

  3. 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.↩︎

  4. Использование теории конструктивизма в робототехнике и программировании широко популяризировались Сеймуром Пейпертом, автором книги Mindstorms. В ней описывается учебный язык программирования Logo. Кстати, платформа Lego Mindstorms получила своё название благодаря этой книге.↩︎

  5. Using PRIMM to structure programming lessons↩︎

  6. Примеры PRIMM-уроков взял на этом сайте.↩︎