Program decomposition is essential for developing maintainable and efficient software, yet it remains a challenging skill to teach and learn in introductory programming courses. What does program decomposition for procedural CS1 programs entail? How can CS1 students improve the decomposition of their programs? What scaffolded exercises can instructors use to teach program decomposition skills? We aim to answer all these questions by presenting a conceptual framework that (1) is grounded in the established code style principles, (2) provides a systematic approach that can be taught to students as an actionable strategy to improve the program decomposition of their programs, and (3) includes scaffolded exercises to be used in classroom activities. In addition, this systematic approach is automatable and can further be used to implement visualizers, automated feedback generators and digital tutors.
翻译:程序分解对于开发可维护且高效的软件至关重要,然而在入门编程课程中,它仍然是一项具有挑战性的教学与学习技能。面向过程式CS1程序的程序分解包含哪些内容?CS1学生如何改进其程序的分解?教师可以使用哪些支架式练习来教授程序分解技能?我们旨在通过提出一个概念框架来回答所有这些问题,该框架(1)基于既定的代码风格原则,(2)提供了一种系统化方法,可作为可操作策略教授给学生以改进其程序的分解,(3)包含可用于课堂活动的支架式练习。此外,这种系统化方法可实现自动化,并可进一步用于实现可视化工具、自动反馈生成器和数字导师。