智能教育背景下编程教学的困境、策略与趋势分析
2023-07-11向程冠王英王东
向程冠 王英 王东
关键词:智能教育;编程教育;大规模个性化教学;混合增强智能;高等教育
1 引言
编程课程是高校计算机相关专业的重要核心课程之一,是学生学好专业技能的重要保障。国内外多数计算机类专业选择在学生入学的第一学期开始教授编程,如C语言程序设计。在编程入门课程中,学生可以习得解决问题的技能、编程的基本概念与编程语言的语法规则,并初步学会运用编程语言解决问题[1]。一直以来,教授新手学习编程被视为计算机教育的七大挑战之一[2]。据Bennedsen等人的统计,编程入门课程的平均学习通过率仅为67.7%,失败率高[3]。随着社会的进步,蓬勃发展的人工智能技术在推动教育深层次变革的进程中促进了教育新形态的产生,教育信息化向高阶应用发展,加速了教育的结构性变迁[4]。研究者们将程序自动测评与反馈技术应用到编程教学中,虽然大大减轻了教师的工作量,但仅依赖于机器智能完成时间复杂度、空间复杂度及通过测试用例数目等方面的低阶反馈,忽略了人类教师在推理、算法逻辑、语义理解及决策等方面的高阶反馈。科学技术的发展必然引领教育人工智能由“支持智能”阶段向人机协同的“混合增强智能”阶段发展[5],人类智能与机器智能协同的混合增强教育模式将成为编程教育的一种新趋势。同时,人工智能+教育的新形态将有助于促进大规模个性化教学,探索与实践大规模个性化教学也将成为编程教育的另一种新趋势。
2 高校编程入门课程教学的困境
在高等学校计算机专业的编程入门教学中,教师面对刚从中学阶段转入大学阶段的大学生,如何了解学生的知识背景、激发与保持学生的编程积极性、平衡规模化与个性化教学的矛盾、组织编程知识点的教学顺序等一直是教师亟须解决的问题。
1)学情困境:对学生学前基础情况了解不足
众所周知,问题解决能力、逻辑推理能力与数学能力是学习编程的重要保障。问题解决能力主要包括问题理解能力、关键信息识别能力和解决计划制定能力[6]。良好的逻辑推理能力有助于促进学生学习编程的认知能力。尽管数学能力与编程学习之间并不存在因果关系,但研究表明数学能力对学习编程很重要,数学能力与问题解决能力密切相关[7-8]。教授编程的教师只有充分了解学生的知识与能力储备情况,才能制订出有积极意义的教学计划。因此,如何快速评估学生已具备的问题解决能力、逻辑推理能力与数学能力,成为编程授课教师面临的首要问题。
2)动机困境:持续调动学生的编程积极性困难
一方面,学生在高中阶段有明确的“升学”学习目标,大学阶段存在学习迷航问题,导致缺失学习动机与动力。另一方面,编程学习的成功需要不断努力,但大学生初学编程的动机与积极性不足,在面对学习困难时显得力所不及[9]。因此,为了持续调动学生学习编程的动力与积极性,教师需要探索对应的教学策略。
3)函矢困境:大规模教学与个性化教学的矛盾
夸美纽斯在《大学教学论》中提出的标准化课堂成为工业时代的主流课堂形态,全班上着一样的课,学生做着一样的练习[10],这样的课堂形态有利于组织大规模教学。在以“学生为中心”的现代化课堂中,需要融入“因材施教”的个性化教学,编程教学更是如此。然而,面对人数较多的班级群体,教师陷入了函矢相攻的困境:一方面要检查评测学生提交的大量代码;另一方面要完成个性化的学习反馈,工作任务量艰巨,难以解决学生的认知需求和个体困难。
4)循常困境:编程知识点教学顺序组织的自主性弱
一般而言,通过改进教学内容可提升教学效果[11]。大多数的编程教学教师对教学内容的顺序组织循常习故,按教学大纲规定的教学顺序组织教学活动,缺少革故鼎新的尝试,自主性弱。在高校编程教育研究中,几乎没人提及知识点顺序组织对教学效果的影响[12]。因此,在编程课程中如何组织知识点的教学顺序,成为教师需要进一步探索与研究的问题。
3 高校编程入門课程教学的策略
教授新生学习编程并非易事,极具挑战性[13]。在教学过程中,教师会尝试采用多种教学方法与策略以期取得良好的教学效果,如干预策略、协作策略、游戏策略、做中学策略、智能辅助策略等。
1)干预策略
在编程入门课程教学中,翻转课堂与混合式教学是常用的教学干预策略。翻转课堂是基于传统课堂结构的一种教学新形式,有助于在编程教学中提高学生的成绩,通常要求学生在课前完成视频、文本或其他材料的学习,课上完成与知识点相关的作业、讨论与质疑解答[14-16]。混合式教学不仅注重线上教学与线下教学的混合,更强调在“以学生为中心”的教学情境下教辅混合[17]。因此,混合式教学符合编程课程的教学要求,能有效提高教学效果[18-19]。
2)协作策略
编程教学的协作策略有结对编程、小组协作与人机协作等。结对编程是指两个学生一起协作完成编程设计、算法与编码,通常在线下编程授课中使用,由编程能力强的学生主导,通过相互帮助以促进学生的学习积极性[20-22],有助于减轻教师的工作量,是许多高校在编程入门课程教学中常采用的一种教学策略[23]。结对编程的成功率取决于合作伙伴的贡献[24],需要合理安排结对成员。小组协作是一种基于人口学理论(如社会建构主义和社会认知理论)的相互协作方法,由两名以上的学生一起完成编程任务。小组成员协作时,可以把规模较大的任务划分为多个子任务派发给学生完成,也可自由分配编程任务[25],从而促进学生积极参加小组活动[26]。人机协作主要指学习过程中学生与“弱人工智能”阶段的机器之间的协作,由机器提供在线学习环境与智能辅导,为学生推送相关的数字化学习工具与资源,辅助学生完成自适应学习活动[27]。
3)游戏策略
基于游戏的教学方式专注于非娱乐的有趣学习,有助于教师向初学编程的新生传授编程基础知识的概念,以保持学生的学习兴趣和动机[28]。在非游戏的教学情境中使用游戏元素,可增强学生的学习体验[29-31]。
4)做中学策略
“做中学”由约翰?杜威提出,也称边做边学策略,强调以学生为中心,体现了现代化教学中的一种新型师生关系[32]。学生在收集信息、思考和解决问题的活动过程中保持身心的活跃状态[33]。在编程教学中采用“做中学”,需要鼓励学生积极参加编程活动,积极反思其想法来学习如何编程[34]。
5)智能辅助策略
目前,多数高校在编程教学中使用了智能辅助系统(也称为智能编程导师),由系统提供编辑和运行代码的环境,并自动完成语法错误提示[35],大大减轻了教师的工作量。智能辅助系统提供了编程题目的静态测评与动态测评两种方式:静态测评主要从软件度量(复杂性、注释、代码行数、运算符数量、操作数数量、变量数量)、程序风格、错误检测、关键字检测、抄袭检测、代码结构相似性分析[36,37],通过计算学生源程序与教师给出的程序模板之间的相似度给出评分,即使代码有语法错误,也可获得部分分数;动态测评主要根据教师提供的测试用例(输入)来评估学生的代码是否输出了预期的结果,按通过的测试用例数目给出分数,当存在编译错误时,返回错误信息。
4 高校编程入门课程教学的趋势
1)基于混合增强智能的“师-机-生”三元主体协同
察势者明,趋势者智。人工智能技术的发展必然促进社会的进步与发展,站在教育人工智能必然由“支持智能”阶段向人机协同的“混合增强智能”阶段发展的新趋势下,机器智能在教育中地位逐渐凸显,对教育产生了新的革命性影响,传统教育活动中的“师-生”二元主体结构必然向“师-机-生”三元主体结构演化。人工智能+教育已经成为高等教育改革创新的新趋势,混合增强的“师-机-生”三元主体教学模式作为智能教育的新形态,也将成为高等学校教育改革创新的一个重要方向。在高校编程入门课程教学改革中,构建新一代人机协同的“师-机-生”三元主体混合增强智能教学模式,融合机器在存储、计算、搜索、优化方面的智能与人类在直觉、推理、决策方面的智慧,有助于促进精准教学,提升编程学习体验。
2)规模化教学与个性化教学融合
以孔子为代表的儒家学说主張的“有教无类”“因材施教”,正是今天教育工作者们对实现教育均衡与培养拔尖创新人才的追求,创新人才的培养依赖“因材施教”“以学生为中心”的个性化教学。当下正处于后工业阶段的规模化时代,个性化教学在价值取向上与工业“标准化”相悖,在实施过程中与规模化人才需求相悖,在教学建设中与统整性的资源供给系统相悖,在评价结果中与标准化测评相悖[38]。人工智能技术的发展,促进了规模化教学与个性化教学的融合,也有学者将这种融合称为大规模个性化教学[39]。智能教育技术为大规模个性化教学提供了数据支持、资源支持、教学组织支持与评价支持,教师可采用基于混合增强智能的教学模式,借助机器智能的优势,结合教师自身的教学智慧,在编程教学中探索大规模个性化教学的有效路径。比如,在编程教学中采用翻转课堂与混合式教学,线上完成知识点的教学,线下完成个性化的学习辅导,从而实施个性化精准教学。
5 结束语
在高等教育中,教授大一新生学习第一门编程课程具有较大的挑战性。在教学中,及时掌握学生的知识背景与相关技能,持续激发与保持学生的编程积极性,平衡规模化与个性化教学的矛盾,研究编程知识点的教学顺序组织,关注智能教育背景下编程教学的新趋势,有助于提升教学效果,促进高校教学改革创新。在后续的研究中,我们将持续探索“师-机-生”三元主体协同的编程教学模型,以期在数字化时代为编程教学的应用研究提供参考。