分解是一项基本的计算机科学技能,对于培养学生对如何解决编码问题的长期理解至关重要。 本文探讨什么是分解、为什么它很重要以及如何促进学生学习分解。
什么是分解?
分解是将复杂问题分解为更小、更易于管理的部分的过程。 这允许学生一次解决问题的一个组成部分,从而简化了创建编码项目的过程。
为什么分解很重要?
当学生开始学习编码时,他们面临着以一种新的、具有挑战性的方式思考语言。 他们必须从充满推论和细微差别的口语交流转变为编码所需的精确和逻辑结构。 这种调整对于学生来说极其困难,并且常常阻碍他们的成功。 分解是学生为了成功编码而必须获得的一项关键计算机科学技能,因为它允许学生从口语开始并对其进行改进,直到它可以在编码项目中使用。
分解问题可以让问题以较小的增量得到解决,有助于防止问题变得令学生不知所措。 当学生在开始编码之前将问题分解为更小的部分时,他们可以构建项目的每个小部分并测试它以确保其按预期工作,然后再继续下一部分。 这比尝试一次性编写实现目标所需的所有步骤要容易得多,并且可以防止学生在尝试解决错误时因迷失在漫长的项目中而感到沮丧。
分解的过程还为学生提供了构建项目的系统方法,消除了学生可能不得不猜测和检查解决方案的诱惑。 猜测和检查是解决问题的低效方法,并且当学生开始应对越来越复杂的编码挑战时,它就会变得无效。
此外,分解项目可以让学生识别代码中的模式,并构建、修改和重用代码部分。 这使得项目的构建和故障排除变得更加容易,同时使学生能够更深入地理解他们正在创建的代码,从而使他们能够在未来的项目中运用这种理解。
最后,分解还可以促进学生之间的协作,因为他们可以小组合作创建机器人项目。 工程笔记本中记录的分解项目为学生提供了一个工件,供学生在讨论小组项目或与其他小组共享时使用。
促进分解
当学生处于规划阶段、开始构建项目之前,就会发生分解。 学生应该在他们的工程笔记本中记录他们的分解过程,并在开始编码之前与您分享。 有关与学生一起使用工程笔记本的更多信息,请参阅本文。
为学生提供这个简单的三步框架来进行分解:
- 确定项目的主要目标 通过说明项目成功时机器人将展示的结果。 将这个目标记录在工程笔记本中。
- 确定机器人为实现目标必须采取的主要步骤。 考虑并记录机器人为了实现目标需要完成的主要步骤或总体步骤。 在工程笔记本中记录这些高级步骤。
-
将主要步骤分解为机器人行为的最小可能增量。 将每个主要步骤分解为机器人可以完成的最小行为。 将这些分解的步骤记录在工程笔记本中。
- 每一种机器人行为都应该能够与一个相应的块或命令相匹配。 如果不是,则可以进一步分解步骤。
在此示例中,学生正在分解一个项目以完成 VEXcode VR Wall Maze + Playground 中的迷宫。
步骤 1:确定项目的主要目标。 将目标记录在工程笔记本中。
步骤2:确定机器人实现目标必须采取的主要步骤。
- 在这里,学生已经考虑了机器人从迷宫的起点到终点所需采取的所有行为,并在工程笔记本中按顺序列出了它们。
第 3 步:将主要步骤分解为机器人行为的最小增量。
- 学生可以开始确定完成每个步骤所需的近似值。 在 VEXcode 中构建项目时需要测试和调整这些值。
- 学生应检查以确保每个分解步骤直接对应于一个 VEXcode 块。 如果不是,则需要进一步分解该步骤。
一旦学生将项目分解为单个块或命令的级别,他们就可以从项目规划阶段进入实施阶段。 他们应该将步骤 2 中确定的主要步骤转移到注释中,然后将步骤 3 中每个完全分解的行为的相应块或命令添加到每个注释中,以便构建他们的项目。
学生应该一次分解一个步骤来构建他们的项目,在继续下一个行为之前测试每个行为(或逻辑分组的行为集)。 在此阶段,学生需要使用他们拥有的资源来确定正确的参数值。 例如,在上面的 VEXcode VR 示例中,距离值是使用每个迷宫方块的宽度为 300 毫米的知识来确定的。 确定值的方法会根据情况而有所不同,但在创建编码项目的过程中总是需要测试和调整值。
支持学生学习分解
在学生开始应对 STEM 实验室或其他 VEXcode 项目的挑战之前,请花时间自己进行分解,以便准备好回答学生可能提出的问题。 鼓励学生在开始编码之前向您展示其项目的分解计划,以便您可以加强分解过程并检查以确保他们已将任务分解为尽可能小的机器人行为。 提醒学生他们应该能够识别与每种行为相对应的块或命令。
- 如果学生难以想象机器人实现项目目标所需采取的主要步骤或总体步骤,请鼓励他们:
- 画出机器人完成目标所需的路径。
- 执行机器人完成目标所需采取的步骤。
- 讨论机器人实现目标所需采取的步骤。
- 如果学生很难确定他们的步骤是否已分解为单个块或命令级别,请询问他们:
- 机器人需要多少块或命令才能完成该行为?
- 机器人可以仅使用一个块或命令来完成该步骤吗?
- 如何将这种行为分解为更小的机器人动作?
在学生学习分解时为他们提供支持将确保他们为未来解决计算机科学问题奠定坚实的基础。