Советы по обучению с использованием Live Coding

11

Я участвую в первом курсе по программированию и алгоритмам. В недавней лекции я решил представить материал, используя живое кодирование , что по сути означало, что я сижу за клавиатурой, пишу код и оцениваю его, используя emacs для облегчения процесса.

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

Каковы некоторые рекомендации по проведению лекций (и других демонстраций) с использованием лекций в режиме реального кодирования?
Какие подводные камни следует избегать?

Дэйв Кларк
источник
2
У меня есть оговорки по поводу живого кодирования (в основном касательно пропускной способности и иллюзии понимания). Тем не менее, два предложения: 1) Рассматривали ли вы использование систем ответов в классе для структурирования вопросов? 2) Я понятия не имею, насколько это практично, но использование чего-то вроде ideone.com может быть интересным, потому что студенты могут получить доступ к вашему коду после лекции и запустить его без необходимости устанавливать что-либо.
Рафаэль
@ Рафаэль: У меня было их внимание намного лучше, чем раньше, что, безусловно, является плюсом. Ваши два предложения очень хороши. 1) В настоящее время только люди, которые действительно следуют, предлагают любые отзывы. 2) Моего языка нет в списке. Тем не менее, весь код доступен на слайдах (которые я проигнорировал).
Дэйв Кларк

Ответы:

8

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

DOs

  • Подготовьте сценарий, чтобы следовать и пытаться придерживаться его.
  • Очистите буферы часто, чтобы сосредоточиться на соответствующей части.
  • Начните заново для каждой новой темы.
  • Используйте больший шрифт.
  • Освойте инструмент, который вы используете, чтобы не тратить слишком много времени на мелочи.
  • Предварительно закодировать фоновые функции. Если не особенно актуально, чтобы они могли быть импортированы, а не появляться в рабочем файле.
  • Идеально работать на языке, который дает вам немедленную обратную связь. Языки с интерактивной оболочкой являются лучшими в этом отношении.
  • При использовании напечатанного, дают ожидаемый тип функции, которую вы пишете. Это обеспечивает направляющий свет для студентов.
  • Произвольно делают ошибки (хотя и не слишком много). Шаг через, как они должны быть исправлены.
  • Не забывайте - картина рисует тысячу слов: слайды и чередование черных / доску работы с кодированием сессии.
  • Подготовьте краткие слайды по темам, которые вы затронули
  • Иногда при изменении кода, возможно, сделать копию и изменить копию. Это обеспечивает точку сравнения.
  • Периодически очищайте код.
  • Примите, что вы будете делать ошибки и открыто позволять студентам исправлять вас - это облегчает вашу работу и дает им возможность.
  • Напишите код в своем собственном стиле. Например, вы можете скопировали код из других источников. Но это будет трудно воспроизвести. Лучше написать это в своем собственном стиле. Например, я всегда пишу функции карри, потому что я программирую в основном на Haskell. Но Standard ML использует идиому менее часто. Ожидание карри - это самая распространенная ошибка в классе.
  • Физически, убедитесь, что у вас есть пространство, создать хорошо. Хорошая клавиатура, на правильной высоте, кабели все в нужных местах, физические препятствия в пути и т. Д. Найдите минутку, прежде чем начать, чтобы ваше пространство работало на вас, а не на вас.
  • Один из подходов - написать то, что говорят студенты, даже если это неправильно. Это заставляет студентов делать кодирование и исправление. Это идея хорошая, чтобы очистить код в конце. Этот подход может создать модель внимания и взаимодействия в классе, потому что ученики должны обращать внимание на то, что происходит.

DON'Ts

  • Не оптимизируйте свой код на лету и сломайте его так, что вы не сможете это исправить.
  • Избегайте разговоров с компьютером. Поговори со студентами!
  • Избегайте слишком много печатать, особенно шаблонного кода. Используйте свою среду, чтобы помочь вам выплюнуть шаблоны для вас.
  • Если вы используете текстовый редактор, избегайте постоянной прокрутки. Это приведет к укачиванию ней тех, кто пытается следовать.
  • Если вы используете текстовый редактор, прежде чем вносить радикальные изменения в свой код, предупредите учащихся, что вы собираетесь это сделать, чтобы они могли отслеживать происходящее.
Дэйв Кларк
источник
1
Сколько учеников в вашем классе? Мне нравятся ваши поступки в сторону интерактивности, но я удивляюсь, как это масштабируется до 50, 100, 250 студентов.
Рафаэль
1
Вы публикуете свой код после урока? Я представляю себе Github-репозиторий, в котором учащиеся могут просматривать различные созданные вами версии (возможно, в том числе полированную версию с комментариями, которая никогда не появлялась в классе) и смотреть на различия. Они также могут клонировать репозиторий, чтобы легко использовать когда-то написанные алгоритмы в качестве подпрограмм в своей домашней работе (если это желательно).
Рафаэль
1
Вы готовите модульные тесты для запуска вашего кода? Я не уверен, что это уместно в каждом классе (фокусируется на изучении принципов языков программирования, разработки программного обеспечения или алгоритмов?), Но это может научить некоторым лучшим практикам на этом пути.
Рафаэль
2
1) 128 человек зарегистрировались в классе, хотя около 60-80 появляются. 2) У меня уже есть код на слайдах, но я не использую слайды. Таким образом, у студентов есть версия того, что я делаю, а не промежуточные этапы. Я не совсем уверен, насколько интересно иметь все варианты. 3) Нет, не знаю, хотя они пишут неформальные спецификации. Основное внимание уделяется изучению первого языка программирования и некоторых алгоритмов / структур данных. Я согласен, хотя. Модульные тесты - это то, что мы рассмотрим для более интенсивной интеграции в курс. Спасибо за вопросы / скрытые советы.
Дэйв Кларк