吴运兵, 余小燕
(福州大学 数学与计算机科学学院,福建 福州 350108)
工程教育专业认证是国际通行的工程教育质量保障制度,也是实现工程教育国际互认和工程师资格国际互认的重要基础[1]。2016年6月,我国全票通过正式成为《华盛顿协议》的成员之一,标志着我国工程教育已达到国际水平,对提升我国工程教育的国际竞争力具有十分重要意义[2]。2018年10月,教育部、工业和信息化部、中国工程院联合发布《关于加快建设发展新工科实施卓越工程师教育培养计划2.0的意见》,明确指出要全面落实“学生中心、产出导向、持续改进”的先进工程教育理念,持续提升工程人才培养水平[3]。
工程教育的核心理念是以学生为中心、以产出为导向、持续改进[4~9],主要目标是培养学生深入运用工程原理和各种工程知识,分析和解决实际复杂工程问题[10]。计算机程序设计类公共基础课作为高校非计算机专业学生的一门必修通识类课程,是培养学生计算思维能力,利用计算机解决实际复杂工程问题的重要课程,也是支撑不同专业工程教育认证的重要基础课程之一。而程序设计类的实验教学是加强学生理解课程理论知识的重要基础,也是培养学生编程能力、解决复杂实际工程问题等重要途径,因此,在当前工程教育专业认证背景下,如何提升程序设计类的实验教学效果和质量,支撑不同专业的学生毕业要求达成条件,是摆在计算机公共基础教育者面前亟待解决的重要问题。
本文以程序设计类公共基础课C语言程序设计实验教学为例,探索服务于工程教育专业认证下实验教学改革,构建了基本验证性实验、线上拓展性实验、综合设计性实验三种实验并举的实验教学总体方案,达到提高实验教学质量,进而提升计算机公共基础课程序设计类教学效果,满足不同专业的工程教育认证需要。
计算机程序设计类公共基础课是承载着培养非计算机专业学生计算思维能力的一门重要通识类课程,也是培养学生利用计算机解决实际复杂工程问题能力的重要途径[11]。当前,各高校的公共基础课程序设计类通常包含理论课程和实验课程,理论课程主要讲解程序设计的基本语法、程序设计结构等知识,而实验课程通常是为了巩固课程理论知识进行上机实验,旨在培养学生编程能力,以及解决实际问题能力等,其教学质量直接影响课程理论知识学习效果。然而,现有实验教学仍存在着诸多不尽人意的地方,并未有效达到课程教学目标,难以支撑不同专业学生毕业要求达成条件的指标点。具体存在以下几个问题:
(1)实验教学方法较为传统。当前,程序设计类实验教学方法多数仍延用传统教学模式,即教师提前发布实验任务,并对实验任务中所涉及到的算法进行逐一讲解,学生依据实验任务进行代码编写、运行调试、代码纠错、提交实验结果等。这种传统教学模式导致学生过于依赖教师讲解,缺乏自主思考、自主实验等,同时,教师和学生也只关注实验结果,忽视了整个实验过程描述[12],导致学生实验意识淡薄,无法达到提高学生独立思考能力,以及实验教学效果和目标,对提升学生计算思维能力效果不明显。
(2)缺乏综合性实验项目。由于受到课程学时限制,实验教学仅围绕课程理论知识点进行验证性实验,缺乏综合性实验项目训练。学生完成课程学习后,基本无法达到系统性的分析、设计、开发、测试等要求,对于支撑各专业工程教育认证所需计算机技术要求相差甚远,难以满足学生毕业要求达成的指标点[13],即能够利用计算机技术进行设计和开发简单工程问题的解决方案。
(3)学生自觉编程意识较弱。非计算机专业的计算机程序设计类公共基础课通常安排在大一阶段学习(一、二学期均有),这个阶段的学生还不太适应大学学习生活,学习自律意识比较薄弱,且乐于参与各种社团活动,学习态度较为散漫,仅局限于完成实验教学课堂中的实验任务,较少能在课后自觉进行编程练习。
按照工程教育专业认证毕业要求达成指标点[13],结合上述程序设计类课程实验教学存在问题,笔者经过多次调研,从学校实际情况出发,构建了程序设计类实验教学总体方案,如图1所示。具体实施是以C语言程序设计课程实验教学为例。
图1 实验教学总体方案图
基本验证性实验项目是指围绕课程理论知识中的基本语法、程序结构、常用算法等进行上机实验验证,是检验学生对课程理论知识掌握程度的重要途径。
为了能让学生更好了解程序基本流程、基本结构、处理过程等,提升学生计算思维能力[14~15],笔者设计了验证性实验IPO(Input-Processing-Output)图,具体如图2所示。要求学生在验证性实验项目中,如果涉及到算法设计时,需填写算法设计的IPO,以此加深学生对程序实现过程的理解,促进学生自主思考,达到培养学生计算思维能力的目标。
图2 基本验证性实验IPO图
从图2可以看出,学生提交的IPO图中,涉及到输入要求、输入参数说明、输出结果、算法处理流程、以及是否需要调用函数等项目。目的是让学生明确解决实验项目中所需参数、调用模块(函数)、算法具体步骤、期待运行结果等,培养学生掌握计算机解决问题的方法和规律。
线上拓展性实验项目是指依托在线教学辅助平台,对课程理论知识点进行拓展,满足不同程度的学生对实验项目的需求,同时,也督促缺乏主动编程意识的学生能在课后自觉学习编程。
当前,随着信息技术与教育教学深度融合的不断发展,出现大量的教学智慧工具、教学辅助平台等,形成了多元协同、内容丰富、应用广泛的高等教育服务体系,为学生摆脱学习上的时空限制提供极大便利。本文实验教学依托浙江大学开发的程序设计类实验辅助教学平台PTA(Programming Teaching Assistant),开展线上拓展性实验项目。目前,该平台上注册教师数达2789人,使用高校达500多所,建设题目数量拥有50万题左右,注册学生达到97万左右,是用于开展线上拓展性实验的较好平台。
图3是按照课程理论知识章节分类设置题目集,各题目集中的题型有选择题、填空题、编程题等,教师可以依据自己班级情况自行设计题目,也可以利用其他高校教师建设的习题,有针对性的选择使用。
图3 PTA实验教学项目
图4是针对课程理论中循环结构设计了在线拓展性实验题目。从图4可以看出,部分题目是循环结构的基本习题,目的是让学生充分利用业余时间,进行一步加强编程练习,而部分题目是为了满足不同程度学生的需求,拓展学生算法能力(如图4中7-5、7-7两题),另外,也可以查看每个学生完成习题所提交次数、提交时间、总体代码通过率等情况。
图4 循环结构实验习题
依托在线辅助教学平台,开展线上拓展性实验项目,不仅能有效提高学生自主学习,提升编程能力,而且,对于缺乏自觉编程意识的学生也起到督促作用;另外,在线辅助教学平台通常具备记录学生学习情况详细数据的功能,利用这些数据对学生学习情况进行分析统计,能及时发觉学生学习中存在问题,从而反馈到课程理论教学中,以便及时调整教学方案,提升课程理论教学效果。
综合设计性实验项目是指综合运用课程理论知识,设计和开发简单工程问题,目的是培养学生分析问题、解决问题等能力,以及文档写作与团队合作精神等,能支撑不同专业的工程教育认证毕业要求达成指标点。
结合C语言程序设计课程理论知识特点,实验教学安排了两个综合设计性实验项目。第一个综合设计性项目是安排在完成程序结构、数组和函数理论知识后,由教师提供限定性题目,要求学生独立完成,编写代码量在50到100行之间,并用IPO图描述算法处理过程。其目的是通过简单综合性实验项目,让学生理解和巩固基本语法知识、程序设计结构、数组应用、函数间的参数传递、函数调用等。通过第一个简单综合设计性实验项目,学生能初步掌握结构化程序设计的基本思想。
第二个综合设计性实验项目是安排在课程理论知识全部结束后,综合利用结构体、共用体、链表、文件等知识,设计和开发一个小型系统。题目是开放式,不同专业学生可以结合本专业领域自行设计相关题目,并进行开发和设计(如电子信息类的学生可以结合单片机的嵌入式开发,管理类的学生可以设计小型信息系统等)。要求以小组为单位(每个小组3人),编程代码量在300行以上,项目需涉及到结构体、链表、文件等知识点,最终要求小组提交项目分析、设计方案、运行代码、相关文档等,并以小组答辩形式进行评价考核。
通过综合设计性实验项目,不仅能提高学生编写代码能力、实际问题的分析和解决能力,同时,也加强培养学生团队合作精神,达到支撑不同专业的工程教育认证下,利用计算机解决复杂工程问题,满足专业认证的毕业要求达成指标点。
依据工程教育专业认证的毕业要求达成指标点,遵循“以学生为中心、以产出为导向、持续改进”的先进教学理念,对程序设计类实验教学实施改革,经过一年多来的改革实施情况来看,取得一定效果,具体如下:
首先,增加学生编程代码量。通过设置基本验证性实验、线上拓展性实验和综合设计性实验,学生需编写大量习题代码,整个课程结束后,每个学生编程代码总量约在1500行以上,基本达到非计算机专业学习程序设计的要求。
其次,提升学生综合实践能力。结合专业需求,设计相关领域综合设计性实验项目,并以小组为单位进行分析、设计、开发等环节,提升学生分析问题、解决问题等综合实践能力,能基本解决复杂实际工程问题;同时,也培养学生团队合作精神。
最后,提升课程理论教学效果和质量。以2018级电子信息类专业为例,对比实施改革前(2017级)和改革后(2018级)的C语言程序设计课程期末考试卷面成绩,具体情况如图5所示。从图5可以看出,在实施实验教学改革后,课程期末卷面考试成绩有明显的提升,其中成绩为优秀率(90~100分)提高了约15%,良好率提高了约11%,而不及格率下降了约6%。另外,班级学生多人次参加校级和省级的非计算机专业程序设计大赛,均获得较好成绩,个别同学还参加了全国单片机嵌入式开发比赛,获得优秀奖。
图5 课程期末考试卷面成绩对比图
然而,从实施改革情况来看,也存在着一些不足之处,具体如下:
(1)在基本验证性实验中,部分学生在两节实验课中只完成少数几题实验,过于依赖教师讲解,缺乏独立思考,同时,在提交IPO图时,部分学生存在抄袭现象。
(2)在线上拓展性实验中,由于在线评测系统具有严格的输入输出等格式要求,多数学生因不清楚格式等要求,同一题目要多次修改格式等问题,最终才能评测正确,这种现象会挫伤学生学习积极性;另外,从部分学生提交次数来看,也能发现拷贝等现象。
(3)在综合设计性实验中,部分学生过于依赖组长,并未有效参与实验项目的分析、设计、开发等环节,甚至整个项目由组长一人完成;另外,在提交综合设计实验项目相关文档时,部分小组提交材料不完整,甚至极个别小组为了应付实验项目,直接从网上下载一个项目来完成任务,以至于最终实验项目答辩时,并不能回答相关问题等。
总之,在当前工程教育专业认证背景下,程序设计类实验教学效果直接关系着课程理论教学质量。通过对实验教学进行改革,非计算机专业学生在编写程序、设计与开发、应用计算机解决实际工程问题等方面的能力均有明显提升,进而提高课程教学整体质量,达到该课程作为支撑不同专业的工程教育认证毕业要求达成指标点。
当前,各高校都在大力开展工程教育专业认证工作,以工程教育新理念提升课程教学质量。程序设计类公共基础课作为培养非计算机专业学生掌握计算思维、利用计算机解决实际工程问题的重要课程,而实验教学效果是直接关系到课程理论知识的教学效果和质量。本文对实验教学改革提出了总体方案,实践表明,该方案能有效提升学生编程兴趣,培养学生分析问题、解决问题能力等,满足支撑不同专业的工程教育认证。今后,还将继续对实验教学改革实施中遇到的问题进行分析与研究,进一步提升实验教学质量,为工程教育专业认证下的程序设计类实验教学提供参考与借鉴。