地方本科院校计算机科学与技术专业数据结构课程教学改革探析
来源:用户上传
作者:
摘 要: 数据结构作为计算机科学与技术专业的核心课程,其理论抽象程度高、实践性强,对地方本科院校的学生来说学习难度大。文章认为,在不增加老师太多工作量的前提下,从提高课堂趣味性以增强学生的学习主动性;正视学生基础,选择适合学生的教材;合理编排教学顺序、合理分配课时;强化过程管理以培养学生自学能力等四个方面进行教学改革,可取得较好的效果。
关键词: 数据结构; 学生; 教材; 地方本科院校; 趣味性
Abstract: As the core course of computer science and technology specialty, data structure has a high degree of theoretical abstraction and strong practicality, which makes it difficult for students in local undergraduate universities to study. Under the premise of not increasing too much workload of teachers, the paper holds that the better result can be obtained by the teaching reform from four aspects, i.e., improving the interest of the classroom to enhance the students' initiative in learning; facing the students' foundation squarely and selecting the teaching materials suitable for the students; arranging the teaching sequence reasonably and allocating the class hours reasonably; strengthening the process management to cultivate the students' self-study ability.
Key words: data structure; student; teaching material; local undergraduate colleges and universities; interest
0 引言
大部分地方本科院校坐落在经济欠发达地区,与211、985、双一流高校相比,学校与专业的办学实力与水平不高,难以吸引高素质的学生。在校生自学能力与上进心均欠缺,专业基础不扎实,学习上遇到一点困难就容易退缩与放弃[1]。
很多学生在高考填报本专业时有较大的盲目性,不了解计算機科学与技术专业的实质,也不知道在校期间将学习什么课程,也不知道自己是否适合或是否喜欢,并且有很多学生是被调剂到本专业的。入学后学生普遍反应计算机科学与技术专业本科课程学习难度大,表现出对本专业不感兴趣。
数据结构是计算机相关专业的核心课程,其理论抽象程度高、应用实践性强、学习难度大[2]。且本课程对编程语言的基础要求很高,不仅需理解算法,还需要较好的编程语言基本功,这是一个巨大的挑战。
有一些学者提出了很多教学改革建议,如于庆梅,毛镠在文献[3]中论述到:录制大量用于实验教学的微课,为学生自主学习完成实验提供在线视频资源,以降低学习难度,激发基础薄弱学生的实验积极性。樊守芳,王继成在文献[4]中论述到:将数据结构课程中最重要、最难理解的算法录制成慕课视频,让学生在课下利用碎片时间进行学习,以提高学习效率和压缩课堂教学学时。曾海,尚鲜连,朱敏在文献[5]中论述到:通过开展课程资源建设、实施多维度评价方式改革来提高教学效果。但以上建议均要求老师付出大量的精力,在地方本科院校专业师资很紧张,教学任务很繁重的情况下,很多改革如果过分要求老师付出,但付出与收获却不对等,那这样的改革难以执行。如何充分发挥学生在学习上的主体作用,如何在不增加老师太多工作量的前提下进行教学改革,本文从以下几方面进行了初步尝试,取得了一定的成效。
1 提高课堂趣味性以增强学生学习的主动性
很多学生在学习本门课程的过程中会觉得难理解、枯躁无味,如果他们学习主动性与毅力不强的话,容易放弃本门课程的学习,故课堂的趣味性程度,对学生学习效果影响较大。通过提高教师的幽默感,语言表达的艺术性或授课的风格来提高课堂趣味性,不具有普遍性,因为它们都受教师性格影响较大,而性格一旦形成便难以改变。据本人多年的教学实践来看,对所有老师来说都具有可行性的办法有以下两点。
1.1 降低学生课堂学习的挫败感
一般来说,学习成就感强的话,挫败感就弱,可是基于本门课程的性质以及地方本科院校计算机科学与技术专业的生源状况,很难让全体学生听懂每一个算法。一般而言教师在课堂上至少要设置两种难度级别的学习目标,引导学有余力的学生有激情去追求较高的学习目标,引导学习吃力的学生尽力达到较低的学习目标,让所有的学生获得学习成就感。同时教师应当引导学生以正面的态度来看待问题,让他们明白:暂时没有看懂是正常的,看不懂是因为基础差和积累得不够,只要他们反复思考,通过不同的资料从不同的角度去理解,积累到一定的程度,就会出现从量变到质变,豁然开朗的时刻。消除他们不自信的心理,避免他们轻易否定自己。同时引导他们肯定自己已经弄懂了多少知识,与自己之前比进步了多少,而不是一味的焦虑于自己还有多少内容没有弄懂,以便最大限度地降低他们的挫败感,慢慢培养他们学习的积极心态以及克服困难的耐心、韧性。 1.2 增加授课案例的趣味性以增强学生学习的主动性
建构主义学习理论认为,在教学过程中学生应当发挥主体作用,老师应当发挥主导作用,该学习理论中的学习环境有四要素[6],分别为:情境、协作、会话和意义建构,在教学过程中表现为情境创设、自主学习和合作探究。情境创设指在教学中教师要有目的地引入具有一定感情色彩、生动具体的场景,引导学生积极参与体验的过程,在数据结构这门课的教学过程中具体体现为教师设计出的案例应当反映学生关心的、感兴趣的问题,而激发起学生的好奇心,帮助学生增强学习动力。地方本科院校的学生学习主动性不强,教学案例的趣味性就显得尤为重要。在具体的教学过程中采取的办法如下。
在前期复习阶段,可以将一些趣味性高、难度适中的完整项目视频发给学生,带领学生将前几个视频的内容在课堂上实现,剩余视频则要求学生在课后完成,教师指定学习进度,并且在下次课时进行检查,通过自学视频完成项目的方式,可以极大地提高学生学习的积极性。
在课程教学过程中,以趣味性高作为选择案例的重要依据,例如在讲解线性表时,给学生讲解贪吃蛇算法的核心思想,并且把贪吃蛇的完整项目视频发给学生让他们在课后完成;在讲解栈时,给他们讲解表达式求解算法,并引导学生完成计算器项目;在讲解数组时,可以减化教材上特殊数组的处理这一内容,强化普通二维数组的综合运用,引导学生做一个连连看游戏……通过运用算法来解决实际问题,学生既可以掌握数据结构课程中的算法精髓,又可以加强编程能力,并且让学生获得强烈的学习成就感。
2 正视学生基础,选择适合学生的教材
目前数据结构这门课的教材很多,各种实现语言、各种难度次层的都有,且良莠不齐。教材对老师教和学生学的重要性都不言自喻,名气最大的教材也有它的局限性或适用性。因为地方本科院校计算机科学与技术专业的学生存在以上所述的各种问题,且这门课程的内容对本科生而言难度较大,故在选择教材时,在保证课程知识结构完整,表达正确、内容组织逻辑清晰的情况下,还要尽量选择对学生而言易懂、实用的教材。
针对地方本科院校的学生,建议选择Java语言或者C#语言等面向对象语言版且程序实现尽量简化的教材,原因主要有以下几点:①以上面向对象语言对内存地址的管理远比C语言对指针的管理要容易,这样可以极大地降低基础和学习能力差的学生的学习难度;②面向对象语言设计软件界面的功能远比C语言强大,基础和学习能力强的学生结合面向对象语言强大的界面实现功能和数据结构这门课的算法思想,可以做一些小游戏或者桌面软件,这样可以极大地调动他们的学习积极性。③当前,流行的编程语言很多,它们各有善长的应用领域。C语言的应用领域主要在操作系统、单片机、驱动程序、编译器或解释器、系统服务接口等开发方面,地方本科院校计算机科学与技术专业的学生受困于综合素质、专业知识等多方面的原因,毕业后很少有人从事这些领域的开发工作,大部分都是从事应用层的开发工作,这样精通面向对象语言就比精通C语言更有利于以后的工作。很多学校计算机科学与技术专业会先开设C语言,然后再开设一些面向对象语言,数据结构这门课采用C语言描述的教材,这种方式适合于211、985、双一流等高校的学生,或者极少数考研参与度高的地方本科院校的学生,并不适合大部分地方本科院校计算机科学与技术专业的学生,因为他们学习能力与学习主动性相对较差,编程语言开设太多,导致他们学习精力分散,对所开设的编程语言都不能精通,对他们来而言,关键是把一门语言学精通,跨过初次就业时企业要求精通一门语言的高门槛。只要他们进入了软件开发这一行业,以后他们自学C语言也是一件轻而易举的事情。而在第一学期和第二学期分别开设Java语言基础和Java语言高级这两门课,数据结构这门课也采用Java语言描述的教材,这样学生在语言学习上可以保持连续性,有利于他们精通Java语言。
如果决定选择JAVA语言或者C#语言等面向对象语言版教材,则还需要注意尽量避免选择大量用到面向对象语言高级特性的教材。有些教材为了体现程序的可扩展性与靈活性,大量用到了泛型、复杂集合框架、接口、重写等面向对象语言的高级特性,加大了程序理解的难度,针对本科院校计算机相关专业的学生,在保证本门课程基本内容都要讲授的前提下,在程序的可扩展性、灵活性与程序的易懂性之间,应当优先选择后者。
地方本科院校计算机科学与技术专业数据结构课程教材选择的第二个标准是尽量避免选择以伪代码来描述算法的教材,而应当选择以完整代码来描述算法的教材,因为学生的编程能力较差,绝大部分学生难以将书本上的伪代码补充为完整的代码[4]。
3 合理编排教学顺序与课时分配
针对地方本科院校学生的特点及本门课程的特点,为了避免他们轻易放弃,保证大部分同学的学习效果,老师需要在开始阶段给学生降低难度,巩固与提高编程语言这一先修课程的基础,以便让他们获得学习成就感,这种成就感会激励学生进一步主动学习,具体方法如下。
多重循环、数组及递归是编程语言初学者的学习难点,地方本科院校计算机相关专业的学生,这些知识往往都掌握得不好,这些内容在数据结构这门课程中广泛存在,如果这些内容不能扎实掌握,则数据结构难以学好,同样如果选择C语言版的数据结构教材,则指针又是学生学习数据结构的一个很大的障碍[4],故在学习数据结构之前,建议花四个学时先复习这些内容。
在进行“多重循环与数组结合的综合运用”这一复习环节时,可以结合数据结构“排序”这一章的内容来进行讲解,也就是把这一章的内容先讲,因为教材上大部分排序算法主要的存储结构就是一维数组,学生有一定基础,以这样的教学顺序,学生既复习了编程语言逻辑,又学习了数据结构的内容,从编程语言到数据结构的过渡就比较顺利。
因为在复习环节占用了约四个课时,故教学内容上可以适当删减一些难度较大的内容,如模式匹配算法、平衡二叉树等,从整体上降低这门课程的难度,以提升大部分学生的学习成就感与学习积极性。 4 强化过程管理以培养学生自学能力
网络上有很多好的数据结构课程学习资料,如专业学习笔记、视频等,学生完全可以利用这些资料进行自学,但是地方本科院校的学生往往学习主动性不强,自律性不强,容易受到外界的干扰,如果没有外界的督促与管理,他们难以坚持自学,故教师应当引导与督促学生培养自学能力与自学意识,学生一旦具备了这种能力与意识,就会步入良性循环。在教学过程中,主要采取以下办法。
以寝室为单位成立学习小组,每个小组推选一名学习成绩好且责任心强的同学作为学习小组长,评定学习成绩时,学习组长可以适当加分,同时让学习小组长负责督促、辅导组员的课后学习,在平时的实验与讨论环节,强化小组长对小组学习的影响作用,这种身份意识会让小组长具有要将本门课程学好的自我暗示,并且可以带头营造一种专业学习的氛围。
在每一次课的最后5-10分钟,简单讲解下次课待讲内容的关键之处,以降低学生自学难度,给出需要思考的问题与学习资料,并要求小组长在课后号召组员充分自学,在下一次上课时,随机请部分同学回答上一次课抛出的问题,按学期初制定的奖惩措施在平时成绩方面给予一定的奖惩。因为学生己有自学的基础,则教学时老师可以适当加快教学速度。开学之初可以在课堂上組织一次自学活动,针对某一难度适中的内容,先让学生看视频约半小时,老师组织学生组织讨论十分钟,然后再让学生看教材与网络资料,这期间老师务必尽量少讲解,鼓励学生通过自主学习弄懂需要掌握的内容。这种方式能让学生获得通过自学带来的成就感和自信心。
近年来慕课得到了高速发展,课程数量大幅增加,利用高水平的慕课资源为我所用,是减少工作量与提高教学效果的重要手段,可以在开学初,组织学生一起学习慕课上指定的内容,不定期地检查、督促,并且将学生学习慕课的最终成绩纳入期末的最终成绩。
长期坚持以上措施,就可以弱化学生的被动学习意识,增强主动学习的能力与习惯。学生一旦具备了较强的自学能力并且有了自学的习惯,则有利于整个专业的学习过程,甚至终身受益。
5 结束语
通过本人在本校2017级计算机科学与技术专业两个班采取以上措施后,学生的编程能力得到了大幅提高,自学意识与自学能力有明显进步,遇到问题时他们普遍不再等待与放弃,而是有了战胜困难的耐心与勇气,往往通过查阅、钻研各种资料,以获得理解上的突破。学习成绩也进步明显,本人用同一份试卷对2016级与2017级计算机科学与技术专业的学生进行期末测试,成绩对比如表1所示。
在总人数相差不大的情况下,平均分提高了9.6分,这说明以上四种措施效果较好,但是最高分又是相差不大的,这说明对真正优秀的学生而言,外界对他的影响其实不大。
以上几种措施可以推广应用到地方本科院校计算机相关专业的其他课程上,也可以推广到其他工科专业的教学上,并且不需要增加老师太多的工作量,甚至有些措施还可以给老师减少工作量,可操作性强,具有很好的应用前景。
参考文献(References):
[1] 黎利辉.以课程设计为中心的地方本科院校软件人才培养模式研究[J].计算机时代,2018.2:71-76
[2] 张铭,耿国华,陈卫卫,等.数据结构与算法课程教学实施方案[J].中国大学教学,2011.3:56-60
[3] 于庆梅,毛镠.MOOCs背景下地方院校“数据结构”实践教学模式[J].实验技术与管理,2019.36(5):190-194
[4] 樊守芳,王继成.基于慕课下的《数据结构》课程教学内容设计[J].教育教学论坛,2019.31:172-174
[5] 曾海,尚鲜连,朱敏.基于SPOC平台的"数据结构"课程线上线下混合教学模式改革[J].苏州市职业大学学报,2019.30(2):83-88
[6] 高文,徐斌艳,吴刚.建构主义教育研究[M].教育科学出版社,2008.
转载注明来源:https://www.xzbu.com/8/view-15229175.htm