苏艳
【摘 要】《数据结构》是软件工程专业的一门核心课程,也是培养学生程序设计能力的一门专业课。但这门课程比较抽象,学起来比较困难,因此本文从教学的角度出发,从教学内容、教学方法等方面进行了一些探讨。
【关键词】数据结构;教学内容;教学方法
数据结构课程是软件工程专业的一门专业基础课,其课程内容与软件工程专业的其他课程有着密切的关系,为进一步学习操作系统、编译原理、数据库等专业课奠定坚实的基础。该课程的特点是知识点多,概念之间联系紧密,算法抽象难懂,要求学生具有较强的逻辑思维能力,给学生学习带来一定困难,使用传统的教学模式,教学效果很不理想。本人从自己的教学体会出发,结合我校具体情况,对《数据结构》这门课程的教学方法进行了一些探讨。
一、学生学习情况分析
讲课不是教师的个人秀,而是让学生学到知识。任何一门课程,不仅要将知识传授给学生,还应该提高学生的各种能力。C语言程序设计是数据结构的基础课程,学生对它的掌握程度,关系到《数据结构》课程的教学效果。因此,上课之前,需要充分了解学生对C语言的掌握程度。对于大多数学生来说,对C语言的运用能力不是很强,如果直接对学生讲算法和程序,学生会感觉很吃力,跟不上教师的进度。《数据结构》课程主要运用C语言中的数组、函数、指针、结构体等知识点来分析问题、解决问题,因此,在讲授该课程之初,可以利用两个课时,对这些知识点进行复习。只有把这些知识点理解透彻了,才能进一步的学好《数据结构》课程。
二、分析教学任务与教学目的
数据结构课程的教学任务是让学生掌握一些最常用的数据结构,阐明数据结构内在的逻辑关系,讨论其在计算机中的存储表示,并结合各种典型应用说明其在进行各种运算(操作)时的动态性质及实际的执行算法。通过对不同存储结构和相应算法的对比以及上机编程练习,增强根据求解问题的性质选择合理的数据结构。
数据结构课程是一门实践性较强的专业基础课程,教学目的就是培养学生针对实际问题在数据结构的选择和应用、算法的设计及其实现以及程序设计方法等方面的基本技能。
三、归纳教学内容
数据结构课程的一个显著特点就是概念多。学生之所以感觉老师讲的内容都听懂了可就是不会编写算法,正是因为他们没有把握住这门课程的主线,没有把概念理出层次,而仅仅是孤立的认知,所以不懂得灵活的应用。
因此,理清主线、对于基本概念的正确理解是合理选择算法的前提。在此基础上,明确数据结构是指数据之间的关系,它包括数据之间的逻辑结构、数据在计算机中的存储结构和数据的基本运算等3个方面。数据的逻辑结构是指数据之间的逻辑关系,分为4种结构:集合、线性结构、树形结构和图形结构。数据的存储结构指数据在计算机中的存储形式,包括:顺序存储结构和链式存储结构。数据的基本运算:定位、插入、删除、更新。然后,讨论两种实际操作:查找和排序。最后,为了构造好的数据结构及实现,还需要考虑数据结构及算法实现的性能,即时间复杂度和空间复杂度。
讲解每一种数据结构时均贯穿这一主线,这样既保持了课程的逻辑性,又对课堂教学起到强化作用,加深理解和记忆。例如,讲解第三章的队列结构时,可以按照如下主线进行:队列是限定仅在表尾进行插入,在表头进行删除操作的线性表,又称为先进先出线性表;队列的逻辑结构是线性结构;队列的存储结构可以是顺序存储结构(称为顺序队列)或链式存储结构(称为链队列);队列的基本运算为入队(插入)、出队(删除)等;基于顺序队列和链队列的各种算法实现性能(时间复杂度)的比较、各自适用的范围等;队列结构可以应用于解决叫号系统等实际问题。
四、教学方法的改进
现代的教育模式应该由“授之以鱼”转换为“授之以渔”,使学生不仅知其然,还要知其所以然。因此在教学中要着重体现启发式教学,除了详尽的讲解知识的内涵,还要将教学意图融入其中,在课堂教学中既能吸引学生的注意力,又能充分表达问题的实质。通过提出问题、分析问题、解决问题的过程,激发学生的学习兴趣,加深对知识的理解程度。例如讲解队列的顺序存储结构时,通过对顺序队列的特点的讲解,得出顺序队列存在假溢出的现象,由此提出问题:如何解决假溢出?进而对其进行分析,给出解决方案:将顺序队列当做首尾相连的表处理,从而引出循环队列。
在算法设计的讲授过程中,始终以问题为研究对象,按照上述问题求解的过程,找到每个关键问题的解决方法后,不要急于给出算法的程序代码,不管是什么语言,一旦将程序给出,就完全禁锢了学生的想象空间,学生只是一味的去理解程序的语句、过程和函数。因此在课堂教学中,凡讲解算法时,应采用“算法的求解思路”→“伪代碼描述”→“C语言描述”的三级模式描述算法,这样不仅解决了由于学生语言不足而影响算法掌握的难题,同时也给学生留下足够的发挥空间,培养了良好的解决实际问题习惯。
例如,讲解“在顺序表L中第i个位置之前插入新的元素x”算法时。首先利用自然语言描述算法思路如下:
①判断顺序表否满;
②定位参数i是否合法;
③最后一个元素~第i号元素依次后移一位;
④将元素x放入第i号位置;
⑤表长加1。
然后再将各步骤转换成C语言描述具体算法。
教师在授课时,可以使用案例式教学,适当介绍与课程知识的应用性相关的案例以引起学生的学习兴趣。例如,在讲解队列的入队、出队算法时,我们以去银行的ATM机取款为案例,引导学生给出入队、出队的算法思路,然后通过课件动态演示入队、出队的过程。通过案例引导学生,使学生更深刻、更快地理解算法,从而激发学生的学习兴趣,增强学生的信心。
五、加强实验教学
《数据结构》这门课程既要培养学生软件设计方面的理论水平,也要培养学生基本的上机动手能力。从本专业学生实际情况出发,总结多年教学经验,撰写了《数据结构实验指导书》。指导书内容详细,极大方便了学生学习,巩固了课堂教学效果。在实验选题上,考虑到学生的个体差异,将实验设置成不同的类型:必做和选做实验,前者目的在于帮助学生掌握基础知识,例如:基于线性表、栈和队列、串、二叉树等的操作以及查找、排序的实现等等,题目类型为验证性;后者的题目类型为设计性,则在于培养和鼓励学生的学习兴趣、扩大知识面以及培养学生的应用能力和创新意识,例如:有序顺序表的操作等。
总之,每位教师要讲好任何一门课程,都要了解课程、了解学生,准确的定位课程及教学目标,合理的安排教学内容,采用合适的教学方法,才能收到良好的教学效果。
【参考文献】
[1]朱站立.数据结构——使用C语言[M].电子工业出版社,2014.
[2]严蔚敏.数据结构[M].清华大学出版社,2007.
[3]王红梅等.数据结构(C++版)[M].清华大学出版社,2011.
[4]余丽娟.数据结构课程与学生逻辑思维能力的培养[J].职业教育研究,2008(2):140-141.