Jump to content

ПрограммаПоДизайну

Проект ProgramByDesign TeachScheme (ранее ! ) — это информационно-просветительская работа исследовательской группы PLT . Цель состоит в том, чтобы обучить преподавателей колледжей, учителей старших классов и, возможно, даже учителей средних школ программированию и информатике .

История [ править ]

Матиас Феллейзен и PLT начали эту работу в январе 1995 года, на следующий день после Симпозиума по принципам языков программирования (POPL), в ответ на наблюдения Феллейзена за студентами-первокурсниками Университета Райса и учебной программой по алгебре в местных государственных школах. Его цель заключалась в том, чтобы использовать функциональное программирование , чтобы оживить математику и помочь внедрить знания о дизайне во вводную программу по информатике .

Усилия начались с использования языка программирования который был версией языка Scheme , который является диалектом Lisp под названием PLT Scheme , .

Группа собрала средства от нескольких частных фондов , Министерства образования США и Национального научного фонда для создания:

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

За десять лет он провел несколько десятков недельных обучающих семинаров для примерно 550 учителей. В 2005 году программа TeachScheme! Проект провел Юбилейный мастер-класс, на котором два десятка преподавателей представили ученикам свои работы.

В 2010 году PLT переименовала свой основной язык программирования с PLT Scheme на Racket , а DrScheme — на DrRacket . Чуть позже он был переименован в TeachScheme! в ProgramByDesign .

Функциональное программирование, вычисления и алгебра [ править ]

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

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

Вот пример:

(require 2htdp/universe)
(require 2htdp/image)

;; create an image from the current time
(define (create-image t)
   (place-image APPLE 50 (* 1/10 t t) SPACE))

;; names for basic images
(define APPLE (circle 3 "solid" "red"))
(define SPACE (empty-scene 100 100))

(animate create-image)

Эта короткая программа имитирует падение яблока сверху вниз на небольшой белый холст. Он состоит из трех частей:

  • Определение функции для создания изображения, которая представляет собой однострочную функцию в математике, предполагая, что была введена алгебра изображений с изображением места, кругом и пустой сценой.
  • Две аббревиатуры, в которых имена приравниваются к некоторому значению, как в тексте «пусть x будет 5» в тексте по алгебре.
  • Одна строка для запуска программы

Учитель может объяснить функцию create-image так же легко, как и любую обычную функцию в курсе алгебры. Например, можно сначала нарисовать таблицу с двумя строками и n столбцами, где каждый столбец содержит t вверху и соответствующее изображение внизу. То есть, если цифры увеличиваются слева направо, то на каждом изображении красная точка оказывается немного ниже.

Наконец, строка анимации применяет данную функцию create-image со скоростью 28 тактов в секунду к 0, 1, 2, 3 и так далее. Полученные изображения отображаются на мониторе компьютера в одинаковом темпе. Вот так и снимаются фильмы.

Базовая информация, необходимая для такого примера, — это немного больше, чем знания о создании фильмов, об алгебре изображений в DrRacket (которая похожа на алгебру для чисел) и минимальная предварительная алгебра. Однако проект ProgramByDesign утверждает, что дети получат больше удовольствия от таких живых функций, чем от алгебраических выражений, подсчитывающих количество садовых плиток (см. книги Prentice Hall для 8–9 классов).

Проект ProgramByDesign предполагает, что интеграция этой формы программирования может принести пользу как традиционным курсам математики, так и естественным наукам. В отличие от традиционных блоков BASIC или Visual Basic в таких книгах, программа Racket состоит из столько же строк, сколько математических вычислений. Таким образом, перемещение между математикой и программой является простым. Более того, смысл этих двух слов один и тот же. Алгебраический степпер DrRacket может проиллюстрировать, как Racket оценивает программу, как если бы это был ученик шестого или седьмого класса, шаг за шагом, используя простую алгебру.

Функциональное программирование, вычисления и проектирование в программировании 101 [ править ]

Что касается вводной учебной программы по программированию, проект ProgramByDesign подчеркивает, что курсы должны быть сосредоточены на роли систематического проектирования. Даже если студенты больше никогда не будут программировать, они должны увидеть, насколько полезен системный подход к решению проблем. Это должно помочь им, станут ли они программистами, врачами, журналистами или фотографами. Таким образом, вводный курс программирования будет восприниматься не как место, где студенты узнают о синтаксисе модных сейчас (и скоро устареющих) языков программирования, а как место, где они могут узнать что-то широко применимое.

Ключевым элементом дизайна учебной программы ProgramByDesign является рецепт дизайна . Он имеет два измерения: измерение процесса и измерение данных.

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

  1. Анализ проблем с целью описания классов данных, которые входят в программу и выходят из нее;
  2. Переформулирование постановки проблемы в краткое изложение цели
  3. Создание примеров, иллюстрирующих формулировку цели и служащих критериями успеха;
  4. Организация данных, также называемая шаблоном или инвентарем.
  5. Кодирование
  6. Создание набора тестов на основе примеров, чтобы убедиться, что программа работает правильно на небольших входных данных.

Как и в разработке через тестирование , тестовые сценарии пишутся до написания кода, как часть анализа требований, а не после тестирования.

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

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

Измерение данных можно резюмировать следующим правилом: форма данных определяет форму кода и тестов. Например, если тип входных или выходных данных имеет три варианта, набор тестов должен иметь хотя бы один тестовый пример для каждого варианта, а программный код, вероятно, будет содержать трехстороннее условие (явное или скрытое в полиморфной диспетчеризации). Если тип входных или выходных данных имеет три поля, набор тестов должен будет указать значения для этих трех полей, а программный код должен будет ссылаться на эти три поля. Если тип входных или выходных данных имеет простой базовый вариант и один или несколько вариантов, ссылающихся на себя, набор тестов должен включать базовый вариант и один или несколько небазовых случаев, а программный код, вероятно, будет иметь базовый вариант и один или более случаев, ссылающихся на себя, изоморфных типу данных. Техника рекурсии не является загадочной и пугающей, а просто применяет уже изученные методы к самоссылающемуся типу данных.

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

«Как проектировать программы» (HTDP) — это учебник, созданный ядром группы ProgramByDesign. [1] Готовится третье издание. [2]

Выбор языка программирования [ править ]

Имя TeachScheme! похоже, подразумевает, что этот рецепт дизайна требует Scheme (теперь Racket ) и доступен только для обучения с помощью Scheme. Ни один из выводов не является верным. Члены PLT и их стажеры успешно применили рецепт проектирования на языке ассемблера , C , Java , ML , Python и других языках программирования, а также на курсах геометрии, биологии и поэзии. Фундаментальная идея ProgramByDesign — подчеркнуть программирование как деятельность по проектированию. Это заблуждение является одной из причин действий по переименованию, предпринятых в 2010 году.

Для начала проект ProgramByDesign создал три основных элемента:

  • Ряд последовательно более мощных и разрешающих языков обучения, которые являются диалектами Racket, соответствующими рецепту дизайна, но с отчетами об ошибках, соответствующими уровню ученика (например, многие вещи, которые разрешены в стандартном Racket, но которые начинающий студент не делает). не требуется, на уровне начинающего студента помечаются как ошибки)
  • Удобная для начинающих, бесплатно загружаемая среда педагогического программирования, интегрированная среда разработки под названием DrRacket, которая обеспечивает соблюдение этих языковых уровней.
  • Учебная программа, закодированная в основном в книге «Как разрабатывать программы», [1] какое третье издание находится в работе. [2]

Их выбор Racket отражает их убежденность в том, что Racket — хороший язык для небольшой команды с небольшим финансированием (по сравнению с Java) для проверки своих гипотез. Группа PLT всегда старалась обеспечить возможность переноса идей в другие контексты.

Для Java [ править ]

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

Часть команды имеет грант Национального научного фонда на проведение полевых испытаний в колледжах и средних школах. Семинары по повышению квалификации проходили летом 2007, 2008, 2009 и 2010 годов. Эта часть проекта получила название ReachJava; прилагаемая книга предварительно называется «Как разрабатывать классы».

Бутстрап [ править ]

В 2006 году PLT в Северо-восточном университете и гражданских школах Бостона предприняла совместные усилия по охвату студентов из бедных районов города внеклассными программами. Citizen Schools — это общенациональная организация, которая подбирает волонтеров для участия в внеклассных программах и помогает им начать работу по заранее разработанным учебным программам. Целью усилий является внедрение материала в учебную программу шестого класса. Первые несколько тестов в Бостоне прошли с большим успехом. [3] [4] Влияние этой программы на курсы математики побудило Microsoft и Google профинансировать национальную программу по расширению масштабов, разработке материалов для подготовки учителей и созданию сайтов в Техасе, Калифорнии и других городах-волонтерах.

Ссылки [ править ]

  1. ^ Jump up to: Перейти обратно: а б Феллизен, Матиас ; Финдлер, Роберт Брюс ; Флэт, Мэтью ; Кришнамурти, Шрирам (6 января 2018 г.). «Как создавать программы» . МТИ Пресс . Проверено 8 января 2019 г.
  2. ^ Jump up to: Перейти обратно: а б Феллизен, Матиас . «Как разрабатывать программы, третье издание» . Felleisen.org . Проверено 8 января 2019 г.
  3. ^ «Программа Bootstrap привлекает учащихся средних школ Роксбери, Дорчестер» . Бостон.com . 03 мая 2011 г. Проверено 29 сентября 2011 г.
  4. ^ Кришнамурти, Шрирам (март 2009 г.). «Компилятор схемы Моби для смартфонов» . Университет Брауна, факультет компьютерных наук . Проверено 8 января 2019 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 02ac14736280c865f264ee0008d22367__1656184560
URL1:https://arc.ask3.ru/arc/aa/02/67/02ac14736280c865f264ee0008d22367.html
Заголовок, (Title) документа по адресу, URL1:
ProgramByDesign - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)