“数据结构实验报告”是指对数据结构实验的总结和报告,通常用于记录和展示实验的过程、结果和结论。数据结构是计算机科学的基础,实验报告有助于理解和掌握数据结构的实际应用。以下是有关于数据结构实验报告的有关内容,欢迎大家阅读!
数据结构实验报告1
关键词:数据结构;实践;多维;教材
“数据结构”是在20世纪60年代中期才设立的一门课程。它主要讨论在软件开发过程中的分析、设计与实现中的若干基本问题[1]:1)问题的建模。如何把客观世界的问题映射到计算机世界中?如何在计算机世界中表述和存储客观世界中的对象?它是算法处理的对象。2)问题的求解方法,即算法。3)算法的评价。评价算法的优劣。算法是数据结构的主要研究内容。算法是计算机科学的核心,也是一种一般性的智能工具。“学习算法有助于人们对其他学科的理解,不管是化学、控制、甚至音乐,即使非计算机专业的学生,学习算法的理由也是非常充分的[2]。”因此,数据结构是高级程序设计、编译原理、操作系统、数据库、人工智能等课程的基础,它不仅被作为计算机相关专业(如计算机科学与技术、软件工程、网络工程等)的一门核心的专业基础课;也是工科、理科、医科等学科中许多专业的必修或选修专业基础课。
“数据结构”课程具有抽象性和实践性。客观世界中的问题在计算机中的表示与算法描述是抽象的,但算法的实现是实践的,惟有通过实践才能真正掌握课程内容,达到学习目标。通常在有限的课时内,教师主要讲授的是抽象部分,此种情况下如果没有相应的实践,课程的学习将如同在沙漠建房,难以落成。
因此,如何构建能够有效的实践环节,一直是教师关注的问题。
笔者结合“数据结构”课程建设,就多维一体的“数据结构”实践教学系统的构建与实现进行总结,以期为“数据结构”实践教学提供一定的参考和借鉴。
1“数据结构”实践活动层次
实践是一切认识活动和知识的前提[3],学生的认识主要是在实践活动中发展起来的[4]。笔者根据由浅入深、循序渐进和创新能力获得的规律,将课程实践活动按层次由低到高分为验证型实践、设计型实践、综合型实践和创新型实践。
1.1验证型实践
荀子说:“闻之,不若见之;见之,不若知之;知之,不若行之……行之,明也。”验证型实践指通过运行已实现的算法对书本知识及算法进行对错性的验证。验证理论的实践活动使学生充分领悟知识的内在意蕴,加深学生对基础知识的理解,掌握基本实验技能,为后续较高层次的实践活动奠定基础。验证型实践活动从内容上来讲,它依附于课堂教学,是课堂教学的延伸和补充。
1.2设计型实践
设计型实践指用所学的一个或若干个知识点去解决特定的问题。通过对问题的求解,了解知识的应用场景,获取知识的初步应用能力。智慧来源于知识,但知识不会自然而然地达成智慧,需要通过实践活动对知识“内化”和“活化”,起关键作用的是人的实践经验[5]。这里的知识是局部的,是一个个知识点。大量的设计练习是解决较复杂的问题的基础。
1.3综合型实践
综合型实践是指将所学的数据结构思想与方法,应用到软件开发的分析、设计与实现等方面。综合型实践要用到课程的许多知识点。能力与智慧的获得,绝不是简单的累积,此处,1+1≠2。学习者可能掌握各个知识点及其各自的应用,但不等于具备解决复杂问题的能力,盲人摸象的典故正说明这一点。通过综合实践,引导学生从全局的观点,认识数据结构课程的精髓和本质;指导学生如何综合地将所学的知识应用于软件开发过程中。
1.4创新型实践
创新型实践是指能够激发和培养学生创新能力的实践活动。培养具有创新精神和实践能力的有较高综合素质的人才是当代教育的目标,也是学校教学的出发点和归宿。但“人的发展以人在不同经验方式中发展为前提[5]”,创新型实践旨在通过实践活动培养学生的创新能力,由旧知识建构新知识,达到学习的目标。
2数据结构实践活动的实施
实践活动的参与者有教师和学生两方。学生是实践的主体,旨在运用所学的知识和理论发现问题、分析问题、尝试解决问题,目的是提高解决问题的能力。教师是引导者,为学生提供必要的实践环境和条件,当学生遇到困难时,给予指导;对学生的实践成果给予评定,使他们不断进取。
2.1验证型实践
对验证型实践的处理方式有两种。一种是作为课程实验内容。此法的不妥之处在于:1)在有限的实验课时内,只能完成验证工作的很少一部分;2)如果把验证作为课程实验的主要内容,那高一层次的设计型实验就没有时间了。另一种方式是完全由学生自我解决。持该观点者认为,算法的实现是学生在学过高级程序设计语言后应该能解决的问题,不是本课程应该关注的。其实,算法描述和算法实现之间是有距离的,这如同一台机器的构造和机器生产工艺流程之间的区别一样,能够跨越这个距离的学生很少,即使有的学生具备这个能力,但因时间、精力所限,也不可能实现教材中的所有算法。
一个人接受科学教育的最大收获是那些能够受用一生的智能工具。数据结构正属于这类教育的内容。通过学习算法,学生一方面开扩眼界,培养正确的思维方法,更重要的是数据结构介绍的典型数据模型和实现,是一种可以用于解决复杂问题的工具。如果学习者的学习只是纸上谈兵,就不可能学会工具的使用,就无法用工具去解决问题呢?所以,无论从学习者的认知所需还是从课程的学习目的来看,以适当的方式帮助学生掌握典型的数据模型的实现是必须的。因此,上述两种方法均不可取。我们的做法是由教师实现这些数据模型并把源程序提供给学生,学生利用课余时间自行进行验证实验,具体任务如下。
1)教师。①给出教材中相应算法实现后的源程序;②给出程序设计说明,方便学生理解程序的结构与功能;③给出思考题,引导学生阅读源程序和理解源程序;④给出操作说明和测试用例,引导学生进行正确性地验证和更全面地理解算法。
2)学生。①理解相关背景知识;②根据程序设计说明和思考题阅读源程序;③根据操作说明运行源程序的测试用例,并进行结果分析;④回答思考题。
为了督促学生进行验证实践,要求学生将任务③、④的工作记录作为作业上交;教师利用课堂提问,抽检和讨论部分源程序的运行结论。
2.2设计型实践
设计型实践活动分为两个部分,一是课程实验,二是作业。
2.2.1课程实验
鉴于实践对数据结构学习的重要作用,一般会拿出课时的1/5~1/4用于课程实验。针对课程实验,教师与学生的工作分别如下。
1)教师。①给出问题描述,提出问题解决的基本要求,如采用的知识点、输入输出要求、算法复杂度等;②对问题进行初步分析,必要时给出逻辑设计和存储设计的建议;③酌情给出算法描述;④给出若干测试用例,引导学生进行功能测试,领会健壮的程序设计;⑤给出实验报告撰写要求,包含问题描述、数据结构设计、功能划分和算法设计、界面设计、运行与测试、总结与心得、源程序等。
2)学生。①分析问题;②定义数据结构;③给出算法描述;④编程实现算法;⑤用测试用例测试程序,记录运行结果;⑥写出符合要求的实验报告。
教师通过检查源程序运行情况和批阅实验报告,了解和评定学生的实验情况。
2.2.2作业
作业题分为两类:基本概念题和算法设计题。部分算法设计题要求学生编程实现,以弥补课堂设计实验的不足。对于这部分实践活动,教师布置题目,通过批改作业,检查学生的完成情况。学生编程实现题目,将设计思路、算法和运行结果形成作业上交。
2.3课程设计
课程设计对应于综合实践活动。对于计算机相关专业的学生来说,在“数据结构”课程学习结束后,通过前期的验证和设计实践,具备一定的综合使用课程知识解决问题的能力和规范的程序设计能力。所以,一般在课程结束后,单独有1~2周的“数据结构”课程设计,教师与学生的工作分别如下。
1)教师。①制定课程设计实施计划书。给出课程设计的目的和要求、日程安排、考核方法及分组情况等。②给出问题描述。区别于设计题,这里的问题一般较复杂,实现的源码,一般均在500行以上,甚至千余行。③提出设计要求,引导学生进行概要分析。可分为基本要求和较高要求,与不同层次的学生的能力相对应。④设计提示。综合设计的问题解决,通常包含多个算法,对其别难的、学生不易想到的要点给出提示。⑤提出课程设计报告的写作要求。包含需求分析、概要设计、详细设计、调试分析、测试分析、总结与体会、使用说明及源程序等。
2)学生。①根据实施计划书的进度要求、问题描述和设计要求进行“概要设计详细设计调试测试”的问题求解;②接受系统检查;③撰写符合要求的课程设计报告。
教师通过作品检查和批阅课程设计报告给出学生的课程设计成绩。教师通常在课程设计的最后一天,通过运行系统和提问,检查学生的系统设计与完成情况。
2.4科技活动
学生的创新能力来自科研实践。科研实践要因人而异,针对学有余力的学生,通过下列三种途径提供科研实践活动。
2.4.1项目开发
通过项目锻炼,培养学生进行科学研究的工作方法和相互协作的精神。
1)辅研。教师积极向学生介绍自己的研究方向和课题,吸纳有特长和兴趣的学生参加自己的项目研究,根据其知识结构,给学生布置力所能及的任务,逐步深入。
2)项目申报。积极鼓励学生参与各级项目的申报。学生作为申报人并获得资金的资助,能有效增加其完成项目的责任感与投入其中的热情。
2.4.2社会实践
“没有经验”被企业视为大学毕业生的最大弱项。参加社会实践,是学生获取经验的最好途径。学习数据结构的学生基本上是大二和大三的,这样,他们有1~2个暑假,可以进行社会实践。教师向学生宣传社会实践的好处,介绍社会实践场所。学生在寒暑假或平时课余时间,到某个单位短期工作或兼职工作,参与单位具体项目的工发。
2.4.3竞赛
竞赛是学生用理论知识解决实际问题的有效载体,是检验、锻炼、提高和展示学生科技创新能力的很好平台。竞赛所带来的荣誉感,能够有效激励学生的创新热情。常见的竞赛有:校级的“希盟杯”电脑技能设计大赛、网页设计大赛等;市级的“天翼杯”电脑技能大赛、科技创新大赛等;省级的“富士通”杯网页网站设计大赛、大学生软件设计大赛等;部级的数学建模大赛、“挑战杯”全国大学生科技作品竞赛、软件人才设计大赛等。
教师及时地把各种竞赛信息通报给学生并组织学生申报;组织好竞赛作品的创作与指导工作;对参赛者和获奖者给予一定的奖励,并对参赛作品进行展示和宣传,扩大活动效果,以吸引更多的学生参与竞赛活动。
3“数据结构”实践平台
为了使数据结构的实践活动能够顺利进行,我们编写了《数据结构实践教程》[6],创建了“数据结构实践教学网站”作为实践教学实施平台。
3.1《数据结构实践教程》教材建设
本书含盖了1―3层的实践活动的素材和实施指导。全书分为三篇:验证篇、设计篇和综合篇。
1)验证篇。详述《数据结构》[1]教材中相关算法的实现。本篇首章介绍算法到程序转换的基本步骤及需要注意的问题;给出了进行验证性实验的步骤;同时介绍了实验环境。其余各章按教材教学内容进行编排。每个应用程序的叙述采用一致的结构,由如下四个部分组成:①程序设计。给出数据的类定义和程序结构图。②源程序。方便学习者研习程序设计思路、程序结构、改进程序以及更好地操作程序。③程序运行。给出程序操作方法介绍及程序运行界面。④思考题。引导学习者更深入地理解程序、程序所实现的算法、程序所采用的存储结构以及可改进之处。
2)设计篇。针对一定的知识点给出不同难易程度的设计题,作为课程实验和课后程序设计素材。本篇介绍了设计型实验的实验步骤、设计内容;提供了实验报告格式,并给出一个实验报告案例。其余各章按教材教学内容进行编排,每个设计题由以下五个部分组成:①问题描述。给出问题背景,提出需要解决的问题。②基本要求。给出算法实现时对数据逻辑结构、存储结构、功能设计、数据输入或输出上的要求。③实现提示。对算法设计给出必要的提示或伪码描述。④测试与运行。给出测试案例。⑤思考题。提出相关问题或更高设计要求。
3)综合篇。针对一个以上的知识点给出综合设计题,可以作为课程设计素材。全篇首章给出有关综合设计项目涵盖的内容、综合设计报告格式以及综合设计成绩评定准则等。其余各章按设计任务编排,每个项目任务的叙述由以下三个部分组成:①问题描述。给出问题背景,提出需要解决的问题。②设计要求。提出项目设计与实现时功能上需求,分为基本要求和较高要求。③实现提示。对数据组成形式、相关算法设计上给出必要的提示。
该教材充分考虑了学习者进行1―3层次的实践活动的可能需求。验证程序使用菜单界面,结构统一,操作简单;设计篇和综合篇内容丰富,提供了各种难易程度、且有一定实用性或趣味性的题目,可以为学习者提供全程指导。
3.2数据结构实践教学网站
该网站分为用户管理、学生主页和老师主页三个部分,其功能如图1所示。
图1“数据结构实践教学平台”系统功能
3.2.1学生主页
以学生身份登录系统后进入学生主页,从中查看实践教学内容、联系教师,上传作业、在线交流等。页面中包括课程实验、课程实训、课程设计、作品展示等。
1)课程实验:提供实验教学大纲、实验指导书及实验上传功能。
2)作品展示:提供经典算法设计案例、优秀学生作品展示、典型数据结构及其基本操作的算法动画演示等。
3)课程实训:提供习题、试题、典型题解、最新题库等。
4)课程设计:提供课程设计指导书、课程设计作品上传等。
3.2.2教师界面
以教师身份登录系统后进入教师主页。教师通过该页面,公告,进行实验、实训(即课外设计)、课程设计、作品、学生、教师等相关信息的管理。
1)公告管理:实施公告的编辑、及公告的数据库管理等。
2)课程实验:实验指导相关内容;查看学生上传的课程实验源程序与报告。
3)课程实训:实训设计问题及对问题库的数据库管理。
4)课程设计:课设指导相关材料;对学生上传作业进行管理。
数据结构实践教学系统的开发为学生和教师带来了很大的方便,通过网络突破时间和空间的限制,方便教师与学生之间、学生与学生之间的专题交流,为学生提供丰富的素材。
4结语
实践教学是“数据结构”教学中不可缺少的环节,对课程学习成效起着决定性的作用。笔者根据课程特点和创新人才培养目标,提出按验证、设计、综合和创新四个层次的实践活动,对教材和网站的建设进行了积极探索,构建了一个多维一体的数据结构实践教学体系。经过多年的实践,已经取得了明显的成效,考研率逐年提高;学生在各级比赛中获奖越来越多,等级也逐步提高。
参考文献:
[1]管致锦,徐慧,陈德裕。数据结构[M].北京:清华大学出版社,2010:3.
[2]王道俊,郭文安。主体教育论[M].北京:人民教育出版社,2005:309-310.
[3]张英彦。论实践教学的理论基础[J].教育科学,2006,22(4):34-36.
[4]张英彦。论高校实践教学目标[J].教育研究,2006(5):46-49.
[5]陈佑清。论活动与发展之间的相关对应性[J].教育研究,2005(2):77-82.
[6]徐慧。数据结构实践教程[M].北京:清华大学出版社,2010.
数据结构实验报告2
关键词:数据结构;实验教学;改革
中图分类号:G642文献标识码:B
1“数据结构”教学现状和原因分析
根据调查发现,目前大多数院校“数据结构”教学现状不容乐观。这表现在一方面授课教师感觉到学生学习积极性不高,知识点掌握不够扎实,不能用于解决实际问题,讲授进度过于缓慢,考试结果不甚理想;另一方面学生普遍反映学习难度较大,理论性太强,从而认为学习“数据结构”没有实际用途,同时也产生较大的畏惧心理,导致大部分学生学完这门课程后仍然云里雾里,不知所学。造成这一现状的原因主要有以下几点:
(1)理论与实践相脱节。“数据结构”本身建立在抽象的数据模型的基础上,理论性和逻辑性比较强,内容相对来说枯燥无味、抽象难懂,知识点也比较多。同时,在学习“数据结构”之前大部分学生对计算机体系结构并不了解,因而只是一味地从逻辑结构和存储结构等方面讲解就会造成学生理解上的困难。另外,“数据结构”本身是一门实践性很强的课程,但在实际教学过程中无论是教师还是学生往往都是只重视理论教学而忽视实验教学。
(2)学生基础薄弱。由于“数据结构”是计算机专业和信息管理与信息系统专业其他核心课程的先行课,因而大部分院校都是在学生只学习了一门高级语言程序设计之后就要开出。一方面,学生缺乏对计算机较深入的理解;另一方面,由于学时的不断压缩,造成学生对程序设计语言的掌握不够扎实。比如,我们在讲授过程中经常发现,每当讲到C语言中的函数调用、指针和结构体的使用时,学生明显觉得很吃力。这种现象导致课程进度非常缓慢,有时甚至不得不拿出专门的时间重新讲授程序设计语言的内容。这同时也导致学生一看到伪代码就头痛,学习兴趣急剧下降,畏难情绪油然而生。
(3)实验学时和内容安排不当,传统的“重理论,轻实践”的教学指导思想依然严重。比如大部分院校安排18个学时的实验教学,每2周上1次实验课,1次2学时。这就使得原本较少的实验学时进一步支离破碎,无法形成一个完整的实验教学体系。另一方面,实验内容通常由指导教师安排一些简单的验证型实验,也达不到巩固和促进理论教学的目的。再加上学生编程能力本来就有限,造成实验教学效果极差。
2课题答辩式实验教学改革
2.1课题答辩式实验教学的基本思想
课题答辩式实验教学方法的基本思想是:合理安排实验学时,整体规划实验内容,以理论教学内容指导实验教学内容,以实验教学内容巩固和促进理论教学内容的推进,培养和锻炼学生理论与实践相结合的科学态度、团队合作精神,提高学生学习兴趣、分析和解决问题能力、写作能力、编程能力、组织和口头表达能力、实践能力及创新素质。
2.2课题答辩式实验教学的基本方案
课题答辩式实验教学打破传统的实验教学方法,其基本方案包括以下几个方面:
(1)打破传统的2周1次,每次2学时的实验学时安排,采取相对集中的方法。比如我们把18个学时安排到每个学期的后6周进行,每周1次,每次3学时。这样安排的好处有3点:首先,随着理论课的深入,学生对前面所讲内容的理解更加深刻,有利于安排一些综合性和创新性的实验项目;其次,实验时间相对集中,可让实验内容得以连续进行,尽量减少中断次数;最后,在前期理论课进行过程中,学生会发现他们的程序设计语言基础不够扎实,因而会自觉加以复习。同时,通过教师对一些算法的讲解和分析也可以促进学生对程序设计语言的掌握。
(2)打破传统的每次实验都安排一些验证性实验内容的做法,统一规划实验内容。根据“数据结构”课程内容特点,我们只设置了4个实验,即线性结构(包括线性表、栈、队列、串、数组和广义表)、非线性结构(树和图)、查找和排序各设1个。每个实验可设置多个实验课题,而每个课题都是一些综合性的题目。比如,在线性结构中我们设置了5个课题,分别是长整数运算、停车场管理、约瑟夫问题、简单行编辑程序和稀疏矩阵运算器。每个课题都紧密联系实际。同时也允许和鼓励学生自选感兴趣的、有实际应用的课题。这样学生就认识到“数据结构”可以解决实际问题,兴趣自然就提升上来了。
(3)打破传统的所有学生做同一个实验项目的做法,采取分组做法。各个小组可以根据自己的兴趣选择题目,要求一个小组在规定的时间内完成一个实验项目。这样做的好处是可以锻炼学生的团队合作精神。
(4)打破传统的学生做完实验提交实验报告就算完成的做法。只要求每个小组提交一份实验报告。同时抽出专门的时间要求小组成员对实验过程进行答辩,依据答辩情况进行评分。这大大提升了学生的编程能力、写作能力、组织和口头表达能力。
2.3课题答辩式实验教学的具体实施方法
为了达到实验教学效果,在实施过程中我们主要采取了以下一些具体方法:
(1)对设计题目进行较详细的说明。主要包括:课题所涉及“数据结构”的内容、课题的实际应用价值、完成课题的基本要求、主要测试数据、课题实现提示和思考与提高等。
(2)对实验过程进行控制。为此,我们提出以下基本实验要求:
①每个小组由3-5人组成,每个小组选出1名小组长负责本小组的组织工作;
②实验题目分给定题目和自选题目,每个小组可以在某一阶段时间内从给定题目中选择或者自拟1个以上的题目完成;
③所有成员都应该参加本小组的设计,并详细记录在本小组中所起的作用,作为成员最终成绩的评判依据;
④每个小组每个题目提交一份实验报告,实验报告除介绍本小组成员基本信息外,还应详细记载小组成员所做的工作以及以下几个方面的内容:
需求分析:说明课题设计的任务;
概要设计:说明课题中用到的抽象数据类型的定义、主程序的流程以及各程序模块之间的调用关系;
详细设计:实现程序模块的具体算法;
调试分析:调试过程中遇到的问题及解决方法;算法的时空分析;经验和体会等。
测试结果:列出测试结果,包括输入和输出;
附录:带注释的源程序。
(3)对课题完成情况进行评判。采取的方法是进行公开答辩。成立答辩委员会,委员由各小组组长担任。答辩分两阶段进行:陈述阶段和提问阶段。陈述内容由各小组根据组员分工情况进行。提问则主要由选择同一课题的其他小组成员参与,这样可以共同交流各小组在完成课题时遇到的问题和解决的方法。答辩过程完全由学生组织和完成,教师参与指导。各小组的成绩由答辩委员会给出,各小组成员的成绩则由组长根据组员的工作情况给出。
3课题答辩式实验教学的教学效果
我们对2006级信息管理与信息系统专业的学生采用了课题答辩式实验教学。从提交的实验报告反映出,各小组利用各种方式参与到其中,比如经常在学生食堂、学生宿舍和QQ群上开展小组讨论。由于大部分同学是带着本小组讨论的问题听课,因而理论课堂的教学效果也明显好转。下面节选的期末网上学生评教和实验报告学生体会和感言说明了课题答辩式实验教学达到了较好的教学效果。
(1)学生对教学的评价(节选自教务管理系统学生网上评教结果):
①经常做些答辩,让学生有机会理论联系实际,得到锻炼;
②注重教学方法,注意师生交流,能调动学生积极性;
③给予学生思考、联想、创新的启迪,学生收获大;
④工作认真负责,并有效地锻炼了学生的实践能力;
⑤注重培养学生的动手能力,教学方法比较适合创新型学生的培养;
⑥注重教学方法创新,实验内容丰富,形式多样化,使所有同学都参与到其中去;
⑦李老师给予我们思考、联想、创新的启迪,我学到了解决问题的方法,提高了分析解决问题的能力,收获大;
(2)学生感言和体会(节选自学生实验报告):
①对于团体项目,工作组员应该在组长组织下共同努力,说出自己的想法,在完成自己的分内任务下,还应该和大家积极的讨论、学习;
②作为组长,我觉得大家在这次的实验中真的很努力了,都尽可能最好的完成了布置的任务并且做得更好,还在讨论中提出了许多有建设性的问题,有的组员甚至为了弄明白一些自己不懂的东西还向计算机老师请教,我觉得也许我们的程序还有思想不是很成熟,但是我们学习的热情是绝对很高的;
③为了做好这次的实验,我把不怎么熟悉的C语言看了一遍,还把数据结构也看了一遍,觉得学习到的东西不只是编程序,还懂得了要把所学习到的东西连贯起来运用才达到真正使用的效果;
④本来觉得学习C语言和数据结构在实际的生活中不会有什么作用,但是通过这次的学习我了解到其实生活中的许多东西都应用到我们现在学习的东西,现在的知识再结合一些比较好的思路和方法我们也可以成为技术人员;
⑤团结就是力量,有多少努力付出就有多少收获。通过实验程序的编写,最大的收获是学会了如何与组员合作,在遇到问题的时候如何处理问题,培养了一种良好的思维习惯。
4结束语
“数据结构”是一门理论性和实践性都很强的课程,既需要利用理论教学的结果来指导实验教学的过程,也需要利用实验教学的过程来强化理论教学的效果。因此,如何在教学过程中把理论教学与实验教学很好地结合起来就成为“数据结构”教学成功的关键。本文提出的课题答辩式实验教学能够激发学生的学习兴趣,锻炼学生分析和解决实际问题的能力,培养学生全面综合的素质,不失为一种较好的“数据结构”教学方法。
参考文献
[1]黄现代。“数据结构”课程教学改革与实践[J].计算机教育,2007,(16):38-39,53.
[2]赵玉霞。《数据结构》课程上机实验改革初探[J].福建电脑,2007,(4):213-214.
[3]陈澜,顾翔。数据结构实践环节教学研究[J].电脑知识与技术,2007,(12):1712,1715.
[4]陈媛,刘洁。信息管理与信息系统专业中数据结构课程的实验教学探讨[J].重庆工学院学报,2007,(5):161-163.
[5]龚红仿,杨宏杰,程思蔚。数据结构实验课教学改革与实践[J].计算机教育,2007,(12):53-55.
数据结构实验报告3
关键词:数据结构;教学设计;教学目标;内容体系
中图分类号:TP3-0文献标志码:A文章编号:1674-9324(2013)08-0209-04
一、引言
《数据结构》是计算机科学与技术及相关专业的一门非常重要的专业基础核心课程,其主要研究内容是数据之间的逻辑关系和物理实现,即探索有利的数据组织形式及存取方式。有关计算机的各类软件的开发和设计,首先要考虑数据的表示,即使用何种类型的数据结构。因此,如何更好地解决实际问题,仅仅依赖几种计算机程序设计语言是不够的,还必须学习和掌握好数据结构的有关知识。当我们使用计算机来处理一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个恰当的数学模型,然后设计出解决此类数学模型的算法,再编写相应的程序并进行调试、测试,运行程序并最后得到答案,如图1所示。
早期计算机为解决问题而涉及的运算对象都是一些简单的数据类型,如整型、实型或布尔类型数据,所以一般把着重点放在程序设计的技巧上,而不必重视数据结构。随着计算机的发展,它的应用领域的不断扩大,涉及非数值计算问题的应用所占的比例越来越大,许多问题涉及到的处理对象不再是简单的数据类型,其形式更加多样,结构更为复杂,因此,解决这类问题的关键不再是数学分析和计算方法,而是要设计出合适的数据结构,以便更有效地解决问题。
二、课程说明
1.课程的定位。《数据结构》这门课程,是计算机理论与技术的重要基石,该课程一般是在大学二年级上学期开设,具有承上启下的重要作用,既要对前一年学习的软件技术进行总结提高,又要为后续专业课程提供基础。它贯通始终,是计算机科学与技术人才素质培养框架中的中坚课程,对学生的软件开发能力培养至关重要,也为学生今后的专业生涯打下牢固的基础。所以《数据结构》课程是计算机专业提高软件设计水平的一门关键性课程,它在整个课程体系中具有非常重要的地位。《数据结构》课程在计算机学科中与其他课程的关系如图2所示。
2.课程的教学目标。温州大学瓯江学院作为独立学院,其定位为培养“应用性”本科人才,同时结合本课程的地位,因此,在本课程的教学中体现“基础性”和“应用性”。本课程的定位与目标是:①注重基础性:掌握基本数据结构的特点,了解数据结构与算法的关系;培养学生的算法设计与分析的基本理论知识和技能;培养学生设计及选择有效的算法、设计合适的数据结构的能力;增强学生发现问题、分析问题和解决问题的能力。②突出应用性:本课程强调理论和实践的统一,突出对学生的动手能力的培养。在对学生进行基本数据结构的理论、技术和设计等的知识运用和技能培养的同时,突出对学生进行将实际问题转化为基本数据结构和算法问题的分析能力。鼓励学生学以致用,用学到的知识来解决实际问题。
3.课程内容体系。数据结构课程的内容主要是围绕着数据的逻辑结构、数据的物理结构(数据在计算机中的存储方式)和选用合适的算法来实现对数据的相关操作展开。数据的逻辑结构有:线性结构、树形结构、图结构;数据的物理(存储)结构有:顺序存储结构和链式存储结构。在教学中引入抽象数据类型(ADT)观点介绍数据结构技术,采用算法时空分析来判断算法的好坏。在此基础上介绍数据结构的具体应用。数据结构课程的内容体系如图3所示。
我们把数据结构课程的内容划分为基础部分、数据结构与算法部分和应用部分。基础部分的内容有数据结构与算法的基本概念,抽象数据类型(AbstractDataType,简称ADT)的表示,算法时空分析(算法复杂度)等。数据结构与算法部分是课程的核心内容。介绍各种基本数据结构的特点、ADT、各种存储实现方法、相关的操作的实现。应用部分主要介绍排序、查找(或检索)、索引和散列等经典算法。
三、理论教学设计
1.教学方法与手段。由于独立学院的学生本身基础不够扎实,加上《数据结构》课程理论性强,内容抽象,学生在学习该课程的开始阶段,容易产生畏惧和茫然的情绪。为了提高教学质量,我们在对教学方法和教学手段等方面进行了有益的探索和尝试。要处理好多媒体教学模式与传统教学模式之间的关系。多媒体教学模式以其形象性、生动性和信息量大等特点已成为主要的课堂教学手段,但也存在一些不足,一方面影响教师的即兴发挥,而这恰是传统黑板教学的长处;另一方面,由于多媒体教学具有信息量大、呈现快速、表现直观、操作简便的特点,教学活动很容易出现“课件喧宾夺主”的不良倾向。笔者认为,在讲述如算法思想、编写程序时,采用传统的教学模式更能清晰地表达。因此,在教学中要综合使用多媒体教学模式与传统教学模式两种教学手段,以达到良好的教学效果。
2.把握课程的重点和难点。①课程的重点。基础部分:数据结构的有关概念术语、算法特性、算法描述和算法分析;数据结构与算法部分:线性表、栈、队列、串、树、二叉树、图等数据结构的逻辑结构、存储结构、相应基本操作的实现,这些基本数据结构的应用:一元多项式的运算、递归算法的设计和实现、哈夫曼算法的实现和哈夫曼编码的设计、最小生成树和最短路径的求法及实现;应用部分:顺序查找算法的设计,二分查找算法的设计,二叉查找树的创建、查找、插入和删除的算法的设计,散列表的建立和查找算法的设计;直接插入排序算法、冒泡排序算法、简单选择排序算法、快速排序算法、堆排序算法和归并排序算法的实现,这些排序算法的性能比较。②课程的难点。基础部分:抽象数据类型(AbstractDataType,简称ADT)概念的理解和描述,算法时间复杂度和空间复杂度的估算方法;数据结构与算法部分:栈在递归函数中的应用,模式匹配KMP算法。图的遍历方法、Dijstra、Floyd、Prim、Kruskal等典型的图应用算法;应用部分:排序算法的复杂性分析,排序方法在各类实际问题中的应用。散列表的建立和查找算法的设计。
四、实验教学设计
1.实验类型。根据独立学院应用型人才培养目标,注重培养实践动手能力,结合教育部的“面向21世纪教学内容和改革计划,保留少量必开的经典验证型实验,增开综合型、设计型实验”的精神,为了保证实验课的正常运行,完成实验教学目标,针对独立学院学生普遍编程能力比较弱,C程序设计语言基础较差的情况,我们打算增开一些巩固C语言的课程预备型实验,保留了必要的经典的验证型实验内容,增加设计型实验,加强综合型实验,使得实验类型不再单一,实验内容更显层次化,做到既要有基本实验的训练,又有独立思考、综合运用知识、创新等能力和素质的培养。预备型实验:主要加强学生C语言的薄弱环节,如结构体、指针、数组、函数调用等,掌握C语言的这些知识点是完成数据结构实验的有力保证。验证型实验:主要是为了理解和巩固数据结构的基本知识点,用来验证典型数据结构的逻辑定义及在具体存储结构下的相关操作实现。综合型实验:实验内容涉及本课程的综合知识或本课程相关课程知识,主要是为了培养学生的综合分析能力、实验动手能力、数据处理能力及查找参考资料的能力。
2.实验方法。对于验证型实验,学生在做实验的任务基本上,只是将课本的算法修改为在某种编程语言环境下可以运行的程序而已。但对于设计型和综合型实验,尤其是综合型实验,它是多个知识点的综合训练,包括问题分析、总体结构设计、程序设计等基本技能,需要用更科学的实验方法系统地完成。所以,为完成《数据结构》实验,我们引入软件工程的方法来指导实验,以实现实验方法的规范化。需求分析:说明实验的主要任务,如输入的形式和输入值的范围、输出的形式、程序功能和测试数据等。概要设计:说明本实验中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次调用关系。详细设计:实现概要设计中定义的所有数据类型,对每个操作用程序设计语言编写代码;画出函数之间的调用关系图。调试分析:调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析;算法的时间复杂度与空间复杂度的分析;算法的改进设想。
3.实验过程。数据结构课程实验同其他课程不同,在上实验课之前需要做大量的准备工作,整个实验从开始到结束不可能在有限的实验计划课时中全部完成,因此对整个实验过程的控制和管理显得非常重要,要求对每一次实验课都进行精心地策划,我们主要从课前预习阶段、实验操作阶段和实验总结阶段等三个阶段进行改革,以实现实验过程的规范化。课前预习阶段:以往的实验教学环节,往往是学生到了课堂上才知道实验的内容,学生往往措手不及,这不利于实验教学的正常开展。现在我们采用把每个实验内容提前放在网上,要求学生课前充分预习,详细了解实验目的和原理、实验要用到的数据结构和算法,在实验之前必须提交实验预习报告。通过课前预习,保证学生在实验中思路清晰,能及时发现问题,易于取得实验的成功。实验操作阶段:学生上机实验的过程是实验成败的关键,我们一方面培养学生在实验过程中养成做实验记录的良好习惯,另一方面引导学生在实验过程中积极思考,当出现异常情况时,教师要指导学生分析其产生问题的根源,寻求解决问题的方法。学生在每次实验结束后,要将实验记录交给教师检查签字。实验总结阶段:这一阶段要求学生完成高质量的实验报告,实验报告中除了包括数据结构定义、算法思路、异常情况分析、测试数据及运行结果等必备的内容外,更重要的还要包括实验设计实施的成败得失、经验教训和心得体会。整理和填写实验报告的过程,即是学生对自身存在的问题进行修正和完善的过程,通过分析整理实验报告,学生可以更深刻地认识到自己在实验中存在的问题,加强其设计思维的训练,也能不断地积累解决实际问题的动手能力。
五、课程考核
1.《数据结构》课程的考核学生成绩以100分制评定,其中,平时成绩(包括书面作业、课堂测试、期中测试),占总成绩的15%;考勤和学习态度,占总成绩的5%;上机实习(加实习报告),占学期总成绩的20%;期末考试,占总成绩的60%。
2.“数据结构综合实验”的考核学生成绩以优、良、中、及格和不及格五个等级评定,其中,学生编写的实际软件和运行结果,占总成绩的30%;设计报告,占总成绩50%;教师提问,占总成绩10%;考勤和学习态度,占总成绩10%。关于综合实验成绩的考核,由于过去过分依赖实验报告的优劣,导致学生不注重实验过程,片面追求实验报告的篇幅和整洁程度,严重制约了对学生综合素质的培养。因此,必须注重综合能力的考评,考虑平时的表现、实验过程的考核、严禁抄袭。
本文由用户:xiaomao 投稿分享,如有侵权请联系我们(点击这里联系)处理,若转载,请注明出处:https://www.yktime.cn/36912.html