数据结构课程设计总结范例6篇

前言:中文期刊网精心挑选了数据结构课程设计总结范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

数据结构课程设计总结

数据结构课程设计总结范文1

关键词: 《数据结构》课程 教学效果 教学改革

1.课程介绍

《数据结构》是计算机专业的一门重要的专业基础必修课程,是计算机专业后续课程的基础,主要用于处理非数值计算问题。学习《数据结构》就是要让学生掌握数据在计算机中的表示、组织和相应结构上的算法设计,以便学生在软件的开发过程中能选择适当的逻辑结构、存储结构,高效设计算法,并初步掌握算法的时间和空间分析技术。

《数据结构》课程主要介绍:线性表、栈、队列、数组、串、树和二叉树、图等基本数据结构及其应用;排序和查找的原理与方法。通过本课程的学习,学生能较熟练地掌握数据结构的基本概念、特性,存储结构及其相关算法;熟悉它们在计算机科学中最基本的应用;培养和训练运用高级程序设计语言编写结构清晰、可读性好的算法及初步评价算法的能力;为《编译原理》、《操作系统》、《数据库系统原理》等后续课程的学习,以及计算机软件的研制和开发打下一定的理论及实践基础。

2.教学效果不佳的成因分析

《数据结构》课程的基础性,以及该课程在计算机专业全国考研统考专业课程中所占的比重,使得大多数学生都能较认真地对待本课程。但在实际的教学过程中,我发现教学效果一直不尽如人意,不仅表现在期末考试补考率居高不下,还表现在课程实验和课程设计两个实践环节中,学生难以将课堂教学内容转化为可实际运行的程序,以及解决实际问题的能力较差。学生普遍反映的问题是:课堂上听老师讲解觉得很好理解,但等到要学生自己选择数据结构,并设计算法来解决实际问题的时候就感觉力不从心了。部分学生觉得数据结构理论性太强,过于抽象,在实际的应用中很难抽象出各种数据类型。另外一个常见的现象就是只知道本课程很重要,但不知道重要在什么地方,与实际生活相脱节,不能用来解决实际问题。教学效果不佳,我认为大致有如下原因。

2.1先修课程基础不扎实

《数据结构》的直接先修课程主要是高级程序设计语言(我校为C语言),但是同时也要求学生具备一定的数学知识。对大多数学生而言,数学课程和高级程序设计语言的学习也是有一定难度的,所以部分学生无法理解课堂上讲的例题和思路,难以进行算法分析、比较算法性能和算法的编程实现。

2.2教学方式单一

现在很多高校在《数据结构》教学过程中都已经采用多媒体的形式进行教学,我院就是这样。我认为,多媒体教学是把双刃剑,即使用不当不但不会带来任何益处,反而会带来弊端。曾有学生向我反映,通过PPT,传授的信息量太多,同学们理解困难,跟不上节奏,严重影响了教学效果。

2.3没抓好课程实验环节

课程实验环节是紧密配合理论教学,通过实验,帮助和加深学生对相应数据结构的物理结构和逻辑结构和编程实现等各个环节的整体理解。但是学生面对程序错误的时候,总是显得手足无措,老师如若不能采取相应的措施,抓好课程实验环节,则会直接影响教学效果。

2.4理论教学与实际应用相脱节

数据结构课程是建立在抽象数据类型的基础上,用于解决非数值计算问题的一门学科,内容相对比较抽象、琐碎、庞杂,并且涉及很多概念和技术。因此,如果单纯地按照课本照本宣科,就不能和实际应用相结合,学生就会很难接受。而即使有相关的实验,但是由于基本上都是一些验证性实验,做完结束,实际上也并没有体会到知识的实质,更别说做到融会贯通了。

3.教学改革探讨

3.1做好课程衔接

数据结构课程的直接先修课程虽然只有高级程序设计语言一门(C语言),但实际上与高等数学和离散数学中的相关知识点也联系甚密,做好课程衔接是数据结构教学改革中必须探讨的问题。例如,算法分析的研究必须以一定的数学理论为基础;非线性结构的分析必须用到树和图的基本知识。另外,数据结构编程实现过程中,高级程序设计语言中的指针和结构体是频繁出现的知识点。因此,针对课程衔接过程中的重要知识点,一定要采取适当的办法加以回顾,我院在实际教学中就已经安排了一到两次的衔接课程。

3.2教学方式的合理运用

在多媒体辅助教学普及的今天,一定要根据数据结构课程的各知识点的特点,将多媒体辅助教学与传统教学有机结合。所以在数据结构的课程教学中利用多媒体技术时,一定要注意扬长避短,并根据该课程概念多、内容抽象、逻辑性强等特点,精心设计、制作多媒体课件,进行一些必要的动态演示,并适时地运用传统教学模式,组织必要的课堂讨论、课堂提问等形式多样的课堂交互环节。

3.3课程实验设计与安排

课程实验是伴随着《数据结构》课程的课堂教学而进行的实践教学环节。与课程设计实践教学环节不同的是,课程实验的时间安排上是松散的;根据实验教学大纲的要求,依据不同的章节内容安排不同的实验项目。课程实验的目的主要在于掌握各种数据结构的物理实现方法和掌握基本算法的设计实现方法。通过实验,强化培养“结构―算法―编程”三者密切相关的意识。所以在课程实验的设计上,一般较偏重于如何编写功能单一的“小”算法的问题;而在实验安排上,一定要充分调动学生的积极性,并严格要求学生做好实验前的准备工作:主要是实验程序的准备和相关知识点的温习。我在实际教学过程中,一般在安排实验的前一次课堂教学中,会安排足够的时间,阐明实验项目要求,并演示实验效果,以便学生根据要求和效果做好实验前的准备工作。

3.4通过课程设计锻炼学生理论与实践相结合的能力

课程设计是《数据结构》课程课堂教学和课程实验的延续,是重要的一环。我院将其列为一门单独的考查课,主要是锻炼学生根据实际问题的要求,正确选择合理的逻辑结构,并采用适当的物理结构,解决实际问题的能力;更深层次的目标则是希望学生能够针对实际问题选择、扩展甚至设计全新的数据结构,然后设计相应的存储结构并加以实现,从而最终完成问题的求解。由此可以看出,课程设计环节是一个融会贯通的过程,是不能通过课程实验完成的,也不可能在课堂教学中就建立完整的意识。所以在具体的课程设计实践教学环节中,一定要让学生充分认识课程设计的重要性;通过给定学生不同的求解问题,让学生培养应用数据结构基本知识来分析问题、解决问题的全局意识;训练学生从系统的、规范的观点来进行计算机问题的分析、设计、编码测试等。总之,课程设计要有利于锻炼学生理论与实践相结合的能力。

4.结语

我针对《数据结构》课程的特点,分析了教学效果不佳的成因;并结合实践,总结了从做好课程衔接、教学方式的合理运用、课程实验设计与安排、通过课程设计锻炼学生理论与实践相结合的能力四个方面,尝试对《数据结构》课程进行教学改革。

参考文献:

[1]严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2008.

[2]叶双,吴清江等.提高“数据结构”课程教学效果的方法初探[J].计算机教育,2009,(11).

[3]郝宗波.数据结构课程教学改革探讨[J].计算机教育,2011,(2).

[4]朱小梅,杨先凤等.数据结构课程教学方法探析[J].探索研究,2011,(5).

[5]邱保志.多媒体技术在《数据结构》课程教学中的应用研究[J].廊坊师范学院学报(自然科学版),2010,(2).

数据结构课程设计总结范文2

摘要:“数据结构”课程是计算机学科的专业基础课,是一门实践性比较强的课程。课程中的实验环节显得尤为重要,该环节可以锻炼和提高学生对复杂程序的设计能力。笔者在多年的教学过程中摸索出实验环节的教学模式,与大家共同探讨。

关键词:数据结构;教学内容;组织形式;考核方式

中图分类号:G642

文献标识码:B

利用计算机来解决实际问题的步骤是:给出问题描述,将问题抽象成数学模型,根据数学模型写出求解问题的算法,再根据算法写出程序代码,最后上机调试并分析结果。在上述过程中,非数值的数学模型是数据结构研究的主体,它操作实现主要是通过数据结构的实验教学环节来完成的,在该教学环节中作为教学主体的学生,首先要具备抽象思维能力和语言基础。往往在环节实施过程中,语言基础是薄弱环节,以至于课时用完了,学生还是写不出满意的算法及代码。鉴于此,我们在教学内容、组织形式、考核方式等教学环节中进行了一些设计,与大家一起来探讨。

1教学内容

我们在教学内容上,围绕课内、课外两条主线进行改革,给学生较大的自主学习空间,有利于学生创新精神及实践能力培养。整个实验教学由浅入深,重在基础、提高能力、挖掘潜力、拓展思路。在课时内的教学主要以基础性实验为主,安排一个综合性实验;课时外的教学主要以设计性实验和综合性实验为主。

1.1学时内的教学内容

在我校数据结构课程共64学时,理论课48学时,实验课16学时。安排了5个实验项目,由于多数学生语言基础不算太好,特别是指针的运用和结构体的定义是薄弱环节,所以在做实验项目时,主要是从教材上的算法出发,使得学生有章可循:

项目1:顺序表的操作

主要训练学生对顺序存储结构的理解,掌握顺序表的查找、插入和删除等基本操作;同时引导学生对于静态参数传递和动态参数传递的使用方法。

项目2:单链表的操作

主要是与顺序存储结构进行比较,完成线性表在链式存储结构上的查找、求长度、插入、删除等基本操作。

项目3:栈和队列的应用―停车场的管理

深入了解栈和队列的特征,以便在实际问题背景下灵活运用;利用两个栈和一个队列模拟停车场管理及相关操作。

项目4:二叉树的遍历

掌握二叉树的结构特征,以及二叉链表存储结构的特点;掌握二叉树三种(先序、中序和后序)遍历方法;熟悉并且掌握递归算法。

项目5:折半查找和快速排序

掌握折半查找和快速排序的方法,掌握要进行折半查找应该采取的存储结构形式。并进行对其进行时间复杂度的分析。

对于每个实验项目的实验目的和实验要求,提前2周放在教学平台上。在实验前1周,利用辅导课时间,以测试的形式,让学生写出算法代码,由于每个实验基本上可以在教材中找到源代码痕迹,所以难度不大。

在实验教学过程中,采用任务驱动式的教学模式,首先从总体思路上讲解10分钟左右,边辅导边发现问题,每半个小时总结1次。由于学生已经在课前作好了准备,在实验室里他们赢得了更多的自主时间用来调试程序,分析结果。学生水平参差不齐,在上课过程中穿插实验验收考核,考核的形式是现场写出主要操作的代码,在规定的时间内进行调试、分析。验收完一个模块,学生再进行下一个任务。教师通过讲课、辅导、验收使得实验课堂充实起来,由于学生每个时间段都有活干,所以课堂气氛非常活跃,讨论热烈。

1.2学时外的教学内容

在学时外,以课程设计的形式,利用开放实验室时间,严格按照软件工程的思想进行训练。

在课程设计时,教师列出多个设计课题,每个课题都有相应的要求或说明。各课题的难易度是有差异的,每个课题后以标准分的形式标出了难易度。例如:

课题1:设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列(难易度90)。

课题2:用递归算法和非递归算法实现下面问题,并比较其算法优势。把一只老鼠放进一个无盖的大箱内, 箱内设置若干隔板,使老鼠走动的方向受到阻碍,看其如何找到一条通道,走出大箱(难易度80)。

“难易度90”表示设计中的各项全部达到要求时的最高得分大致为90。因此,参加课程设计的学生首先要了解设计的任务,仔细阅读各题的设计要求,然后根据自己的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为基本原则。课程设计的总体思路是:数据模型选取构造求解算法选择存储结构编写程序代码调试测试总结分析。

在做课程设计时,不再拘泥于语言环境的限制和存储结构的限制,主要锻炼学生的开放思维能力和综合知识的应用能力。同时,引导学生从结构化程序设计到面向对象程序设计的思考。例如学生正在学习C#,在做课题1时,除了传统的设计方法外,可以引导学生画出类图和顺序图,写出C#的代码。

设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。主要包括:需求分析、概要设计、详细设计、调试分析、用户使用说明、测试结果、参考文献等。课时外的训练主要是为毕业设计打下基础,同时也培养了学生的团队协作精神。

2组织形式

2.1学生的组织

对于学生进行分组,每组中按照好、中、差的学生进行搭配。由于学生水平参差不齐,早做完的学生,进行考核验收。验收合格,同时给出相关思考题,可以再对于思考题进行进一步的思考,锻炼创新精神。同时,让已完成任务的学生辅导未完成任务的学生,这样培养了学生的团队协作精神,课堂气氛非常活跃,激发了学生学习的主动性。对于教师的工作也减轻了一些,教师主要是总体部署,分步考核,可以有充足的时间进行验收,比较清楚地掌握总体情况,以便讲评。这样组织学生,可以解决“优等生吃不饱,差等生吃不了”的局面,实现了“因才施教”。

2.2内容的组织

对于每一个实验项目的实验目的、相关要求等,以实验指导书的形式与学生见面,一本好的实验指导书能给学生的上机实验带来事半功倍的效果。

首先,让学生明确实验目的和要求。每个实验项目都给出了实验目的,并且提出了具体要求。有了实验目的,学生才有方向性;有了具体要求,学生实验时才有章可循。对于要求,要按时间分块执行。比如单链表的操作为2学时,第一个学时完成建立、查找、部分主函数工作;第二学时在第一学时基础上完成插入、删除操作,完善主函数。每一个学时在最后进行验收,若有问题通过小组完成。

其次,让学生掌握实验步骤。每一个实验项目按照软件工程的思想去组织,先需求分析,抽象出数据结构模型,再明确数据类型,详细设计,最后给出类C语言的算法描述。要求学生要严格遵循实验步骤来思考问题,这样,可以培养学生良好的工作作风和解决问题的方法,并且为后续课程做准备。

3考核方式

市场经济体制下的学生不如计划经济体制下的学生好教育,特别目前高校扩招,入学的学生素质参差不齐,基础相对薄弱,自学能力不强,不少学生在学习上存在畏难心理。而对于高等教育也不能降低要求,这样就要求在教学模式上进行革新,我校对教和学提出两个转变,“变学生管理为学习管理,变管理学生为服务学生”。对于课程教学,不能再采取应试教育下的考核形式。鉴于此,在数据结构的教学过程中,特别是实验教学,探索出了新的考核形式。

分数对学生来说是非常重要的,以此作为课程管理的抓手。对于教学计划内的实验项目成绩分成两个部分,一个是个人成绩,一个是小组成绩。个人成绩主要考核学生个人能力,小组成绩主要是考核学生的团队协作精神。对于个人成绩考核形式有两个方面,一个方面是学生的程序代码调试技能的测试,一个方面是书写实验报告,从实验报告上可以考查学生的逻辑组织能力。笔者把该考核模式称为“实验2+2”模式。每个实验项目结束前进行验收考核,经常进行阶段性考核,主要是激发学生的学习兴趣,保证了课堂教学纪律,基本没有缺勤的学生,让学生找不出来不学习的理由,因为每处都与成绩挂钩,都在拼命的去“挣分”。

对于课程设计部分,实验室开放时间结束时,由学生提交课程设计源代码和设计总结报告。源代码提交时,要生成可执行文件,对文件进行压缩,压缩文件名为“学号+姓名”形式,发送到指定邮箱地址。课程设计成绩根据学生设计任务完成情况、设计报告、设计成果的质量以及答辩情况综合评定。完成情况主要包括:功能实现情况和程序设计情况;设计报告包括课程设计报告格式,课程设计思路及设计过程,以及对设计的自我评价,收获和体会等;答辩要求思路清晰,模块关系清楚,回答问题敏捷。

对于学生的学业成绩采用结构化成绩,把100分不再作为一个整体看待,把它融进教学的全过程中去。学生的学业成绩由平时成绩、副卷成绩和主卷成绩构成,平时成绩占20%,副卷成绩占20%,主卷成绩占60%。在平时成绩中课程设计10分,作业和平时课堂表现5分,小考5分;副卷成绩中个人成绩15分(其中程序调试10分,实验报告5分),小组成绩5分。

4结论

通过实施验证,效果是良好的。实验的创新也带动了整个课程的进步,特别是上课出勤率,基本上是全勤。课堂气氛活跃,问题讨论热烈,学生的学习主动性大大提高了,网络教学平台登录次数明显增多。在问题答疑和考核验收方面,虽然增加了教师的教学工作量,但是提高了教师的工作热情。真正实现了“教”和“学”的良好互动,提高了教学质量。

参考文献:

[1] 周苏. “数据结构与算法”的教学改革和实验创新[J].计算机教育,2007,(15).

数据结构课程设计总结范文3

关键词:建构主义;重点课程建设;弹性内容体系;网络化协作学习;基于兴趣的学习

近年来,随着军队信息化建设步伐的加快,各军校都致力于信息类专业的建设[1]。作为信息类专业基础课程和专业课程的结合点,“数据结构”的重要性不言而喻,我院也于2009年确定了“数据结构”重点课程建设,教学对象主要是生长军官学历教育指挥类学员。以建构主义教学理念[2]为指导,将“教员引导下的学员自主学习”教学思想贯彻于课程建设的全过程,把握合理的课程教学体系建设,是本重点课程建设的主要特色。下面,我们将就体现该特色的具体实践过程及其所包含的教学内容体系建设、教学方法改革以及教学团队建设等组成环节进行阐述。

1教学内容体系建设

在课程教学体系中,教学内容是基础,不同的教学内容决定着不同的教学形式与方法,对于学员的知识能力建构的效率和效果也有着不同的影响。目前,各高校普遍压缩了专业基础课教学课时,因此,为了让学员在有限的学时内进行有效的学习,我们必须首先考虑课程教学内容体系建设问题。

一般讲,“数据结构”课程包括线性结构、树型结构、图状结构、查找与排序等内容,并以抽象数据类型、算法度量与评价贯穿其中[3]。各类院校根据其人才培养方案及学员特点,在课程内容组织上也有明显区别:有突出数据逻辑结构的,有侧重算法实现及度量的;有用C语言描述的,有用C++或Java描述的。结合我院信息类专业课程体系设置以及学员特点,根据ACM/IEEE CC2005[4]和教育部CCC2006[5]学科规范,我们在课程内容体系建设方面主要实施了以下几点措施。

1.1采用弹性课程内容体系

由于“数据结构”课程课时有限,本院数据结构课程仅为50学时,课程内容设置不可能面面俱到,必须结合建构主义思想及学员的具体特点确定教学内容。在此次课程建设中,我们在课堂讲授和实践教学环节中均采用了弹性内容体系,在课程讲授内容设置上,我们主要采用了“基本模块”+“扩充模块”的体系,其中“基本模块”包括算法度量基础、线性结构、字符串与模式匹配、树、图、排序、检索等7个模块共16个二级知识点,要求教员必须全部讲解完成;“扩充模块”则包括广义表、AVL树、倒排序及一些前沿应用譬如XML的DOM树、OWL的分类树等,由教员根据学员学习情况灵活掌握实施。

在实践教学环节,我们采用分层次的实验内容体系,自主编写实验教程,设立验证性实验、提高性实验、课程设计等三层次实验要求。其中最基础的验证性实验指课本知识点的具体实现,譬如,线性表存储结构以及其插入、删除、替换、检索等算法的实现等,侧重加深学员对基本数据结构的理解以及基本编程能力的培养;提高性实验则从实际问题解决出发,综合2至3个数据结构的应用或对相关数据结构的算法扩展等,譬如银行的多窗口排队服务,多叉路口车辆调度等问题,需要将现实世界抽象成数据模型并应用相关数据结构的知识解决,有一定建模与实现难度;实验内容体系的顶层是课程设计,以一定规模的实际问题解决为目标,以具体任务为驱动,覆盖数据结构的多种模型,锻炼学员抽象建模和解决问题的能力。根据学时的要求及数据结构教学目标的把握,共计设计了20个实验,其中验证性实验12个,提高性实验7个,课程设计性实验1个,要求学员在数据结构实践过程中至少完成15个实验,包括12个验证实验,任意4个提高性实验以及参加课程设计。

1.2采用C++结合STL(Standard Template Library)框架的描述方法

根据CCC2006的建议,选择面向对象语言C++作为数据结构描述语言,从数据结构的逻辑描述到物理存储及算法实现过程均采用面向对象的分析与设计思路;同时考虑到主流编程语言C++、JAVA及C#等都不同程度地应用了STL框架并提供了常用的数据结构类,譬如Vector、List、Set、Stack、Queue等,在数据结构课程内容中增加了对于主流语言中常用数据结构模板类的分析与编程,以增强学员对数据结构应用的理解。例如,对于STL中的Vector类,其实现功能为大小可动态增长的数组。教学中不仅仅要求学员能够应用该类型,同时要求能够分析理解该类型,譬如要求学员找出其动态增长性实现的代码段,并对其插入、删除算法进行归纳总结等。通过分析STL框架相关类的实现,扩展讲解面向对象思想与概念在实现该类过程中的应用,以提高学员面向对象分析与设计能力。

1.3规范化的教学文档建设

教学是否符合先进的教学理念,是否采用了合理的教学方法,我们从教学文档中就可以看出来,教学文档的形式十分重要,而更重要是教学文档的内容。在本次课程建设中,我们采用了规范化的模板,对课程标准、课程设计、教学计划、教学大纲、教案等进行了统一的设计与规范。譬如,在教案设计中,哪些内容易于CAI展现,哪些内容适合传统板书,我们都进行了仔细研究。譬如概念定义、背景知识、计算结论等,可以拟制要点并进行文本展示;公式定理推导过程如二叉树的性质推导,必须进行板书;原理与过程展示如递归过程分析、树的遍历、排序过程等,推荐使用动画。同时,我们要求教员授课时必须将教材、课件、教案、教学实施表(包括课程标准、大纲、计划)等文档备齐并通过教学组审核。课建组认为:严格规范的教学文档看似传统的要求,实则是课程教学是否成功的前提条件。譬如,课程标准体现了课程的知识体系,即知识建构的基础;教学计划、课程设计与教案则体现了知识的传递体系,即合理地引导学员完成知识的掌握与新知识的建构。通过教学文档建设,提高了课程教学的规范化。

2教学方法改革

在本次“数据结构”重点课程建设中,教学方法改革是研究重点。传统“教员教,学员学”的方法已不能适应“以学员为中心”的学习需要;而照本宣科式的“PPT课件播放朗读”已严重束缚了学员学习过程中的主动性与创造性,与素质教育目标背道而驰。对此,我们在本次课程建设中以建构主义理念为指导,结合“信息化教学”的特点,提出了“网络化协作学习方法”、“基于兴趣的学习模式”两种教学方法并进行了研究尝试。

2.1网络化协作学习方法

“网络化协作学习”是一种以WEB网站和信息资源为依托的新型学习方式[6],在信息资源平台面前,教员和学员、学员和学员之间更加平等,它提高了学员的学习自主性,有利于以学员为中心的学习。在“数据结构”重点课程建设中,我们通过引入“网络化协作学习”,引导学员在课后进行有效的自主学习,从而达到能力培养的要求。在“网络化协同学习”教学方法实施过程中,我们始终把握两个要点:网络课堂的开设与网络化协同学习的实践。

2.1.1信息资源建设与网络课堂开设

开设网络课堂主要依赖网络教学平台和课程信息资源。此次“数据结构”网络课堂建设采用了总部统一配发的网络课程教学平台,该软件平台不仅提供了章节知识点的构建、关联、、检索,而且可以通过公共信息、小组信息、点对点的信息支持交互,该平台能够较好满足教员与学员之间、学员与学员之间的协同学习。基于该网络教学平台,以“数据结构”课程的内容体系为依据,课题组将该课程的章、节、知识点进行了统一的组织,不仅设定了章、节、知识点的隶属关系,还以数据的逻辑结构为线索,将相关知识点进行了关联,形成了“数据结构”课程的知识网,这样做有利学员整体把握该课程;同时,为每一章、节都设置了教学目的、学习方法、学习进度、习题参考、实验练习等栏目,这有利于学员进行自主学习。

2.1.2网络化协同学习方法实践

信息资源的建设是基础,而基于信息资源的“网络化协作学习”实践则是该教学方法改革的重点。 “网络化协作学习”方法实质上是一种建构主义理念指导下的信息化教学方法,它即不同于远程教育模式,也有异于绝大多数的自学网站,“网络化协同学习”强调在教员引导下的学员自主学习和协作学习。在该方法学习中,教员是“导演”,是“总指挥”,教员需要完成学习场景组织、学习进度管理、学习效果评价等活动;学员则可扮演“演员”与“分队指挥”双重角色。作为“演员”,学员需要提出学习计划、实施自主学习;作为“分队指挥”,学员需要组织学习小组、分解学习任务、合成工作成果。

例如,针对模拟实现XML解析器这样的实际应用问题,教员的活动应包括:1)提出应用问题:模拟实现XML文件的DOM存储机制(要求模拟程序能读入、存储XML文件并将XML文件中节点关系按树型显示);2)提示讲解内容:XML文件的DOM存储原理;3)提示学习任务:树型结构的逻辑表示与存储方法、树型结构的遍历、树型结构的显示;4)分配任务给各学习小组,明确学习进度要求;5)验收并讲评学员实验报告等。学员的活动应包括:1)学习任务计划;2)树型结构相关知识学习与交流;3)XML解析器设计;4)XML解析器实现;5)撰写并提交实验报告和相关代码。以上学习活动,主要通过网络课堂所提供的信息、信息浏览、BBS、文件传送进行支持,并通过教员策划组织、学员协作实施的方式完成,是一种有效的“网络协作学习”方法。

2.2基于兴趣的学习模式

“基于兴趣的学习模式”以教育心理学为理论基础,结合“数据结构”课程内容特点,从课程引入、课程展开以及课堂气氛营造等方面进行以提高学员学习兴趣为目标的相关方法研究。该模式的详细论述见文献[7],此处作一简介。

在课程引入阶段,我们将“数据结构”与学员所学专业领域问题相结合,让学员认识到学习“数据结构”课程的现实意义,引发学员的学习兴趣。在课程展开阶段,我们采用“循序渐近式教学”与“任务驱动式学习”两种方法增强学员学习兴趣。“循序渐近式教学”主要指重视先导课与当前课程的衔接,让学员“能够学”;而“任务驱动式学习”则通过应用情景创设提高学员学习知识、解决问题的兴趣,让学员“有兴趣学”。“基于兴趣的学习模式”的第三个主要措施即课堂气氛营造,通过多种方法譬如小组竞赛、知识竞答、结对互助活跃课堂学习气氛,使学员“乐于学”。

3教学团队建设

加强教学团队建设是重点课程建设一项重要内容。教学队伍建设的质量,直接关系到课程教学的质量和人才培养的水平。因此,在课程建设初期,我们根据教研室和课建设小组的具体情况制定了“引进

来,走出去”的教学团队建设策略和具体的教员培养计划,在两年内引进教员2~3名,送学培养2~3名。目前,我们已引进3名具有硕士学位的教员,其中1名教员加入课程建设小组;选送2名教员攻读博士,1名教员攻读硕士学位,其中,1名脱产2名在职;我们还通过短期培训的方式选送教员学习相关专业知识,拓宽视野;通过参加学术会议的方式选派教员参与交流,学习兄弟院校的先进经验。上述措施使教员整体业务水平有了明显提高,教员队伍培养计划圆满完成。此外,通过课程建设活动,我们培养了一批年轻教员,其中有些教员已成为教学骨干。在两年的课程建设中,我们大胆启用年轻教师,每年都有意识地安排部分年轻教员承担“数据结构”的课程教学任务,积极推荐和支持他们参加院举办的各类教学竞赛活动,并指派经验丰富的老教员进行跟踪指导。在这些年轻教员中,先后有5人在课件制作、教学研究以及优质授课比赛中获奖,并取得了一定成绩。

4结语

此次“数据结构”重点课程建设以建构主义教学理念为指导,在教学内容、教学方法、考核方式及教学团队等方面进行了改革与实践,特别是一些改革后的、具有通用性的内容和方法,如“数据结构”课程弹性内容体系、基于兴趣的“数据结构”学习模式以及网络化协作学习方法在本次课程建设得到应用,它为下一阶段的软件基础类课程群的建设打下了基础。

参考文献:

[1] 候喜贵. 军队信息化建设研究[M]. 北京:出版社,2002:17-19.

[2] 张建伟,陈琦. 从认知主义到建构主义[J]. 北京师范大学学报:社会科学版,1996(4):75-82.

[3] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,2001:2-3.

[4] ACM/AIS/puting Curricula 2005[EB/OL].(2007-05-08)[2010-12-20]./education/

curric_vols/CC2005-March06Final.pdf.

[5] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行) [M]. 北京:高等教育出版社,2006:38-40.

[6] 陈文汉,张建奇. 高等教育网络化教学研究综述[J]. 比较教学研究,2003(9):46-52.

[7] 张立,王伟嘉,石岩,等. 基于学习兴趣开展数据结构教学[J]. 计算机教育,2010(13):95-97.

Key Course Construction for Data Structure Base on Innovative Teaching Ideology

ZHANG Li,SHI Yan,ZHANG Hongping,WANG Weijia,YU Congbin

(Department of Logistical Information Engineering, Logistical Engineering University, Chongqing 401311, China)

数据结构课程设计总结范文4

关键词: CDIO;数据结构;课程教学

中图分类号:G642.0 文献标识码:A 文章编号:1009-3044(2014)01-0078-02

数据结构是计算机学科的重要核心课程,在计算机课程体系中处于承上启下的地位,它不仅是程序设计的重要理论技术基础,也与计算机科学技术的其他领域如操作系统、编译原理等也有着密切的关系。由于课程内容比较抽象,算法理解比较困难,要在有限的课时内使学生更好地理解课程的内容,掌握课程的重点,提高解决实际问题的程序设计能力,就必须打破传统的数据结构教学模式,融入一些新的现代教育的理念与方法,CDIO教育模式为我们提供了一个重要途径。

1 CDIO工程教育模式

CDIO是由美国麻省理工学院、瑞典查尔姆斯技术学院、瑞典林克平大学共同倡导,集多国工程教育精英建立的一套工程教育理论和实施体系。CDIO代表Conceive(构思)、Design(设计)、Implement(实施)和Operate(运作),是“做中学”和“基于项目教育和学习”理念的集中体现。

2 《数据结构》教学的特点与现状

《数据结构》教学过程中主要存在以下几个方面的问题:

1)对于课堂教学,大多采用多媒体理论教学和上机实践相结合的方式,但是目前的数据结构教学仍然非常重视理论教学,即存在“重理论、轻实践”的现象,不利于学生实践能力的培养。

2)虽然现在授课一直在提倡“以教师为主导,学生为主体”,但是在实际的理论教学环节通常仍然是以教师为主,学生充当“听众”,始终按着教师讲解的思路去理解问题、记忆知识,即存在“教师讲、学生听”的现象,难以调动学生探讨问题的积极性。

3)实践教学环节中的实验大多是验证性实验,缺乏与实际相结合的设计实验和综合性实验,即存在“验证多、设计少”的现象,不利于学生创新能力的培养。

3 CDIO对数据结构课程教学模式的启示

CDIO以能力培养为主线,以任务驱动进行项目教学,考核实施过程监控,通过构思、设计、实现、运作的完整过程,实现课程的“做中学”和“基于项目教育和学习”。对于数据结构课程教学,CDIO理念给我们带来了很大的启示,根据每节课程内容的特点选用以下教学模式展开教学。

3.1 问题驱动式教学

问题驱动式教学是为了激发学生的学习兴趣,根据教学内容合理地设置问题引入教学内容的方法,采用“提出问题、分析问题、解决问题”的模式,组织学生进行思考、分析、讨论与交流,这样,学生能够积极参与到学习中,而不再是被动地接受。

例如,在学习“栈”这部分内容时,教师可以提出比较有趣的“Hanoi塔”问题、八皇后问题或者迷宫问题让学生思考,再逐步引出“栈”的相关知识,然后鼓励学生应用“栈”编写算法解决这些问题并上机编程实现。以八皇后问题为例,提出问题可以教师口述如下:八皇后问题是一个古老而著名的问题,该问题是十九世纪著名的数学家高斯1850年提出的:在8*8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种方法。也可以用形象的图示或演示软件为学生展示问题,如图1所示,左边是初始状态,右边是假设第1个皇后摆放在第1列,那么第2个皇后从第2列第1行开始试探,如果不互相攻击就将其摆放,第2个皇后摆放在第2列第3行的位置,接着试探第3个皇后摆放的位置,图示表示第3个皇后目前的位置与第1个皇后处于同一对角线,与第2个皇后处于同一行,都互相攻击,不满足条件……提出问题之后,让学员去思考分析,这样不仅激发学生的兴趣,也能培养他们分析解决实际问题的能力。

3.2上机实践教学改革

计算机课程学习过程中普遍存在这样的现象:教师讲授的内容学生反映基本都听懂了,但是上机实践时却觉得无所适从,不知道怎么把课堂上讲授的算法思想转换成可以执行的程序。上机实践是数据结构课程教学必不可少的一个重要组成部分,通过上机实践学生能够更好的理解数据中的经典算法思想的意义,掌握数据和数据之间的关系,深刻体会理论和实践的结合,运用所学知识去解决实际问题,所以对上机实践教学的改革势在必行。

首先,验证性实验应作为基本目标要求学生必须掌握,在此基础上,多展开设计性实验和综合性实验,使理论学习中需要解决的现实问题在一定程度上得到实现。其次,将上机实践纳入考试范围,占期末总成绩的30%,上机成绩由“验证性实验+设计性实验”组成,这样会使学生重视平时上机实践。

例如,在进行线性表的实践教学时,在掌握了线性表理论知识的前提下,每位学生都要将书中的算法予以验证性的实现,我们使用的是严蔚敏老师的《数据结构(C语言版)》,要求学生将顺序表和单链表的基本运算包括插入、删除等操作予以验证。这些基本的算法得到验证后,将其整合到现实中的问题作为综合性设计性实验,由学生自主完成,如:为某届学生建立一个通讯录管理系统,可以方便查询每一个学生的学号、姓名、年龄、专业、电话、电子邮箱等。其功能包括通讯录链表的建立、学生通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出等。

3.3 以项目为导向的课程设计

课程设计是对数据结构知识的梳理巩固和综合运用,好的课程设计能够使学生对理论知识举一反三、熟能生巧。传统的课程设计题目过于单一,学生应付式交作业的现象比比皆是且答案雷同。所以有必要采取多样化的题目,要求学生自由结合分组,每组3-4人,从给定题目中选取感兴趣并符合自身能力的设计题目,分别进行项目的Conceive(构思)、Design(设计)、Implement(实施)和Operate(运作),最后以项目小组的形式完成,上交项目报告。各不相同的任务迫使学生必须用学到的数据结构知识独立解决问题,小组中每个学生要发挥各自作用,积极思考,相互交流、沟通,在完成不同任务的同时,项目实施专业能力和团队协作能力得到很好的锻炼。在项目实施过程中,突出学生的主体地位,强调学生自学能力和动手能力的培养。

4 总结

综上所述,结合数据结构课程教学的特点和现状,将CDIO工程教育理念贯穿于教学中,并根据数据结构的教学内容和教学目标,在教学过程中“重学生、重理论、重实践、重项目”,培养学生的自学能力,提高学生的实践能力和团队协作能力。

参考文献:

[1] 严蔚敏,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2012.

[2] Edward F Crawley.Creating the CDIO Syllabus,a Universal Template for Engineering Education. 32nd ASSEE/IEEE Frontiers in Education Conference.November 6-9,2002,Boston,MA

数据结构课程设计总结范文5

关键词:数据结构;教学方法;实践教学

1 探讨数据结构教学方法和手段的必要性和重要性

数据结构是计算机学科的一门综合性的专业基础课,也是计算机学科的核心课程,在整个学科知识体系中占据非常重要的地位。通过该课程的学习,不仅为后续课程打好理论基础,而且进一步提高数据抽象能力和程序设计能力。数据结构课程内容多、概念多、方法多、高度抽象、逻辑性强、技巧性强、实践性强,这些特点决定了教与学的难度较大,但其教学水平和效果又将直接影响后续课程的学习以及学生程序设计实践能力的提高。同时高校教学改革,课程学时压缩,这更增加了教学的难度。

另外我们授课的对象全是女生,研究表明:女性的智力与男性在总体上基本相同。只是在智力结构上有些差异:在思维方面,女生长于形象思维而弱于抽象思维;在感知方面,女性要比男生敏感、知觉速度也比男生快,而反应速度则比男生慢。男女的智力各有所长,各有所短,这就要求教师了解男女智力结构的差异,有针对性地给予女生适当的教育、指导和帮助,促使她们取长补短,不仅要注意知识的传授,更要注意方法的指导和能力的培养。另外计算机系大约40%的学生是从我院文科专业调剂进来的,这就更需要教师有针对性地进行引导。

考虑到数据结构课程和女性思维的特点以及我院计算机系生源情况,为了保证和提高数据结构的教学水平和教学质量,我认为很有必要分析教学中存在的问题,并进一步探讨更适用于具体教学对象的教学方法和手段。

2 教与学的过程中存在的问题以及相应的解决措施

下面从教与学双方在课程教学过程中存在的问题出发,分析其原因并寻找解决这些问题的思路,以期提高教学水平、改善教学效果,达到该课程的教学目标。

常见问题有:

(1) 不是自己报考的第一志愿,首先心理上不喜欢,有畏惧感,觉得难学;

(2) 觉得算法理论太抽象,逻辑性太强,难理解,难掌握;

(3) 上课算法理论听得懂,上机实验实现算法时觉得无从下手,当编程解决实际问题就感觉更难了;

(4) 内容多,概念多,学习中难以把握整体内容,学完后不知道到底学了些什么;感觉在课堂上思路跟不上,难以消化;

(5) 不知道学习算法在实际中有什么用,逐渐失去了学习兴趣;

(6) 教材上的算法多,难以全部上机实现;

(7) 不重视上机实验,觉得能读懂算法和书面编写算法就可以了;等等。

中华女子学院重点教改立项 女性计算机应用型人才的实践教学研究(2006-2007)

对上述问题总结分析后,笔者觉得可以从以下几个方面来改善数据结构课程的教学方式和效果。

2.1 分析实际情况,有针对性地开展教学

(1) 教师要了解学生的前导课程“程序设计基础与C语言”的学习掌握情况。“程序设计基础与C语言”是数据结构的前导课程之一,学生对C语言程序设计的掌握程度直接关系到数据结构课程的课堂授课和上机实验的教学效果。“程序设计基础与C语言”是学生接触到的第一门编程语言,教与学的难度都很大,学生仅仅通过一学期的学习难以熟练掌握融会贯通并具有较高的编程能力。尤其,指针、结构体和函数等知识点是“程序设计基础与C语言”中的教学难点,学生普遍理解不深,难以在编程中灵活应用,但这些知识点在数据结构课程中频繁应用。对这些知识点的熟练掌握是在数据结构课程中理解理论算法和完成上机实验的重要保证。为此,我在教学中注意做到以下三点:

与“程序设计基础与C语言”的授课教师做好教学的沟通工作,做好课程之间的衔接,将数据结构课程中经常用到的知识点重点讲授并加强上机实践。

在讲数据结构算法之前复习剖析C语言中的指针、结构体和函数等知识点。具体形式可以是在课堂上以程序实例的形式对这些知识点进行复习,尤其指出学生难理解、容易混淆和犯错误的地方;布置涉及这些知识点的课外编程作业,通过作业批改发现学生存在的问题然后集体重点讲解;在教学中强调指针、结构体和函数等在数据结构课程中的重要性,让学生课外重点复习等等。

灵活使用教材[1]。基于C语言的数据结构教材中大部分使用类C语言描述算法,而学生在上学期刚学完C语言程序设计而且实际编程经验少,难以应用自如,因此,类C语言与C语言程序之间的转换成为不少学生听课和上机实践的一道障碍,甚至在学习开始就打击了不少学生的学习信心和积极性。在教学中我注意采取措施来缩短学生实际情况和教材之间的差距:比如,前几周的授课和上机实验中,可以给出算法的完整源程序并详细讲解,这样为学生实现类C语言算法描述和C语言源程序的转换提供范例,降低学生进入数据结构课程的难度,避免学生因此产生畏难情绪而失去兴趣和信心;对于基本操作比较多的数据结构类型,在实践教学中可以给出部分源代码,让学生编写主要的操作函数,然后直接嵌入源代码中进行调试,用来降低难度并提高上机实验的效率;提醒学生充分利用教材随带的光盘资料,如程序源码和算法演示软件等。

(2) 考虑到女性思维的特点,可以充分利用多媒体技术,采取直观形象的教学方式。数据结构课程抽象、逻辑性强,而女性思维长于形象思维而弱于抽象思维,为此我尽量采取直观形象的教学。例如利用多媒体课件动态演示在单链表中插入、删除结点的过程等,演示形象生动加深了学生对算法的理解;尽量对照现实生活中的例子来引入知识点,例如通过在食堂就餐时取、放餐盘的例子引入对栈逻辑特点的讲解,用取款排队的例子引入对队列逻辑特点的讲解,激发学生对“计算机程序如何实现”的好奇心,调动学生的学习积极性。

(3) 考虑到不同学生的不同情况,采取分层次教学方式。分层次教学方式的目标是让每个学生都能在学习过程中获得尽量大的成就感,最大程度地调动学生学习的积极性。

2.2 优化教学内容与方式

(1) 教师要分析清楚数据结构的知识体系结构,把课程的整体框架提供给学生。课程内容主要包括线性表、树、图三大类数据结构和查找、排序两大类算法,其中栈和队列是线性表的两个特例,线性表是树的特例,树是图的特例,查找和排序是实施在三大类数据结构上的操作,由线性到非线性,由简单到复杂,这样有机联系地组成数据结构的整体框架。

(2) 贯穿三点一线原则。讲授过程中贯穿一条主线即从线性到非线性由简单到复杂的三大类数据结构,而每类数据结构包括逻辑结构、存储结构和基本操作的实现。

(3) 把握重点。把握数据结构的整体框架,贯穿三点一线原则讲授内容,同时要把握好重点,有选择有层次地教学。例如,线性表是最常用且最简单的一种数据结构,栈和队列是操作受限的线性表,树和图往往要做线性化处理,因此要把线性表作为重中之重的内容进行透彻的剖析。对于线性表的两种存储结构顺序表和单链表,把单链表作为重点和难点来讲授和上机实验,把单链表中的插入、删除、查找等基本操作作为重点。再如,二叉树的遍历操作作为重点来讲授和上机实验,而哈夫曼算法作为可选的上机实验内容。查找和排序算法中选择折半查找、二叉排序树查找、哈希查找、直接插入排序、冒泡排序、快速排序作为教学和实验的重点内容。

2.3 理论联系实际,激发学习兴趣

兴趣是最好的老师,教学过程中要注意采取多种手段激发学生的学习兴趣。

首先,良好的开端是成功的一半,为了不让学生从一开始就产生畏难情绪,上好第一堂课非常关键。第一堂课不能直接进入概念、术语和算法的学习,可以先介绍与数据结构相关的现实生活中的例子来激发学生的好奇心和学习兴趣,例如图书馆的书目检索系统、人机对弈问题等等。另外可结合考研、就业以及后续课程的学习等介绍数据结构课程的地位和作用。接着引入学生所熟悉的农夫过河问题(农夫、狼、羊、白菜),先让学生思考并给出答案,然后介绍用计算机程序解决该问题的思路和步骤,从而让学生对于数据结构课程学什么以及怎么用等有个概括的印象。

其次,在接下来的教学过程中注意理论联系实际,通过生活实例来引入数据结构及算法,注意介绍算法的背景知识和能解决的问题等。例如,通过现实中的排队现象引入队列的概念并介绍队列可以解决的问题如打印机作业排队问题,另外,充分利用多媒体教案和课件的直观形象以及动态性也可以提高学生的学习兴趣。

2.4 加强实践教学改革[2]

数据结构是一门实践性很强的课程,不仅要学习理论知识,更要注重上机实践。通过上机实践来验证理论内容并加深对各种算法的透彻理解,同时在实践中不断尝试,不断地积累经验,逐步养成良好的程序编写风格,提高程序调试能力以及解决实际应用问题的能力。结合教学的实际情况,我认为可以从以下几个方面来加强和改进实践教学。

(1) 开始两周内可以给出适当的上机实验题目复习C程序语言中的指针、结构体和函数等知识点,并根据上机实验的情况对数据结构中常用及易出错的地方进行集体重点讲解,为后面算法的上机实验打好编程语言基础。另外,为了打消学生的畏难情绪,数据结构算法的前两次上机实验时教师可以先给出完整的源程序,让学生在主函数中添加语句来体验数据结构的基本操作的执行,再逐步过渡到自己编写完整的源程序。

转贴于

(2) 加强程序调试能力的教学和实验。通过一学期的编程语言学习,学生掌握了基本知识点,但是程序调试能力还有待于提高。程序调试能力不强是严重影响学生上机实验效果的,也很大程度上打击学生实验积极性和学习兴趣的一个因素。但调试程序实践性很强,而刚学完C语言程序设计的学生面对错误提示时往往不知道发生了什么错误及如何改正。针对这种情况可以采取以下措施来逐步培养和提高学生的程序调试能力:

整理历届学生在上机实验过程中易出现的错误,给出错误信息与错误原因的对应关系,让学生在上机的过程中对照查找自己程序中的错误。

提醒学生养成良好的习惯,每次数据结构上机实验调试程序时要记录英文错误提示信息和解决该错误的方法,不断积累程序调试经验,避免再犯同样的错误,并建议学生通过网络共享各自的调试经验。

要加强实验准备、过程和结果的教学管理。要求学生在上机实验前必须书面编好源程序并且进行了初步的语法和逻辑检查,上机实验课上集中精力去调试程序,才能保证充分利用上机实验课时间、教师辅导的机会和与同学交流的机会,最大程度上发挥实验课的作用。教师对实验准备、过程和结果的评价都要在实验成绩中体现出来。

(3) 培养良好的程序编写习惯[3]

数据结构课程的学习过程也是复杂程序设计的训练过程,程序除了能调试通过外,还要求学生编写的程序结构清楚和正确易读,符合软件工程的规范。良好的编程习惯需要在不断的实践中逐渐养成,而且很大程度上影响学生的上机实验效果。因此,教师可以在以下几个方面注意引导学生培养良好的编程风格:

良好的代码书写格式。采用良好的书写格式使代码可读性强,便于调试和交流,但一些学生觉得麻烦、没必要,这需要教师在教学和实践过程中强调和引导学生认识到书写格式的重要性,并逐步形成良好的代码格式书写习惯。

良好的注释习惯。注释是程序的一个重要组成部分,它可以使代码更容易理解。而很多学生认为没有必要写注释或者程序调试完后再象征性地补加注释,教师要强调注释的重要性,引导学生逐步养成良好的注释习惯。

标识符合理命名。教师要强调标识符命名规范的重要性,标识符命名要清晰、明了,有明确含义。

重视实验报告的书写。实验报告除了实验目的、实验内容、实验步骤和算法分析等常规内容外,需要重视实验中出现的问题、解决的办法、实验改进的想法这三项内容的书写,这样可以培养学生实验后总结积累经验的习惯,提高学生分析、改进算法的能力。

(4) 在实践教学中要注意进行分层次的个性化教学。从不同学生的实际专业水平、基础出发,来设计不同难度的实验题目,给出不同的实验条件和要求,尽量让所有学生通过自己的努力获得实验的成功并掌握基本知识,在解决问题的过程中体验学习的乐趣和成就感,从而最大程度地提高学生实验的积极性。例如,对堆栈可以设计基本操作实验(建栈、出栈、入栈、销毁栈等)和后缀表达式求值实验,学生可以根据自己的实际情况来选择完成。另外对于难度小的实验要求每个学生独立完成,而对实验难度稍大的允许以2到3人的小组形式完成或给出部分代码或提示。在实践教学中对不同水平的学生给予不同的辅导方式,例如,对水平偏低的学生需要在实验课中给予重点面对面的辅导,而对于水平较高的学生可以在网络教学系统中重点辅导。另外为了保证上机实验课的顺利进行,在条件允许的情况下应多安排1到2名辅导老师,或者选择大三、大四学生中学习成绩优秀、实践能力强的来承担一部分辅导任务,不仅弥补了辅导教师少的不足,而且促使这些学生更深入地进行学习。

(5) 充分利用网络辅助教学。通过使用清华大学的数据结构网络练习系统,学生可以课外上网编写算法并编译、提交,教师可以在网上查看学生的作业情况并随时回复、辅导学生,完全不受时空限制。通过教学ftp和博客等网络方式师生可以互动交流,资料共享等。网络可以拓展学生学习的空间、时间和方式,有助于提高教学效果。

(6) 改革考核方式,引导学生加强实践。数据结构是一门理论和实践性都很强的课程,理论指导实践,也只有通过实践才能加深对理论的理解和掌握。考核方式和内容引导学生的学习方向,因此要提高数据结构的教学质量,把好考核这一关也非常重要。数据结构的考核可以结合使用多种考核方式,考核成绩的组成可以包括平时成绩、期末笔试成绩、期末上机考试成绩以及课程设计成绩,其中平时成绩要综合考虑实验准备、过程和结果情况,以及上课回答或提出问题等情况,课程设计也可以考虑采取小组形式完成并结合答辩情况给出成绩。

(7) 施加适当的压力督促学生积极配合教学并体验学习,进而获得成就感,提高学习兴趣[4]。

教师的教学过程和学生的学习过程是两个既有联系又有区别的过程。从学生的学习过程来说,学生是受教育的主体,是学好的内因。教育者是客体,是学生学好的外因。内因是事物发展的根本原因,外因只有通过内因起作用。教育“以爱动其心,以严导其行”,启发、诱导、影响学生内在的积极性、主动性,但这种启发、诱导能不能发生作用归根到底还决定于学生内在矛盾因素。

因此,教师除了从自身教学过程的角度出发努力采取各种措施来提高学生学习的兴趣和热情外,还需要从学生学习过程的角度出发来分析解决问题。学习的兴趣和积极性的培养效果最终取决于学生这一内因,必须采取措施督促和保证学生最大程度地投入到学习中,在学习过程中真正体验到学习的乐趣,进而激发内因的变化。比如,在考核方式中加大平时上机实验和课程设计部分的成绩比重,并采取严格的考核方式(比如课程设计逐人答辩形式等) “以严导其行”。压力产生动力,学生不管兴趣是否浓厚都需要达到基本的要求,在完成任务的过程中学生可以实实在在地体验学习,才有可能逐步提高学习的兴趣和积极性。

另外针对我院计算机系生源的实际情况,也需要全体教职工努力做好部分学生的思想工作:提醒学生不要首先在心理上不停地暗示“不喜欢”和抵触专业学习;明确自己四年的任务“我选择,我喜欢,至少我要努力尝试喜欢”;鼓励学生勇敢面对自己的选择并尽自己最大的努力学好;从学生就业、考研和未来发展的角度帮学生分析利害关系,督促学生进一步端正学习态度等。

3 结论

数据结构课程在整个计算机学科的知识体系中具有非常重要的地位和作用,而数据结构的理论性、实践性、逻辑性都很强。教师只有在教学过程中结合学生的实际情况,优化教学内容和方式,采用直观形象、形式多样的教学方法和手段,充分重视实践教学的重要性,理论联系实际充分调动学生学习的积极性,使学生较好地掌握各种数据结构和算法并提高分析解决实际问题的能力,切实提高教学的质量,才能发挥数据结构在计算机学科知识体系中应有的作用。

参考文献

[1] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,1997.

[2] 顾翔. 数据结构实践教学探讨[J]. 信息技术,2005,(30):110-112.

数据结构课程设计总结范文6

关键词:数据结构;建构式教育理论;理论教学;实践教学

近年来,在产业界急需大量软件开发人员的情况下,普通本科院校计算机专业学生的就业率持续走低。网络、报纸等媒体对计算机本科教育现状多有批评,甚至出现了大学不如培训公司的极端观点,严重影响了学生对专业课程的学习兴趣、动力和信心。数据结构是计算机专业的核心基础课程,上承程序设计语言、离散数学,下启操作系统、编译原理等课程,其重要性不言而喻。一方面,数据结构学科具有难度大、抽象层次高、概念繁杂等特点,学生很难掌握,更不要说将抽象理论与就业实践需求相结合。另一方面,国内主流数据结构教材和相应的传统教学模式侧重于培养学生的计算机学科基础理论素养,而将如何通过组织数据结构教学活动积极推动就业的问题留给了任课教师[1]。这造成了学生学习数据结构的目标不明、信心和动力不足。笔者面向就业需要明确了数据结构的两大主要教学目标,并在实际教学过程中实践建构式教育理论,尝试解决学生对专业认识不清、学习兴趣不足、编程基础薄弱等问题。一些做法得到了学生的认可和配合,成功地激发了学生的学习主动性、在一定程度上培育了学生的创新精神。

1面向就业需求的数据结构教学目标

教育要服务于社会生产需求。数据结构教学也必须紧扣这一根本目标。本节从满足就业需要的角度阐明了数据结构教学的两个主要目标:

1)培养超越具体程序设计语言技巧的编程技术。

现阶段是一个传统的生产生活方式迅速向电子化、信息化转变的时期。人们需要开发和维护更多、规模更大的计算机系统来满足生产和生活的需要[2]。这就决定了具有熟练编程技术的程序员在很长时期内都将受到产业界的青睐。大学对学生编程技术的培养始于程序设计语言的教学,如C语言,Java语言等。但是现今编程语言繁多,各种新概念层出不穷,常常出现学生无所适从或者质疑某门语言课程已经过时无用的现象。甚至很多教师也在争论讲授何种编程语言。笔者看来掌握编程技术(而不仅仅是语言),回归编程的本质问题更加重要,无谓地追赶时髦不可取。作为编程语言课程的后续,数据结构教学的重要目标就是帮助学生理解编程的本质、锻炼编程技术以及学习提高编程技术的方法。

2)培养围绕复用的软件开发方式。

随着软件规模的日益增大,软件开发模式逐渐从“从无到有”的模式过渡到“从有到有”的模式,即复用现有的丰富的软件资产,开发新的应用系统。事实上,复用的思想已经被广泛的用于软件开发实践之中,从各种各样的程序库、软件开发包、软件构件、Web服务等各种可复用资产已经简化了软件开发的难度、提高了软件开发的效率也极大地改变了软件开发的模式。数据结构学科本身就是对软件复用思想的一种实践,它通过总结大量软件系统中反复出现的数据结构(如表、树、图、集合等),定义和实现处理这些数据结构的基本操作,最终达到能够在不同项目开发中反复应用的目的。这些基本数据结构和算法已经被实现为可复用的产品随着程序设计语言,如C++STL、C#collections,Javacollections等,并得到了广泛的使用。因此,数据结构教学的另一个重要目标就是引导学生习惯围绕复用的软件开发方式,能够使用和定制已有的数据结构和算法库。

其他传统的数据结构教学目标,如培养学生面向实际问题进行算法设计和分析的能力,培养学生计算机学科的基本理论素养和思维方式等也非常重要。但普通本科院校学生对理论内容的接受能力以及将理论和现实就业需求相联系的能力相对较弱且教学时间有限[3],笔者认为重点突破本节给出的两个更具体、更可达的教学目标,并在实现这种具体教学目标的过程中潜移默化地培育学生的计算思维和理论素质,将会取得更佳的效果。

2建构式数据结构教学

教学理论研究以及教学实践反馈均表明,学生主动学习的效果远较被动地接受老师灌输的效果好的多。因此,为实现上述教学目标,在建构式教育理论的指导下,笔者探索并采用了一系列建构式教学措施,激发学生的主动性和兴趣,取得了较好效果。

建构主义认为,学习并非学习者对教师所授知识的被动接受,而是学习者以自身已有知识和经验为基础的主动建构过程[4]。

2.1理论教学措施

课堂教学是数据结构教学活动的主要部分,充分利用课堂教学时间,激发学生学习数据结构的兴趣和信心,帮助学生建立学习数据结构的环节非常重要。我们采用了如下措施:

1)组织小型讨论。

好的开始是成功的一半,好的课堂教学须在上课之初就抓住学生的注意力,让学生带着轻松、愉快的心情听课。我的做法是在课堂的前5分钟,提出一个学生感兴趣的话题,组织若干个有3~5位同学参与的小型讨论。到一个学期结束时,每位同学都有至少一次的发言机会。讨论的主题可以灵活设置,如时事、技术、社会热点等。有时,课堂中间学生比较疲惫、注意力下降的时候,也可以穿插一点讨论,改善课堂环境。大多数学生非常喜欢这种讨论活动,积极参与其中,成为课堂的一部分,从被动上课转变为喜欢上课。

2)重建理论知识所针对的问题。

国内的经典数据结构教材侧重严谨的理论,较少讨论各种概念、算法出现的背景以及探讨的问题是否仍然具有现实价值。而回答这些问题能够帮助学生重建理论知识所针对的问题原型,重现解决方案的提出、发展乃至最终成熟的整个过程,更有助于培养学生解决实际问题的能力,养成批判性、创新性思考的习惯。

2.2实践教学措施

数据结构是帮助具有基本编程语言基础的学生锤炼编程技术的关键课程。它揭示了程序设计的基本面,即如何处理相互之间存在一种或多种数据关系的数据元素所构成的集合、如何设计算法并分析算法的优劣。

2.2.1实验内容设置

实验内容设置是进行实践教学的最重要部分。从覆盖知识点的角度看,实验内容须面向数据结构教学目标,即实验内容须能够锻炼学生的编程技巧,如算法设计、调试、测试以及调优等能力,还能够让学生体会到围绕复用开展软件开发的威力以及思路。从覆盖教育对象的角度来看,实验内容须面向大多数同学并充分考虑优秀同学,即实验内容须划分不同的层次,让大多数学生能够很容易入手,并让有能力、有余力的学生能够不断地深入,直至形成综合型课程设计。

2.2.2实验考核手段

考核手段在教学环节中至关重要。考核手段是学生学习和锻炼自身能力的风向标。为保证每位同学都能积极完成实验并有所收获,避免抄袭和敷衍的现象,笔者采取了综合型的考核手段。

3应用中遇到的问题

建构式教学模式在应用和推广过程中遇到的主要问题来自三个方面。其一,目前学生的课业负担较重,习惯于被动“填鸭”而不习惯于主动“求索”,这是推动和开展建构式教学模式的主要障碍。其二,建构式教学活动,需要师生的密切交流,但现有师资不足难以满足实际需求。一个可能的解决方法是综合多门课程和多个老师,建构整体的知识框架和学习体系,避免课程教学中的重复劳动,提高师资的利用率。另一个可能的解决方法是利用互联网技术,建立在线教学园地。其三,建构式教学模式仍然处于探索阶段,各学科缺乏建构式教学素材。从笔者在实践教学的体验来看,应尽量从学生的学习背景和能力成长规律出发而不仅仅是从学科背景出发,为学生建构知识体系设计更平滑的路线。

4结语

笔者提出将“培养超越具体程序设计语言技巧的编程技术”和“培养围绕复用的软件开发方式”作为普通本科院校的数据结构教学目标,在建构式教育理论的指导下,设计并实践了一系列建构式教学措施,分析了应用建构式教学模式所遇到的一些问题。

未来将开展两个方面的工作。一是通过问卷调查、统计分析等手段定量地分析建构式教学方法的实际效果;二是创造和积累建构式教学素材,如研究数据结构课程设计过程中不同类型学生的知识建构路线,挖掘并推广其中优秀的知识建构方法。

参考文献:

[1]教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006:8-101.

[2]蔡敏,郑尚志,梁宝华.“数据结构”课程教学改革之我见[J].计算机教育,2009(4):50-51.