0 引 言
Python 是一门重要且实践意义深远的编程语言,其易学、动态、灵活等特点,使其被广泛应用于人工智能、大数据分析及日常办公处理等领域。截至 2024 年 2 月,Python 已连续 3 年位居 TIOBE 编程语言排行榜首位[1]。目前,国内很多关系到国计民生的行业急需大量熟悉并熟练掌握 Python 编程语言的技术人才。随着教育部发布的《大学计算机基础课程教学基本要求》提出将 Python 作为首门程序设计教学语言的建议,国内高校陆续开始很多 Python 编程相关的课程教学[2]。广泛开展 Python 语言教学,提高学生的编程能力,可为他们今后的学习和工作打下坚实的基础。
1 Python课程教学现状及存在问题分析
现阶段,Python 语言在人工智能和数据科学领域的广泛应用,以及其易学易用的特性和强大的社区支持,使其成为流行编程语言。国内高校针对 Python 语言的教学方法在很大程度上还是借鉴传统编程语言如 C 和J ava 的模式,这种传统的教学方法在教授 Python 编程时存在一些常见挑战和问题:① 缺乏公认的 Python 课程核心知识域的界定。Python 语言由于其灵活性,被广泛应用于很多专业领域,如科学计算(如财务分析、股市预测)、智慧城市(如智能交通、智能政务)、医疗卫生(医学图像分析、流行病传播预测)等诸多领域,导致在Python 教学中引入这些领域的案例,学生在学习时需要额外的领域知识,教学内容不聚焦,增加了学习的负担。② 传统的教学方法往往依赖于“一刀切”的教学和评价方法,这可能不能很好地适应学生多样化的需求和学习风格。一些学生可能更注重视觉,更喜欢通过视觉演示和示例来学习,而另一些学生可能更喜欢亲身实践,并从实践和应用所学知识的机会中受益。③难以采用学生容易理解的方式解释复杂的编程概念。学生会发现学习 Python 很困难,特别是如果他们之前很少或没有编程经验。Python 的语法和概念对初学者来说可能具有挑战性。多数学生反映很难获得老师的充分支持和指导,以致很难掌握这些知识要点。④ 知识更新速度跟不上行业发展变化。技术行业的创新速度非常快,尤其是在人工智能和数据科学领域,然而教学大纲和课程内容的更新往往滞后于行业的最新发展,这可能会导致教学内容过时,不符合当前行业标准和最佳实践。
2 基于大语言模型辅助教学的Python编程教学框架
在 Python 课程教学设计中,融合课程知识点掌握和能力训练两个目标,重新划分和界定课程的核心知识域。在教学过程中,搭建部署本地化大语言模型用于辅助 Python 语言核心知识点教学,以及项目实训过程中的疑难问题辅助解决。通过设计闯关作业练习,帮助学生掌握课程的核心知识点;同时,为了提升学生的综合实践能力,设计渐进式项目训练,让学生逐步具备实际项目开发技能。搭建本地化大语言模型,作为学生学习过程中的智能助手。此外,收集学生学习过程数据用于数据挖掘分析,以便更好地了解学生的学习情况和需要改进的地方,从而形成一套行之有效的 Python 课程教学体系。具体教学框架如图 1 所示。
图 1 中,通过重组 Python 课程教学中知识域的各项知识要点,构建由课程教学达成度体系与能力训练体系支撑的Python 课程教学框架。在设置课程教学体系时,考虑 Python 编程知识点的难易程度、知识点之间的衔接和依赖关系,将理论知识的教学分为 5 个层次:预备知识、Python 编程语法(基础语法和进阶语法)、面向对象编程、基本软件开发技能、课程综合实践。设置能力训练体系时,受到文献[4]中项目训练体系的启发,设计渐进式的项目训练体系,将学生编程能力培养分为 5 个环节:环境配置及工具安装、简单问题求解编程实践、面向对象编程求解、基本应用项目实践和综合应用项目实践。搭建基于 Ollama 的本地化大语言模型环境,用于辅助核心知识点的教学以及提供项目实训过程中“一对一”的智能助手服务。此外,为保证人才培养质量,采用基于闯关模式的课程教学达成度检测,并结合 OBE 理念和 ARCI 教学模式[5],跟踪和监控整个学生掌握核心知识点的过程。
3 基于大语言模型辅助教学的Python编程课程教学实践
3.1 确立Python编程核心知识域
为了优化信息技术 Python 学习内容及教学组织模式,面向学生技能提升,应明确和重组 Python 编程知识的核心知识域,设计 Python 编程知识核心知识域分层模型,以提高教学效果。此外,确立核心编程知识也有助于提升大语言模型作为智能助手的效率。具体来说,将 Python 编程知识划分为不同的层次,并在每个层次中明确相关知识点和技能要求。这样一来,学生可以更好地理解和掌握 Python 编程知识,同时也能够提高他们的实践能力。此外,在与本地化大语言模型交互时,核心知识域有助于设计出更有针对性的提示模版。具体的核心知识域分层模型见表1。
3.2 采用基于闯关模式的编程训练方法
HUSTOJ 是一个开源的、面向程序设计竞赛和在线学习的评测系统[5]。在编程领域,HUSTOJ 具有以下优势:① 提供在线编程评测功能,能够对学生编写的程序进行自动化评测,提高教学效率和学生学习动力;② 支持多种编程语言,如C/C++、Java、Python 等,能够满足不同学生的编程需求;③ 支持在线编程竞赛模式,可以激发学生的学习兴趣和竞争意识。总之,HUSTOJ 在编程领域具有广泛的应用前景和潜在优势,可以为编程教育和训练提供更好的支持和帮助。在这个阶段,学生可以借助大语言模型生成闯关练习题目的详细解析,从而提升对编程技能的掌握。
设计一套基于 HUSTOJ 的层次化、面向实战的 Python 学习环境,采用闯关模式进行编程训练,可以帮助学生系统地掌握 Python 的核心知识点,动手练习,并跟踪自己的成长。首先,整理 Python 领域的核心知识点,并采用技能树的方式进行组织。具体而言,学生登录后选择学习知识点,即可跳转到上一次未完成的知识点,并按照技能树的树形结构依次遍历节点。在每个知识点之后,精心设计相应的练习题目,旨在为学生提供即时的实践机会。这种独特的闯关挑战模式不仅能够及时反馈教学效果,而且能够有效地协助学生评估自己对 Python知识内容的掌握程度以及编程技能的水平,从而促进学生实践能力的自我提升。
3.3 构建渐进式项目训练体系
实践证明,采取项目驱动的教学模式,有利于培养学生运用计算机分析和解决实际问题的能力。对应 Python 编程核心知识域的分层结构(如图 1 所示),设计由简单到复杂、由单一到综合的渐进式项目训练体系。按照对学生实践能力的训练目标不同,分为5层训练模块:① 环境配置及工具安装使用。内容涉及 Python 编译器安装、Python 版本切换、Python 编辑工具(Python IDE、PyCharm、Sublime Text3和Jupyter Notebook)的安装和配置运行、Python在线编程工具使用等。本训练模块旨在推荐学生使用高效的编程工具。② 简单问题求解编程实践。这一部分主要包含一些简单的编程问题,要求学生能利用所学Python的基本语法和进阶语法,设计简单的算法。③ 面向对象编程求解。这一部分包含一些较为复杂的编程问题,要求学生运用面向对象思想去分析和求解问题,设计出少量的Python类,并编程实现问题求解。这一部分教学重点是类的设计和类之间关联的划分,教学难点是面向对象设计优化原则迭代完善问题求解。④ 基本应用项目实践。这一部分的项目主要是面向实际生产生活中的简单应用,训练学生利用Python编程实现文件读写、数据库操作、网络编程、数据可视化等操作。在设计项目时,注意项目目标的单一性和针对性。⑤ 综合应用项目实践。面向现实中的复杂问题,综合应用第 4部分所学的基本技能,利用 Python 开发 Web 应用、桌面应用、网络爬虫分析等较大型的项目。在这个阶段,学生可以借助大语言模型生成项目的代码框架和代码片段,从而将注意力聚焦在思考问题解决方案。
渐进式项目训练体系遵循循序渐进的学习路线,有利于学生逐步深入、逐渐加大学习 Python 的深度和综合性。此外,提出的5层项目训练体系具备良好的可扩展性,教师可以随着教学开展调整和优化训练项目;另一方面,由于计算机软件编程的特殊性,还可将历届学生的编程代码作为历史项目,供后续学生学习时参考,从而进一步扩充和丰富训练项目库。
3.4 提升基于大语言模型及在线评测引擎的教学效能
3.4.1基于本地化的大语言模型的辅助教学和编程
基于大语言模型(如 ChatGPT、BERT等)的辅助教学和编程可以利用人工智能技术提升教育质量,使学习更加个性化、高效和有趣,但由于访问受限、资源制约等约束,多数国内学生不能及时访问一些流行的大语言模型,因此选择一些优秀的大语言模型并提供本地化的访问以供教学使用十分必要。
基于本地化大模型辅助教学有如下好处:① 可以选择或开发适合的大语言模型,也可以定制语言模型以适应特定的教学内容和语境,作为智能辅导和反馈的基础。② 构建互动式学习内容。制作互动式的学习材料,如模拟对话、问题解答等,以提高学生的参与度。利用语言模型为学生提供实时的问题解答和讨论。③ 实时反馈与评估。通过在线评测引擎提供实时的作业和测试评分。分析学生的表现,找出知识盲点和常犯错误,为教师和学生提供反馈。此外,可以根据学生的学习进度、能力和偏好设计个性化的学习路径。④ 辅助在线评测。大语言模型能结合自然语言处理技术以及代码分析能力,使在线评测引擎能够理解并评价自然语言书写的开放式问题和答案以及涉及的代码语义分析与理解。
教学实践中选择Ollama[6]这个支持本地化运行大模型的框架开展本地化部署,并且选择 llama2、llama2-chinese 和codellama 3 个已有的大语言模型作为本地化部署模型。前两个模型主要用于处理自然语言,第 3 个模型用于处理代码相关的问题。此外,Ollama 支持由已有大模型定制新的大语言模型,从而可以进一步针对教学需求精调出新的定制语言模型。图2所示为基于本地化大语言模型的辅助教学和编程过程。
利用大语言模型辅助教学和编程的流程:① 针对核心知识的学习。从提示词模板库选择合适的提示词或者自己设计提示词。利用提示词,引导模型生成对知识点的详细解释和讲解。根据模型生成的内容,进行人工审核和反馈,必要时调整提示词以改善结果。② 针对闯关式作业训练。利用提示词让模型生成一系列闯关式的问题的参考答案。根据学生的反馈和表现,调整问题的难度和内容。③ 针对项目训练和辅助编程。利用提示词让模型生成代码片段并提供解释,帮助学生理解每一行代码的作用。学生在实际编程中尝试编写代码,并根据模型的指导进行调整和优化。
值得注意是,针对不同任务,提示词设计策略也不同。①学习核心知识的提示词模板。“请详细解释[知识点]的概念”“如何理解[知识点]”“给出一个关于[知识点]的简单例子”等。② 用于作业训练的提示词模板。“请创建一个关于[知识点]的挑战性问题”“如何测试学生对[知识点]的理解程度”等。③ 用于项目训练的提示词模板。“如何编写一个函数来实现[特定功能]”“解释一下这个[代码段/算法]是如何工作的”“在[项目名]中遇到这个问题,你会怎样解决”。总之,提示词设计是基于大语言模型辅助教学和编程的关键。我们在实践中不断总结经验,形成了一套提示词模板库,包括任课教师定义的提示词模板、学生学习时自定义的提示词模板。这两类提示词模板共享给所有学生完成课程学习任务时使用。由此可见,基于本地化大语言模型部署的辅助教学和编程训练,可以有效地实现 Python 编程教学的个性化和泛在教学支持,从而真正实现“因材施教,有教无类”的教育思想。
3.4.2基于在线评测引擎的课程考核及过程数据分析智能化
在线评测系统(On-line Judge,OJ)通过运行事先设计的测试用例,计算测试用例通过率来判断用户编写代码的正确性[7]。具备判题结果客观、判题过程自动化等优点,可用于Python程序的自动评测任务。传统的考核方式是标准化考试,人工或机器自动完成试题的评判,这种方式很难客观地判断学生的分析问题能力及实际编程能力。相比之下,HUSTOJ 提供在线评测模块,可以实现针对特定知识点的目标考核、快速反馈等。通过扩展 HUSTOJ 的 Web 页面,增加班级管理、判题过程优化、成绩统计、数据智能分析等功能,整个教学过程数据和分析结果均记录在 MySQL 数据库服务器中。
教学过程数据智能分析主要体现在以下 3 个方面:① 作业抄袭检测。运用代码克隆检测技术检查提交的代码是否抄袭了他人代码。② 学习预警。系统跟踪记录学生使用系统时的得分情况,并应用朴素贝叶斯分析学生的分数,以便于及时预警成绩不理想的学生。③ 学生学习过程数据和效果分析。分析学生使用系统的行为和学习成绩,自动评估班级教学效果,进而可以提供教学成效分析和决策支持。
4 结 语
为了帮助大学本科生适应全新的自我学习需求,通过本地化大语言模型结合 HUSTOJ 在线评测引擎,搭建了一个开放、稳定的基础支撑在线教学平台,实现了 Python 核心知识域梳理、教学资源整合和服务重构,打造了一个开放、稳定、智能的在线教学新环境。在融合实际项目应用的基础上,为学生提供了 Python 程序语言基础、数据获取、数据处理、数据可视化等理论教学内容。采用闯关方式安排核心知识点的学习和检测,并且综合训练项目由简单到复杂,渐进式展开实践训练。这种方式有效地提高了学生的积极性,实践证明其有效提高了教学活动效率。
参考文献:
[1] TIOBE. The TIOBE programming community index[EB/OL]. [2024-02-05]. https://www.tiobe.com/tiobe-index/.
[2] 李旭宏, 潘文文, 赵猛猛. MOOC环境下计算机网络安全教学的思考[J]. 中国多媒体与网络教学学报, 2018(9): 132-133.
[3] 徐慧, 鞠小林, 王皓晨. 大模型下编程教学面临的挑战与应对[J]. 计算机教育, 2023(11): 60-64.
[4] 梁艳. 基于项目驱动的 Python 语言课程的教学研究[J]. 辽宁科技学院学报, 2020, 22(3): 41-43.
[5] 汤卫, 杨赟, 陈玉玲, 等. 基于 ARCI的高职院校大数据专业Python课程教学模式研究[J]. 计算机教育, 2019(12): 122-126.
[6] Ollama. Running with large language models locally [EB/OL]. [2024-02-05]. https://github.com/ollama/ollama.
[7] 张浩斌. 基于开放式云平台的开源在线评测系统设计与实现[J]. 计算机科学, 2012, 39(增刊3): 339-343, 348.
基金项目:江苏省现代教育技术研究课题(2022-R-98984);高校哲学社会科学研究一般项目(2022SJYB1717)。
第一作者简介:鞠小林,男,南通大学副教授,研究方向为软件工程、软件分析与测试,Ju.xl@ntu.edu.cn。
引用格式:鞠小林,张艳梅,王皓晨,等.基于大语言模型辅助教学的Python编程课程教学探索[J].计算机教育,2024(9):33-37.
文章头图由“智谱清言”绘制而成。
(完)
更多精彩:
校长专访|扎根边疆民族地区 聚焦师范教育主业培养高素质应用型人才——丽江师范高等专科学校陈本辉校长专访
言十│计算机系统能力培养的回顾与前瞻
“以学生为中心”教学的理念及落地路径探讨
校长专访|推动学科交叉融合 培养新时代创新型人才——香港科技大学(广州)创校校长倪明选教授专访
第七届编委会新年寄语
计算学科课程思政教学指南
陈国良院士|计算机课程思政虚拟教研室文化建设
南大陈道蓄教授|变与不变:学习过程中的辩证法
言十│关于高校青年教师的“困境”思考及建议
徐晓飞等|元宇宙教育及其服务生态体系
【目录】《计算机教育》2024年第8期
【目录】《计算机教育》2024年第7期
【目录】《计算机教育》2024年第6期
【编委寄语】北京大学李晓明教授:由“课堂教学改进元年”想到的……
南大陈道蓄教授:教学生提问和教学生答问,哪个更重要?
【言十系列】:计算机学科发展趋势及其对计算机教育的影响
北大李晓明教授:从趣味数学到趣味算法到趣味编程——非专业学习者体会计算思维的一条途径?
一流计算机学科建设的几个问题思考
新工科与大数据专业建设
他山之石可以攻玉——中外计算机教育研究文章汇编
责任编辑: