基于项目导向的数据结构与算法课程教学研究与实践
2014-10-20刘晓静王晓英
刘晓静,王晓英
0 引言
数据结构与算法课程是计算机科学中一门综合性的专业基础课,是计算机科学课程体系中核心课程之首,作为学科的专业基础课,具有承上启下的重要作用。课程主要研究系统开发过程中有关设计的若干基本问题,不仅是一般程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统及其它系统程序和大型应用程序的重要基础[1,2]。
数据结构与算法课程的学习过程也是算法设计的技巧和能力的训练过程,以构造性思维训练为重点,培养学生的数据抽象能力、算法设计能力和软件开发能力。通过本课程的学习,使学生获得编写结构、正确易读、符合软件工程规范的理论、技巧和能力,使学生初步具备分析问题、解决问题的能力,养成良好的程序设计风格,为学生在此领域中继续学习和研究打下坚实基础。计算机应用人才如何发现应用问题、软件设计人才如何进行概念层与实现层的抽象、计算机系统人才如何进行综合设计,为了解决这些问题,在课堂教学与实践中采用项目导向的方法[3]。
1 问题的提出
数据结构与算法课程主要内容包括数据在计算机中的存储、组织,不同数据类型的基本操作实现,以及将现实世界转化为计算机世界中的抽象的数据描述等等。这门课程既包含较多的抽象的概念、算法和编程思想,又包含许多前驱课程的知识,再有对程序实践又有一定的要求。因此,该课程的教学难度很大。而学生在学习过程中经常感到困难,甚至产生厌学情绪。此外,学生对前导课程程序设计基础I、程序设计基础II学习不够扎实,尤其对结构体、指针这两种数据结构与算法课程中常用数据类型的认识和理解不够透彻,这就需要在数据结构与算法课程教学初期,通过项目实践来弥补。
项目导向的教学模式是指将项目这个载体运用于工作过程中,具体是指通过师生的共同作用,实施完成一个项目的教学活动。基于项目导向的数据结构与算法课程教学,可以培养和深化学生对计算机知识的理解,运用计算机工具解决实际问题的能力;能充分调动学生的学习热情和求知欲望,使学生根据自己内在的需要去探究和学习,充分发挥自身的积极性、主动性和创造性,从而培养出独立探索、勇于开拓进取的自主学习能力,以促进他们获得良好的学习效果。
基于项目导向的数据结构与算法课程教学,以培养服务于青海计算机和IT企业的复合型计算机专业人才为指导思想,以培养创新型人才为目标,以研究为导向的实践教学,可以在充分把握国内外专业教育的最新动态、吸纳融合本学科最新研究成果和实践经验的基础上,不断更新和丰富课程内容,以项目工作任务为驱动,将知识、方法和技能有机融合,建立以项目驱动、知识点串行、课程设计并行“教、学、做”一体化的教学模式,以工作过程为主线、让学生在问题解决过程中进行学习。
2 案例系统的设计与实现
基于项目为导向的数据结构与算法课程教学以培养动手能力强的专业技术人才为目标,分析当前高校计算机类专业群的工作岗位、人才的职业能力、工作任务和工作内容,确定典型工作任务,建立基于工作过程的课程体系。围绕该思路,主要研究内容包括建立3个项目驱动化教学所需要的开发项目,如图1所示:
图1 案例系统界面
2.1 学生成绩管理案例
2.1.1 任务内容
编写一个简易的学生成绩管理系统(假定有5个学生)。要求:
1.程序能实现以下功能:从键盘输入成绩、从文件读取成绩(5个学生的成绩)、输出成绩到屏幕、保存成绩到文件、计算并输出最高分明、计算并输出最低分;
2.程序能检查输入成绩的合法性(0~100);3.程序能提供菜单共用户选择。
2.1.2 涉及知识
1.全局变量局部变量的使用;
2.循环语句;
3.函数的定义和调用;
4.排序算法;
5.链表;
6.文件的打开、文件的关闭、文件格式输入函数、文件格式输出函数。
2.1.3 学生成绩管理案例界面
如图2所示:
图2 学生成绩管理案例界面
2.2 景区旅游管理案例
2.2.1 任务内容
建立一个景区旅游信息管理系统,实现的主要功能:
1.制定旅游景点导游线路策略;
2.制定景区道路铺设策略。
2.2.2 涉及知识
1.图的建立;
2.拓扑排序;
3.图的遍历;
4.求图中节点的最短路径;
5.求最小生成树。
2.2.3 景区旅游管理案例界面
如图3所示:
图3 景区旅游管理案例界面
2.3 景区旅游管理案例
2.3.1 任务内容
航空客运订票系统的功能包括:
1.管理员登陆后,能够修改个人信息和密码,添加客机,安排航班,搜索查看航班,删除航班/客机;
2.客户登录后,能够修改个人信息和密码,搜索查看航班,预定航班,退订航班。
(1)航线信息:航线编号,客机编号,起飞时间,历时,余票,候补客户名单,已定票客户名单;
(2)客户信息:用户昵称(唯一标识),登录密码,注册身份证,真实姓名,邮箱,性别,预定候补航线编号,已定航线编号(对于某一用户不限制其定多个航线)。
2.3.2 涉及知识
1.链表;
2.队列;
3.查找。
2.3.3 航空订票管理案例界面
如图4所示:
图4 航空订票管理案例界面
学生成绩管理案例、景区旅游管理案例以及航空订票管理案例 3个案例基本将数据结构与算法课程的主要内容涵盖进来,其中包括单链表、队列、最小生成树、查找与排序、图的建立、图的遍历以及最短路径等知识点。
3 项目导向在教学研究与实践中的应用
当今世界已进入信息化、网络化时代。对于西部地区特别是青海作为经济欠发达地区来说,实现青海省对信息化人才培养提出的“以培养应用型人才为目标”,已成为一个重要的研究课题。以项目为导向,把“提高课堂教学效果,提高教学质量,加强学生的实践动手能力”作为突破口,将课堂教学与实践教学融为一体,让学生在做中学,目的是充分调动学生的学习热情和求知欲望,提高和增强学生的实践能力、社会适应能力以及创新能力,从而适应新经济条件下对信息技术人才的需求[4]。
3.1 项目导向在理论教学中的应用
在理论课的讲解过程中,主讲教师以学生成绩管理案例、景区旅游管理案例以及航空订票管理案例的工作步骤为主线,以项目工作任务为驱动,将数据结构与算法中的线性表、栈、队列、数组、树、图以及查找与排序等知识点和一些方法、技能有机融合,在问题解决过程中进行学习,从而真正做到让学生通过该课程建立数据结构和数据处理的概念,掌握数据逻辑结构分析、存储和算法编写的基本流程、步骤、内容及操作方法,具备完成相关工作的能力。
这种以项目为导向的教学方法既突出了知识的应用性,又让学生对项目开发工作的整体框架有了更清晰的了解,可以对不同程度的学生,特别是青海少数民族学生,进行个性化培养,以激发他们的学习热情,培养和锻炼他们的创新精神和实践能力,使他们都能在不同程度上得到提高和发展。这种教学方法能将书本上的知识变“活”,可以使学生更好地理解课堂教学内容,拓展知识面,延伸和扩展课堂教学,提高学生的抽象能力、思维能力、算法和数据结构的设计与分析能力,从而使学生学会如何把书上学到的知识用于解决实际问题,以培养软件工作所需要的动手能力。
3.2 项目导向在实践教学中的应用
在实验课中提倡同学之间相互指导,加强学习交流,引导大家分享学习成果,从而共同进步。在本课程的学习中,将全班同学分成若干个学习小组,每组3-4人,将班里编程好的同学分插到各组。在课程设计中,教师提供多个不同项目化的题目供学生选择,这样可以给予学生更广阔的思路去实现课程设计的任务从而达到巩固所学的数据结构。同时。题目多样化的方式也杜绝了同学们的抄袭现象。同学们以学习小组作为一个项目组,按照要求进行构思共同商讨设计思路,然后进行算法设计,接着由项目组长进行分工各自负责不同部分,大家分头去实现算法,最后项目组将大家的实现部分汇总在一起进行整个项目的运作并撰写课程设计报告。在整个课程设计过程中同学们在完成自己负责模块的同时,也需要不断地参与讨论和设计其他同学的模块中,通过这种方式可以让同学们在较短的时间内对本课程的知识进行较全面的复习和巩固。
在课程设计的验收时,教师安排开展一堂集研究、研讨、趣味于一体的数据结构与算法课程设计答辩会,并邀请系里教师作为嘉宾出席,整个活动由同学们进行策划、设计,并有班里同学推荐主持人。课程设计中,同学经过查阅资料->构思整体方案->算法设计->编码实现->调试运行->总结,整个过程中不断地讨论、不断地解决问题,每一个环节都可以锻炼学生的沟通能力、解决问题能力以及团队协作精神,让大家都受益匪浅。
通过多种实践环节,使学生更好地理解课堂教学内容,拓展知识面,延伸和扩展了课堂教学。全面地培养了学生的素质,提高了学生的抽象能力、思维能力、算法和数据结构的设计与分析能力、科学报告的撰写和表达能力,同时在这个过程中也培养了学生独立分析实际问题的能力。此外,在作业批改中,采用作业相似度检测工具,杜绝了学生对编程作业的抄袭行为,从而培养了学生程序设计的实践能力[5,6]。
4 结束语
基于项目导向的数据结构与算法课程教学,目标是建立若干个项目驱动化教学所需要的开发项目,以实现以项目为导向、以需求学理论、以实践为主导的数据结构与算法教学模式,从而帮助任课老师提高教学效果。在本研究中主要案例项目包括建立3个项目驱动化教学所需要的开发项目,学生成绩管理案例、景区旅游管理案例以及航空订票管理案例,将数据结构与算法课程的主要内容涵盖进来。在教学过程中采用动画、视频、演示等多种形式的多媒体教学手段,充分调动学生的眼、手、耳,以实现以项目为导向、以实践为主导的数据结构与算法教学模式。
基于项目为导向的数据结构与算法课程教学方法以学生为中心,强调小组合作学习和自主学习,注重培养专业技术应用能力、团队协作交流能力、系统工程分析能力和自我提升能力。该教学方法可以让我们的学生深入理解数据结构与算法相关理论、扎实掌握面向对象开发的技能,全面培养学生在学科技术和个人与专业素质、人际等多个方面的能力,从而在本科层次培养出具备终身学习能力的高素质计算机应用和开发人才,并且最终能让我们的每个学生带着自己的作品走上工作岗位。
[1]刘晓静,王晓英,薛媛媛等.让趣味教学进驻数据结构与算法课堂[J].青海大学学报,2011,29(5):95-97.
[2]沈华.数据结构、算法和程序之间关系的探讨[J].计算机教育,2013,4:58-61.
[3]熊岳山,钱程东,徐凯.数据结构课程教学中的数据抽象能力培养体会[J].计算机工程与科学.2014,36(4):27-30.
[4]李和平,龚波林,刘万毅.深化实验教学改革,强化技能型人才培养[J].实验技术与管理,2013,30(2):159-161.
[5]刘晓静,黄维通,王晓英.西部地区 CDIO 理念下的数据结构与算法课程建设[J].计算机教育,2013,17:107-111.
[6]王晓英,靳力,王晓青等.基于序列匹配的作业相似度检测系统[J].计算机工程,2012,38(24):53-61.