人工智能赋能编程类课程的教学
作者: 陈涵深关键词:人工智能;编程类课程;教学改革;JavaScript程序设计
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2024)28-0137-03
0 引言
人工智能(Artificial Intelligence,AI) 作为一项快速发展的技术,已渗透到人们日常生活和工作的各个环节,包括个性化的购物体验、新闻定制、医疗保健、智能家居和城市安保等。它为人们生活生产带来了各种便捷的同时,也带动了社会岗位技能需求变革[1]。2022年末以来,以ChatGPT为代表的通用人工智能技术在全球范围内引发持续关注。ChatGPT作为一种大型多模态预生成式人工智能(Generated AI) 模型,可以支持图片、文字、代码、音频等多模态数据输入和输出,具有包括学习、推理、解决问题、感知、语言理解等在内的各种能力[2]。最新版的ChatGPT4在律师考试中超过了90%的考生,GRE考试更是几乎满分通过[3],这一惊人表现凸显了AI 在学习和教育方面的巨大价值。
人工智能的迅猛发展为职业教育领域带来了前所未有的机遇和挑战[4]。在编程类课程的职业教育中,如何应用AI技术来构建创新的教学模式及增强学生的实践能力、创新思维和竞争力,成为摆在教师面前的重要课题。本文将以JavaScript程序设计课程为例,探讨该课程的教学现状,并结合个人教学经验,研究与探讨如何利用人工智能技术赋能该课程的教学。
1 教学现状
JavaScript语言是目前最常用的程序设计语言之一,也是计算机专业的一门核心课程[5]。传统的JavaS⁃cript程序设计教学方法以教师和教材为中心,重点强调语法教学,而忽视问题导向的教学方式,导致学生在课程结束后感觉收获有限。通过多年教学实践,笔者发现编程类课程教学过程中可能存在以下问题:1) 人工智能技术已经快速渗透到各类前后端平台,但目前课程未涵盖相关内容,与行业趋势脱节;2) 学生基础知识和编程经验上存在较大差异,满足所有学生的需要成为一个挑战;3) 传统的灌输式教学限制了学生独立思考和提问的机会,忽略了培养学生的主动思考和主观能动性;4) 课程对实践性要求高,学生在编程和调试中会遇到各种语法或者逻辑问题,而教师在指导众多学生时往往难以兼顾;5) 实践项目较为陈旧,缺乏吸引力和创新性,导致学生参与不积极,也未能有效培养学生的创新和创造力;6) 代码作业通常依赖教师人工审核,耗时又易受主观因素影响。随着在前端技术的快速发展和AI技术的广泛应用,传统的Ja⁃vaScript程序设计教学方法已不能满足日益复杂化的技术要求和学生多样化的需求。在此背景下,人工智能赋能编程类课程的教学研究和实践显得尤为重要。
2 教学内容的更新与优化
为了适应人工智能(AI) 在各个领域的广泛应用,更新和优化编程课程内容变得尤为重要,以确保学生能够掌握最前沿的知识和技能。
1) 确定新的教学目标。在基本理论知识点上,除了学习JavaScript语言的基本结构、函数、对象等基础知识外,应加入AI的基础知识,如数据预处理、机器学习、神经网络和深度学习的概念,以便让学生在学习JavaScript的过程中了解AI技术的基础。在JavaScript 实践教学部分,新增如何将JS技术与AI融合的内容,掌握如何调用现有的AI库或者API接口实现简单的图像智能识别和自然语言处理。这要求学生不仅能写出优雅的JavaScript代码,还要能够实现简单的AI 功能。由于AI技术迅速演进,教学目标也应定期更新,以确保学生学习的知识和技能与时俱进。
2) JavaScript 与AI 库的结合。引入各种AI库、框架和工具,来设计新的实践项目,以增强学生的实践操作能力并激发他们的创新思维。具体来说,引入TensorFlow.js机器学习算法库,为学生提供初步的实践指导。学生可以在前端环境中实现AI模型的运行和应用,如构建简单的在线图像识别系统,通过上传图片即可自动识别常见物体的类型。这种实践活动不仅让学生掌握数据处理、特征提取和模型调用等关键技能,还激发他们对AI技术更深层次的探索兴趣。
3) 增加数据处理和可视化的内容。随着人工智能与大数据时代的来临,前端采用可视化技术展示数据处理过程和结果的需求日益增加。课程引入JavaS⁃cript图表库Chart.js内容,结合AI技术,帮助学生进行有效的数据筛选和可视化处理。通过设计实际的项目,如构建展示学校学生信息的统计网页,学生可以学习如何展示复杂数据,包括生源地的电子地图和不同年龄学生数量的柱状图等内容。这不仅培养学生的数据意识和处理技能,也帮助他们理解数据在AI项目中的重要性和处理技巧。
3 教学方法的探索与创新
教师是专业技术教育和 AI 赋能教育的关键,也是人工智能思维、智能技术运用于新工科专业教育的主要实践者[6]。在人工智能时代,教学模式正从以教师为中心逐渐转向以学习者为中心,这一趋势越来越明显。
3.1 AI 辅助的个性化教学
在现代教育领域,AI技术的融合正在为个性化教学开辟新的路径。通过使用AI辅助工具和学习系统,学生能够更深入地参与教学过程,享受更加个性化和高效的学习体验。这些工具也显著减轻了教师的教学负担,使他们能够更专注于教学内容的创新和优化。
在编程学习中,使用如Visual Studio Code这样的先进开发工具,可以高效地完成个性化教学工作。在代码编写阶段,学生可以利用Visual Studio Code自带的自动代码补全和实时代码提示功能,更流畅地完成编程任务。这不仅提高了编程的效率,还有助于降低学习初期的难度,使学生更快地进入状态。在代码审查阶段,学生可以在Visual Studio Code中安装Lint工具插件进行基本的代码检查,还可以借助AI工具,如Github Copilot或IntelliCode,进行更全面的代码审查。这些工具不仅能对代码进行语法、逻辑和性能检查,还提供有针对性的反馈意见,帮助学生及时了解并纠正错误,从而培养良好的编程习惯。对于更复杂的编程任务,AI工具可以协助完成非核心知识点的任务。例如,在JavaScript程序制作网站过程中,通常需要使用HTML和CSS技术来编写前端页面。对于掌握程度差异较大的学生,可以使用如SketchCode这样的开源工具,通过描述或草图自动生成简单的Web界面原型。这样的工具可以减轻学生在HTML和CSS编程方面的负担,使他们能够专注于JavaScript的编程实践。
AI在编程教学中的角色正变得越来越重要。线上AI 大模型平台,如百度的文心一言或OpenAI 的ChatGPT,能提供全天候答疑,迅速解答学生学习中的疑问,进而提高其学习效率。当学生完成实践任务时,还可以让AI给出答案,进行自主代码比对,这不仅帮助他们定位并改进自己的弱点,还能鼓励他们不断前进。随着学生与AI的持续交互,这些平台可以进一步分析学生所学知识与技能程度,为他们提供更加精确的学习建议和个性化的学习路径。
3.2 AI 辅助的教学评估
教学评估不仅是检验学生学习效果的途径,更是促进学生学习和进步的关键[7]。借助AI技术,教学评估可以变得更为高效和精准。
作业与项目是评估学生知识理解和技能掌握的核心手段。传统的批改方式通常依赖于教师或助教对代码进行手动审核,这不仅耗时,而且可能受到主观因素的影响[8]。AI技术的进步提供了便捷的自动批改,包括自动化编程作业批改和综合评价。使用如CodeGrade的自动代码评审平台,学生提交代码可以被系统自动运行预设的测试用例,以验证代码的正确性和功能的完整性。这种方法确保了作业评估的准确性和效率。除了基本的正确性验证,该平台还能进一步指出错误点、分析代码的执行效率和逻辑清晰度,提供关于代码性能和健壮性的综合评估,这对学生理解更高级的编程概念和最佳实践非常有帮助。
在教学整个过程中,可以借助数据分析和机器学习工具来持续监测学生的在线学习活动,如网上的互动数据、测试成绩、作业提交情况以及在线学习平台上的行为模式。这些数据有助于识别学生对具体知识点的掌握程度,了解哪些概念他们理解得好,哪些需要更多辅导和练习。此外,机器学习算法还可以分析学生的学习习惯和偏好,如他们倾向于何时学习、学习某个主题所需的时间及完成任务时的效率。这些信息为教师提供关于学生的整体学习状况、知识掌握程度和学习难点等详细洞察,从而帮助教师更好地理解学生的学习情况,并根据每位学生的个体差异提供有针对性的教学反馈和建议,同时也为未来的高质量教学提供数据支持。
3.3 培养创新能力
借助AI技术培养学生的创新能力是现代教育的一个重要方向[9]。AI不仅提供了一个信息和知识的丰富来源,还能激发学生的创造力。因此,教育者应积极利用这些资源,为学生营造一个鼓励探索、创新与学习的环境。
通过提供一系列多样化的AI工具和平台,学生不仅学习理论,还能体验各种AI算法和技术。这种实际操作经验使他们能更深入地理解这些技术的原理,并激发他们的好奇心和探索欲。例如,在讲授JavaScript 程序设计网络编程章节时,可选用日常生活中常用的聊天机器人作为案例。通过动手操作和听讲,学生可以了解聊天软件的网络通信原理和编程方法,这不仅增加了课程的趣味性,还有助于培养学生的创新思维和实际应用能力。
此外,通过设定与AI相关的创新项目,可以进一步鼓励学生应用不同的AI模型和技术来解决实际问题。采用探究式教学法,引导学生主动参与问题发现和解决过程。例如,学生可以利用百度大脑等平台提供的开放AI接口,通过JavaScript进行网络调用,构建一个基于AI生成艺术、音乐或文本的网站。在实践过程中,他们需要思考项目背后的设计逻辑、操作机制和可能的改进方向。教育者可以根据学生提交的软件开发项目评估学习进度、实用性和创新能力。这样的方式不仅可以反映学生的技术掌握程度,还能鼓励他们探索更多创新的方法和应用。学生还可以尝试设计在线代码审核工具,利用如TensorFlow.js等AI工具库来建立和训练模型,实现自动检测JavaScript代码中的常见编程错误。这种从使用工具到开发工具的过程,可以全面提升学生的编程能力和创新思维,帮助他们更好地将AI功能融入Web开发中。
AI教学内容与行业需求及最新技术趋势保持一致,通过将课堂中的AI创新成果展现于创新创业竞赛,构成了一种极佳的实践途径。例如,在作者执教的JavaScript程序设计课程中,就有学生利用所学的编程和AI技能,自发组成团队,共同开发了一个基于人工智能的芯片表面缺陷检测系统,并在浙江省第十八届“挑战杯”大学生科技作品竞赛中荣获铜奖。参与创新创业竞赛的过程不仅让学生将创新想法和技术付诸实践,还为他们提供了与行业专家和其他创新团队交流的机会。这种交流不仅提供了宝贵的反馈,帮助学生完善项目,还拓宽了他们的视野。
4 实施效果
对两届两个班级学生的JavaScript程序设计授课情况进行了统计和对比分析,笔者发现了几个显著的进步点。1) 引入与当前技术热点相结合的教学内容显著提升了学生的学习兴趣。通过对比两届学生的课堂参与度和作业提交情况,我们注意到当课程内容与实际应用场景更加紧密结合时,学生的参与度明显提高。例如,讲授使用Cursor工具进行代码审查和自动代码编写时,学生的课堂互动频率和作业提交率均有所增加。2) 学生对新教学方法的反馈积极。在与学生的交流过程中,他们高度认同和积极支持JavaScript与AI技术的结合。学生普遍表示,这种教学方式不仅增加了课程的趣味性,而且在理解新技术和解决实际问题的能力方面,也为他们提供了更多的帮助。这表明,将理论与实践相结合的教学模式更能激发学生的学习热情和创新思维。3) 学生的作业完成率和质量也得到了显著提升。相比上一届学生,作业完成率提高了11%,整体作业质量同样也有所提升。这不仅反映了学生对新教学内容的接受度和兴趣,也在一定程度上减轻了教师在作业指导和批改方面的负担。在期末考试成绩方面,也有了明显的提升。与前一届学生相比,这两届学生的平均分和最高分均有所增加,这说明新的教学方法和内容对学生的学习成果产生了积极影响。4) 在课程结束后进行的“学评教”中,学生对这门课程的整体评价比上一届高出3%。这个结果表明,学生对新的教学内容和方法有更高的满意度。总的来说,通过这次教学内容的更新和教学方法的改革,不仅提高了学生的学习效率和兴趣,也增强了他们对新技术的理解和应用能力。
5 结论
本文探讨了在人工智能(AI) 技术日益发展的背景下,如何利用AI赋能JavaScript程序设计课程的教学。通过对教学内容的更新、AI辅助个性化教学、AI 辅助教学评估改革以及培养学生创新能力等方面的探索和实践,成功地将人工智能技术融入教学实践中。这一融合不仅丰富了课程的教学内容,还为学生提供了更加实用和创新的学习体验,证明了AI赋能教育在现代教学中的巨大潜力和价值。随着技术的不断进步,期待AI 在教育领域中的持续深入和广泛应用。