应用型本科院校数据结构课程教学研究与探讨
2021-04-25何进英
何进英
摘要:从应用型本科院校的人才培养目标出发,分析了数据结构这门课程在教学中存在的一些问题,并从如何上好数据结构第一堂课、案例法教学、线上线下相结合等方面进行教学研究和探讨。实践证明,这些教学方法能有效提高学生学习数据结构的积极性和实践能力。
关键词:数据结构;教学研究;案例教学法;线上线下结合
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2021)09-0110-03
开放科学(资源服务)标识码(OSID):
Teaching Research and Reform of Data Structure Course in Application-oriented Universities
HE Jin-ying
(Guangdong Ocean University Cunjin College, Zhanjiang 524094, China)
Abstract: Based on the talent training objectives of application-oriented universities, this paper analyzes some problems existing in the teaching of data structure, and conducts teaching research and reform from the aspects of how to better the first class of data structure, case method teaching, combination of online and offline teaching, etc. The practice proves that the teaching method can effectively improve students' enthusiasm and practical ability in learning data structure.
Key words:data structure; educational reform; case teaching methodology; combination of online and offline
1 引言
“数据结构”是计算机专业及相关专业的一门重要专业基础课,也是一门必修的核心课程,并且已经成为其他理工专业的热门选修课[1]。学生通过学习该课程,应当学会分析实际问题中涉及的数据与数据之间的关系,选择合适的逻辑结构和存储结构来建立数据类型,进而设计出相应的算法解决问题。该课程的教学目标是培养学生解决实际问题的能力以及创造性思维。雖然数据结构在理工科各专业中具有非常重要的地位,然而在教学过程中普遍有学生反映该课程抽象、难学,在学习和解决实际问题时遇到很多挫折,学习过程积极性不高,甚至学完之后依旧不知道如何应用。为了提高数据结构的课程教学效果,很多教学工作者提出了一些针对性的思路,并将其应用在实际的教学中,也取得了不错的效果[2-9]。但由于每个学校的差异和学生层次的差异等原因,在学习他人教学经验的同时,也有必要针对自身的教学情况进行研究,以提高教学质量。对于应用型本科高校,目标是培养具备知识面广、实践能力强、可以灵活应用所学知识解决实际问题的应用型人才。因此,如何培养具有广知识面、实践能力强的创新应用型人才就成为应用型本科教育工作者的重要任务。
2 教学现状存
2.1 学生编程基础薄弱和实践能力差
目前,大多数数据结构课程的教材采用的是C或者C++语言描述。许多学生对于C/C++语言的基础掌握不牢固,编程能力也有限,对于C语言的指针、函数、结构体的知识更是薄弱,特别是对于指针的理解更是一知半解,而这些知识点恰好是数据结构中链表、树、图等结构的实现的基础。上述薄弱的程序设计基础导致学生在学习数据结构的过程中存在很多困难。此外,数据结构是应用型很强的一门课程,课程实践是其重要组成部分。由于学生平时缺少上机编程锻炼,在设计程序过程中思路不清晰,调试程序的能力欠缺,特别是由于对指针的理解不够透彻,错误使用指针,导致编写的程序运行时经常崩溃。这些问题使得学生在实际应用中很难找到成就感,于是逐渐失去对数据结构课程的兴趣。甚至有些学生在上机实践时,按照课本上伪代码实现程序或者直接按部就班的录入源代码,仅仅做着翻译和抄写的工作,当代码的搬运工,最终导致需要用数据结构的相关知识解决实际问题时,部分学生无从下手,对算法的设计更是畏惧和不知所措,上机调试程序更加困难。
2.2 教学环节中学生遇到问题没有及时解决
第一种情况:学生认真听讲,但是对个别知识点有疑问却不好意思提问。这种情况一般出现在学习成绩中等偏上的学生身上。这类学生的特点是学习态度认真,上课时候也基本能跟上老师的教学进度,并且在能够理解知识点的情况下,给予老师“点头”的反馈,但是当这些学生有疑惑时,却通常摆出“若有所思”的状态,不敢把自己的问题和困惑讲出来,老师只能通过猜测他们哪里有疑惑并再次解释,这非常不利于针对性地解决问题。
第二种情况:学生前面有知识漏洞,到后面遇到问题不懂的时候,不知道问题到底出在了哪个地方,提不出问题。这种情况一般出现在学生成绩偏下的学生身上。这类学生的特点是先修课程中有许多知识点不熟、不会,导致新的知识点很难听懂。他们知道自己不懂,但是不知道从哪里入手解决,只愿意与熟悉的同学讨论,如果一起讨论问题的同学水平也差不多则无法解决问题。这样随着教学的进展,积累的问题就越来越多,整个课程对这些学生而言就更加难。
2.3 教材偏理论、枯燥,并且实践操作相对较少
数据结构课程内容包括线性表、栈和队列、串、数组和广义表、树、图等基本数据结构和查找、排序等基本操作部分,每种数据结构又包括顺序存储结构和链式存储结构,不同的存储结构又有各种算法的设计和算法分析。课程内容丰富并且需要掌握的知识点较多,部分知识点非常抽象、枯燥,这就给学生的学习带来了一定的困难。严格意义上说,教材是促进教学质量以及提升效果的关键和基础。众多出版的数据结构课程教材,其中不乏许多特色较强的教材,但是这些教材都普遍过于侧重理论教学,难度大,并且课程教学比较枯燥。对于应用型本科院校的学生而言,缺乏针对性和实用性,不能有效地促进学生综合能力及提高实践能力。此外,为了完成教学任务,教师在教学过程中需要花费大量时间讲授理论知识,不得不减少实验教学课时,数据结构课程一般是64理论学时+16实践学时,直接影响培养学生的动手能力,学生对课堂上的知识点难以消化,导致教学进度缓慢,从而形成恶性循环。
3 教学探讨
3.1 上好第一堂课和做好C/C++的复习
人与人见面的第一印象非常重要,学习亦是如此。当学生第一次上数据结构这门课程时,教师应当想办法引导学生对数据结构产生兴趣。先用生动有趣的生活案例让同学们对数据结构有感性的认识。学生在前期学习C/C++程序设计时,已经学习到基本的数据类型和用结构体去构造一些相对复杂的数据类型,比如学生信息。教师可以通过简单的数据存储问题一步一步慢慢把学生引导到复杂的数据结构上。比如,一开始可以先问学生如何存储一个整数,到如何存储多个整数,到如何存储多个姓名,再问,如果这些姓名之间存在着父子、兄弟的关系,又应该如何存储呢?从而引出树形结构的概念。通过家族族谱姓名、成员之间的关系,可以让学生快速理解树形结构。在学生感性理解了线性结构、树形结构和图形结构之后,教师再去介绍数据结构的概念。避免一上课就讲数据结构的基本概念,比如数据、数据元素、数据对象、数据类型、抽象数据类型这种概念性的知识。知识点过于抽象,学生可能一下子就会对数据结构失去了兴趣导致后续的课程再也没心听进去。此外,对于应用型本科院校,教师也应避免太过深入的讲解算法的时间复杂度概念和严格的求解过程。在学生掌握了数据结构的概念并理解了数据结构的3个方面内容:逻辑结构、存储结构和对数据施加的运算之后,再去讲解整书的知识框架,以线性结构、树形结构、图形结构展开教材的所有章节,让学生对数据结构要学习什么内容,如何学习有个大概的了解,只有搭好了框架,才能更好地向知识框架里面补充知识,学生的学习也才会更加牢固。此外,C语言的结构体和指针知识点是学好C/C++版本数据结构的基础,特别是指针,链式存储结构大量使用到指针知识点,需要预留时间给学生复习C或C++的基础知识。只有编程语言的基础打牢,后面的学习才会更加顺利。
3.2 借助微信答题小程序进行在线测试,实时了解学生的学习效果
针对教学环节中学生遇到问题没有及时解决,教师的提问只能了解到少数同学掌握知识的情况,而作业由于是学生课后完成,老师修改并统计之后才能了解学生的学习情况,信息相对滞后,两种传统方法都无法实时了解学生在课堂上的学习效果。借助市面上免费的微信答题小程序,以 “答题考试王”为例,该微信小程序具有添加考题、添加考卷等功能,可以添加选择题、填空题,并设置正确答案,最重要的是具有各种数据统计功能,比如学生的答题时间、分数段报表、每一道题的答题正确率、对错考生名单。教师在上课之前,以重要的知识点设置部分的选择题和填空题,在教學过程中,讲解完某个重要知识点后,让学生扫描二维码进行答题,教师可以实时查看数据统计,了解每位学生各个知识点的掌握情况,如果某道题错误率较高,说明大部分同学没有掌握好相应的知识点,教师可以重新讲解易错知识点,让学生在课堂期间就消化所学知识。此外,教师还可以通过数据统计,具体了解到每一位同学所遇到的问题,进行因材施教。
3.3 巧用案例提升教学效果
巧妙地应用案例可通过引导学生开发小软件来激发学生的学习兴趣,同时培养学生学以致用的能力,下面就以几个简单的案例为例探究分阶段实施案例教学的方法,通过在对应章节中有针对性的引入案例,培养学生灵活应用的能力,从而提升学生的编程技能和学习兴趣。其一,图书管理系统。实现一个小型书店的图书信息管理系统,其功能包括图书信息的添加、删除、更新和查询。该案例对应着线性表的课程教学内容。其二,迷宫游戏。从入口开始,不断地对周围的道路进行试探,若能走通,则进入该位置,继续对周围进行试探,反之则后退一步,继续寻求其他的可行路径。此案例的后进先出规则可用于栈的教学。其三,贪吃蛇游戏。该游戏中,蛇移动时的特点是,蛇尾消失,并且在移动方向上加上一段蛇头。队列的特点就是先进先出,因此可以利用这个特点来模拟蛇的移动。用队尾表示蛇头,队头表示蛇尾。蛇的移动就对应着数据结构中队列的一个元素先出队列,然后再将一个元素入队。其四,编码解码系统。哈夫曼树在数据编码中的应用是数据的最小冗余编码问题,将哈夫曼树编码/解码放在二叉树章节的案例中讲解,有助于学生进一步理解二叉树。其五、校园导游模拟系统。设计一个校园导游程序,要求景点不少于6个,以图中顶点表示景点,用边来表示路径,为来访客人提供图中任意景点问路查询。将此案例应用到图和最短路径求解中,让学生对所学知识有更直观的理解。
4 结语
总而言之,应用型本科数据结构课程教学尽管存在诸多有待提升的地方,但只要找准存在问题并认真分析其原因,就能针对性的通过相应的教学改革激发学生的学习兴趣,助力教育改革顺利进行。
参考文献:
[1] 李根强.数据结构:C++版[M].北京:中国水利水电出版社,2005.
[2] 戎丽霞.基于CDIO理念的数据结构课程教学研究[J].电脑知识与技术,2011,7(10):2473-2474.
[3] 殷晓玲,夏启寿.应用型本科院校“数据结构”课程教学研究[J].池州学院学报,2016,30(6):131-134.
[4] 徐新.基于案例驱动的数据结构课程教学方法研究[J].计算机教育,2019(3):44-47.
[5] 张浴华.基于应用型人才培养目标的数据结构教学研究[J].科技视界,2015(4):51-52.
[6] 翟宏宇.数据结构与算法课程实践教学改革的探讨[J].重庆与世界(学术版),2013,30(11):93-95.
[7] 刘鑫.应用型本科院校数据结构课程教学改革与实践[J].教育现代化(电子版), 2016(20):21-22.
[8] 阮仪,吴佳忆,曾柒龙.新工科背景下地方应用型本科院校数据结构教学改革与研究[J].高教学刊,2019(18):141-143.
[9] 宁正元,王秀丽,钟一文,等.应用型本科“数据结构”课程教学改革的研究与实践[J].计算机教育,2009(17):119-121.
【通联编辑:王力】