-
《数据结构》是计算机及其相关专业的一门专业核心课程,其研究不仅涉及计算机硬件知识如编码理论、存储存取方法,而且和计算机软件密切关联[1-2]. 《数据结构》不仅是一般程序设计开发的基础,也是程序编译、操作系统、数据库系统及大型应用系统的开发与设计的重要基础[3].
全文HTML
-
虽然《数据结构》在计算机课程教学体系中占有举足轻重的地位,然而由于其抽象性及复杂性,学生的学习兴趣不高,无法学以致用,究其原因主要集中在以下几个方面:
1) 教学模式偏旧,工程能力培养欠缺.
随着高校的扩招,大学教育由原来的精英教育逐渐转变为大众教育,学生的素质发生了显著变化.传统的以老师为中心的教学模式缺乏学生的参与,难于激发学生的学习兴趣.此外,部分教师局限于知识的传授,忽视知识应用的培养,特别是工程能力的训练和培养.学生动手能力差,面对工程问题,更是无从下手.
2) 实验课设置与实际严重脱节.
实验课的设置多采用单一的“验证型”实验. “验证型”实验能够有效帮助学生理解课堂知识点和掌握基本技能,但其耦合性和关联性较低.学生在完成一学期的相关实验后,依然无法利用已学的知识完成一个相对完整的应用系统的开发与设计.此外,实验内容设置严重脱离实际,无法培养学生分析问题和解决问题的能力,特别是完成工程项目的能力.
3) 成绩考核沿袭传统模式,约束了学生创新能力的培养.
传统的课程成绩评定通常以期终理论考试成绩作为对学生最终评分的主要依据,考核中实验课所占比例太少,更不提倡将学生个人的相关实践成果纳入成绩评定范围,这不仅影响学生重视实践的积极性,而且严重妨碍学生创新精神和创新能力的培养.
如何培养学生的工程素养、实践创新能力以及团队合作精神,使之适应未来工作的需求,是高校计算机专业课程改革面临的一个重要问题.本文以计算机专业核心课程“数据结构”为例,基于“理论适度,注重应用,强化能力,适应需要”的教改思路,从教学模式、教学手段优化、实验设置等方面,探索讨论了以项目为导向的数据结构课程教学改革与实践.
-
面对抽象而繁杂的内容,如何使学生深刻透彻地理解各种数据结构,并能针对具体的实际问题选择恰当的数据结构并实现,是《数据结构》课程教学面临的首要任务.
在数据结构课程教学中,以离散数学为理论指导,从理论高度讲解数据结构的基本概念,培养学生理论指导实践的科研能力.对各种类型的数据结构,均以项目的形式,要求学生编程实现,培养学生的工程能力.一个大的课程单元教学结束时,布置一个相应的项目,让学生去上机实现.
在教学模式上,我们采用以项目为导向的案例式教学[7].以项目为导向的案例式教学是指由教师选择典型且难度适宜的项目,以恰当的形式把学生带入一种特定的真实项目或模拟项目情境中,在教师的引导下,学生利用已有的知识和背景,在这种类似项目情境中发现问题、分析问题和解决问题.以项目为导向的案例式教学紧紧围绕已学知识,借助项目案例使理论和实践紧密结合,最终达到培养学生解决实际问题能力的目的[8].
以项目为导向的数据结构课程教学的目标是培养学生分析问题解决问题的能力.分析目前高校计算机专业学生的就业岗位及职业能力要求,建立基于问题求解的课程体系[9].基于该思路,以知识单元的形式组织“数据结构”课程的教学内容,并分别以通讯录管理系统、赫夫曼编译码器、交通咨询系统、图书信息管理系统等项目的开发与实现来介绍线性结构、树形结构、图形结构、集合结构的存储表示及实现.
-
学生通讯录系统界面如图 1所示:
项目名称:学生通讯录的开发与设计
项目要求:
1) 系统功能:从键盘或文件中读入通讯者信息,一般包括编号、姓名、性别、电话以及地址等项;能够实现通讯者信息的插入、查询、删除、更新以及通讯录信息的输出等功能.
2) 程序能对输入数据的容错性进行检查,保证数据的合法性,如性别取值(男或女).
3) 用户界面的友好性:程序能提供菜单供用户选择.
项目意图:
1) 完成线性表的存储表示及其基本操作.
2) 完成文件的打开、关闭操作.
-
赫夫曼编译码器如图 2所示:
项目名称:赫夫曼编译码器
项目要求:
1) 系统功能:从文件或键盘读入一串电文字符,实现赫夫曼编译码.
2) 密码文件以文件的形式存放.
项目意图:
1) 二叉树的存储表示及其基本操作实现.
2) 赫夫曼树的建立.
3) 赫夫曼树编译码算法.
-
系统界面如图 3所示:
项目名称:交通咨询系统
项目要求:
1) 系统功能:要求设计一交通咨询系统,能让旅客咨询任意两个城市之间的最短路径、最低花费或最少时间等问题.
2) 对于不同的咨询要求,输入咨询的内容.
3) 用户界面的友好性:程序能提供菜单供用户选择.
项目意图
1) 图的存储表示及其基本操作实现.
2) 最短路径算法.
-
图书管理系统界面如图 4所示:
项目名称:图书信息管理系统.
项目要求:
1) 系统功能:图书采编、图书编目、图书查询及图书流通.
2) 程序能对输入数据的容错性进行检查,保证数据的合法性.
3) 用户界面的友好性:程序能提供菜单供用户选择.
项目意图:
1) 集合结构的表示及实现.
2) 查找、排序算法的实现.
3) 文件的存取操作.
-
媒体与手段是现代教育技术的重要组成部分.计算机专业就其专业性质来说,采用先进的教学手段和多样化的教学媒体,本身就有着得天独厚的条件.在具体教学过程中,不仅是简单运用电脑,更要开发好新颖、实用、趣味的教学软件和手段,使教学直观、形象,也会大大提高学生的学习兴趣[3].
现代化多媒体教学手段如微课、慕课(Mooc)在线学习在数据结构的教学过程中可以使教学效果更加直观,让抽象的内容变得容易理解,从而强化教学效果.比如在讲解具体算法的时候可以采用微课视频来演示算法的执行过程(如图的遍历、各种排序算法等),学生根据微课课件的动态演示可以时刻关注数据变化,清晰理解算法的执行过程,从而使教学过程变得更加生动形象.此外,学生可通过网络学习资源如慕课平台自学和自测,实现课前预习、课后复习和知识扩展,从而形成立体化的学习环境.
-
项目驱动教学是以特定的真实或模拟的应用项目为载体,在老师指导下,以小组团队的形式协作完成项目的开发与设计,以达到完成教学任务的一种教学方法[10].项目驱动教学适用于学习各类操作性和实践性强的理工科课程.数据结构作为计算机专业基础课,采用项目驱动的教学法,有利于培养学生工程项目的实践能力[11].
-
项目贯穿整个教学过程,项目选择的好坏将直接影响到项目教学的过程控制及教学效果.针对数据结构课程的特殊性,在项目选择上遵循以下原则:
1) 项目具有一定的代表性和实用性,项目来源于学生的生活实际,以便激发学生的积极性和主动性;
2) 计算机技术日新月异,项目应具有一定的新颖性,避免出现“学而无用”;
3) 项目的规模难易适中,项目太大太难会打击学生的积极性.
-
教学组织中提倡同学之间相互指导,加强学习交流.在本课程的学习中,将全班同学分成若干个学习小组,每组3~5人,将班里编程好、责任心强的同学分插到各组担任组长,引导大家分享学习成果,共同进步.在课程设计中,教师提供多个不同项目化的题目供学生选择,这样可以给予学生更广阔的思路去实现课程设计的任务,也杜绝了同学们的抄袭现象.如在集合结构(查找、排序)的学习中,同学们可以从图书管理系统和学生成绩管理系统中选一个来完成[12].
-
好的评价方法,可以调动学生学习的积极性,培养学生自主学习的能力,改善学生学习的风气,促进教学.为此,在课程教学中我们采用自我评价、小组评价、教师评价的三维质量评价体系来评估学生的课程学习.根据课程的性质,评价指标包括目的明确性、结构合理性、算法正确性、界面美观性、文档规范性.综合学生对知识水平的评估能力,评价过程中自评、小组评价、教师评价的分数比例设置为2:2:6,并采用A,B,C,D,E5级量化考核.
在进行某项目的开发过程中,将项目完成情况通过自评、小组评价及教师评价的方式结合起来,考核学生学习情况[3].项目完成时,每位同学需首先对自己所完成的任务在小组内进行总结和评价,并接受教师和学生的提问,教师做出点评.然后各小组对自己所承担的任务在课堂上进行交流,分析总结在项目完成过程中遇到的问题和解决方法.最后教师对典型的问题进行分析总结.让学生参与到学习成果质量评价过程,有利于激发学生的学习热情和创造性.
3.1. 改革传统教学模式,引入以项目为导向的案例式教学
3.1.1. 学生通讯录开发与设计
3.1.2. 赫夫曼编译码器开发案例
3.1.3. 交通咨询系统开发案例
3.1.4. 图书管理系统开发案例
3.2. 优化教学手段
3.3. 基于项目驱动的实验课程设置
3.3.1. 项目的设置
3.3.2. 项目的教学组织
3.3.3. 项目评价
-
本文针对当前计算机课程教学中存在的问题,以计算机专业核心课程“数据结构”为例,坚持“理论适度,注重应用,强化能力,适应需要”的教改思路,探索了以项目为导向的课程教学改革与实践方案,通过教学改革促使学生学以致用,从而有效地提高学生的创新能力和岗位工作能力.