Почему я отдаю предпочтение обучению учащихся основам программирования средствами Scratch

СВЕТЛАНА ИВАНОВА
методист, Образовательный центр ПВТ
О среде программирования Scratch существуют самые расхожие мнения. Часть педагогов разделяет и горячо поддерживает посыл Митчела Резника, руководителя исследовательской группы Lifelong Kindergarten Массачусетского технологического института, которая создала среду программирования Scratch: «Для того, чтобы дети могли не только развивать свое мышление, но и иметь возможность самовыражаться и лучше осознать, кто они на самом деле, мы использовали 4 основных принципа при разработке Scratch: проекты, партнеры, увлеченность, игра». Подтверждением тому являются статьи из рубрики «Делимся опытом» в первом выпуске издания «Программирование в среде Scratch». Думаю, подобных статей мы еще увидим немало. В то же время есть мнение учителей информатики, которые занимаются подготовкой учащихся к республиканской олимпиаде по учебному предмету «Информатика». Это мнение звучит приблизительно следующим образом: «Как теперь организовывать подготовку учащихся к республиканской олимпиаде? Ведь налажена целая система подготовки учащихся, начиная с 5 класса, а то и с 4 класса. Кто же теперь придет на факультативные занятия по программированию на языке Pascal? Вы всех детей забрали на факультативные занятия по Scratch. Создаете открытки, какие-то анимированные истории. Одним словом, играетесь».
Но многие учителя информатики видят и преимущество среды программирования Scratch перед языком программирования PascalABC в обучении учащихся программированию на уроках информатики. Например, на портале Scratch.by в рубрике «Новости проекта» размещена статья «Scratch vs PascalABC», в которой Виктор Константинович Коховец, учитель информатики ГУО «Валищенская средняя школа» Пинского района, отвечает на вопрос «В чем преимущества Scratch в обучении информатике перед используемым сейчас PascalABC?».
В этом случае хочется вспомнить утверждение Сеймура Пейперта: «У языка программирования должен быть «низкий порог» (любой способен начать изучать этот язык) и «высокий потолок» (есть возможность со временем создавать сложные проекты). Кроме этого, у языков программирования должны быть «широкие стены» (язык программирования должен поддерживать различные проекты, так, чтобы люди с разными интересами могли вовлечься в процесс изучения языка). У меня создалось впечатление, что именно «низкий порог» среды Scratch спровоцировал ложные представления у части учителей информатики о ее потенциале. Приведу еще пример высказываний в адрес Scratch: «Как можно воспринимать среду Scratch серьезным стартом в развитии навыков алгоритмизации и программирования, если обучать Scratch могут учителя начальных классов?» А еще есть мнения, что максимум можно работать в Scratch до 4 класса, а потом надоедает и у детей пропадает интерес. Из бесед, к сожалению, зачастую становится очевидно, что интерес пропадает в первую очередь у учителя, а не у учащихся. Может, это происходит потому что не смогли рассмотреть «высокий потолок» или смущают «широкие стены»?
Попробуем взглянуть на среду Scratch как на средство обучения программированию. Обратимся к прогопедии – свободной энциклопедии языков программирования – и попробуем понять возможности среды Scratch в сравнении с некоторыми языками, пользующимися ныне популярностью при обучении школьников программированию.
Scratch был создан в качестве инструмента, который сделает программирование простым и интуитивно понятным. Его цель – позволить детям, у которых нет опыта программирования, изучить основные принципы императивного, объектно-ориентированного и многопоточного программирования.
Создан под влиянием Logo, Smalltalk.
Парадигмы, поддерживаемые Scratch (далее в скобках указаны языки, поддерживающие данную парадигму и находящиеся на слуху у учителей и у школьников):
· императивная: описывает процесс вычислений посредством описания управляющей логики программы, то есть в виде последовательности отдельных команд, которые должен выполнить компьютер. Каждая команда является инструкцией, изменяющей состояние программы (C, C#, C++, Java, PHP);
· на уровне значений: сосредотачивается на изучении типов данных, то есть значений и элементарных операций над ними, их структуры и свойств. Обычно элементарные операции образуют алгебру над пространством значений (C, C#, C++, Java, Pascal);
· объектно-ориентированная: каждый спрайт на самом деле является объектом со своими свойствами (переменными) и поведением (скриптами), и разные объекты могут взаимодействовать (C#, C++, Java, PHP);
· скалярная: низкоуровневая парадигма, диктующая отсутствие в языке матричных операций. Каждая операция применяется к отдельным скалярным величинам, но не ко всему массиву (C, C#, Java, Pascal);
· структурная (в низкоуровневом понимании): все программы конструируются из ограниченного набора элементов или блоков (C, C#, Pascal);
Типизация:
· динамическая: большая часть проверок типов данных выполняется на этапе выполнения программы, хотя некоторые проверки (например, проверка синтаксической корректности кода) выполняются на этапе компиляции. Кроме того, типы данных ассоциируются с конкретными значениями, а не с переменными (PHP, Python);
· неявная: не требует явного объявления типа для используемых переменных;
· типизированная: спецификация каждой операции включает в себя типы данных, которые могут быть аргументами этой операции, и запрещает применение этой операции ко всем остальным типам данных. (C, C#, C++, Java, Pascal).
Можем сделать вывод, что Scratch полностью оправдывает цель создания, а применение ограничивается образовательными и вызывающими интерес у учащихся задачами.
Нельзя проигнорировать и опыт работы. В свое время, работая учителем информатики, подготовку учащихся к олимпиадам по программированию я начинала с 5 класса, так как уже для учащихся 5-6 классов проводились районные и областные олимпиады по программированию на языке Pascal. Имеется и опыт проведения факультативных занятий для учащихся 2-4 классов «Творческая деятельность в среде программирования Scratch», а также для учащихся 5-6 классов «Создание компьютерных игр на языке визуального программирования Scratch». Предлагаю сравнить перечень знаний и умений учащихся 5-6 классов, достаточный для успешного участия в олимпиаде по программированию на языке Pascal, и перечень знаний и умений, приобретаемый в результате посещения факультативных занятий «Создание компьютерных игр на языке визуального программирования Scratch» для учащихся 5-6 классов (табл. 1).
|
В результате подготовки к районной и областной олимпиадам по программированию на языке Pascal (5-6 классы) |
В результате посещения факультативных занятий «Создание компьютерных игр на языке визуального программирования Scratch» для учащихся 5-6 классов |
Должны знать: |
|
+ |
понятие алгоритма |
+ |
+ |
структуру программы |
+ |
+ |
понятие переменной и типа переменной |
+ |
+ |
процедуры/блоки ввода и вывода данных |
+ |
+ |
арифметические операции |
+ |
+ |
оператор присваивания |
+ |
+ |
правила использования арифметических операций с целочисленными и вещественными переменными |
+ |
+ |
правила использования строкового типа данных |
- |
+ |
алгоритмические конструкции «следование», «цикл», «ветвление» |
+ |
+ |
простые и составные условия |
+ |
+ |
формат описания одномерного массива/ список |
+ |
+ |
понятия процедуры и функции |
- |
+ |
Должны уметь: |
|
|
владеть приемами записи арифметических выражений |
+ |
+ |
владеть приемами работы со строковым типом данных |
- |
+ |
использовать процедуры/блоки ввода-вывода |
+ |
+ |
использовать алгоритмические конструкции «следование», «цикл», «ветвление» для решения задач |
+ |
+ |
использовать простые и составные условия для решения задач |
+ |
+ |
вводить/выводить элементы массива |
|
+ |
выполнять основные действия над элементами массива |
|
+ |
выполнять поиск элементов с заданными свойствами |
+ |
+ |
использовать процедуры и функции |
|
+ |
Таблица 1.
Еще один вывод в пользу среды Scratch как средства обучения программированию: в результате посещения факультативных занятий «Создание компьютерных игр на языке визуального программирования Scratch» для учащихся 5-6 классов ребенок овладеет знаниями и умениями даже больше достаточного уровня для успешного участия в олимпиадах по программированию. Если говорить о специфике задач, решаемых в рамках подобных олимпиад, то приведу еще один пример. 15 мая 2018 года в г. Орше прошла Витебская областная олимпиада по программированию в среде Scratch для учащихся 5-6 классов, почетным гостем которой был Митчел Резник. Одним из организаторов олимпиады являлся факультет математики и информационных технологий ВГУ имени П.М. Машерова, а задания составляла заведующий кафедрой информатики и информационных технологий Алейникова Татьяна Григорьевна. Отмечу, что данную олимпиаду по программированию в среде Scratch отличает от большинства подобных олимпиад и конкурсов тип задач. Вот одна из них – задача «Банкомат».
В банкомате имеется достаточное количество купюр номиналами 50, 20, 10 и 5. Пользователь по запросу вводит сумму (не больше 500) и получает ее минимальным количеством купюр. Изображение купюр появляется на сцене, выдается сообщение пользователю. Предусмотрите обработку некорректного ввода запрашиваемой суммы.
Думаю, что все учителя информатики при подготовке учащихся к олимпиадам по программированию разных уровней решали с учащимися подобную задачу. Но в данном случае мало решить, решение задачи усложняется еще тем, что нужно ее и проиллюстрировать.
На олимпиадах по программированию на языке Pascal для 5-6 классов, как правило, не предлагаются задачи на обработку строкового типа данных. А в среде Scratch такие задачи решают. Вот еще одно задание Витебской областной олимпиады по программированию в среде Scratch. Задача «АБВ».
Разработайте проект, в котором введенный с клавиатуры пользователем текст отображается в виде бегущей по сцене строки. Используйте для отображения символов костюмы спрайта «Алфавит» (это русские буквы и пробел, другие символы отображаются пробелом).
Если во введенном тексте содержится слово Скретч, то после бегущей строки на сцене появляется поздравление «С днем рождения, Скретч».
Указание. Буквы алфавита сохранены в списке «алфавит», их изображения в том же порядке – в костюмах спрайта «Алфавит».
На мой взгляд, главным преимуществом решения задач в среде Scratch является возможность визуализировать результат. Тогда ребенку понятнее становится процесс решения задачи, ведь то, что ему приходится представлять, он видит на экране, что помогает учащемуся в создании формальной модели задачи. Именно создание формальной модели решения задачи сложно дается ребятам в этом возрасте.
Кроме того, Scratch предлагает мощный набор мультимедийных инструментов: стандартные блоки предоставляют множество графических и звуковых функций, а также возможность обработки сигналов с клавиатуры, мыши и сенсора. Поэтому хотелось бы отметить среду Scratch и как мощный инструмент обучения учащихся программированию через создание компьютерных игр. Пускай ребенку не нужно писать код руками, но, продумывая сложные алгоритмы и собирая блоки, он может создавать удивительные проекты. В зависимости от жанра игры нужно владеть специальными знаниями по математике, понимать физику происходящих процессов. Уровень сложности создаваемых учащимися компьютерных игр можно оценить, если на сайте scratch.mit.edu в строке поиска ввести названия игр на русском или на английском языках, например, пятнашки, тетрис, три в ряд, шахматы, платформер или ввести название вашей любимой игры. Убеждена, что после того как вы заглянете внутрь проекта, вы оцените среду программирования Scratch за возможность со временем создавать сложные проекты и за возможность создавать различные проекты, позволяющие учащимся с разными интересами вовлечься в процесс программирования.
Спустя месяц после своего визита в Беларусь Митчел Резник поделился своими впечатлениями об увиденном, вот одно из них:
«Преподаватели в Беларуси все еще ищут оптимальные способы внедрения программирования в школьную программу. В Минске я принял участие в круглом столе с учителями, чиновниками и исследователями в области образования. Одним из главных был спор вокруг «строгости» и «творчества». Некоторые участники считали, что школы должны сосредоточиться на дисциплинированном, строгом подходе к обучению основным навыкам и основным понятиям. Другие участники выступали за основанный на проектах подход, направленный на поощрение творческого мышления и творческого самовыражения. Я утверждал, что это ложная дихотомия: я считаю, что учащиеся могут и должны изучать основные навыки в ходе работы над творческими проектами. Полагаю, у учеников больше шансов хорошо усвоить основные понятия и навыки, пока они работают над проектами, которые им небезразличны и интересны».
Вывод: начать программировать в Scratch легко, а насколько будет «высок потолок» и «широки стены» – зависит от нас – учителей.