Программирование в школе

Aug 15, 2007 10:04

Я тут ввязался в полемику на тему сабжа тут и тут. Наваял что-то даже...

Цели данного поста:
1. букмарк интересной мне темы (и сохранение текста, который может быть кому-то полезен)
2. приглашение всем заинтересованным лицам

Тема там реально заявлена ширше - "информатика" и все такое в приложении к школьному образованию.


Предложение программы факультатива по программированию
Для первоклашек (1..3) - ИГРЫ! Программируемые. Например, классический “удав”, но с возможностью управлять змейкой при помощи предварительно записанных команд (допустим, нужно проползти через лабиринт или нарисовать змейкой некую фигуру). Добавить средства отладки (пусть, хотя бы текущая команда подсвечивается, что ли). Добавить “мультиплей” - кто быстрее доползет. Добавить [простейшие] условия - чтобы змейка могла “сама” выбрать, скажем, обход препятствия (ЕСЛИ впередиКирпич ТО направо). Комментарии. Добавить процедуры, как именованные группы команд. Язык, понятно, с русскоязычными конструкциями. Плавно переходим к чему-нибудь типа “Рапиры”.

Цель: знакомство с ЭВМ, как с программируемым инструментом; создание навыков формализации задачи; создание навыка алгоритмизации; создание навыка отображения алгоритма в программный код; создание [примитивного] навыка отладки программы.

Развитие навыков (4..5): “Линейные” программы. Программы с условиями (периметр треугольника уже можно, вроде?). Циклические конструкции. Структура программы (начать - “явочным путем”, типа “делай как я”, затем - озвучить). Процедурное программирование. Нисходящая разработка. Комментарии, мнемонические идентификаторы. Отладочная печать.

Цель: развитие полученных навыков; вербализация и перевод на сознательный уровень отдельных понятий: донесение до голов простой мысли: программы пишутся для людей, а не для компьютеров!; создание навыка проектирования программ.

“Среднеклассники” (7..9, появился иняз): Введение в структуры данных: массивы и записи, списки, стеки-очереди-деки, деревья. Восходящее проектирование. Введение в язык Python (напрягаемся, вспоминаем аглицкий). Решение математических задач сначала “так”, а потом - с использованием специализированных пакетов (типа Numeric Python). Рекурсия. Модульный подход к программированию. Повторное использование кода. Отображение структур данных в языковые конструкции. Неявное обращение к элементам ООП (ну, там, вызовы методов “через точку”; что? похоже на разыменования поля записи-структуры? кто сказал? пять баллов!). Элементы функционального программирования (вот у нас список есть… а в списке-то и функции тоже - и результат опять список; а вот - и без всяких списков… что? на математике F(G(x),y) тоже проходили? это - хорошо…). Разработка графических приложений (да, визуализация графика синуса, блин! и “графическое” решение уравнений) при помощи соответствующий пакетов (я не про Фотошоп! а про PIL, PyMagic и PyIMG - привет рисующей “змейке”!).

Цель: развитие полученных навыков; вербализация и перевод на сознательный уровень большинства понятий; создание навыка выбора метода проектирования программ; создание навыка выбора подхода к программированию; знакомство с “машинной графикой”.

“Выпускники” (9…): ООП (ну, куда ж без него нынче). “Продвинутые конструкции” - обработка исключений, финализация. “А еще есть такой оператор - GOTO!”. Обработка текста - разбор лексический, разбор синтаксический, регулярные выражения (может, про грамматики рассказать?), генерация и преобразование (из линейного списка учеников выбрать тех, у кого мобила от “Билайна”). Сортировка и поиск (решить ту же задачу, но на деревьях, скажем, и в масштабе всей параллели - сравнить производительность). Понятие алгоритмической сложности. Кто выжил - добить РЕФАЛом и декларативным программированием (задача - написать транслятор арифметических выражений в “машинный код” в виде вызовов процедур типа do_add(x,y), do_mul(x,y), …). Понятие архитектуры ЭВМ и элементы ассемблера (теперь уже - пофиг какого!). Написание “низкоуровневой” программы для вывода символов на экран и чтения ввода с клавиатуры через функции BIOS. Сети ЭВМ. Модели сетей. Идея сетевого взаимодействия. Доступ к общим ресурсам. Блокировки. “Чья программа самая главная?”. Программирование сетевых взаимодействий в модели “клиент-сервер”. И т.д. и т.п.

Цель: научить молодого человека ПРОГРАММИРОВАТЬ.

Лицензия на данный текст: CC: BY/SA

программирование, преподавание, инфо, школа

Previous post Next post
Up