0 引 言
以2022年底OPENAI推出的ChatGPT为代表的大模型、生成式人工智能展现了“几乎无所不知”的能力,给各界带来了震撼,尤其给教育业带来了巨大冲击。大模型“一键生成代码”的能力,更是给编程教学带来了极大的困惑和前所未有的挑战。
编程教学的有效性决定了一个国家软件开发能力。在现代社会中,软件已经成为各行各业、政府和社会组织中必不可少的工具和基础设施。软件的研发实力和技术水平体现了一个国家在科技和创新领域的实力和竞争力,有效的编程教学是国力增强所需。
在信息化、数字化和智能化时代,编程教学对于年轻人的成长也变得非常重要,它提供了未来工作和生活中所需的关键技能,并可以促进学生在科学、技术、工程和数学领域的学习。
在信息化、数字化和智能化时代,编程教学对于年轻人的成长也变得非常重要,它提供了未来工作和生活中所需的关键技能,并可以促进学生在科学、技术、工程和数学领域的学习。
1 编程教学的有效性
不同专业的学生学习编程的目的会有差异,计算机相关专业学生学习编程是为了能用计算机编程解决问题。用计算机求解问题的过程如图1所示[1]。
第1步:抽象。①从研究对象中抽象出数据对象、数据元素以及数据元素之间的关系;②对处理要求进行抽象,给出操作定义及边界条件。
第2步:设计。①设计数据元素及其关系在计算机中的存储方法;②设计操作实现的算法。
第3步:实现。用程序实现算法,通过调试、测试及分析,最终解决问题。
编程教学实际是教学生用计算机求解问题的知识与技能,包括设计、编程及算法分析。如下因素用于衡量编程教学的有效性。
(1)解决问题的能力:学生是否能够运用所学的编程知识和技巧,解决实际问题和应用场景。
(2)逻辑思维和分析能力:编程教学要求学生思考问题的逻辑和步骤,设计合理的算法和数据结构。
(3)代码的质量:学生编写的程序是否能够正确运行,并达到预期的功能和效果;代码是否具有良好的结构、可读性和可维护性,是否遵循编程规范和最佳实践。
(4)持续学习和自我提升的能力:编程是一个不断发展与演进的领域,通过编程教学,培养持续学习与自我提升的能力,以适应将来新的编程语言、框架和技术,跟上行业的发展。
(5)创造性和创新性:问题层出不穷、千变万化,学生是否能够运用编程思维和技术,提出创新的解决方案,并实现自己的创意和想法。
(6)沟通与协作能力:编程工作中不可避免地涉及团队项目,与他人合作共同完成一个编程任务、接受测试人员反馈等,编程教学应该培养学生的团队合作能力、沟通能力和协作能力,帮助他们适应未来的工作环境。
这些因素综合起来可以更全面地评估编程教学的有效性。虽然程序是最终的成果体现,但教学中应该关注学生在学习过程中的成长与发展,以及他们是否能够运用所学的知识解决实际问题。
2 ChatGPT等大模型下编程教学面临的挑战与困境
以ChatGPT为代表的生成式AI大模型依靠对人类已有知识的汇集、分析和输出,具备了任何一个人无法企及的知识广度和深度。在计算机领域,ChatGPT自述可以在软件开发中提供不同开源编程语言的代码和模板、快速原型开发、代码质量改进、自动化测试与调试、项目管理等服务。大模型的强大功能给编程教学在知识面、技能训练和教学有效性各方面带来挑战。
2.1 知识面的挑战
人工智能技术彻底改变了知识生产周期以及知识生产方式。知识不再只是人在实践中认识世界、认识自我的成果,它还包括机器学习与数据分析的结果[2]。
大模型拥有比人类更复杂、更高效率且更精确的信息获取、筛选、分析和呈现能力,能够为学生提供任何他们想知道的知识信息[3]。“照本宣科式”的教学可能会被替代,以知识传递为核心的教育教学模式更是被逼入“墙角”[4]。在传统的教育学中,教师一直被定义为“知识的已知者”和“知识的传播者”。从ChatGPT 等大模型诞生的那天开始,教师这一角色的定位就注定被颠覆[5]。
2.2 技能训练上的挑战
编程能力不仅是知识层面上的能力,更是一种技能。技能须经过实践与训练,编程能力只能在纠正千错万错的实际操作与练习中渐增,这是一项费时、费力、费心智的事。当无捷径可寻时,学生会自觉进行练习以完成必要的学业。现在ChatGPT可提供源码,“多快好省”地完成学业任务,由此极大地阻碍学生亲力亲为写程序,如果上机操作只是把源码拷贝一下、运行一下,那编程技能训练就无从谈起。
2.3 编程教学有效性面临的困境
ChatGPT给编程带来了新途径,可以极大地提高编程效率,但这种方式给编程教学的有效性带来了诸多挑战。
(1)缺乏理解和思考:学生通过ChatGPT等大模型获得代码后可能不研究代码、不思考如何实现该代码,使得学生缺乏对代码的理解。
(2)缺乏实践经验:通过ChatGPT等大模型获得代码能够帮助学生解决问题,但不能代替实际编写代码的经验。
(3)缺乏个性化和反馈:编程是创造性的工作,同一个问题会有不同的设计和不同的源码。ChatGPT难以针对学生提供个性化的编程教育,也不能提供针对性的反馈与指导。
(4)知识浅薄和依赖性:通过ChatGPT等大模型获得代码和解决方案,往往不用花费太多的心力和时间,也不须深入了解其原理,长期下来,会对编程知识知之甚少,编程能力浮于其表,恶性循环,形成对ChatGPT等AI工具的依赖。
(5)不利于创新能力的培养:现成易得的答案,剥夺了学生思考的必要、钻研的动力、多样化思维的可能、合作与交流的必要、兴趣与好奇心的激发,失去创新思维和创新能力成长的空间和环境。
(6)个人沉浸,不利身心健康:借助大模型等AI工具解决学习问题又方便又快捷,减少了生生、师生的交流。长期拟人化的陪伴模式可能会导致如同网瘾般严重的情感成瘾问题,使学生长时间、习惯性地沉浸于人工智能世界,这对于学生的自我意识、心理健康、习惯养成、社会交往等方面都是有危害的。
3 ChatGPT大模型下编程教学应对之策
ChatGPT等大模型具有改变着软件开发方式的潜力,挑战了传统编程教学方法的有效性。终其因,明其理,可以利用大模型赋能有效的编程教学,创新教学模式。
3.1 调整编程教学产出,变“从无到有”为“从有到优”
传统的编程教学旨在通过教学,使学生能够“从无到有”,即通过问题分析、方案设计到编程实现,最终给出求解问题的程序。有了大模型后,直接获得源码。千篇一律的源码无法体现出学生学习情况个体上的差异,所以,须改变教学产出。ChatGPT给出的基于训练数据生成代码具有以下不足。
(1)质量和正确性的保证:ChatGPT等大模型生成的源代码可能会提供一种解决问题的方法,但不能保证代码的准确性、健壮性、最佳性能和完整性。除此之外,它可能无法完全理解问题的上下文或目标,生成的代码可能未能充分考虑特定编程项目的需求、约束或最佳实践。
(2)安全和错误处理:ChatGPT等大模型生成的代码可能缺乏对安全漏洞或异常情况的处理,生成的代码可能存在潜在的安全隐患。
(3)可维护性和扩展性:ChatGPT等大模型生成的代码可能缺乏良好的结构化和模块化,导致代码的可读性和可维护性较差。
大模型下,有效的编程教学产出须由原来的“从无到有”变成“从有到优”。把ChatGPT等大模型提供的源代码作为一个起点、作为思考与学习的基础,要求学生判断它是否正确,是否符合需求,是否须改进,从而进行必要的修改、测试和优化。
3.2 调整教学内容,变“问题到源码”为“源码到问题”
现有的编程教学是在掌握编程语言的基础上,通过程序求解问题进行编程练习,目的地是源码,即“从问题到源码”。有了ChatGPT等大模型,目的地一键可达,那以源码为目的地的课堂教学将失去对学生的吸引力。
ChatGPT等大模型下的编程教学,可将传统的“从问题到源码”的编程教学方式改为两步:①“从问题到源码”,即通过ChatGPT获得源码;②“由源码到问题”,即分析源码,展示问题求解中问题建模、程序结构、存储结构、算法及性能。通过该过程,学习程序结构设计、算法设计,了解程序设计原理。
3.3 调整评价依据,变“重源码”为“重理解与创新”
编程教学就是教学生如何用计算机编程求解问题,编程能力优劣评价依据是能否针对问题给出优质源码。当源码可由ChatGPT等大模型给出时,这种评价依据失去客观性,须相应改变,可以由“基于源码的评价”改为“基于理解与创新的评价”。
(1)考核ChatGPT等AI工具的使用技能。能否通过ChatGPT等工具,得到适合问题的源码。
(2)考核对源码的理解,要求学生通过阅读,给出算法步骤、分析算法性能等。
(3)考核学生知识应用与创新能力,要求学生分析现有方案的优缺点,考虑是否有其他解决方案。
以排序算法为例,可以将“编程实现冒泡排序”改为如下题目:
编程实现冒泡排序,并根据源码,回答下列问题:①说明被排序数据的存储方式;②说明冒泡排序原理,给出排序步骤;③给出排序趟数最少和最多时的运行截图?④说明最少和最多趟数分别是多少?序列有什么特征?⑤本算法有可优化之处吗?如有,对程序进行优化。
经过上述修改,使得源程序不再是解题的目的地,促使学生拿到源码后,反向从源码中理解算法、学习算法,学习编程知识、练习编程,弥补基于ChatGPT等大模型编程带来的问题。
3.4 物为所用,创新教学模式
ChatGPT等大模型不仅可以回答人们提出的问题,还具有许多技能,如写作、制作文档、信息整合、数据分析、翻译、做PPT等。这些技能可以为教师组织教学内容、创作教学文档、教学过程管理等提供帮助,成为教学的好帮手。
3.4.1 利用大模型,丰富编程教学内容
牛顿说:如果我看得更远的话,那就是站在巨人的肩膀上。过去人们为了站到巨人的肩膀上,须通过阅读等途径长途跋涉,并且因为时间、精力、体力等原因,仅能到达巨人肩膀上聊聊天已。今天,ChatGPT等大模型因其强大的信息收集功能可以帮助任何一个人轻易到达巨人的肩膀,使教师的备课可以站得高、望得远、看得广,发散性地组织教学内容。
以程序设计语言基础的第一课为例,可以把与编程相关的要事、杰出贡献人物、软件的作用、趣事、发展历史等各种事件融合在一起,如图2所示。过去收集这些材料,取决于教师的积累,今天通过ChatGPT等大模型,每个教师都能突破个人知识界限,实现发散性的教学内容组织,帮助学生快速了解领域相关知识和历史,激发学生的学习兴趣。
3.4.2 利用大模型,设计制作教学文档
ChatGPT等大模型可以根据用户的提示词,给出教学大纲、教案、PPT、习题等文档,并且在格式、内容和排版方面满足相应要求。教师以这些为基础,可以极大地缩短文档制作时间。对于编程教学的备课,教师还可以省去许多敲代码的时间。总之,充分利用大模型,教师可以把精力主要用在文档设计上,节省大量内容收集与制作的时间,有效提高文档质量。
3.4.3 利用大模型,协助编程学习管理
为了避免“一考定成绩”,切实提高教学质量,工程教育认证中特别关注教学的过程记录与评价。详细的过程记录与数据统计分析费时费力,ChatGPT等大模型可以提供以下帮助。
(1)评估学生表现:对于编程教学,一学期会有近百甚至几百道练习题。分析统计这些成绩以得到各个学生学习状况会很花时间。ChatGPT等大模型可以统计分析这些数据,提供学生报告与分析,帮助教师评估学生的学习情况。
(2)安排作业和考试:教师可以告诉ChatGPT等大模型须安排的作业或考试的相关信息,例如截止日期、内容和评分标准等,ChatGPT等大模型可以帮助教师生成相应的作业或考试安排,并及时提醒学生完成任务。
(3)提供学习资源和答疑支持:一方面,ChatGPT等大模型可以随时随地代替教师给学生答疑;另一方面,教师可以给出问题,引导学生通过ChatGPT等大模型获取学习资源。
(4)批阅作业:作业是学生学习必不可少的练习环节,作业少了,学生练习不够;作业多了,教师可能没有那么多的时间来批阅;如果不批阅,又无法了解每位学生的学习状况及讲课效果。电子档的作业,可以交给ChatGPT等大模型,由它给出每个答题的错误之处。教师通过阅读批阅结果,就能及时了解学生的答题情况。对于编程学习,可以精确到语法点、程序设计、算法设计等方面。
3.5 人机协同,实现因材施教
在教育领域,实现因材施教的个性化教学一直是极具挑战性的目标。传统的教育体系常常受限于师资力量和教师的精力,难以满足每个学生的个性化需求,然而,ChatGPT等大模型给这一目标实现带来了新的机会。利用大模型,教师可以比较容易地了解每个学生的学习状况,通过质疑、布置专门的学习任务等为每个学生提供有针对性的辅导与支持,让他们根据自己的需求和兴趣进行学习。这样的教学模式不仅有助于激发学生的潜能,同时也能让教师更高效地开展教育工作。
4 结 语
以ChatGPT为代表的大模型借助计算机强大的存储能力和计算能力,拥有无人能比的知识和知识产出能力,特别是其能够提供源码的功能,会改变编程学习的方式,并可能会严重影响现有编程教学的有效性。大模型引起挑战的同时也带来了巨大的发展机遇,它冲击着传统的教学方式,成为教育发展的新动力。学生用大模型实现个性化的高效学习,教师可以借助大模型进行高效且高质量的备课并创新教学模式。人机协同的育人模式将逐渐成为未来时代主流的教学样态,本文仅以编程教学作为探路之行。
参考文献:
[1] 徐慧, 周建美, 丁红, 等. 数据结构原理与应用[M]. 北京: 清华大学出版社, 2021.
[2] 顾小清, 郝祥军. 从人工智能重塑的知识观看未来教育[J]. 教育研究, 2022(9): 138-149.
[3] 徐国庆, 蔡金芳, 姜蓓佳, 等. ChatGPT/生成式人工智能与未来职业教育[J]. 华东师范大学学报(教育科学版), 2023(7): 64-67.
[4] 顾小清, 胡艺龄, 郝祥军. AGI 临近了吗: ChatGPT热潮之下再看人工智能与未来教育发展[J]. 华东师范大学学报(教育科学版), 2023(7): 117-130.
[5] 陈玉琨. ChatGPT/生成式人工智能时代的教育变革[J]. 华东师范大学学报(教育科学版), 2023(7): 103-116.
第一作者简介:徐慧,女,南通大学教授,研究方向为数据分析、模式识别、计算机教学,xu.h@ntu.edu.cn。
引文格式:徐慧,鞠小林,王皓晨.大模型下编程教学面临的挑战与应对[J].计算机教育,2023(11):60-64.
转自:“计算机教育”微信公众号
如有侵权,请联系本站删除!