Среда программирования для обучения детей концепциям программирования

Я ищу автономное приложение, которое могло бы помочь в обучении основным понятиям программирования для учащихся 4-х классов (9-10 лет).

ПРИМЕЧАНИЕ. Я ищу реальное приложение, которое помогло бы обучать их циклам, условной логике и т. д. веселым и интерактивным способом. Я инженер-компьютерщик и знаю Python, Ruby, Perl и C среди других языков, и очень хорошо мог бы научить их одному из этих языков, но я хотел научить их больше концепциям, а не тому, как программировать на языке программирования X. .

Я нашел, но никогда не использовал ни один из следующих пакетов:

свободно

коммерческий

бесплатное и коммерческое веб-приложение

Как видите, выбор огромен (это то, что я нашел за ~30 минут поиска). Что из этого лучше всего подходит для того, чтобы оттолкнуть моих детей от земли и заинтересовать в том, чтобы стать кодовыми обезьянами?

Требования:

  • Должен обучать понятиям, а не быть специфичным для языка
  • Должен быть интерактивным
  • Коммерческий или открытый исходный код является приемлемым
  • Должен работать в Linux (предпочтительно Ubuntu или Fedora)

использованная литература

Ответы (5)

Я собираюсь порекомендовать Scratch . Scratch — это бесплатная программа, специально разработанная для того, чтобы делать то, что вы ищете: простым способом обучать детей концепциям программирования, не заставляя их беспокоиться об изучении синтаксиса.

Scratch запрограммирован в интерфейсе перетаскивания. Все команды имеют цветовую маркировку по типу и имеют форму, позволяющую соединяться вместе, как блоки Lego. Это позволяет детям легко понять, что куда идет.

Когда вы запускаете Scratch, вам дается простой спрайт, и вы можете написать код для работы с этим спрайтом. Вот пример очень простой программы:

простая скретч-программа

Команды управления выделены желтым цветом, команды движения — синим, звуковые команды — фиолетовым, операторы — зеленым, а переменные — оранжевым. Форма команд говорит вам, куда они идут. События идут вверху, а команды, которые что-то делают, идут ниже. Операторы сравнения и переменные сформированы особым образом, чтобы было легко понять, что куда идет.

Даже с помощью простой программы, подобной той, которую я показал здесь, дети могут узнать о переменных, событиях, условных выражениях, сравнениях, инициализации и т. д. Мои дети немного моложе, чем официально рекомендованный Scratch возраст от 8 до 16 лет, но даже им было весело переставлять команды вокруг и наблюдение за спрайтом делают разные вещи. Это вдохновляет на эксперименты.

В Scratch также есть онлайн-сообщество, где дети могут делиться своими программами и загружать программы, написанные другими.

Ваши требования:

  • Scratch обучает концепциям, не обучая синтаксису.
  • Это интерактивно. Как только вы перетащите команду в окно осмысленным образом, она станет активной.
  • Это бесплатно и с открытым исходным кодом.
  • Он доступен в виде веб-приложения или настольного приложения для Linux, Windows или OS X.
Это то, что я бы рекомендовал. Учебники и примеры на веб-сайте Scratch довольно хороши, и они блестяще показывают основы, такие как циклы.
Scratch не будет работать на iPad, так как для него требуется флэш-память. Версия HTML5 , по-видимому, находится в стадии разработки, но сроки кажутся неопределенными.
Я никогда не видел это в переводе. Моя проблема в том, что дети, которых я учу, умеют читать, но не понимают по-английски.
@ThomasWeller Онлайн-версия Scratch доступна на 50 языках , включая немецкий. Чтобы переключить язык, откройте свой проект Scratch и щелкните значок земного шара в верхнем левом углу.
@rossmcm Scratch 3.0 не использует Flash.

Greenfoot , Scratch и Codecademy — хорошие варианты. Это действительно зависит от того, насколько продвинуты ваши ученики.

Scratch хорош для юных студентов, которые впервые начинают заниматься программированием. Он учит базовым концепциям программирования простым, блочным способом. Его можно использовать для относительно простого создания почти любого типа 2D-проекта. Хотя скретч прост и менее страшен, чем код для начинающих программистов, он также немного далек от реального программирования и не учит так много основных концепций программирования, как мог бы. Например, он не включает циклы for, а пользовательские блоки ограничены командными блоками (в отличие от числовых/строчных и условных (логических) отчетов. Такая проблема возникает из-за желания рабочей группы упростить все для начинающих. Это может быть хорошо, или это может привести к тому, что студент будет программировать циклы for с переменной подсчета вручную, пока не будет исправлено.

greenfoot.com/обзор:

Greenfoot обучает объектной ориентации с помощью Java. Создавайте «актеров», которые живут в «мирах», для создания игр, симуляций и других графических программ.

Greenfoot является визуальным и интерактивным. Инструменты визуализации и взаимодействия встроены в среду.

Актеры программируются в стандартном текстовом коде Java, обеспечивая сочетание опыта программирования на традиционном текстовом языке с визуальным исполнением.

Я рекомендую Greenfoot начинающим программистам старшего возраста, которые не боятся кода.

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

Вы также можете попробовать Netlogo - это скорее среда моделирования и на самом деле довольно продвинутая. Однако простые модели содержат мало элементов графического интерфейса и очень мало строк кода. Это бесплатно и, вероятно, с открытым исходным кодом. Нужна Ява.

Простые модели можно использовать для объяснения детям. А Netlogo уделяет особое внимание документации. Недостатком является то, что учитель должен быть опытным пользователем Netlogo (чтобы избежать более сложных функций).

Еще одним достойным внимания примером является Racket (в частности, диалект Racket для начинающих студентов) и сопутствующая инициатива How To Design Programs HTDP . Сын Джона Кармака запрограммировал 40-уровневую прыгающую игру Fly in Racket, когда ему было 10 лет в 2015 году, но Джону не нравились учебные материалы HTDP.

Я бы использовал инструмент, который используется в реальной жизни, а не то, что было создано для обучения.

Почему бы не использовать PyCharm в качестве IDE и очень простого базового примера?

В качестве основного примера я предлагаю:

Распечатайте «hello world» 100 000 раз. Детям это нравится. Творческие ученики могут изменить «привет, мир» на «моя сестра раздражает». А затем был создан один фундаментальный строительный блок: им весело.

Если вы избегаете печатать новую строку, то экран начинает забавно трястись. Это дает субъективное впечатление, что там бывает много :-)

import sys
for i in range(1000000):
    sys.stdout.write('hello world. ')

Следующей вещью, которую нужно обнаружить, может быть бесконечный цикл и то, как его закончить.

С одной стороны, Python очень прост и хорош для детей и школьников. Утиный набор текста, например, полезен для детей. Но есть __init__(self)и if __name__ =="__main__"куча вещей, которые действительно сложно объяснить.
@ThomasWeller - Но вам не нужно обучать этим функциям в самом начале, если вообще когда-либо. Многие люди используют Python в качестве языка сценариев системного администрирования, и им никогда не приходится использовать эти функции. Кроме того, ваш аргумент может быть одинаково применим практически к любому языку программирования.
Мне интересно, почему вы начали бы с import sysклассического , а не использовали его print. Мы говорим о новичках, верно? (Черт возьми, я использую Python много лет, в том числе на работе, и никогда не использовал sys.stdout.write. Никогда.)
@ThomasWeller да if __name__ =="__main__", это трудно объяснить. Но дети учатся лучше, чем взрослые. Вначале достаточно простого «как есть».
@JohnY Я использую sys.stdout.write(), чтобы избежать новой строки, которая выдается функцией print(). Причудливое дрожание экрана происходит только в том случае, если вы опускаете новую строку.
Вы пытаетесь сделать эффект «дрожания экрана» сюрпризом (чтобы проверить интуицию новичка в отношении новых строк) или просто думаете, что это самый простой способ сделать это намеренно? Потому что, если вам все равно, будет ли это сюрпризом, то «предполагаемый» способ достижения эффекта — это print('hello world. ', end=''). Я предполагаю, что это спорно, является ли это более удобным для новичков, чем импорт и вызов метода. Но, как вы говорите, они должны быть в состоянии принять «все как есть». Поэтому я думаю, что вы могли бы также научить их print, поскольку это гораздо более распространенная функция.
@JohnY Я понятия не имею. Я просто вспоминал, что я делал во время моего первого контакта с компьютером (C64 и BASIC). Было забавно видеть, как экран «трясется» и печатает одно и то же снова и снова.

Я хотел бы порекомендовать модуль Python LOGO - черепаха (часть стандартной библиотеки и, следовательно, предварительно установленная в большинстве дистрибутивов Linux). Я полагаю, что он лучше всего подходит для детей постарше, но (на мой взгляд) он гораздо приятнее, чем скретч и тому подобное, поскольку это настоящий язык программирования. После обучения основам программирования с использованием Turtle вы, естественно, можете перейти к использованию других библиотек в Python (и т. д. , Cherpy для веб-разработки).

Например, вот два известных мне урока, которые используются для мастер-классов по черепахам: