应用型本科院校“数据结构”课程教学研究

2016-03-29 11:50:11殷晓玲夏启寿
池州学院学报 2016年6期
关键词:数据结构程序设计应用型

殷晓玲,夏启寿

(池州学院数学与计算机学院,安徽池州247000)

计算机科学的两大支柱课程之一——数据结构,是计算机软硬件技术与数学学科密切结合而形成的一门交叉学科,是计算机学科中一门综合性较强的专业基础课。数据结构课程学习的好坏,对学生后继课程的学习以及培养学生分析问题、解决问题的能力,软件设计与开发的能力起着至关重要的作用[1]。同时,“数据结构”课程开设的目的是利用计算机来解决日常生活中的实际问题,具有很强的实际应用价值,如停车场管理、城市之间信息网络的建设与规划等。这些现实生活中的实际问题通过优质算法的调度和控制,更好地服务现实世界。由于该课程涉及的概念较多、内容较广,而且对数学基础有一定的要求,解题又需要有一定的技巧,因此,相当一部分学生都感觉到书上的基本概念、基本操作的实现能听懂,但是解决具体问题时却无从下手。因此,如何学、怎样教“数据结构”成为学生和教师普遍关注的问题。

1 课程教学现状及分析

由于长期受传统课程教学模式的影响,应用型本科院校的课程无论在教材选用上还是教学内容选取上,基本上都沿用研究型高校的课程体系,大多只是在教学内容上做了些调整,降低教学难度。对于应用型本科高校来说,更多地应该是强调应用能力的培养,注重课程的实际应用性[2]。

1.1教学现状

1.1.1授课传统 在“数据结构”理论教学过程中,教师太过于主动,教师几乎占用课堂上所有时间,学生只是无条件被动地接受,学生不用考虑问题的由来、如何处理等,学生的主观能动性和积极性没有得到发挥,教师根本没有考虑让学生参与,学生独立自主的学习能力和学习兴趣受到抑制,导致有些学生学完“数据结构”课程后,还不知道这门课程学的是什么,知识点零散,不能掌握该课程的实质,基本不具备总结分析和融会贯通所学知识的能力,在解决实际问题上不能应用所学的知识和所掌握的算法,不会分析问题,不知如何应用相应的数学模型来解决实际问题[3]。

1.1.2缺少实践 课堂上所学的基本概念及基本操作得不到实际的练习,通常学生只是参照书本上的伪代码和教师所讲解的内容实现一些简单的算法,所做的工作只是简单的翻译和拷贝,没有对知识进行消化理解,不理解实践课程的作用。课后作业也是就书本问题解决问题,并没有解决一些实际问题,偏离了课程开设的目的。

1.1.3缺乏跟踪指导 教师与同学们缺少沟通,缺少跟踪指导,在课堂上学生对难以理解的抽象算法思路跟不上,难以消化,在课后可能有想解决问题的意识,但遇到问题得不到及时解决,逐渐失去了学习兴趣。

1.1.4网络带来的弊端 老师在课堂上布置的任务,多数学生课后不去思考,为完成老师所布置的任务直接到网上搜索,从网上得到解决问题的方法后不加思考,直接拷贝,违背了教师布置任务的初衷。

1.1.5难有成就感 理论与实践脱节,即使有的学生找到了解决问题的步骤,也可以进行描述,但由于先行课程不扎实,实验过程中又会出现各种错误,很难达到预期的效果,从而丧失信心。

1.2原因分析

1.2.1目标不明确 为什么要学习“数据结构”?学习“数据结构”的用处在哪?怎样学?目标不明确,动力不强,缺乏兴趣。

1.2.2先行课程基础不扎实 具备一定的数学知识是学好“数据结构”这门课程的前提,而不少学生数学课程基础不扎实,增加了学习该门课程的难度。如“数据结构”中涉及时间复杂度的分析需要依靠“概率与统计”知识,元素之间的关系和基本运算操作来源于“离散数学”中的离散结构和算法思考。除数学知识以外,程序设计语言掌握不透,比方说,“C语言程序设计”中指针是精华部分,有一定的难度,“数据结构”中频繁地使用结构体数据类型,如果学生对这些内容掌握不熟练,在“数据结构”课程的算法设计以及实践环节上,必然会困难重重,导致学生没有足够的信心去学习“数据结构”。

1.2.3实践环节重视程度不够,指导不够及时 学生不够重视,在实践环节中,学生没有按照教师的要求完成实践内容,觉得能读懂算法就可以了。老师重视不够,对学生的实践教学应该从写算法开始进行指导,算法过关后,才能引导学生写程序。由于实践教学课时少,指导的学生数量较多,仅凭课堂上机那点时间是远远不够的,课后又缺少沟通,学生得不到及时的指导,另外,实践的内容较难,在短期内学生很难找到成就感,慢慢就会失去信心。

1.2.4课程本身的特点 课程内容丰富,需要掌握知识点较多,部分内容非常抽象,这给学生学习这门课程带来了一定的困难。动态链表的存储结构和递归技术贯穿于“数据结构”整个课程,它既是学习的重点也是学习的难点,学生不易掌握;所用到的计算思维方法较多,而在此之前的各门课程中介绍不多或没有介绍,因而加大了学生的学习难度。

2 教学探讨

2.1抓住入门引导,激发学生的好奇心和求知欲

上好第一堂课。引入一些经典例题,如地图着色问题、五叉路口信号灯设置等问题,可以让同学们亲自动手,实地考察,切身体会,激发学生的好奇心及求知欲,建立一个直观的学习目标,同时把理论与实践联系起来。

2.2循序渐近讲解算法,把握算法精髓

“数据结构”作为计算机专业的专业基础课,主要教学目标是让学生学会分析问题,从问题中提练出数据,合理地组织数据,选择合适的存储结构,采用高效的算法来处理数据。算法是“数据结构”课程的核心,在教学实施过程中,必须紧紧围绕算法,要深入讲解算法的基本思想,把握算法的精髓[4]。针对一个具体算法,采取由浅入深,由特殊到一般的教学方法,先引导学生用自然语言描述出解决问题的思路,再概括算法的基本思想,逐步过渡到用类C描述。根据具体实例,循序渐近的组织教学在实际的教学过程中已取得了良好的效果。

数据结构是带“结构”的数据元素的集合。“结构”指元素之间存在一种或多种特定关系。数据结构不是程序设计语言的数据结构,它和具体的程序设计语言无关,在学习过程中不要过分关注如何用程序设计语言去实现,学生在学习过程中,往往把“数据结构”与具体的程序设计语言联系起来。虽然在实际应用中,算法总是要用某种程序设计语言来实现的,但在教学过程中,不应过分关注于数据结构是如何用程序设计语言来实现,要主次分明,否则思想就会被束缚在这些语言的语法规则中,无法站在更高的角度去理解相应的算法。所以在教学过程中鼓励学生用自然语言对“数据结构”中的算法进行描述,强调的是“算法”而不是“语言”。

2.3增强实践环节

2.3.1激发实践兴趣 充分利用网络资源,了解有关ACM(Association for Computing Machinery)大学生程序设计竞赛及OJ系统有关情况,鼓励学生积极申请。可要求学生完成在线评测(Online Judge,简称OJ)提供的相关练习[5-6]。

2.3.2明确实践要点 掌握线性表、二叉树和树、图结构等相关算法的设计。熟悉链表结构,用循环链表实现约瑟夫环问题;利用栈和队列模拟停车场管理;通过二叉树的基本操作,掌握树型结构的处理方法;分别用邻接矩阵和邻接表实现图的创建、遍历、插入、删除、求最短路径等操作;熟悉图的常用存储结构和基本操作;掌握查找和排序算法,以便根据实际情况选择恰当的查找和排序方法。

2.3.3区分实验类型 要区分实验任务,前期尽量多给些简单的验证性的实验,目的是为巩固课堂上所讲授的知识,根据学生掌握的具体情况,循序渐进地加大难度,设置一些综合设计性实验,综合设计性实验不仅训练了学生对知识的综合运用能力,还提高了学生解决实际问题的能力,同时,由于此类实验需要多人合作完成,培养了学生的团队协作精神和创新力。少数优秀学生可以参与难度较大的研究性实验中,此类实验尽量与教师的科研项目相联系,结合本学科的发展前沿动态,在教师的指导下探索性地进行实验,重点是培养这部分学生的科研能力。

2.3.4注重课程设计环节 “算法与程序设计综合课程设计”是计算机类学科中一门专业应用能力课,该课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。通过该课程设计,强化学生对所学知识的掌握以及对相对复杂问题进行分析,解决问题的能力。使学生能够根据数据对象的特性,学会数据组织的方法,能把现实世界中的实际问题在计算机内部表示出来,并培养基本的、良好的程序设计技能。

3 改革思路

3.1注重课程启蒙教学

在学生接触“数据结构”这门课程的初期,应提高学生对这门课程的兴趣,激发学生求知欲和探索精神。打破以往按章节介绍内容,可以直接从同学们熟悉的进制转化开始,可以将有关概念、术语穿插在算法中,再由进制转化转移到现实生活中的停车场管理问题,体现该课程的实际应用价值,对课程充满着好奇和探索未知世界欲望,学生的自主能动性得到很好的调动,为该课程的学习,建立一个良好的开端[7]。

3.2明确教学目的和教学要求

教师应系统地告知学生这门课程的教学目的和教学要求、让学生明确学习的重点和难点,并向学生公开完整的教学课件,让学生提前对该课程教学情景有所预知,能够轻松面对教师所讲授的每一个知识点。在具体实施教学过程中,教师不需要按课件内容逐一讲授,可以有选择地讲解重点和难点,合理安排时间和精力,有针对性地教与学。在导入知识点时要尽量设计悬念,让学生带着问题去听课,能有效提高课堂上的教学效果,当然设计悬念难度要适中,最好是面向实际应用,尤其是选择那些学生所熟悉的领域,学生觉得有实际应用价值,就会产生疑惑、好奇,并产生浓厚的解决欲望,从而深究下去,继而追随老师的讲课内容,与教师产生良性的互动。教师不仅会“传道授业”,而也要善于“解惑”,在每堂课结束前,教师根据实际需要授予学生相关的疑惑,让学生课后去思考,并试图去解决。可适当的组织讨论,让学生给出解决的方法,同学们相互讨论,老师及时评价和指点,使得问题得到很好地解决,教师可根据学生的学习情况适时调整难度,做到循序渐近,进入良性教学循环。

在教学过程中,教师不仅是“教师”,更是问题制造者、解决问题的组织者、指导者、帮助者和促进者,教师扮演着不同的角色,通过讨论、协作、交流等各种教学活动充分挖掘学生的主动性和创造性[7]。“数据结构”的教学模式可采用实践案例驱动式教学,该课程的知识面较广,要求学生具有灵活的应变能力,以及在多变的环境下独立分析问题、解决问题的能力,采用案例驱动式教学模式恰恰符合教学要求,能培养学生的实践能力和创新能力。

3.3因材施教,兼顾全面

要根据学生的不同制定相应的教学计划,选定对应的教学内容。要有侧重点,尤其是应用型本科院校,实践环节中更应加以区别对待,对基础不太好的同学,多强调验证性实验;对那些精力充沛,爱动脑筋的学生可以做一些综合性实验;对极个别学习特别好的学生可以帮老师一起完成相关课题的研究,做到有的放矢。

3.4形象教学与启发式教学相结合

“数据结构”内容丰富,很多数据模型具有象形性,教学时注重形象教学,要善于比拟,可加深学生的记忆,帮助学生对抽象知识的理解。如在讲授链表的知识点时可以把链表比作一串手珠链,珠子就是链表的结点,珠珠之间通过线连接起来,构成一对一的关系[7],利用手珠链可以形象地讲解单链表和循环链表;树或森林转化成二叉树,可采用双亲结点只牵手第一个孩子结点,将其余孩子放手,兄弟结点之间牵手,再顺时针转45°,即成二叉树;对二叉树的中序遍历,可以用一束平行光进行照射,它们的投影点即为中序遍历的结果,这些既形象,又有趣,学生容易掌握。在教学过程中,采用这种形象有趣的教学方法,学生掌握起来非常简单。整个教学过程中教师起引导和协助作用,而学生是思考的主体,学习的主动者,在教师的指引下,引发新的思考,形成持久的沟通,最终产生完美的教学效果。

3.5理清知识脉络,归纳总结并融会贯通

“数据结构”课程的信息量较大,知识点较多,教师可引导学生对整个课程构建知识体系,为增强学生的学习信心,提高学生的学习兴趣,。全课程根据数据的逻辑结构进行章节划分,由线性结构到非线性结构,线性结构中又由一般到特殊,在每种结构中,都是先从定义抽象数据类型开始,接下来给出存储表示,最后是具体操作实现。

3.6注重理论与实践相结合

“数据结构”是一门具有很强实际应用价值的课程,目的是将所学的知识解决人们现实生活中所遇到的一些问题,如现在人们普遍关心的停车场管理问题、物流行业中最短行车路径问题等,通过有效的算法调度和控制,从而达到降低人力、物力和财力。所以,“数据结构”课程实践在整个教学环节中占有非常重要的地位。在实验内容的选取上,要结合课堂上所讲授的知识点,由易到难循序渐进地设计,把课程的实践分为验证性、综合性和研究性三类实验。验证性实验主要是验证课堂老师所讲的知识点,巩固一些基本算法,比如线性链表的查找、插入和删除等基本操作;综合性实验为应用型题目,如校园导游和最短行车路径等问题,由于它的综合性较强,涵盖知识点较多,难度也较大,教师需要提前下达实验任务书,让学生提前查阅相关资料并做好实验准备,让一组同学分工协作共同来完成;研究性实验当然不能局限于课本知识,尽量与教师的科研项目相结合,关注本学科发展的前沿动态,在教师的指导下探索性地进行实验,重在培养学生的科研能力[7]。

3.7结合实习安排课程设计,培养应用型人才

现在的毕业生都面临着巨大的就业压力,用人单位在招聘时总是希望应聘者具有一定的工作经验,所以实习演练成为学校必要的教学安排,学生只能在实习的过程中获得一些工作经验。学校在制定人才培养方案时,要尽可能多的安排一些时间让学生到企事业单位实习,学生结合工作岗位和自己所学的知识来拟定设计项目、选择开发工具、计划研发过程,进入到工程实践中,或直接参与到企业的项目中,学生经过真实工作环境的实际锻炼,能够积累一定的工作经验,为后续工作打下一定的基础。到企业去实习不仅可以锻炼一个学生,使其成为脚踏实地的应用型人才,而且还可更好地评价学生的实际工作能力,同时规范了应用型高校的教学内容,使教学内容更加切合实际需要,真正完成了学校的社会使命。

4 结束语

总之,鉴于“数据结构”课程的自身特点及其在专业中所处的重要地位,要求我们从“数据结构”课程入手,在“数据结构”课程教学改革方面进行尝试,努力探索适应应用型人才培养的教学模式。

[1]姜浩.“数据结构”教学过程中应重视算法设计与分析能力的培养[J].计算机教育,2007.(8):27-29

[2]张丽萍,刘东升,王春晖.计算机应用型人才培养与数据结构课程改革[J].计算机教育,2010(3):21-23.

[3]葛建梅.“数据结构”课程教学方法改革的思考[J].中国成人教育,2008(1):147-148.

[4]卢永艳.“数据结构”课程教学要点探讨[J].林区教学,2007(7):75-76.

[5]张丽萍,刘东升.程序设计精品课程建设的研究与实践[J].内蒙古师范大学学报(教育科学版),2007(1):109-111.

[6]郭玮,李文新.程序设计类实习课程如何准确考查学生学习情况[J].吉林大学学报,2005(8):99-103.

[7]张宝剑,吴效莹.应用型本科院校数据结构创新教学模式[J].计算机教育,2011(7):74-77.

猜你喜欢
数据结构程序设计应用型
关于应用型复合人才培养的教学模式探讨
辽宁丝绸(2022年1期)2022-03-29 00:59:06
“5-2-1”应用型人才培养模式探索实践
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
第8讲 “应用型问题”复习精讲
高职高专院校C语言程序设计教学改革探索
“翻转课堂”教学模式的探讨——以《数据结构》课程教学为例
高职高专数据结构教学改革探讨
中国市场(2016年45期)2016-05-17 05:15:48
PLC梯形图程序设计技巧及应用
基于应用型的成本会计教学改革
现代企业(2015年5期)2015-02-28 18:50:43