基于同伴教学的《算法与数据结构实验》课程教学改革探索
2021-12-24苏彩霞
苏彩霞,丁 岚
(1.贵州师范大学,贵州 贵阳 550001;2.贵阳市省府路小学,贵州 贵阳 550001)
1.《算法与数据结构实验》课程教学改革分析
1.1 《算法与数据结构实验》课程的重要性
《算法与数据结构实验》课程是《算法与数据结构》这门理论课的实践环节,应该说对学生的编程能力提高有着非常重要的作用。它不仅是一门以提高学生编程能力为主的核心基础课程,同时对培养和提高学生的逻辑思维能力、团队合作能力、发现问题解决问题等的能力也都有非常重要的作用[1]。本课题选择《算法与数据结构实验》课程进行相关研究,一是因为这门课程作为计算机及相关专业的核心基础课,是学生后续课程诸如面向对象程序设计、数据库原理与应用等的前修基础课;二是学生经过了程序设计基础的学习,加上《算法与数据结构实验》课程的引入,编程能力本应有一个明显的提高,但实际结果却不然,学生因为普遍感觉本门课程比较困难,而在一学期的学习后表现出不喜欢编程的现象。因此,结合新时期大学生创新能力、实践能力的培养目标,开展更为有效的教学方法和教学形式的改革实践,使学生通过该课程的学习初步达到利用计算机求解复杂科学问题的计算思维能力,为后续学习乃至工作奠定良好的基础,是目前教学改革研究中一个迫切而重要的任务。
1.2 《算法与数据结构实验》课程学习的难点及教学处境
目前,在我校《算法与数据结构实验》课程,是在二年级第一学期开设,这个时候学生已经有了一年的程学设计基础准备。但学生对本门课程学习的第一印象虽然觉得它很神秘,也很想学会它,往往在第一部分线性结构的学习,抽象数据类型的定义、算法的分析与设计、时间复杂度的计算等就会让学生觉得枯燥、困难,因此有些学生在还没有能了解到学习这门课程对编程的帮助就已经在主观上产生畏难情绪,还有一些学生在上机调试程序时,编译产生的一堆错误也会吓跑学生的学习兴趣;当教学过程进行到非线性结构,诸如树、图部分时,学生对于非线性结构的存储和实现,不断遇到的困难更是学习兴趣最大的“杀手”,如果得不到及时的帮助,便会使得学生失去对这门课程的学习信心和兴趣。最后学习查找和排序部分时,更是有较多学生已经因为积累太多的问题和困难不能再接受新的知识,跟不上教学进度,从而放弃对本门课程的学习。
以上种种情况造成了该课程教学的处境非常尴尬:不管是人才培养方案的制定还是专业发展规划,都认为该课程很重要,尤其又是国家研究生入学考试的必考科目之一,因此将其设置为核心必修课;而对于学生来说也是抱着很大的积极性和期望开始学习这门课,期待着自己通过这门课的学习能在编程能力上有很大的提升。可是学了之后才发现,一些抽象的概念,新的逻辑思维方式、对基础编程能力的高要求,导致学生逐渐开始觉得这门课程没有想象中那么有趣,甚至一次简单的验证试验都有很多的错误去调试,学习的成就感大大减少。而本门课任课教师其实也很郁闷,辛辛苦苦教了一学期,学生学习效果不理想,还要接受后续课程教师的埋怨,大家都认为算法与数据结构课程都学完了,可是学生的编程能力并没有提高,甚至不足以应付后续课程的基本需求,针对以上种种问题,课题组老师不断思考,并越来越坚定地认为《算法与数据结构实验》课程教学模式亟待改革!
1.3 《算法与数据结构实验》课程教学存在的问题
从2014年9月至2020年9月课程组对《算法与数据结构实验》的教学难点及现状进行分析讨论,发现造成这种局面的主要原因如下:
1.3.1 教学方法落后
目前该课程理论教学还主要以传统讲授法为主,课上都是“满堂灌”,老师讲得很辛苦,学生听得也辛苦。课下再布置实验的任务,由于理论课学生掌握不好,所以造成大部分学生对于实验疲于应付,根本体验不到编程的愉悦。
1.3.2 缺乏团队精神和协作能力的培养
无论是目前程序设计大赛参赛形式的需要,还是在日常工作中,其实很多任务都需要团队合作完成,而我们的《算法与数据结构实验》课程目前从上课到实践过程都主要以个人独立完成为主,即使有分组合作完成结课设计,但由于小组内学生存在水平差异,往往会出现最终都是由组内能力较好的同学完成了大部分任务,而表现一般的学生或者不参与或者只是等别人开发完毕自己去理解一下,并没有真正动手开发,也没有体现团队合作的力量,自然也就不能获得真正的协作能力。
1.3.3 对实践环节不够重视
从学科对本门课程48节理论课和16节实践课的安排上,就能初步看出对实践环节的重视程度。强调从理论上对知识点的掌握,对算法的设计以及实现过程重视不够,造成有相当数量的学生被抽象的理论和繁杂的语法规则重重束缚,而程序实现和调试能力很差。以贵州省大学生程序设计竞赛为例,部分参赛学生会出现零分的情况,这都说明在提升学生的实践编程能力亟待加强。
1.3.4 实践内容和形式缺少吸引力
实验环节课时有限,如果再花很多时间来解决书后题目,而这些题目往往是理论课例题的演化,学生往往也就照葫芦画瓢,造成综合能力难以提高。因此才会出现课程结束后,很多学生陷入了“学了程序设计基础也学了一学期算法与数据结构,遇到实际问题仍然不会灵活运用所学知识进行解决,甚至不知道应该如何下手”的怪圈。
1.3.5 考核方式相对单一
目前的考核主要以结课设计和过程考勤为主,对过程环节的考查和监督不够,造成学生课下的学习没有积极性,只利用有限的课上时间学习就很难提高实际编程能力。
1.4 通过教学改革拟达到的目标
将同伴教学法引入到《算法与数据结构实验》课程体系改革中,践行“以学生为主体,以教师为主导”,不断提高学生的学习兴趣,增强学生的团队合作意识。
将“以赛促学”模式引入到《算法与数据结构实验》课程教学环节的改革中,围绕“竞赛”设置教学内容、布置教学任务,并尽可能地为学生提供自主学习的机会,比如:兴趣小组的建立,创新项目的参与等等,以期提高学生动手能力和解决问题的能力。
通过评价和激励机制的改革,让更多的学生参与到程序设计相关的竞赛中来,通过有针对性的训练,不断提升学生的程序设计水平,从而带动本门课程整体的学习氛围,形成一个良性循环。
2.基于同伴教学的《算法与数据结构实验》课程教学改革
从前述对于本门课程重要性的描述,可以看出,该课程对于学生编程能力的提高非常重要。近些年来,国家教育部门也强调要非常重视学生实际动手能力的提高。而对于计算机相关专业的学生,编程能力无疑是衡量学生专业技术水平高低、逻辑思维严谨与否、动手能力强弱的重要指标。因此,作为程序设计基础课程的后续课程《算法与数据结构》及其实验课程教学质量的好坏,将会直接影响学生综合的系统设计、开发以及编程实现的能力。如果四年下来学生编程能力仍然较弱,极有可能会导致专业所培养人才与软件产业实际人才需求严重脱节,直接影响学生在就业市场的竞争力。因此,为了解决这些问题,课程组计划采取如下方案对现有的教学进行如下改革。
2.1 转变教学理念
改革应该首先改观念,首先应明确以培养学生综合能力为目标,并力求在实际教学过程中践行以学生为主体,以教师为主要引导者,进行教学活动的计划和开展。即,教什么(教学内容的选择和确定)、如何教(教学过程的设计和实施)、以及教学模式和方法等每个教学环节都紧紧围绕“能力培养”这一核心理念。
2.2 教学方法的改革
2.2.1 对课程中涉及的知识点讲解——引入“同伴教学”的理念
什么是“同伴教学”?
“同伴教学法”[2]其英文全称是“Peer-Instruction”,简称PI。该方法是由美国埃里克·马祖尔(Eric Mazur)教授,在20世纪90年代率先提出,变传统单一的讲授为基于问题的自主学习和学生之间的合作探究。同伴教学法提倡教师科学引导,学生独立思考[3]。实施过程中教师起主要引导作用,具体体现在:通过预习确定学生存在的问题,并加以正确引导来解决;而学生是教学的主体,主要表现在:主动参与教学的各项活动,并积极主动建构知识。目前该方法已经被广泛应用于世界许多国家和地区的小学、中学、大学的不同课程。
“同伴教学”理念在《算法与数据结构实验》课程中的使用计划:
(1) 《算法与数据结构实验》课程不仅涉及理论课需要掌握的数据类型描述、存储方式的选择和确定、数据与数据之间的关系等较为抽象的知识内容;还大量频繁使用数组、结构体、指针等《程序设计基础》中学生本来不容易掌握的重要知识点。教师采用传统“满堂灌”方式讲解容易让学生感到枯燥无味,失去兴趣。引入“同伴教学法”基于问题的理念[4],教师在讲解每一个新知识点前,都以问题的形式进行导入,从而让学生对新知识的背景有一个充分的了解,激发学生的学习兴趣。
(2) 在具体讲解新知识的过程中,利用“同伴教学”中的交互方式,教师将基本概念转换成若干小的概念性测试题,学生借助QQ投票器给出自己的答案,然后教师引导学生对问题做进一步探究以了解学生对该概念的理解程度,从而做到学生都知道的概念不讲,少数学生知道的概念精讲,以提高学生的兴趣和教学的效率。
(3) 对于《算法与数据结构试验》课程中算法的教学,仍然采用“同伴教学法”理念,首先将算法转换成若干小问题,引导学生对问题进行探究,探究问题所得到的答案最终就构成了一个初步的程序,然后对该程序完善、修改并上机调试,从而让学生在解决问题的过程中进行学习,体现了“做中学,学中做”的工程教育理念。
采用“同伴教学”法不仅有利于知识的学习,对学生批判性思维以及合作意识的培养也起到很好的作用。尤其《算法与数据结构试验》这门课是在学生大学一年级开设,课程本身比较不容易理解,加之很多学生还没有完全适应新的环境和学习,如果能在课程学习过程中允许并鼓励大家结伴学习,更有利于克服学生的畏难情绪,通过争辩、讨论、交流使学生达到更完善的自我发展。
2.2.2 对课程的具体上机实验——引入“项目案例”教学模式
“项目专题”模式[5]在《算法与数据结构》上机实验环节的开展计划:
(1) 教学案例来源于生活
在实践教学过程中以真实案例项目为教学内容,由易到难,从一元多项式相加求和,到进制的转换、银行排队系统,再到汉诺塔问题、通讯录管理等,设计一系列的具体应用,在解决这些问题的同时,就可以加深对相关知识点和算法的理解,同时引导学生从日常事务的角度出发提出问题、分析问题,再去寻找解决的方法和技术。学生在学习过程中不但提高了学习的兴趣也培养了解决问题的能力。
(2) 上机实验内容的选择结合竞赛特点[6]
课程组计划将之前主要以“验证”为主的实验内容改为以“验证一应用一创新”为主线的实验内容,通过适当压缩“验证”型实验题目,增加“应用和创新”型实验内容,结合近几年专业比赛的题目,对实验任务进行更新,使《算法与数据结构实验》课程不再枯燥,以提升学生的学习效果,同时也培养学生的团队协作与创新能力。
(3) 提供多种自主学习机会
课内学时毕竟有限,通过安排一些与竞赛相关的课外学习环节不但能提高学生的学习兴趣,而且还能进一步培养学生的自学能力,也正迎合了新时代大学生对电子设备以及网络资源的需求。
2.3 《算法与数据结构实验》课程教学改革步骤
(1)在已上过该课程的老生中进行问卷调查,找上过该课的同行老师进行座谈,总结他们的经验和建议,获取有针对性的数据和信息。访谈一些企业和部门,通过座谈和实地考察,结合贵州大数据信息中心的数据支持,了解目前计算机软件应用领域对人才专业技能的要求,正确认识计算机市场上软件技术人才的需求目标。
(2)在新生中也开展问卷调查,了解他们对该门课程学习的需求和初始的兴趣点,制定有针对性的教学计划和实验教学方案。形成以能力培养为主线—基于同伴教学的《算法与数据结构实验》课程教学模式初稿。
(3)将首次制定的教学改革计划的初稿,应用于大数据与计算机科学学院2020级计算机科学与技术专业本科、大数据专业以及数字媒体技术专业本科《算法与数据结构实验》课教学的全过程,根据实际应用和开展情况,总结经验和方法,找出不足,修订不合适的内容,并最终获得教学改革计划的修订稿。
(4)将修订稿应用于本学院2021级计算机科学与技术专业、大数据专业和数字媒体技术专业本科《算法与数据结构实验》课教学的全程,并结合实际应用情况进行深入研究,进一步修改该课程“教学改革计划的修订稿”,最终获得“以能力培养为主线—基于同伴教学的《算法与数据结构实验》课程教学模式研究”定稿。
3.结语
通过对教学方法和教学理念的改革,以及教学过程中方法和内容的重新设计,该课程的教学改革初见成效:首先,通过改革,有效提高了主讲教师的专业水平,共发表科研论文18篇,其中,EI收录2篇,核心11篇,共承担4项省级项目。其次,绝大多数学生的编程能力以及沟通交流、团队合作的能力得到显著提高。学生积极参加各项专业竞赛,在“蓝桥杯”全国软件和信息技术专业人才大赛、“互联网+”大学生创新创业大赛等赛事上获奖人数逐渐增多,大赛参与人数和成绩也在逐渐提高。当然,《算法与数据结构实验》课程的改革是一个持续动态、任重道远的过程,随着信息化的高速发展,如何有效利用当前网络资源,实现教学效果的显著提高,还有待更多工作者继续探索。