C语言程序设计智能化教学改革
2020-04-29石文兵张顺香孙克雷刘文娟
石文兵,张顺香,孙克雷,刘文娟
C 语言程序设计是计算机类及相关专业的必修课程,C语言语法严格规范,结构清晰,国内高校都是将C 语言作为计算机及相关专业必须掌握的基础语言,对学生计算思维和程序设计素养的培养意义重大.2010 年5 月审议通过的《国家中长期教育改革发展规划纲要(2010—2020年)》是全国教育改革和发展的纲领性文件,其中明确指出要将一流专业建设作为高等教育改革发展的核心任务,高等教育的人才培养模式必须进行改革创新,适应新时代的发展要求[1-2].
目前,国内高校C语言教学的信息化水平有很大提高,但智能化教学改革还处于起步阶段.近年来人工智能的相关技术迅猛发展,人工智能融入高等教育将成为新时代教育改革的发展趋势.在新时代背景下,使C 语言教学紧跟人工智能技术发展的步伐,推进C语言程序设计智能化教学改革具有重要意义.
1 C语言程序设计课程的教学现状
目前,国内高校C语言教学普遍采用以教为主的理念,教学活动有效支撑教学目标和毕业要求的达成度不高,C语言程序设计的教学还存在以下几个方面的薄弱环节.
1.1 教学活动与教学目标的达成度不高
C语言的教学目标是让学生掌握C语言的语法规范和方法,培养学生良好的计算思维能力和程序设计能力,具备初步的工程应用与实践能力.其中计算思维能力的培养是教学的重点和难点,需要完成从问题需求到程序设计语言描述的转换.经过多年教学实践发现,学生套用语法规则和程序设计结构相对较容易,但新问题呈现后,计算思维模型的构建却比较困难.传统的C语言课堂教学对语法规范讲解偏多,启发式教学和知识迁移应用较少,例如学生对二维数组的定义和数组元素输入输出掌握较好,而应用二维数组解决实际问题的能力较弱,在程序设计训练中要求学生编程模拟扑克牌的洗牌和分牌过程,很多同学无法用二维数组构建计算模型.传统的C语言教学缺少案例驱动的启发式引导,再加上课后实践练习缺乏有效的精确监管,教学活动不能很好地支撑教学目标,使得预定教学目标达成度不高.
1.2 精细化的教学反馈难以实现
教学反馈对教师的教学效果和学生的学习效果有重要的促进作用,可以了解学生对授课内容的理解掌握程度,让学生找出问题,改正学习方法,同时教师可以及时改进教学方法,提高教学质量.目前的教学形式很难获得精细化的教学反馈信息,由于课堂教学知识点繁多,授课时间紧任务重,课堂互动很难全面展开,在没有信息化或者智能化教学手段参与的情况下,完整的教学反馈难以实现,没有良好的教学互动机制,教师不能很好地调整上课节奏,优化教学设计,提高授课质量.
1.3 课程教学监管评价机制落后
良好的教学效果离不开有效的教学过程监管和评价,由于中学和大学教学管理模式存在较大差异,大学较为宽松自由的学习环境使得很多学生自我约束力能力不足.C 语言程序设计知识点繁多,提前预习和课后实践练习非常重要,但目前C 语言教学缺乏对学习过程有效的监督管理和评价机制,课程的预习任务和课后实践练习很难让学生真正落实,布置的作业也存在相互抄袭的现象,这种模式下的教学考核评价必定不科学.平时成绩是课程总评成绩的重要组成部分,授课教师大多对表现非常优秀或表现很差的学生比较熟悉,对其他同学平时成绩的评价不够客观科学,影响了学生学习的积极性,也无法及时全面了解学生对所学知识的掌握情况[3].
1.4 持续改进的参照基础缺失
一个有文化有内涵的课程教学是通过不断总结经验、发扬优点、克服不足、持续改进构建起来的.目前,国内高校的C 语言教学基本都有课程小结和考试成绩分析,其目的是总结取得的教学成果,分析存在的问题,从而更好地提高教学质量,然而这样的总结分析往往是针对本学期的单个教学班级,没有多个教学班级、多个学期,以及具体考核内容掌握情况的参照分析,这样造成了课程的总结分析流于形式、缺少分析对比的参照数据,使得持续改进的驱动力不足,持续改进参照基础的缺失迫切需要信息化和智能化相融合的教学改革来完成.
2 智能化教学改革的主要方案
通过分析C语言的教学现状可知,创新性的智能化教学改革势在必行,C语言智能化教学主要是通过构建信息化教学平台,利用人工智能技术分析挖掘教学活动的历史数据,通过科学分析和智能决策提供及时有效的动态反馈的教学方案.
2.1 智能化教学改革的体系结构
C语言智能化教学改革的基本思想是通过C语言信息化教学平台辅助课堂教学,学生通过移动互联网终端登录后可完成课前预习、课堂教学反馈、作业自动评判、实验教学、综合实训、程序设计竞赛等功能,以大量的教学信息数据集为基础进行数据可视化分析和机器学习,实现全面精细化的动态教学反馈和教学决策[4],从而提升C 语言程序设计的教学效果,其体系结构如图1所示.
图1 C语言程序设计智能化教学改革体系结构
C 语言程序设计智能化教学改革主要包括信息化教学平台的构建和教学信息数据集的智能化分析决策,信息化教学平台运行多年产生的教学信息是重要的数据来源,具有宝贵的应用价值,能提供多维度的挖掘分析,对动态教学反馈和持续改进决策具有强有力的支撑作用.
2.2 智能化教学改革的实施
C 语言程序设计智能化教学改革的有效实施是确保取得成效的关键,智能化教学改革主要通过以下步骤实施.
(1)建设优质教学资源.C语言程序设计教学资源是实施智能化教学改革的重要基础,学生的课前预习、课堂教学反馈、作业练习、实验教学、综合实训和程序设计竞赛活动都需要教学资源来支撑.教学资源的设计质量至关重要,授课教师可以发挥课程小组的力量,以协作分工的方式完成教学资源的建设,对照教学大纲和授课计划,以课时为单位,将授课知识点划分成识记、理解和应用三个层次,预习课件主要包括识记和理解的内容,方便学生初步掌握基本概念和原理[5].课堂教学注重计算思维能力的培养,可设计适量的教学案例,通过案例驱动的模式加强知识点的理解和应用[6].例如在讲解C 语言运算符和表达式时,可设计一个自然语言到计算机语言转换表达的案例,通过案例锻炼学生的计算思维能力,示例见表1.
表1 计算思维的转换示例
除此之外,每次教学活动应制作相应的教学问题反馈表,连同教学课件一起发布到教学平台,教学问题反馈表和每次课堂教学一一对应,方便全面了解学生对授课内容的理解掌握情况,这是实现动态教学反馈和持续改进的工作基础,例如制作好的一维数组的教学问题反馈表见表2.
表2 课堂教学反馈示例表
作业练习应以程序设计题为主,准备好程序的输入输出样例,就可以通过自动评判系统完成批阅,可以极大提高作业评判批阅的效率和学生的编程能力.实验教学是重要的实践环节,根据实验教学大纲,按验证性、设计性、综合性三种类型设计实验运作表并编写实验指导手册.综合实训是完成全部教学内容后,提升学生综合应用能力的实践项目,要求学生以团队协作的方式开展模块化设计,例如综合实训选题可以是支付宝账单的分类统计与查询系统,用C语言模拟现实生活中的功能需求对工程实践能力的培养具有很好的促进作用.程序设计竞赛是培养选拔ACM程序设计竞赛选手的重要途径,C语言程序设计竞赛试题参照ACM 程序设计竞赛的规范,试题库的建设可按难度级别分阶段逐步完善,也可以吸收优秀的学生参与试题库建设,经过多年的积累和扩充而形成的试题库具有非常重要的教学价值.
上述优质教学资源的建设方案以C 语言程序设计的基本规范和方法为根本,以课程教学目标和毕业要求为导向,以培养计算思维能力和程序设计素养为核心,可有效提高教学活动与教学目标的达成度,弥补传统C语言教学过程的薄弱环节.每次课堂教学活动一一对应的教学反馈表按知识点分类设计,全部的教学反馈表将形成全面的精细化的教学反馈体系,将其整合发布到信息化教学平台,将得到实时的精细化的教学反馈信息,可以很好解决传统教学过程中精细化教学反馈难以实现的问题.
(2)构建C语言信息化教学平台.C语言信息化教学平台是实施智能化教学改革的前提条件,他为智能化教学改革提供数据挖掘分析和持续改进决策的基础数据.C 语言信息化教学平台的核心模块是在线评判系统(Online Judge System,简称OJ 系统),目前已有非常稳定的开源OJ 系统,如HUSTOJ在GitHub上的开源地址为:https://github.com/zhblue/hustoj,根据文档安装部署后即可构建C 语言在线评判系统.为了更好地开展C语言的智能化教学改革,需要在C语言在线评判系统的基础上扩展其他模块,如“课前预习”和“课堂教学与反馈”栏目,主要功能是信息发布和管理,在原有的开源项目的基础上扩展比较容易实现.“作业自动评判”“实验教学”“综合实训”和“程序设计竞赛”模块可以直接在开源系统中完成,通过对开源的C语言自动评判系统的扩展和二次开发即可构建功能完善的C 语言信息化教学平台.
C 语言信息化教学平台是智能化教学改革的重要阵地,建设好的优质教学资源迁移发布到信息化教学平台后,C语言的信息化教学水平将得到很大程度的提升,学生可以通过移动互联网终端登录系统,做好课前预习准备,教学课件可提供给学生下载学习,学生可以根据课程的掌握情况提交教学反馈表,方便老师及时掌握教学效果.OJ 系统能完成作业的自动评判,实验教学栏目有详细的实验指导手册,OJ 系统可以检测学生编写的实验程序是否正确并生成详细的学习记录.综合实训和程序设计竞赛能很好地培养学生的团队协作能力和工程实践能力,也为ACM程序设计竞赛选手的培养提供了网络平台.
C 语言信息化教学平台的“课前预习”模块和自动评判模块能详细展示学生的课前预习情况、作业完成情况、实验完成情况和综合实训的完成情况,学生的提交记录和得分记录清晰明了,可成为学生平时成绩考评的重要依据.对于没有提交记录或得分很低的同学,授课教师可以有效监督管理和进行针对性辅导答疑,解决了传统教学监管评价机制落后的难题,提高教学效率的同时也提高了学生的学习积极性.
(3)智能化教学分析与决策.C语言信息化教学平台不仅可以提高教学效率和信息化水平,更重要的是可以积累大量的教学信息,多年教学运行的历史数据将成为宝贵的教学财富.教学分析与总结是课程优化和提升的重要手段,实施智能化教学改革将有效推动国家工程教育专业认证倡导的“以学生为中心,以产出为导向,以持续改进为驱动力”的先进教育理念的推广[7].C语言程序设计课程组的师资水平较高,很多老师从事人工智能与数据挖掘相关的研究,这为智能化教学改革创造了条件,也很好地体现了科研和教学的相互促进作用,C语言的智能化教学改革主要完成教学分析和教学决策两项重点任务.
C 语言信息化教学平台产生的教学数据涉及面广,能全面记录学生学习过程和学习效果的差异性,大量的程序评判结果和试题涉及的知识点也能很好反映学生对不同知识点的掌握情况.Python作为人工智能应用领域最为热门的语言,其中的numpy、pandas、sklearn、matplotlib 等模块提供了强大的数据处理、数据分析、数据建模和绘图的功能.智能化教学分析能发现学生有没有进行课前预习、作业是否提交,以及完成质量如何、是否有知识点掌握较差的教学反馈、实验练习的教学效果如何,还可以根据文本相似度计算学生提交的源程序是否存在抄袭现象.综合实训模块的数据分析能反映学生的计算思维能力和工程实践能力.程序设计竞赛的统计排名分析能辅助做好ACM程序设计竞赛选手的选拔.智能化教学分析能发现教学过程中的盲点,将分析结果推送给学生和教师能起到很好的监管作用.Python 中的sklearn 模块有功能强大的机器学习算法,以教学历史数据作为训练集,能构造出科学决策的计算模型,例如能综合多方面的表现通过机器学习算法计算学生的平时成绩和实验成绩,辅助教师作出更加科学合理的教学考核评价,根据学生在教学平台上的综合表现预测期末考试成绩并给出预警提醒;根据学生作业完成情况分析其薄弱环节,个性化推荐相应的试题,使学习更具有针对性,体现以学生为中心的教学理念.
教学的持续改进来源于教学活动的总结分析和决策,而不断积累的教学历史数据将成为教学分析与总结的重要参照基础,在大量数据的支撑下能多维度地分析教学活动,为教学的持续改进提供强有力的支撑,而不是传统的流于形式的教学总结和分析.人工智能技术在C 语言课程教学上的融合,将为教学的持续改进提供更大的驱动力,为教育教学注入新的思想.
3 结束语
C 语言程序设计课程的智能化教学改革是传统信息化教学和人工智能技术的融合,引入了新的方法和工具,促进教学方法从粗放型向精准型、智能型转变.2017年国务院印发的《新一代人工智能发展规划》中明确指出要通过人工智能技术推动人才培养模式和教学方法的改革,建立智能化教学的新型教育体系.C 语言程序设计的智能化教学改革正是新时代背景下推动自身教学变革和创新的教学方案,体系结构完整,实施步骤清晰,有效弥补了传统C 语言教学的薄弱环节.该教学方案取得成效的前提是教师要投入大量的时间和精力做好教学资源的建设;配套建立信息化教学平台并持续扩展完善;关键技术是人工智能中的数据挖掘和机器学习;需要既懂人工智能又有丰富教学经验的复合型人才的参与.智能化伴随着信息化协同发展,C语言程序设计的教学必将以崭新的面貌释放出新的活力.