数据结构是一门理论性、实践性并重的计算机专业核心基础课程,在计算机课程体系中处于承上启下的地位[1]。图1展示了数据结构与计算机其他课程的关系,以及在计算机课程体系中的地位。通过数据结构这一门课程,一方面培养学生算法设计基本能力,另一方面是要重点培养学生养成按照计算机思维方式分析问题,解决问题,为培养软件开发综合能力打好基础。由于应用型本科院校的特殊性,培养学生应用、实践能力是本科教学的目标,如果单纯采用传统课堂教学方式,很难培养学生的这些能力。又加之数据结构课程内容本身晦涩难懂,课堂教学效果往往不尽人意,学生也不易理解大多数算法原理,长此以往,学生逐渐失去学习兴趣[2]。因此,本文针对应用型本科院校的特殊性,寻找当前数据结构教学方法的缺陷,探索一种理论实践相结合的,培养学生算法分析设计能力的教学方法。
一、数据结构课程教学中存在的问题
数据结构课程是计算机科学与技术、软件工程、互联网工程、信息管理与信息系统等专业的核心课程,很多院校都把它作为专业必修课。在实际教学过程中,由于该课程的理论抽象、复杂,学生动手编写算法能力不足,传统的教学方法已经不能适应于应用型人才的培养目标[3]。具体来讲,当前数据结构课程教学中存在以下几个方面的问题。1.学生对学习数据结构所需的预备知识掌握不牢。其中,C语言程序设计是数据结构重要的先修课程之一。然而,经过多年的教学实际情况表明,大多数学生的C语言学习效果不佳。主要体现在数据结构中,从线性表开始,都会广泛使用结构体这一数据类型,而结构体在C语言的教学中,很多教材往往出现在最后的几个章节,多数老师也不会重点讲解这一部分内容,也有的老师根本不讲。此外,C语言中函数和指针方面的知识,掌握情况也很差。因此,这些先导知识与技能的储备不足,直接导致大多数学生一开始接触数据结构就迷惑,从而失去学习动力。2.单一的课堂理论教学不能充分培养学生的算法分析、设计能力。由于数据结构很多算法理论性较强,单一的课堂教学,无法使学生理解这些算法的实际用途和理论来源。此外,大多数学生灵活应用C语言能力不足,不能将C语言的知识储备转化为数据结构算法分析、设计的基础能力。3.实践能力欠缺,传统只注重理论教学,实验课程安排课时比例偏小。加之,理论教学无法充分展现数据模型的内在联系,学生无法理解数据之间的各种关系。上机编写算法能力很差,也无法体会数据结构的实际应用价值,失去学习兴趣。4.当前大多数教材偏重数据结构算法模型的讲解,没有强调面向实际应用的价值性。面向应用型本科院校强调“学以致用”,编写实用性、趣味性的数据结构实验教材势在必行。
二、案例教学法用于理论课程教学
在经济、管理等学科教学中,案例教学法是普遍采用的有效教学方法。合理的、趣味性强的案例应用于理论教学中,十分有助于学生理解抽象复杂的理论知识,也很容易激发学生的学习兴趣。因此,可以尝试将案例教学法引入数据结构的课堂理论教学中,改善现有教学方式,提高课堂理论教学的趣味性。但是,如何寻找合理的、趣味性强的案例是案例教学的首要问题。此外,如何有效利用这些案例,是改进数据结构教学效果的关键因素。数据结构的基本概念和算法是很抽象的,对于在校的大学生,他们从未从事过软件开发等相关工作,结合案例,将抽象的概念实例化,为进一步理解算法打好基础。通过案例提供的情境,学生们可以从中体会数据之间的复杂关系,促进学生思考算法的应用性。此外,针对各个算法,开发生动、直观的教学动画课件,能有效帮助学生理解抽象的算法过程。动画模拟真实场景的案例,引起了学生的关注,培养了学习兴趣,增强了数据结构理论教学的趣味性。将案例分析同课堂讨论式教学相结合,是提高学习效果的一种重要手段。对一些重要的、较复杂的算法模型,寻找一些趣味性的案例,采用提问式教学,结合动画课件教学。在课堂教学中,把学生分成若干小组,组织学生去分小组讨论算法的难点,寻找算法在实际应用中的真实案例,结合这些案例分析理解这些算法,并做好报告。这种启发式教学,能提高学生学习的主动性和参与性。在这个过程中,教师积极引导,对算法讲解深入浅出,培养学生学以致用、从生活中学习知识的能力。因此,将案例教学法引入数据结构的课堂教学是提高学生理解、分析算法,培养学习兴趣的有效途径。
三、项目驱动式教学用于实验课程教学
项目驱动式教学法是一种行为引导式的教学形式[4],被广泛应用于计算机课程教学中,特别是软件工程等课程。该教学方法是强调教学过程以学生的实际完成项目情况为考核目标,教师辅助引导学生完成项目,最后评判项目。通过分组做项目,驱动学生应用理论知识解决实际问题,同时加深学生理解算法,发现算法的优缺点,思考算法改进的途径。数据结构是一门应用性很强的课程,除了课堂理论教学之外,实验教学也很重要[5]。课程开课前,便从网上和熟悉的企业中广泛收集该课程的相关项目。对于这些项目,应该要把握难易程度。在上完数据结构绪论章节后,把这些项目公布出来,供学生分小组选择,这样可以培养学生的团队合作意识,根据自己的能力选择合适的项目。如果提供的项目列表中,没有合适的项目,要引导学生寻找自己合适的、感兴趣的项目。如果多个组选择了同一个项目,教师可以组织一个项目竞标会,通过比较评分决定项目归属权。接下来,在教学过程中,结合项目需求进行重点、难点知识的讲解。遇到有争议的问题,结合本组的项目,大家通过课堂讨论解决问题。临近期末时,组织学生相互验收对方的项目,同时还组织老师团队验收项目,把教师和学生验收情况进行对比,让学生发现自己项目的问题,对于获得优秀评价的项目要给予奖励。项目驱动式教学做到了以学生为中心,教师只是提供必要的理论、技术指导,实现了一切以学生为主的教学理念[6]。
四、编写面向应用型本科的数据结构教材
当前,大多数数据结构教材都以理论阐述为主,缺少应用性的内容。结合现有优秀数据结构理论教材,加入相应的案例引导,编写生动、直观的动画课件,使枯燥、难懂的数据结构教材变得生动有趣。对于一些特殊算法,可以加入游戏等内容,帮助学生理解算法。比如,“栈与队列”章节中,把一些游戏算法作为引导案例,对于学生理解栈与队列的基本概念和算法大有裨益。此外,在数据结构第一章,应该增加该课程预备知识的内容,主要包含结构体的概念与编程实例、指针、函数等相关内容,同时还可以增加一些算法在实际应用中的案例等内容。总之,针对面向应用型本科院校的教学要求,使数据结构教材更加浅显易懂、趣味生动,使学生通过教材可以自学数据结构,增加学习兴趣。
五、结论
总而言之,针对面向应用型本科院校的数据结构课程教学,我们要进一步强化学生的算法设计预备基础知识,编写合适的教材。在课堂理论教学过程中增加趣味性案例教学内容,积极探索合适的理论教学方法,培养学生对数据结构算法的分析、理解能力,开发学生算法设计能力。对于实验教学,也加大投入力度,以项目驱动方式改进传统的实验教学方法。另外,数据结构课程的教学方法随着社会的需求改变而不断变革。信息技术迅速发展,课程也需要及时调整,将最新科研成果融入到课程教学过程中,以开拓学生的视野。
作者:程波 熊江 单位:重庆三峡学院 计算机科学与工程学院
相关专题:南京航空航天大学学报 集体备课总结