基于大语言模型的Python编程教学实践探索
作者: 宋敏毅
摘要:本文针对高中Python编程教学中“循环结构”这一内容,探索了基于大语言模型的教学实践策略,通过情境创设、问题分析、方案设计、编程实现及反思优化五个教学阶段,构建了以问题探究为核心的教学流程。在教学过程中,大语言模型作为技术脚手架,为学生提供了个性化指导与即时反馈,帮助他们理解抽象的编程概念、解决编程问题。实践结果表明,大语言模型在弥补传统教学局限、提升学生编程能力和学习兴趣方面具有显著效果。同时,在实践中也发现,大语言模型的教学应用存在一定局限性,如学生对其过度依赖和内容准确性的问题。
关键词:大语言模型;Python编程教学;循环结构;个性化指导
中图分类号:G434 文献标识码:A 论文编号:1674-2117(2025)06-0058-03
在Python编程教学中,循环结构是一个关键内容,它不仅是编程的基础概念,更是解决复杂问题的重要工具。然而,在实际教学过程中,教师往往面临以下挑战:首先,学生通常对抽象的程序控制结构理解困难;其次,班级授课模式下难以照顾到学生的个体差异,基础好的学生缺乏深度学习的机会,而基础薄弱的学生则可能跟不上教学进度;再次,有限的课堂时间难以为学生提供足够的实践机会和及时的个性化反馈。近年来,以ChatGPT为代表的大语言模型(Large Language Models,LLMs)展现出独特的教育应用价值。[1]在教学中,大语言模型可以扮演智能导师的角色,为学生提供个性化的指导,协助学生进行学习探究与问题解决。因此,在编程教学中,大语言模型为教师进行教学创新提供了可能性。[2]
本文以教科版高中信息技术必修1中的Python的循环结构教学为例,探索将大语言模型融入教学实践的有效策略,旨在为提升程序设计教学效果提供新的思路和方法。循环结构的主要内容在教科版高中信息技术《必修1 数据与计算》的“2.3 周而复始的循环”这一节,在后续的教学内容中,循环结构也贯穿于各个章节中。学生如果不能够理解循环结构,会对后续相关内容的教学产生较大影响。因此,笔者以“循环结构”为主题,以问题驱动为手段,以大语言模型为技术脚手架,进行了教学实践探索,并将教学流程总结为五个阶段:情境创设、问题分析、方案设计、编程实现、反思优化(如下图)。
情境创设
传统的编程教学常常注重程序设计语言的语法教学,而忽略问题情境的重要性,这让本就抽象的编程概念更难让学生理解。因此,以真实问题驱动,创设能够吸引学生的教学情境是开展探究教学的第一步。在本课中,笔者根据“4.2 数值计算”中的拓展知识“计算π的值”,结合“2.3 周而复始的循环”中的循环结构的相关内容,设计了驱动问题:如何计算圆周率?圆周率是高中生已经掌握的数学概念,但是学生对圆周率的计算方法了解不多。同时,圆周率的计算问题非常适合用循环结构来解决,常见的圆周率计算方法都涉及了无穷级数的累加运算。
好的情境离不开优质的驱动问题,笔者的经验有两点。首先,驱动问题要有跨学科性。《普通高中信息技术课程标准(2017年版2020年修订)》(以下简称“(新课标”)鼓励学生进行跨学科问题解决,而数学、物理、化学、生物等学科本身就有大量问题适合编程解决,从这些学科中找到适合探究的问题能够大大增加对学生的吸引力。[3]其次,驱动问题与教学内容要天然吻合。也就是说,编程的介入能够大大简化驱动问题的解决。以计算圆周率为例,手工计算难度极大,但是利用循环结构来计算圆周率能极大提升计算效率。
问题分析
在情境创设完成、引出驱动问题后,就需要学生分析问题,这时大语言模型作为技术脚手架就可以介入教学。按照传统的方式,教师需要提前准备好与圆周率计算相关的阅读材料,供学生阅读并分析问题,了解圆周率的计算方法。而在大语言模型的支持下,教师只需抛出探究问题,并给出一些提示词案例,学生就可以自行进行小组探究。在本课中,笔者选用的大语言模型是“豆包”,并给学生提供了两个提示词案例:“是否可以向我介绍一下圆周率计算的历史?”“圆周率是怎么算出来的?”学生以两人为一组,根据提示词案例自行修改优化进行问题探究。
在选择大语言模型的时候,要选择无需登录就可以使用的模型,本课中的“豆包”就可以直接使用。同时,教师需要给学生展示使用方法并提供简单的提示词案例。有的学生已经有了一定的大模型使用经验,但是仍然有不少学生并没有接触过生成式人工智能技术,所以演示使用方法是很有必要的。此外,需要给学生确定好探究的目标,如告知学生“在探究完成后,需要选择一种你认为适合编程实现的方法,并给出理由”。这样,学生既可以深入了解圆周率计算的方法与演变历史,又可以有比较明确的探究方向,并与后续的编程活动相结合。
方案设计
在完成问题分析后,学生需要设计问题解决方案。本课的重点是学生综合运用循环结构来解决问题,在此之前学生已经学习了教材上计数循环(for循环)和条件循环(while循环)两个基本结构。因此,在方案设计这一环节,教师可以提示学生回顾教材内容,自行选择合适的循环结构来设计方案。同时给出建议:编程技能薄弱的小组可以选择“莱布尼茨级数”并使用for循环来设计解决方案。在与大语言模型对话的过程中,用莱布尼茨级数来计算圆周率是大多数情况都会给出的计算方法,同时其公式简单,很适合用for循环来实现。
在这一阶段,大语言模型的作用在于为学生的设计过程提供启发,而不是直接给出解决方案。学生可以利用大语言模型的交互功能,就选定的计算方法咨询关键问题,如:“莱布尼茨级数和蒙特卡洛方法计算圆周率,哪个更容易编程实现?”通过这样的互动,学生能够从大模型的反馈中获得启示,但仍需自主设计完整的解决方案。此外,教师应强调在设计方案过程中避免直接请求大模型生成代码,而是让学生结合循环的三要素(初始值、循环条件、循环体)独立完成代码框架的构建。这一阶段的核心目标是培养学生的计算思维能力,让学生通过独立思考来理解问题的解决思路。通过这种方式,既保持了学生思维的独立性,又充分利用了大语言模型的辅助功能。
编程实现
在完成设计方案后,学生需要将方案转化为具体的Python代码。这一阶段可以充分发挥大语言模型的优势,实现针对具体问题的个性化指导。由于学生的编程基础参差不齐,在编写完整代码过程中他们遇到的问题会很多。在教学中,教师应要求学生先独立完成初步的代码编写,当遇到困难时再向大模型求助。在这一过程中,大语言模型可以充当“助手”,为学生提供个性化支持。例如,学生可以将问题代码片段提交给大语言模型,询问问题所在和改进建议。这种即时反馈机制能够帮助学生快速解决问题,同时提高其对编程的信心。
为了确保学生在这一环节中主动参与问题解决,教师需要引导学生正确使用大语言模型。例如,当学生代码报错时,教师应该建议学生使用更具体的提示词,如“我的程序错在哪里?你有什么改进建议?请不要直接告诉我正确的程序”。这种引导能够帮助学生明确问题的来源,进而更好地理解解决方案的原理。
此外,教师还可以为学生提供进阶任务,如优化代码性能、调整循环实现方式等,以适应不同水平学生的需求。对于能力较强的学生,教师可以鼓励他们尝试实现更复杂的计算方法,如蒙特卡洛方法。这一方法涉及随机坐标的生成和条件判断,在实现过程中对循环结构的灵活运用提出了更高要求,同时还能帮助学生拓展知识面。[4]通过多样化的任务设计,学生能够在编程实践中不断挑战自我,深化对循环结构的理解,并掌握更全面的编程技能。
反思优化
反思优化是整个教学流程中的重要阶段,旨在引导学生回顾并改进已完成的程序。这个阶段的活动可以从三个层面展开:代码层面的优化、算法层面的反思和学习过程的总结。
在代码层面,学生可以与大语言模型进一步互动,讨论如何提升代码的运行效率、可读性等。例如,通过调整算法流程减少冗余计算,或者通过优化变量命名提升程序的可读性。在这一过程中,大语言模型能够提供具体且富有启发性的建议,从而帮助学生优化自己的程序,并了解程序优化的方法。
在算法反思层面,学生需要比较不同计算方法的优劣,并思考如何提高计算精度与效率。例如,通过对比莱布尼茨级数与蒙特卡洛方法的实现,分析两者在不同场景下的适用性与效率差异。此外,学生还可以探讨算法的改进方向,如增加迭代次数或采用更高效的公式。教师可以结合学生完成的代码实例,组织全班讨论,让学生相互学习与借鉴,进一步加深对问题解决过程的理解。
最后,学习过程的总结是反思优化阶段的核心部分。教师可以引导学生回顾用编程解决问题过程中的收获与挑战,如哪些环节最具启发性、在哪些方面仍需改进等。通过这样的总结,学生能够更全面地审视自己的学习过程,并为后续的编程学习积累经验。同时,教师还可以组织代码展示与互评活动,让学生从同伴的作品中获取灵感,这不仅能够提升学生的批判性思维能力,还能进一步培养其团队合作意识和创新能力。
参考文献:
[1]钟柏昌,刘晓凡.生成式人工智能何以、以何生成教育[J].电化教育研究,2024,45(10):12-18+27.
[2]叶红霞.基于生成式人工智能的高中Python教学实践研究[J].中国信息技术教育,2024(24):62-64+112.
[3]李锋,席少剑,熊璋.面向数字素养与技能的信息科技课程标准及其教学实施[J].中国远程教育,2024,44(11):52-59+96.
[4]钱逸舟,方璐.项目驱动的Python编程教学设计——以“蒙特卡洛法求圆周率”为例[J].中国信息技术教育,2021(18):39-40+92.