Anatoly Levenchuk (ailev) wrote,
Anatoly Levenchuk
ailev

ПитонМир

Комплект Учебных МИРов (именно так расшифровывается КуМир) вполне можно сделать на Питоне, если использовать IPython (http://ipython.org/) с его Notebook-как-в-Mathematica. Задачи курса Кириенко (на Ершоле -- http://server.179.ru/wiki/?page=DenisKirienko/Kumir) нужно однократно переписать в питоновский синтаксис, встроив в тетради, а обстановки оттуда тоже опять же однократно перекодировать в тетради один-в-один, поместив рядом с задачами. Как я понимаю, это примерно на день-два программистской работы (как я понимаю, именно это и предлагал otstavnov -- но переписка на голый Питон, которую предполагал Максим даёт совсем другое качество, нежели переписка для тетрадок-в-браузере из IPython).

В IPython затем можно вставить и исполнителя "настоящий робот Lego" (например, http://code.google.com/p/nxt-python/), чтобы повторить курс робототехники (об образовательных ступеньках в информатике для малолеток -- http://ailev.livejournal.com/1022791.html, о робототехнике в этих ступеньках -- http://ailev.livejournal.com/1023159.html).

После кавалерийского наскока и реализации исполнителя-с-обстановкой, нужно наладить ещё парочку-троечку фич:
-- автоматизированную проверку решения задачи (чтобы одновременно код ученика был протестирован на множестве обстановок). Это уже есть в КуМире 1.9.
-- редактор обстановок (чтобы ученик мог представить обстановки, обучаясь TDD -- то есть обучаясь предусматривать разные хитрые комбинации входных условий). Это уже есть в КуМире 1.9 -- но по факту не используется (кроме как учителями при создании курсов).
-- антураж от edutainment (снимающиеся замочки с условий задач, анимация праздничного перехода от урока к уроку наподобие перехода к очередному уровню игры, музыкальное сопровождение, параметризованное тем, что происходит с решением задачи)
-- систему анализа кода, которая как даёт советы по повышению качества кода, так и генерирует дополнительные вспомогательные упражнения для непонимаемых дитяткой концептов, а также дополнительные закрепляющие упражнения, если уровень усвоения оказывается небольшим.

Тут нужно отметить, что обстановки в КуМире -- это тесты. И работа ученика -- это Test Driven Development. Поэтому есть два варианта:
-- начальный, когда тесты разрабатываются учителем (для одной обстановки обычно делается от четырёх до четырнадцати тестов), а ученик разрабатывает только код программы. Проверка решения задачи для каждой обстановки из их набора делается компьютером.
-- продвинутый, когда тесты нужно разработать ученику самостоятельно, и только потом разработать код (хотя мне не очень понятно, как эту разработку тестов можно автоматизировать).

ПиктоМир и КуМир при этом являются только ступеньками к ПитонМиру. ПитонМир же полностью уже будет поддерживать exploration computing, в котором накопленный опыт (например, решаемые в курсе программирования задачи и их данные) может фиксироваться за счёт Notebooks, и с этим опытом даже возможна коллаборация (например, передача решения задач от ученика учителю, и даже коллективная работа примерно по таким же принципам, как в GoogleDoc, и даже организация "облачного ПитонМира" через сервисы типа https://notebookcloud.appspot.com/docs).

Это всё некоторые изводы exploratory computing, или interactive computing на Питоне, я чуть подробней эту тему поднимал в http://dot15926.livejournal.com/34506.html. Тут я просто развернул это в сторону поддержки учебных курсов, ибо учебные упражнения -- это exploratory computing, ученики исследуют предметную область, но со слегка смещёнными в нашем случае акцентами. В курсе Кириенко для начинающих не столько исследуется, как ведут себя опосредующие изучаемую предметную область исполнители, сколько исследуется сам язык программирования. Но вот для курса робототехники уже исследуется не столько язык программирования, сколько при его помощи предметная область робототехники в части автоматического регулирования -- все эти датчики-эффекторы и связывающие их алгоритмы автоматического регулирования.

Чтобы затем двинуть по этой линии embedded systems и численной математики с глубоким заходом в физику, можно потом переходить уже с чистого IPython с простыми исполнителями в изобилующие поддержкой решения математических задач https://github.com/cwsoft/cwsoft-WSPPDE (система для программирования математических задач на Питоне) или даже http://sagemath.org/ (которая соревнуется как с Matlab, так и с Mathematica -- но вместо особых языков этих систем используется просто Питон). После курсов ПитонМира эти навороченные системы уже не должны выглядеть запредельно сложными и непонятными для дитяток.

Напоследок замечу, что в Сети сейчас активно обсуждается текст Bret Victor про компьютерное обучение (http://worrydream.com/LearnableProgramming/), но мне представляется много более важным проект LightTable от Chris Granger (я писал о нём в апреле -- http://ailev.livejournal.com/996889.html) и тот факт, что они там собрали более $300000 (http://www.kickstarter.com/projects/ibdknox/light-table), что означает включение Питона в состав поддерживаемых там языков. Именно Chris Granger делал примеры сред программирования для Bret Victor, и этот Light Table является продолжением и развитием тамошних идей (и развитие этих идей продолжается, см. свежий постинг о современном программировании как многоуровневом абстрагировании в блоге Chris Granger: http://www.chris-granger.com/). Через полгода-год можно будет разбираться, правильно ли делать ПитонМир на базе IPython, или же на базе Light Table. Но пока проект ПитонМира как реализацию курсов с исполнителями "нарисованный Робот" и "робот Lego" с тетрадным интерфейсом (что заодно институализирует идею формализованного "учебного курса" с упражнениями).
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 15 comments