Как сделать лекции по программированию более эффективными и стимулирующими?

Мне была назначена должность ассистента преподавателя для программной части моих университетских курсов по байесовскому выводу на уровне MS. Несколько месяцев назад я читал курс по вычислительной статистике. Мой опыт в этом, без предыдущего опыта преподавания, был не таким большим из-за в целом плохой успеваемости учащихся, вероятно, из-за незнания используемого языка программирования (R).

Я готовлю слайды, лекция за лекцией, со встроенным кодом, который запускаю и комментирую на ходу. Иногда я предлагаю упражнения, но их выполнение часто схематично, и я обнаружил, что многие люди не могут использовать базовые конструкции языка с достаточной беглостью, чтобы создавать код, который запускается «на месте». Учитывая, что у меня есть программа, которую я должен пройти, и я не знаю, что еще предложить студентам, кроме как больше тренироваться и изучать синтаксис языка, я сам в большинстве случаев самоучка в этом, а это означает, что мой способности к программированию не имеют ничего общего с курсовой работой, которую я делал во время учебы — есть ли у вас какие-либо советы, как сделать мои лекции более эффективными и стимулирующими?

Вы проводите приемные часы в дополнение к лекции? Я думаю, что для многих начинающих программистов время один на один очень важно.
Могу поспорить, что есть много литературы по педагогике информатики - это, безусловно, относится ко всем другим областям науки / техники, о которых я знаю. Вы изучали это? Я уверен, что существует множество замечательных техник. Если вы находитесь в США, я также могу поспорить, что в вашем университете есть преподавательская «консультационная» служба с людьми, которые хотели бы помочь.
У меня нет рабочих часов, к сожалению. В настоящее время я работаю полный рабочий день, поэтому даже с нагрузкой, связанной с курсом, не так легко справиться. Ре. Педагогика CS, я нашел несколько статей, но имейте в виду, что это должен быть не курс программирования, а курс аналитики, где основная цель — практически проиллюстрировать темы, затронутые на уроках теории. Проще говоря, проблема заключается в том, что опыт студентов настолько разнообразен, что они просто не обладают необходимыми базовыми знаниями (студенты магистратуры по статистике должны иметь прошлый опыт w/R, в то время как значительная часть моих студентов его не имеет)
Подумайте о том, чтобы попросить совета у предыдущих ассистентов по этому курсу.

Ответы (3)

Re: Стремление к упражнениям в классе (код "на месте"). Одна вещь, которую я обнаружил в этом семестре (преподавание вводного C++ по учебнику Гэддиса), - это идея лабораторных упражнений с в основном заполненными программами, где студентам нужно всего лишь добавить несколько строк, связанных с новыми языковыми структурами, о которых вы только что прочитали лекцию. По сравнению с упражнениями «написать целую программу прямо сейчас», которые я использовал в прошлом, это работает на удивление хорошо; вписывается в правильный временной интервал для всех, заставляет их руки/глаза напечатать эту структуру хотя бы один раз, поднимает основные моменты/трудности именно этой темы и т. д.

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

Живое кодирование (в частности, как это делается на семинарах Software Carpentry ) отлично подходит для понимания программирования. Я использовал его на стандартных университетских лекциях в течение трех лет, и он очень популярен среди студентов. Основные преимущества

  1. Это замедляет вас, поэтому вы двигаетесь в темпе, близком к уровню студентов;
  2. Когда вы делаете ошибки — а вы будете и должны — вы показываете учащимся, что это не проблема, а также показываете им, как исправить их на лету.

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

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

  • Есть ли в вашей школе технологическая лаборатория? У меня был один, и они предлагали регулярные семинары и индивидуальную помощь по использованию общих программ. Они часто были рады координировать свои действия с профессорами по конкретным предметам. Найдите его и, если он есть, поговорите с ним.
  • После этого посвятите, может быть, целый урок в начале изучению программного обеспечения. В качестве альтернативы или дополнения предложите дополнительное внеклассное занятие. Это может быть непрактично, если вы работаете полный рабочий день за пределами кампуса, но если у вас есть технологическая лаборатория, может быть кто-то еще, кто может это сделать. Тем не менее, поскольку вы не предлагаете рабочие часы, это может быть уместно для вас, чтобы найти время.
  • С самого начала подчеркните, что изучение этой части программного обеспечения имеет решающее значение для сдачи экзамена, и что они не смогут изучить его, просто наблюдая за тем, как вы это делаете в классе.
  • В соответствии с этим отправьте студентам электронное письмо до начала занятий, чтобы они полностью знали, что им нужно знать программу, чтобы следовать курсу, и вы посвятите минимальное время обучению их.
  • В случае с R существует множество других источников для изучения, чтобы начать работу. Нет необходимости изобретать велосипед! Проверьте качество некоторых из них, а затем порекомендуйте их ученикам. Очевидно, это может не работать с более малоизвестными частями программного обеспечения.
  • Минимизируйте код, который вы показываете на слайдах. Разобрать чужой код сложно и в лучшем случае, а незнакомый язык в слайд-шоу — далеко не так.

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