在入门编程中显示结构相似性

我是名为“计算思维导论”的课程的助教,在该课程中,我们使用BlockPy,这是一个基于Web的Python编程环境,允许学生使用块以及文本(单独或一起使用)。 本课程的重点是通过涉及广泛的“现实世界”数据集的问题陈述,帮助非CS学生思考与环境相关的抽象,算法和社会影响。 作为课堂作业的一部分,学生们在迭代与一系列与布莱克斯堡(大学所在地)的天气有关的量度。 在这些作业的一半中,学生需要遍历列表,做出决定,计算度量(例如,总和或计数),并在列表之外打印度量。 在一项作业中,学生需要计算温度超过或等于80天的天数(炎热的日子)。 很少有学生在努力解决问题。 其中三个学生的解决方案如下所示: 由学生创建的解决方案的副本。 他们首先检查温度,然后进行迭代。 在示例中,学生已经初始化了一个变量(max_temp),并正在检查max_temp是否大于或等于80。代码将执行(由于已初始化变量),无论那里有多少个炎热的日子,其输出都为0曾经(而且已经有很多!)。 从学生的角度来看,他们做的一切正确。 他们正在检查温度是否大于或等于80,正在进行迭代和计数,并正在打印正确的变量。 首先要进行迭代然后再比较每个温度的需求并不容易掌握,尤其是在出现诸如编程块之类的抽象元素时。 在以前的学期中,我曾经和学生坐在一起,与他们讨论代码。 我通常会要求他们在一张纸上用英语写伪代码,然后与他们在BlockPy上创建的块进行比较。 伪代码与块之间的表面相似性有助于澄清混淆。 虽然它较早起作用,但我知道我可以使其更易于使用。 为了使学生对计算产生兴趣,我选择了总体目标,以表明计算构造类似于一些日常活动。…