新工科背景下程序设计竞赛课程建设的研究与探索

2021-06-20 22:00朱立军杨中秋李漫红肖明霞王翠青
高教学刊 2021年3期
关键词:终结性评价金课形成性评价

朱立军 杨中秋 李漫红 肖明霞 王翠青

摘  要:针对新工科背景下高校“金课”建设教学改革的需求以及目前算法类课程教学过程中存在的问题,对算法类课程进行了一系列改革包括:循序渐进的教学内容设置,先实践后理论、线上线下相结合、以实际应用为导向、分层开展教学、竞赛驱动实验教学以及形成性评价和终结性评价相结合等措施。通过这些改革,学生的学习兴趣和编程水平得到了明显的提高。

关键词:金课;MOOC;形成性评价;终结性评价

中图分类号:G642 文献标志码:A 文章编号:2096-000X(2021)03-0096-04

Abstract: In view of the needs of the teaching reform of "golden course" construction in universities under the background of new engineering and the existing problems in the process of teaching process of algorithm courses, we have carried out a series of reforms on algorithm courses: teaching content setting step by step; through the use of practice first, then theory; online and offline combination; practical application-oriented; teaching in different levels; competition driven experiment teaching; formative evaluation and summative evaluation. Through these reforms, students' learning interest and programming level have been significantly improved.

Keywords: golden course; MOOC; formative evaluation; summative evaluation

一、概述

2017年4月,教育部公布了《新工科建设行动路线》,致力于探索建立新工科发展新模式,着力培养大学生的自主学习能力和实践创新能力[1]。大学生能力的培养离不开课程建设,课程是人才培养的基本要素,2018年11月24日,在第十一届“中国大学教学论坛”上,教育部高等教育司司长吴岩在“建设中国金课”的报告中提出了金课的“两性一度”标准。要建设有创新性、高阶性和挑战度的“金课”、消除“水课”的概念,“水课”是老师不用心准备的课堂,“金课”是有知识、能力和素养的融合,不仅仅是培养学生获得知识、训练逻辑思维,更主要的是要引导学生要积极向上,学会创新思维。而传统课程教学问题诸多,需要我们探索改革完善。因此,建设顺应新工科背景、适合于这个时代学生的“金课”已成为教育改革的首要任务。其中线上线下混合式“金课”成为当下各个高校建设的热点,目前各个学校的做法不尽相同[2]。特别是在目前“互联网+”的背景下,混合式教学呈跳跃式发展。在该背景下,我校算法类课程改革走在前列。本文就《程序设计竞赛》课程的教学目的和意义、教学理念、教学模式以及形成性评价方法等问题进行了深入的研究和探讨。

二、现有高校计算机算法类课程教学中普遍存在的问题

算法类课程是高校计算机专业及相关专业的一门核心课,学生对算法的理解和掌握程度能客观地反映出一所高校相应专业的教学水平,并且直接影响学生在就业市场上的核心竞争力。而目前高校计算机专业教学普遍存在的现象是教师厌教、学生厌学。其主要原因如图1所示,具体说明如下。

(一)编程思维无法建立

目前我国高校计算机相关专业的课程设置中与算法相关的课程一般包括C语言程序设计、数据结构、算法分析与设计等。在实际的教学过程中我们发现:大概1/3~1/2的学生在大一学完C语言程序设计后,没有真正理解程序设计的思想,编程思维仍然没有建立起来。这样,在学习后序课程的时候,如数据结构和算法分析与设计,这部分学生就会更感到吃力,越学就会越失去信心,久而久之就对学习失去兴趣,从而产生厌学情绪。

(二)教材理论较抽象,学生理解不透彻

目前算法类教材普遍存在的问题是理论较抽象。例如,学生在学习数据结构课程中关于树和图的理论的时候,教材中往往对树和图这种数据结构在内存中是如何存储的?这些数据结构在实际软件项目中是如何应用的?以及为什么能够用递归实现等等问题缺乏相应的解释和说明;教师又由于授课学时的限制而无法进行深入的讲解。这样就导致了学生只能靠机械的记忆来学习这些理论,无法将所学的知识融会贯通。

(三)教学内容枯燥,学生缺乏兴趣

“兴趣是最好的老师”,与人文类课程不同,算法类课程教学的内容不但抽象而且枯燥,如动态规划、图、分支限界、最大流、并查集等等,大部分学生很难对这些晦涩难懂的理论提起兴趣。因此如何让学生对这些枯燥、难懂的理论感兴趣;让学生能从被动学习到自己主动去学习是摆在每个授课教师面前的一个艰巨的任务。

(四)注重理论,忽视具体实现细节,导致算法健壮性差

目前高校计算机专业开设的算法类课程往往重视算法如何设计,而对于在实际中如何应用以及在实际应用中需要注意哪些细节等方面缺乏相应的训练,导致学生上課一听就懂,可一调试程序却存在很多bug。同时所设计的程序缺乏健壮性,即随着测试数据的增加,程序运行出现错误可能性也随之增加。而程序的健壮性差又是导致软件危机发生的一个重要因素。

(五)实验形式化,无法达到实践教学的目的

由于学生在课堂上对所学的理论缺乏深入的理解,导致很多学生在上实验的时候只是按照书本来敲代码,如果书本上的代码有误,则自己无法独立地对出现的错误进行调试,只能“求助”于其它学的好的同学。这样就会导致最后学生上交的实验报告几乎雷同,从而无法达到实验教学的目的。

三、程序设计竞赛课程建设的研究与探索

(一)程序设计竞赛课程设置的目的和意义

一个好的程序设计类课应该是:课上,学生能基本听懂老师讲授的内容;课下,学生能通过对知识的再学习而完成课设作业[3]。而目前国内高校算法类课程普遍存在“老师难教、学生难懂”的现象。针对这一问题,我校软件工程专业把《算法设计及与分析》这门课程改为《程序设计竞赛》,与《算法设计与分析》课程不同的是,该课程以实际应用为导向;以线上、线下相混合的方式进行课堂教学;以竞赛模式来驱动实验教学;以形成性评价[4]和终结性评价相结合的手段对学生的学习效果进行更客观、公正的评判。通过该课程的学习,不但增加了学生学习算法的兴趣,而且开阔了学生的视野,同时也大大提高了学生的程序设计水平,为将来更好的从事本专业相关工作打下坚实的基础。

(二)程序设计竞赛课程建设的主要内容

程序设计竞赛课程建设的主要目标是以培养学生学习算法的兴趣以及提高学生解决复杂实际问题的能力为目标,从七个方面进行改革和建设,具体如图2所示,具体说明如下。

1. 循序渐进的教学内容设置

该课程是在学生学完C语言程序设计和数据结构之后开设,共96学时,分上、下两个学期,每个学期48学时,包括理论24学时,实验24学时。上学期的教学内容主要包括一些基础的、具有普适性的算法策略,包括:递归、蛮力策略、递推策略、分治策略、模拟策略、贪心策略及动态规划等。而下学期的教学内容主要是一些复杂的、具有针对性的算法策略包括模板库、回溯、搜索、最大流、二分图、并查集和数论等。之所以分上、下两个学期是因为与算法相关的教学内容不但较多而且较难掌握,通过延長学生的学习时间,使学生在学习过程中能有充分的时间对这些算法进行更好的理解、消化和吸收。

2. “先实践,后理论”的教学思路

实践的观点是辩证唯物主义认识论的首要观点。辩证唯物主义认识论认为:认识来源于实践,又转过来为实践服务。实践、认识、再实践、再认识,循环往复,以至无穷。程序设计竞赛课程的教学思路是在讲新的知识点之前,先从分析与将要学习的知识点相关的实际问题入手,学生根据以前所学的知识发现根本无法解决该类问题,这时就需对该类问题进行更进一步深入、细致的分析和研究,挖掘出该类问题具有的独特的显著特征,并针对这类问题再引入将要学习的新的解决策略和方法来解决它。然后再从这些新策略和新方法中抽象出相应的理论。当学生对所学新的理论和方法有了一定程度的理解和掌握之后,再通过训练类似的题目来进一步强化对新知识点的理解。这种教学思路与传统那种“先理论、后实践”的教学思路不同,它更加符合人们认识事物的客观规律,能够使学生在课堂上带着问题去听课,从而能充分调动学生的主观能动性和学习的积极性。

3. 以解决实际问题为导向,强调学以致用

课堂例题和实验题目的选择能够体现趣味性、科学性、挑战性和实用性,教师可以在国内知名高校的在线判题系统(Online Judge,OJ)上选择一些符合上述特征的、具有中等难易程度的题目,如果选择的题目太难,对于刚开始接触算法的学生而言就会失去信心和学习兴趣。同时,教师也可以从自己实际的科研课题中选择一些合适的问题作为例题结合所学算法进行分析和研究。例如,虹膜识别中的虹膜内、外圆定位问题就可以结合并查集算法来分析和研究[5]。通过把实际科研课题引入课堂教学,不但开阔了学生的视野,也提高了他们科研素养,体现了“以用促学,以学致用,学用结合”的教育理念。

4. 线上-线下相结合的混合式教学模式

所谓“线上-线下相结合”是指教师在上课时,为了达到更好的学习效果,利用学习通等教学辅助软件提供的一些功能来帮助教师完成一些教学活动,如图3所示。其中课上的时候可以使用学习通的“签到”、“抢答”、“测验”、“主题讨论”、“评分”及“问卷”等功能进行辅助教学。例如在上课前可以使用学习通的“签到”功能来代替日常的课前点名,这样不但防止学生“替答”,而且节省了时间;在每次上课结束后,教师可以使用“测验”功能,对本次课所讲主要内容进行一个小测验,这样可以对学生的学习效果随时进行跟踪、监控;为了活跃课堂气氛,在授课过程中可以使用“抢答”功能来对学生进行提问。借助这些线上教学工具的辅助教学功能,可以在很大程度上激发学生的学习兴趣和学习动力,使学生由原来的被动学习和懒于思考变为主动学习、勤于思考和乐于思考。线上-线下相结合还体现在对于一些比较难懂的章节如动态规划、回溯等,在课前可以利用网上的MOOC (Massive Open Online Course)[6]资源,以“翻转课堂”(Flipped Classroom)的形式将课堂内与外、教与学进行翻转。这种教学模式是以学生为主体,学生可以通过MOOC观看相应教学视频,进行个性化学习, 这种教学模式可以有效地弥补课程学时数的限制和学生个体差异[7]。另外,课后还可以在学习通的教师端,统计出每个学生上课期间的跳屏时间和次数,如果某个学生跳屏次数过多,时间过长就可以断定该学生上课期间利用手机在做与上课无关的事情,这样就可以对每个学生的上课情况有个清晰的了解和掌握,统计的结果可以作为学生平时成绩的一个重要依据。

5. 分层开展教学的教学理念

由于在一个班级中学生的水平往往会参差不齐,所以在听课过程中,就会存在好学生“吃不饱”,差学生“吃不了”的现象。所谓“分层开展教学”是指对那些自学能力强的学生把他们集中在一起,采用“自主讨论式”的学习形式,他们可以不来上课,这部分同学主要是针对校ACM/ICPC竞赛培训队的学生,因为他们的基础非常好,学习的内容已经自学完成,无需和其他同学一起学习。而对于基础特别差的学生,他们虽然学过了C语言程序设计和数据结构,但编程思维仍然没有完全建立起来。对于这类学生,如果直接学习这门课,就会感到力不从心,学习效果就会很差。因此要求他们课后自己找时间把C语言程序设计再快速重新学习一遍,在上实验课的时候,在前几周会单独给这部分学生安排一些基础题目,让他们先把基础打牢,然后再来学习新的知识。对这部分学生而言,开始可能学的很慢,可到学期末的时候也能获得较好的学习效果。

6. 以竞赛模式驱动实验教学

课程实验部分利用我们自己的在线判题系统,题库里的题目主要是由我们教师自己编写或选自其他大学,如北大、清华、杭电等OJ系统上的经典题目。该系统可以对学生提交的代码自动进行编译,并通过与答案的比较,给出相应判题结果。这样,每次实验就是一次程序设计竞赛,根据提交的题目和所用的时间来对学生进行排名,教师再根据排名给出学生的实验成绩。这样不但提高了老师统计成绩的效率,还能够增强学生对编程的兴趣、培养学生竞争意识以及抵抗挫折的能力。

7. 形成性评价和终结性評价相结合的考核方式

课程的考核主要包括两部分,即形成性评价和终结性评价。形成性评价占30%,包括:课堂表现,包括课前签到、课中提问、课后测验等环节的情况,该部分占总成绩的10%;实验成绩,根据每次实验的排名情况、实验报告的完成情况等,该部分占总成绩的20%。终结性评价采用期末考试的方式,该部分占总成绩的70%。题型是采用全国计算机技术与软件专业技术资格考试中的软件设计师考试的试题形式,即给出试题描述和与之对应的大部分代码,然后要求学生以填空的形式对代码进行完善。学生只有充分理解了试题和所给代码之后,才能够填写出正确答案。因为一个问题的算法有很多种,所以如果不对答案进行限制就会给教师判卷增加了难度,从而容易造成误判;另一方面,采用该题型可以留给学生更多的思考时间,对学生水平和能力的测试会更加精准。而对于校ACM/ICPC竞赛培训队的学生而言,他们可以不用上课和上实验,这部分成绩是满分,他们只需参加期末考试即可。

四、结束语

算法类课程是计算机相关专业中非常重要的专业课且具有一定的难度,既注重理论分析,又注重实践操作[8]。我们针对程序设计竞赛课程从教学内容、教学模式、教学思路、教学手段及考核方式等多个方面进行了改革。这些改革措施更多的是强调以学生为中心,将学生所学知识应用于解决日常生活中的实际问题,这样大大提高了学生的学习兴趣和学习的动力,使学生在学习的过程中能够获得成就感和自豪感。同时,线上学习带动线下课堂积极参与讨论,这样提高了学生的学习效率,进一步改善了学习效果。另外,算法学习又带动了学生积极参加竞赛、参加实际科研项目,这样,学生“学以致用”,不但提高了自己的动手能力,还增强了自己的自信心和成就感。教学实践表明:“程序设计竞赛”课程的教学方法和教学手段能充分调动学生对算法的学习兴趣,学生解决实际问题的能力也有了明显提升。这种教学模式充分体现了“金课”两性一度的要求,为其他“金课”建设提供了有益的借鉴。

参考文献:

[1]钟登华.新工科建设的内涵与行动[J].高等工程教育研究,2017(3):1-6.

[2]金爱兵,赵怡晴,姜琳婧.传统优势非热门学科“新工科”建设[J].中国冶金教育,2019(04):58-61.

[3]宋友,李莹,肖文磊.面向大类培养的程序设计“金课”建设思考[J].中国大学教学,2019(11):61-65.

[4]林静.形成性评价在高校课程评价中的应用[J].现代教育管理,2011(9):66-68.

[5]朱立军,苑玮琦.基于并查集和边缘检测模板的非理想虹膜定位[J].计算机应用研究,2018(6):1879-1882.

[6]王冠军,周勇,江海峰,等.基于翻转课堂与MOOC的嵌入式软件工程实践教学研究[J].实验技术与管理,2016,33(4):176-178.

[7]田小霞.基于翻转课堂/MOOC的《算法分析与设计》教学改革[J].福建电脑,2018(12):161-162.

[8]张广斌,张润梅,刘瑾,等.混合式教学在程序设计基础课程中的应用[J].软件导刊,2019(11):176-179.

猜你喜欢
终结性评价金课形成性评价
“金课”建设背景下光传输技术课程的建设实践
课程思政改革背景下“金课”建设的探索与实践
大学生心目中的“金课”
高校本科教育“淘汰‘水课’、打造‘金课’”刍议
新形势下大学英语多元化教学评价体系研究及应用
形成性评价与终结性评价比较研究
高校外语学习评价现状及改革研究
中药分析综合教学评价方式的改革思路与实践
论形成性评价与医学生自主学习能力的培养
形成性评价对《大学英语》课程教学的有效促进