使用实时编码的教学技巧


11

我参加了第一年的编程和算法课程。在最近的一次演讲中,我决定使用实时编码来介绍这些资料,这实际上意味着我坐在键盘后面,编写代码并使用emacs对其进行评估,以对其进行评估。

这是相当成功的,学生们评论了他们对这种(互动式)互动形式的欣赏程度。因为这是我第一次尝试使用这种教学格式,所以我知道它运行得并不完美。有些问题与对emacs的了解不尽如人意有关,而其他问题则与允许学生提出的问题使我离脚本太远了。我知道我可以做得更好。

使用现场编码讲座进行讲座(和其他演示)的一些准则是什么?
有哪些陷阱要避免?


2
我对实时编码持保留态度(主要是关于吞吐量和理解的错觉)。但是,有两个建议:1)您是否考虑过使用课堂回答系统来构造问题?2)我不知道那有多么实用,但是使用ideone.com之类的东西可能会很有趣,因为学生可以在授课后访问您的代码并运行它而无需安装任何东西。
拉斐尔

@Raphael:我的注意力比以前好多了,这当然是加分项。您的两个建议非常好。1)目前,只有真正关注的人才能提供任何反馈。2)我的语言不在清单上。也就是说,所有代码都可以在幻灯片中找到(我忽略了)。
Dave Clarke 2014年

Answers:


8

这是我在使用实时编码一周后以及与同事交谈后收集的一些技巧和陷阱。

溶解氧

  • 准备要遵循的脚本并尝试坚持下去。
  • 经常清除缓冲区以关注相关部分。
  • 为每个新主题重新开始。
  • 使用更大的字体。
  • 掌握要使用的工具,以免浪费太多时间在琐碎的事情上。
  • 将背景功能预先编码。如果不是特别相关,请确保可以将其导入,而不要出现在工作文件中。
  • 理想情况下,请使用能给您立即反馈的语言。在这方面,具有交互式外壳的语言是最好的。
  • 使用typed时,请提供您要编写的函数的预期类型。这为学生提供了指导。
  • 自由地犯错(尽管不会太多)。逐步解决这些问题。
  • 别忘了-一幅画画一千个字:在您的编码会话中插入幻灯片和黑白板。
  • 有涵盖您要点的摘要幻灯片
  • 有时,在修改代码时,可能制作一个副本并修改副本。这提供了一个比较点。
  • 定期清理代码。
  • 接受自己会犯的错误,并公开允许学生改正自己的错误,这使您的工作更加轻松并赋予他们权力。
  • 以自己的风格编写代码。例如,您可能已从其他地方复制了代码。但这很难重现。最好以自己的风格编写。例如,我总是写咖喱函数,因为我主要编写Haskell。但是Standard ML较少使用该习语。期望咖喱函数是我在课堂上最常见的错误。
  • 从物理上讲,请确保您的空间设置正确。合适的键盘,合适的高度,正确的位置连接电缆,避免障碍物等。开始工作之前,请先花一点时间让您的空间适合您,而不是不利于您。
  • 一种方法是即使学生说错了也要写。这使学生能够进行编码和修复。最后清理代码是一个好主意。这种方法可以创建课堂上的注意力和互动模型,因为学生需要注意跟随正在发生的事情。

不要

  • 不要动态优化代码,并以无法修复的方式破坏代码。
  • 避免与计算机通话。与学生交谈!
  • 避免过多输入,尤其是样板代码。利用您的环境来帮助您为您吐出模板。
  • 如果使用文本编辑器,请避免不断滚动。那些想要跟进的人会晕车。
  • 如果使用文本编辑器,则在对代码进行重大更改之前,警告学生您将要这样做,以便他们可以跟踪正在发生的事情。

1
你班上有多少学生?我喜欢您的DO致力于互动性,但想知道它如何扩展到50、100、250个学生。
拉斐尔

1
您下课后会发布代码吗?我想象一个Github存储库,学生可以在其中浏览您创建的不同版本(也许包括在课堂上从未出现过的优美的注释版本)并查看差异。他们还可以克隆存储库,以便轻松地将编写好的算法用作作业中的子例程(如果需要的话)。
拉斐尔

1
您是否准备单元测试以运行您的代码?我不确定这是否适合每个课程(是集中学习编程语言,软件开发或算法的原理吗?),但它可能会沿途教授一些最佳实践。
拉斐尔

2
1)128人注册了该班级,尽管大约有60-80人。2)我已经在幻灯片上有代码,但是我不使用幻灯片。因此,学生对我的工作有一个了解,而没有任何中间步骤。我不确定所有变化有多有趣。3)不,我没有,尽管他们确实写了非正式的规范。重点是学习第一门编程语言和一些算法/数据结构。不过,我同意。单元测试是我们将考虑更紧密地集成到课程中的东西。感谢您的问题/隐式提示。
Dave Clarke 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.