Block-based visual programming environments play an increasingly important role in introducing computing concepts to K-12 students. In recent years, they have also gained popularity in neuro-symbolic AI, serving as a benchmark to evaluate general problem-solving and logical reasoning skills. The open-ended and conceptual nature of these visual programming tasks make them challenging, both for state-of-the-art AI agents as well as for novice programmers. A natural approach to providing assistance for problem-solving is breaking down a complex task into a progression of simpler subtasks; however, this is not trivial given that the solution codes are typically nested and have non-linear execution behavior. In this paper, we formalize the problem of synthesizing such a progression for a given reference block-based visual programming task. We propose a novel synthesis algorithm that generates a progression of subtasks that are high-quality, well-spaced in terms of their complexity, and solving this progression leads to solving the reference task. We show the utility of our synthesis algorithm in improving the efficacy of AI agents (in this case, neural program synthesizers) for solving tasks in the Karel programming environment. Then, we conduct a user study to demonstrate that our synthesized progression of subtasks can assist a novice programmer in solving tasks in the Hour of Code: Maze Challenge by Code-dot-org.
翻译:积木式可视化编程环境在向K-12学生引入计算概念方面发挥着日益重要的作用。近年来,它们在神经符号人工智能领域也广受欢迎,成为评估通用问题解决和逻辑推理能力的基准测试。这些可视化编程任务的开放性和概念性本质使其对最先进的人工智能智能体以及新手程序员而言都极具挑战性。为问题解决提供帮助的一种自然方法是将复杂任务分解为一系列较简单的子任务;然而,由于解决方案代码通常嵌套且具有非线性执行行为,这一过程并非易事。在本文中,我们针对给定的参考积木式可视化编程任务,形式化了综合此类递进子任务的问题。我们提出了一种新颖的综合算法,该算法生成一系列高质量、复杂度间隔合理的子任务,并且解决这一递进序列即可解决参考任务。我们展示了该综合算法在提升人工智能智能体(本例中为神经程序综合器)解决Karel编程环境中任务的有效性方面的实用性。随后,我们进行了一项用户研究,以证明我们综合生成的子任务递进序列能够帮助新手程序员解决Code-dot-org平台“编程一小时:迷宫挑战”中的任务。