数据结构与算法范例6篇

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

数据结构与算法

数据结构与算法范文1

关键词:数据结构;课程体系;实践教学;课程群

1背景

数据结构与算法是计算机类专业的一门核心基础课程,是计算机、软件工程等电子信息类专业的必修课。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法;介绍了常用的多种查找和排序技术,并对其进行性能分析和比较,内容非常丰富[1-2]。本课程的教学目标是加强学生对数据逻辑关系的分析与认识,培养学生数据抽象的能力,通过理论分析与编程实践相结合,增强学生求解复杂问题的能力以及控制算法复杂性的能力。

在计算机科学中,数据结构不仅是程序设计的基础,而且是设计和实现编译程序、操作系统、数据库系统等系统程序和各种大型应用程序的重要基础[3]。数据结构与算法是计算机类专业部分专业课的先导课,如操作系统、编译原理和数据库原理等,因此它为后续的专业课程学习提供必要的知识和技能储备[4]。数据结构与算法课程一直以来都是本学科的核心专业基础课程,而且正逐渐发展成为众多理工科专业的热门选修课。只有学好了这门课,才能在今后的计算机专业课程的学习中游刃有余。因此,本课程在国内同类课程中有较明显的先进性和示范性。

根据新世纪对人才培养的要求,教学应重在学生能力、素质的培养,尤其是思维能力、实践能力、创新能力的培养。多年来我们致力于数据结构核心课程的建设,从完善课程体系、加强团队建设、深入教学改革和丰富教学资源等各个环节不断探索和实践。从提高学生的学习兴趣和加强实践环节教学方面入手,在教育教学方面持续、深入地改进教学方法,开展教学研究,提高教学质量。

2完善课程体系

首先,完善以“扎实基础,强化实践,引导创新”为培养目标的课程体系。计算机类专业核心基础课程体系主要由离散数学、面向对象的程序设计、数据结构与算法、操作系统、编译原理、计算机组成与结构、数据库原理7门课程组成,用于支撑计算机科学与技术、软件工程、网络工程、信息安全、数字媒体技术5个计算机科学相关专业的教学。

我们将课程群的理念引入计算机专业基础类课程教学,建立了以数据结构为核心的计算机类基础课程群,如图1所示。课程群以培养综合运用计算机基础知识能力为目标,打破课程间的壁垒,强化课程联系。本课程群以数据结构为核心,将数据结构的一些基本内容如链表、排序等渗透到“C/C++程序设计”课程中;将编译原理、数据库原理等需要使用数据结构内容的部分在数据结构课程中以应用的实例进行讲解,从而将相关课程的授课内容形成统一的整体。

在实践环节我们强化数据结构对程序设计语言的训练及解决相关课程问题的训练。除各门课程有单独的实践课程外,独立设置贯彻整个教学环节的实践课程,将数据结构课程群中各门课程较为关联的综合大作业进行归并整合。自身实验课程注重双基训练,但大实践课程要求对整个数据结构课程群教学经验丰富、能够精确把握该课程体系要点的教师进行授课,在教学中能够结合本学期相关课程设置大作业,在讲授中能够根据学生的具体情况进行诱导性教学,使学生通过完成大作业来更深刻地认识学科体系的全貌,强化学科综合素质的培养。

以数据结构课程为中心构建计算机类专业的核心基础课程体系,将与计算机科学相关专业的专业基础课程教学打通,在课程、课件、教材、师资队伍等多方面进行统一的规划和建设,以不同的着重点组织课程教学内容、进行大学生计算机实践能力和创新能力的培养。该体系打破了原有实验教学附属于理论课程的模式,理论教学与实验教学既相对独立、又相互联系,改变了单一的知识验证的实验模式,增强综合应用设计和创新实践内容,全面提高学生的实验实践技能。“扎实基础,强化实践,引导创新”培养目标体现了当前计算机类专业教育的发展趋势,走在国内高校的前面,在全国各类会议作专题报告近30次。

3加强团队建设

目前我院数据结构与算法教学团队共有5位主讲教师,其中教授2人,每50名学生配一名助教(博士或工学硕士)。该教学团队主要由30~40岁的年轻教师组成,尽管精力充沛,工作热情很高,但教学经验尚有欠缺。团队建设是本课程建设的重中之重,要把提高教师的综合素质和教学科研水平,强化教师的责任心放在首位。坚持教学与科研相结合,以国家自然科学基金项目为依托,为提高教学质量,不断提高科研水平和能力;以国家特色专业建设项目为依托,加强教学研究,以理论指导教学实践,吸取好的教学方法和经验,不断改进教学方法和手段,迅速促进教学团队成长。

在青年教师培养方面注重教学和科研能力的同步培养。要求青年教师在首次上课之前听课助课,培养基本教学能力;实行集中备课,统一课件,互相监督,保持教学一致性和教学内容一致性;定期召开教学研讨,及时总结教学经验方法,教授言传身教;以特色专业建设项目为依托,鼓励青年教师开展教学研究,以国家级项目为依托开展科研课题研究。青年教师成长迅速,已具备一定的科研能力,教学效果良好,学生满意超过90%;获得校教学质量优良奖,青年教师讲课竞赛二等奖,多媒体课件二等奖等多项奖励,已经成为学院的业务骨干。

4深化教学改革

4.1不断探索新的教学模式

1) 实践性教学。

实践是获得真知的根本源泉,主动探索真知是研究型人才的基本素质,我们在基础课中的创新能力培养主要体现在,让学生在自由的实验环境中积极实践、主动探索,自己发现新的知识和理论。如图2所示,在实践环节建设方面,建立书面作业,上机作业和课程设计3个层次的实践教学环节,以通过书面作业形式消化理解教学内容;通过上机作业培养动手能力,将课程单元知识转化为实际技能;通过课程设计培养解决实际问题的能力,融会贯通本课程的知识。

为了满足强化实践的教学要求,本课程团队经过多年实践,精选、整理了包括卡内基梅隆大学、斯坦福大学、麻省理工学院等国内外著名大学教授布置的实践作业,结合我们的教学要求,每学期给学生布置18道有一定创新性的上机题目。这些题目既反应了数据结构教学的基本知识,又来源于实际应用。达到了理论和实践的完美结合。本课程实践教学和理论教学环节的学时比例为1.5∶1。经我们多年实践,这个比例符合我国高等教育实际,达到了良好的能力锻炼目的,值得推广和借鉴。

2) 研究型教学。

在研究性理论教学方面,以教学大纲为主线,整理数据结构领域的经典论文,以提出问题为课堂教学的第一步骤,引导学生思考,将科学家的研究方法和研究思路融入课堂教学中。依托科学研究项目,提出本学科领域的最前沿课题,鼓励学生思考并解决。对有明显创造性的成果可以在教师指导下撰写学术论文。

将研究型教学融入数据结构实践教学课堂,鼓励学生从解决问题的角度研究如何设计数据结构与算法,在传授基础知识的同时注重创新性思维方式的培养,发现问题和解决问题能力的培养。

4.2全方位的课程改革

课程建设的核心是提高教学质量。为提高教学质量,我们从教学内容、教材、教学方法和手段、考试方法、实践教学等方向进行了全方位的改革。

1) 教学内容改革。

课程组参考国内外其他院校本课程的教学大纲和优秀教材,对数据结构课程的教学大纲进行了多次修订,逐步稳定了理论教学的教学内容、教学要求,细化了教学目标,明确了教学任务、教学内容、教学重点和难点、不同知识点的掌握程度。理论教学采用以共性化课堂教学为主,并利用辅导答疑和实践教学组织以学生为主的个性化教学,培养学生创新能力,辅助课堂教学。在教学过程中采用启发式教学方式,即注重学生基础理论知识的掌握,也注重学生分析问题、解决问题等基本能力的培养。

为了配合理论教学,我们也多次修订了实验大纲,使实践内容更加符合专业的发展和其他各方面的要求,并且与前序课程和后继课程很好地衔接。在实践环节中注重学生能力的培养和科学的开发方法的培养。实践教学内容采用梯度组织,具有不同的难易程度,方便学生巩固学习和拓展知识。

2) 教材选取。

目前本课程使用教材为高等教育出版社出版的《数据结构与算法》,许卓群、杨冬青等编著。该教材除了讲授基本数据结构外,突出作为面向对象程序设计的基础概念――抽象数据类型,强调算法与数据结构的密不可分性、封装性等;在处理知识面的宽度和知识点的深度上,既满足作为基础课的要求又达到一定的水平,完全适合本专业对人才培养的要求,是普通高等教育“十五”国家级规划教材。目前课程组已经开始着手准备根据我们自己的教学特点、专业要求等实际情况自主编制一套教材。

3) 教学方法改革。

(1) 启发式教学:学生的主动性是学习,我们在教学过程中注重启发学生的思维,采用循循善诱的方式引导学生自己发现问题,并逐步解决问题,培养学生思考问题、分析问题和解决问题的能力。这极大调动了学生的主观能动性,培养了学生分析和解决问题的能力。

(2) 共性化与个性化相结合教学:从教学形式上,我们积极探索新的教学方法,以便能够调动和发挥学生的主观能动性。具体有以教师为主体的课堂教学、习题课等共性化教学环节,也设置了答疑p质疑等教学环节,引导鼓励学生通过实践和自学获取知识。共性化与个性化相结合,既可以起到教师主导作用,也可以满足学生个性学习的需求。

(3) 理论与实验相结合:数据结构课程主要介绍数据的逻辑结构、物理结构以及算法。算法的思想需要通过一种程序设计语言加以描述并在计算机上实现。我们在重视理论教学的同时,也很注重实验课,注重学生灵活应用知识能力的培养。理论与实验相结合,可以使学生更好地理解“数据结构”的思想与概念。

5丰富教学资源

建立本课程网上课堂及在线智能教学系统。网上课堂设计的目的是能够给不同层次、不同需要的学生提供帮助,提高教学质量。根据网络教学环境的要求,

系统主要包括课程概况、师资队伍、教学资源、实验指导、教学录像、课程扩展、课程论坛等多个模块。系统主要具有以下特点:

1) 在线学习。

知识内容结构化,主体结构采用网页形式组织教学内容,以单元、章、节等知识点为中心组织教学,以关键词或标题为线索进行任意的查找。各知识点在整体上搭建框架式结构,思路明晰;在细节上环环相扣,前后关联紧密,便于学生更好地理解和掌握知识要点。

2) 动画演示。

以数据结构部分的讲授为例,这部分内容包含许多的算法,其描述大多数采用类高级语言的形式进行,有些算法无论是时间复杂性或是空间复杂性都比较高,采用动画的形式将算法的执行过程和思想呈现给学生,使学生很容易理解这一过程,再配上教师的解释做旁白,可产生与上机亲身实践和跟踪执行相似的效果。

3) 在线测试。

用数据库对练习题和模拟题进行有效的管理,在学生进入到考核子系统后,能交互式进行试题的选题与答题。当学生提交答卷后,系统又能对答分进行自动评判,并给出相应正确的答案和综合得分。

4) 课程扩展。

为更好地促进教学,本课程在巩固基础知识,提高实践能力的基础上,对学有余力的同学扩展了本课程的内容。引入了卡内基梅隆数据结构教学网站,这是一套全英文系统,上面提供了丰富的工程性题目训练,更加注重数据结构算法在实际中的应用,让学生开阔了思维和眼界;还为学生提供了ACM竞赛以及大连理工大学程序设计竞赛的模拟题库,通过这些略有难度又很新颖的题目进一步提高学生的学习兴趣,培养其解决实际问题的能力。

6结论

在近几年的课程建设实践中,我们的任课教师认真组织教学内容,与实际相结合,积极探索有效的教学方法,利用多媒体技术动态演示复杂数据结构的变化,并补充学生比较感兴趣的知识,拓宽学生的知识面。逐步完善和充实现有课件,做到内容充实,画面生动,具备声像效果,收到了很好的教学效果。作为计算机科学的核心内容,数据结构与算法的理论研究及应用研究一直在不断发展,在以后的工作中要注重研究型教学,鼓励学生从解决问题的角度研究如何设计数据结构与算法,并将学科领域经典研究成果和最新研究成果及时地反应在课程教学中,相信数据结构与算法这门课的教学效果和教学质量在我们持续深入的教学改革中会越来越好。

注:本文受教育部第二类特色专业建设项目――软件工程特色专业建设项目资助。

参考文献:

[1] 严蔚敏,吴伟民. 数据结构[M]. 北京:清华大学出版社,2002.

[2] 殷人昆. 数据结构(用面向对象和C++描述)[M]. 北京:清华大学出版社,2007.

[3] 殷人昆,邓俊辉. 清华大学“数据结构”精品课程建设[J]. 计算机教育,2006(5):20-22.

[4] 钱红兵,唐发根. “算法与数据结构”课程教学体系的建设[J]. 计算机教育,2009(17):65-66.

Development of the Data Structure and Algorithm Core Course

LIU Xinyue, ZHANG Xianchao, YU Hong

(School of Software, Dalian University ofTechnology, Dalian 116620, China)

数据结构与算法范文2

关键词:数据结构;算法;换位思考法;问题求解

数据结构与算法是计算机科学与技术专业的核心基础课程之一,同时,它也是算法分析与设计、操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等专业基础课和专业课的先行课程。本课程主要以抽象数据类型为主线,研究常用数据结构的逻辑结构、存储结构及其所支持的运算操作;研究能够解决实际问题的经典算法;学习基本的算法分析方法。它为学生后续课程的学习以及进行计算机软件的设计和开发打下良好的基础。

1教学过程中存在的问题

数据结构与算法课程是计算机专业教学的难点。在教学过程中,我们发现学生对这门课不仅感到入门困难,而且难于驾驭,其主要表现有以下几点。

1) 高职高专学生的先导知识学习储备不足。由于高职高专的教学以“理论够用”为教学原则,因此,学生掌握基础理论知识的程度无法与本科院校学生相比。例如,数据结构与算法需要学生具备结构体类型和指针的知识,甚至能够掌握内存模型的运行机制,而对于高职高专学生来说,其先导课程C语言程序设计属于非重点或选学内容。

2) 概念过多,不利于高职高专的学生掌握。本课程涉及的基本结构包括顺序表、树、图,以及查找、排序等算法内容。特别是树和图两项内容包含大量概念和理论,其中许多必须掌握的内容使学生产生畏难情绪。

3) 高职高专学生在实践课中没有养成阅读英文文档的习惯。学习编程的最好方法是阅读和查看MSDN,但高职高专的学生英语底子差,不太愿意阅读英文文档,这影响了实践课的教学效果。

从高职高专院校的教师角度来看,存在以下问题。

1) 高职高专院校的老师的教学模式过于单一,较少传授学生解决现实问题的方法。在数据结构教学过程中,高职教师一般将授课重点放在讲授数据的基本结构上,选择的案例只能用于数据结构算法的验证和说明[1]。这种教学模式对高职学生非常不利,因为,仅从基本结构这个单一的角度进行教学,只能使大多数学生在学习过程 “依葫芦画瓢”,一旦遇到问题就束手无策,乃至产生畏难和厌学情绪。很多学生常常觉得教科书的内容与具体的项目设计相距甚远,给人一种无从下手的感觉。在学完数据结构与算法课程后,学生既不能灵活运用所学知识,也难以实现从数据结构基础知识的掌握到实际应用的飞跃,这与高职院校“实用为主”的教学原则不符,也不利于应用型人才的培养。

2) 高职高专院校的老师的教学手段丰富,但是往往不涉及具体问题的分析,以及基于问题提出对应的解决方法,只是一味地追求直观效果。有些老师甚至根本不讲数据结构的抽象表示,在数据结构算法的处理上也不考虑应用场合,而是直接提供代码给学生。当然,这样做似乎对初学者有一定好处,但无助于学生培养正确的思考方法,另外,它让学生只注重实现程序,而不考虑如何进行算法设计以及怎样选择合适的数据结构来表达自己的算法思想。我们认为,在“够用为度”的教学原则下,教师只能在教学内容上进行适当的删减,而不能仅局限于“简单地教,简单地学”。

3) 对于高职高专院校而言,很多老师不具备完整的教学体系思想,不知道如何处理数据结构、算法和实现代码之间的联系和区别。有些老师对课程内容的理解不够深入,特别是没有把理论与实际应用问题联系起来。这势必造成学生不能理解学习数据结构课程的意义,不能形成对课程内容的整体概念,也不知道学习这门课程有什么用,不知道这门课程在专业体系中的位置。对于高职学生而言,数据结构为什么存在?在项目实践中如何灵活应用?这些问题如果不得到解决,那么在高职院校开设这门课程就变得毫无意义。

2教学改革中的几点建议

对于高职高专院校的学生来说,提高他们的学习兴趣至关重要。虽然高职生的基础知识薄弱、学习动力不足、自信心不强,自我管理以及自我约束力较差,但是,他们思想比较活跃,动手能力和社会适应性较强。因此,他们更需要老师耐心、正确的引导。对此,我们可以从以下几个方面进行改进。

2.1激发学生的学习兴趣

“兴趣是最好的老师”。培养学生的兴趣和维持前期的学习热情,并让学生在以后的项目实践中主动运用本门课程中学习到的知识,这是每个高职教师的责任和义务。我们知道,在这门课程中存在很多经典算法,而每一个经典算法的背后都有一个计算机界的传奇人物[2]。例如KMP算法中的D.E.Knuth,最短路径算法中的Dijkstra,等等,他们每个人都有一个传奇人生,上课时,教师可以通过讲述他们对计算机发展所作的突出贡献,鼓励学生,激发学生的学习热情。而在实践课程中,我们主要采用“换位思考法”,锻炼学生独立编程能力。梁肇新在《编程高手箴言》一书中提到:我就是程序,程序就是我。学生在上实践课时,很多程序细节问题都搞不清楚,这严重挫伤了学生的学习积极性。由于这些编程问题不可能在上课时被一一解答,所以,学生只能通过平时积累和应用,逐步提高自己的动手能力。上这门课时,教师要多鼓励学生把自己想象成“编译器”,不要只是简单地把它作为一个工具,而要把我们的编程工具“人性化”,编程过程只是我们在和一个“法官”聊天而已,而这个法官又无比“公正”。如果把自己想象成“编译器”,在学习语法时就可以很好地进行“换位”思考,知道自己需要什么,如何做才能编译和调试成功,学习兴趣也会随之提高。

2.2选取合适的教学内容

高职院校在开设数据结构与算法课程时,考虑到学校和学生的特殊性,总课时一般安排为64个课时,理论和实践各32个课时。内容多、课时少这对矛盾如何解决?如何在比较短的时间内培养学生独立解决问题的能力?这都是值得研究和探讨的问题[3]。

众所周知,本门课程包括表、树、图3种数据结构,而每一种数据结构又包括3个方面的内容――逻辑结构/存储结构/操作实现;还包括两类典型算法――查找/排序。这么多教学内容不可能在一个学期内完全教授给学生,所以,我们对教学内容进行了适当的删减,以便重点突出。在不影响高职院校教学原则的前提下,我们将教学重点放在线性表结构和通过时间复杂度分析选择合适的数据结构这两部分内容上(如图1所示)。对于非线性结构这部分内容,我们着重

讲解概念,具体用法可以留给学生作为课外作业。这种选择可以使学生养成良好的思维习惯和正确的学习方法,以求达到“运用之妙,存乎一心”。

2.3巩固先导课程的基础

在先导课程C语言程序设计中,学生没有系统地学习结构体和指针类型,也没有掌握动态内存分配的知识,所以,在本门课程教学中必须首先弥补以前的不足,但我们又面临新的问题,即系统学习与学时数不足的矛盾。对此,我们有如下建议:讲解在运行期时程序在内存中的分布区域,以及各个内存区的作用就足够学生理解本课程知识(如图2所示)。图2中模型[4]的讲解适合贯穿整个实践课程的教学过程,把这个模型讲深讲透,让学生彻底掌握,有利于高职学生独立思考和解决问题能力的培养。这个程序内存分布模型可以很好地满足高职院校的教学目标,让学生在具备较强编码和调试能力的同时,又具备解决实际问题的思想和技术。

2.4传统和现代教学手段相结合

高职院校一般硬件设施齐全,教学条件优越,给教师和学生提供了现代化的教学环境。不可否认,现代教学手段具有生动、直观和信息量大等特点,对于提高教学效果有促进作用,例如,多媒体教学课件(PPT课件和Flas等)和丰富的网络资源,等等。从本人多年的教学实践来看,现代媒体对提高某些课程的教学效果作用显著,但对于理论性很强的数据结构等课程而言,只能起到辅助作用。事实上,美国数据结构教学仍以讲授为主[5],所以,传统教育手段对本门课程不可或缺。在本门课程中,讲解三种数据结构的概念和性质时,可以多用PPT等现代教学手段;讲解算法的动态变化时,多用黑板+粉笔头的方式演示其动态变化过程[6-8]。

2.5问题驱动教学法

福州大学吴英杰等老师[9]在该校引入面向问题的教学模式,取得了良好的效果。在高职院校采用该教学模式,选择的问题必须具有代表意义,足够简单而且能够帮助学生快速入门。从图3可知,在传统的教学模式下,教师只是按照“逻辑结构存储结构编程实现”的流程讲解,学生并不能理解数据结构的意义。如果采用问题驱动的教学方法,教师必须按照“问题定义算法设计选择数据结构”的流程讲解,这种讲解方法可以帮助学生很快抓住数据结构的精髓,了解算法与数据结构之间的关系。在教学实践中,我们选择了3个典型问题:最大子序列和问题、二分搜索问题和快速排序问题。选择这3个问题的根本原因在于它们只需要用顺序表或数组就可以实现;第1个问题的引入在于其历史发展过程符合我们的思维习惯,就是一个不断深入理解问题,不断优化的过程;第2个问题的引入在于90%的计算机专家不能在2小时内写出完全正确的二分搜索算法;第3个问题的引入在于快速排序算法的实现只能选择顺序表或数组实现,而不能选择链表来实现。通过上面3个典型算法的实践课,高职学生能够很快地掌握验证和优化程序以及选择合适数据结构实现算法思想等能力。

2.6调整实践内容,提高学生能力

如果实践课只是使用枯燥的控制台程序界面,许多学生很快就会失去学习的兴趣和钻研的动力。实践课应该生动、活泼、有趣,因此,我们在实践课中引入简单游戏开发项目,例如走迷宫和5子棋等游戏。这些游戏都用到了顺序表等简单的数据结构和查找等算法知识,完全满足高职院校的教学要求。在教学实践中,我们一般提供游戏的整体框架代码,要求学生独立完成算法设计和代码实现。我们之所以这样做,一是因为实践课只有32个课时,没必要让学生设计软件的整体框架;二是因为不能让学生产生“程序=软件”的错误思想。

2.7改变考核方式

数据结构与算法课程一般采用最终卷面成绩的考核方式。根据高职院校的教学原则,应加大实践课在最终成绩的比重。通过实践,我们发现阶段性成果

的展示和分阶段打分在教学中有良好的教学效果,通过这种考核方法,在平时即对学生从严要求,高职学生的综合能力得到提高,潜力也能得到充分挖掘。

3结语

作为一所高职院校,我院在数据结构与算法教学改革与实践中取得了一系列丰硕的成果。我院ACM- ICPC代表队在2007、2008、2009年度亚洲区现场赛中曾获得优胜奖,2007、2008年四川省大学生程序设计大赛中曾获得二三等奖。同时,计算机科学与技术系的普通学生的出勤率和及格率得到提升,学习兴趣也有所提高。

数据结构与算法课程尽管难教难学,但如果采用正确有效的教学方法+生动活泼的学习方式+严格管理的考核方式,仍然可以取得良好的效果。

参考文献:

[1] 周泽辉. 浅谈高职学院数据结构课程的算法驱动教学[J]. 科教文汇(中旬刊),2009(3):121-122.

[2] 苏前敏. 计算机科学技术史的独特教育功能探讨[J]. 上海工程技术大学教育研究,2007(1):20-23.

[3] 卢洁,冯家勋. 理工科课程教学整体改革探索[J]. 高等工程教育研究,2009(2):137-139.

[4] 钱能. C++程序设计教程[M]. 2版. 北京:清华大学出版社,2005:145-149.

[5] 严莉,杨宗凯,刘三 . 关于高校教师与网络教学的研究综述[J]. 电化教育研究,2009(4):39-42.

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

[7] 张桂芬,李海滨. 数据结构实验教学的改革与探索[J]. 高教论坛,2008(3):103-104.

[8] 周玉林,赖鑫生. 数据结构教改中的问题研究与探讨[J]. 上饶师范学院学报,2008(3):84-88.

[9] 吴英杰,王一蕾,王晓东. 面向问题求解的实践教学模式:算法与数据结构实践教学改革[J]. 计算机教育,2007(7):29-31.

Suggestions of Teaching and Learning Data Structures and Algorithms on the College

FAN Jun-qing1, CHEN Wen-fei2, XU Xue-feng3, YU Xin-qiao3, HOU Zong-hao3

(1. School of Computer, China University of Geosciences, Wuhan 430074, China; 2.Department of Computer Science, Wuhan

University, Wuhan 430072, China; 3.Department of Computer Science, Chengdu Neusoft Vocational Institute of Information

Technology, Dujiangyan 611844, China)

数据结构与算法范文3

关键词:应用转型;算法与数据结构;任务驱动;教学改革

中图分类号:TP312 文献标识码:A

教育部于2013年,提出一项重大的改革,即计划将大约600所地方性高等本科院校转型为应用型本科院校,2014年被列入教育部当年工作要点[1]。在高等院校向应用型本科转型的形势下,高校教学面临着新的机遇和挑战。商洛学院作为陕西省首批应用转型试点高校,实现毕业时与社会、企业零距离对接,完成高等学校为社会输送有用人才的最终目标[2]。

算法与数据结构课程是计算机相关专业的专业基础课程,是设计各种应用软件的重要基础,是我校电子信息科学与技术专业课程体系中的核心专业课程。本文主要针对当前教学过程的问题,进行探讨研究,提出一种新的教学模式,达到教与学的有机结合[3]。

一、课程教学改革的必要性与紧迫性

算法与数据结构课程主要涵盖数据结构的阐述分析、应用以及经典算法的应用,主体内容比较抽象,难以直观描述,掌握相对困难。此外,电子信息科学与技术专业的学生计算机基础知识薄弱,电子和计算机专业之间培养差异,导致电子信息科学与技术专业学生学习更加困难。随着互联网行业的迅猛发展,网络教学资源的日渐丰富以及算法与数据结构课程地位的愈加重要,传统教学模式中的问题日益突出[4]。

(一)数据结构课程自身特点

(1)高度抽象化,需要扎实的数理逻辑、图论、高等数学、拓扑几何、离散数学和数值分析等理论基础;(2)内容涵盖面广泛丰富。(3)隐含的技术方法丰富,各部分问题解决方式种类多样、没有固定解法、灵活性强。

(二)应用转型下发展算法与数据结构课程的教学目标

(1)重视算法与数据结构基础理论知识学习,理解数据逻辑、数据存储及数据运算等基本概念术语;(2)从实际问题出发,培养学生运用算法与数据结构的基本理论知识分析解决实际问题的能力;(3)重视学生实践动手能力和工程项目思想的培养。

二、传统教学过程中现存问题

根据长期从事算法与数据结构的教学过程,发现当前算法与数据结构教学中主要存在以下一些问题。

(一)难理解:本课程需要较高的逻辑思维和抽象思维能力,学生联系实际比较困难这一问题始终萦绕在整个教学过程中。

(二)难把控:电子信息科学与技术专业本科二年级学生,其计算机基础、建模能力、软件工程的思想薄弱。

(三)难实现:体现在遇到问题不知如何数据结构类型;面对具体算法不清楚如何进行优化;书本上的程序不能直接运行,学生自主学习有一定困难[5]。

(四)难应用:数据结构相关实验的课程设计主要采用高级程序语言(如C,C++)等来编写,我校电科专业学生对该程序语言的掌握程度直接影响到数据结构课程的实际应用情况。

三、教学模式改革与探索

针对现有传统教学中存在的问题,为了提高学生算法与数据结构应用能力,需完善并加强实践教学内容。

(一)调整课程体系

当前教学是依据传统的知识理论体系顺序授课:然而当前应用转型环境下这种模式已难以适应。根据学生学习认知一般规律及我校电子信息科学与技术专业自身特点,在传统教学基础上进一步优化课程培养体系,针对每一知识点配备相应实践项目,将理论与实践有机结合。

(二)优化教学手段

传统课堂教学主要以教师粉笔板书讲授为主,不能用动态直观的方式讲解抽象知识,难以激发学生学习热情,无法达到课题教学目的。

1.将微课引入教学中

借助微课这一新兴教学模式,将算法与数据结构课程重点、难点设计开发成网络视频资源,供学生课后自主学习。我们将算法与数据结构中每一个知识点的内容,制作成微教案、微视频、微练习、微点评、微互动等传至课程网络中心。

2.将案例驱动引入教学中

案例驱动的算法与数据结构教学方法,是将教学案例引入到课程教学过程中。教师通过一个完整案例的分析解决,借助板书、多媒体等手段与学生互动,达到培养学生发现问题、分析问题、解决问题的能力。

3.加强课外创新实践活动

算法与数据结构课程需要增加学生的课外创新实践活动。具体通过以下方式开展:(1)组建算法和数据结构学习创新小组,定期举行学习经验研讨交流活动,分享实际设计过程的困难、解决途径和最新成果;(2)定期组织以算法为核心竞赛活动,(3)鼓励学生申报研究学习与科技创新性实验项目,组织参加省市级或国家级各类学科竞赛。

3.改革课程考核模式

传统实验课的课程,实验动手部分只占10%,很多学生把重点放在报告书写上,为适应应用转型发展,加强学生实践能力,课程考核提出以下改革方案:(1)平时(考勤+开卷随堂测试+课堂表现),占学期总成绩的10%;(2)课程上机实验(源程序+实验报告)30%;(3)期末卷面成绩60%;(4)鼓钛生到相关优秀企业进行培训实习

四、结语

针对当前电子信息科学与技术专业算法与数据结构教学模式中培养目标及存在的主要问题,在转向应用型本科院校新形势下,为培养创新型、应用型人才,提高学生逻辑思维、编程运算等能力,本文主要从课程体系调整、教学手段优化、创新实践教学加强、考核模式改革共4个方面都出发,以提高算法和数据结构应用能力为教学目标,结合工程项目与市场实际需求,指导并加强实践教学。

参考文献:

[1]陶影,张斌.数据结构实验教学应重视算法设计与分析能力的培养[J].实验室研究与探索,2008,12:119-122.

[2]张铭,赵海燕,王腾蛟,宋国杰,高军.北京大学“数据结构与算法”教学设计[J].计算机教育,2008,20:5-11.

[3]唐剑梅,谭平.《数据结构与算法设计实训》课程教学研究[J].软件导刊,2016,01:193-194.

[4]李治军,廖明宏,张岩.数据结构与算法课程设计教学模式的探讨[J].计算机教育,2006,02:54-56.

数据结构与算法范文4

关键词:网络精品课程;远程教育;网络资源建设

中图分类号:G642文献标识码:B

1引言

实施网络教育精品课程建设对于促进优质网络教育资源的建设和共享,减少低层次重复开发,促进网络教学改革和创新,提升网络教育的社会地位等都具有十分重要的意义。2007年4月,教育部颁发了《关于2007年度国家精品课程申报工作的通知》(教高厅[2007]25 号),把网络教育精品课程纳入到国家精品课程建设体系。网络教育精品课程是具有一流的教师队伍、一流的教学内容、一流的教学方法、一流的资源和教材、一流的教学管理和支持服务的高水平网络课程。因此,网络精品课程的建设是“高等学校教学质量和教学改革工程”重要内容之一。本文针对网络教育的特殊性,从网络资源建设、师资队伍建设、教学和学习活动设计以及网络服务支持等几方面,介绍了国家级网络教育精品课程“数据结构与算法设计”的建设与实践。

2针对网络教育的特殊性,构建资源丰富的网络教学平台

网络教育是指远程网络教育。这种教育不同于一般的在校面授教育,其教育的对象不像全日制学生那样有大块的学习时间,而是利用零散的、业余的时间学习,而且学生的基础也不一样。他们更多的是为了学习实用的知识帮助他们解决工作中的问题。在学习的过程中还会有工作和学习的矛盾、家庭负担等影响因素。因此,远程教育课程教学设计的总体原则应该是,所教授知识有充分的实用价值和可实践性,适合于在职从业人员业余学习和终身学习,满足远程教育对象最紧迫的工作和应用需要。而在教学内容的选取上,则应采用教学与应用相结合的方式,将课程的基础性的理论与综合应用知识相结合,优化课程知识内容体系,达到应用型人才培养目标。

远程教育师生时空分离导致远程学习中学与教的时空分离,这是远程教育的重要特征之一。因此,要构建资源丰富的网络教学平台,将教学内容与学习资源整合起来,以实现远程教育。

北京理工大学现代远程教育学院成立于2000年,是经教育部2000年批准的15所现代远程教育试点高校之一。在发展和建设中,逐步形成了以人为本的教育理念。在实施远程教育过程中,加强对教学过程管理,并不断完善教育质量管理体系。“数据结构与算法设计”课程作为计算机基础教学基本要求的第三层次课程,2003年开始了网络教学和网络辅助教学。

“数据结构与算法设计”网络教学平台充分利用了多种媒体技术,构建了多种媒体资源优势互补的、支撑网络教学的立体化资源,风格独特,特色鲜明,实现了以“学生为中心,教师为主导”的教育思想。在选取教学内容和学习资源的建设时依据以下四个原则:第一,以学生为中心的原则,按照业余学习特点进行教学设计;第二,围绕网络教育应用型人才培养目标,选择适合远程教育对象学习的教学内容组织教学;第三,紧扣时代和学科最前沿,为学生提供多种形式的学习资源的原则;第四,紧扣网络教育特点和要求,选择适当课程授课方式。在学习资源建设方面,根据学生的学习条件和自身基础的差异性,采用多种媒体(文字、音频、视频、模拟、仿真、动画等)技术的应用呈现课程内容,为学生自主学习提供最大方便。我们编写并开发了该课程的教材、实验指导书、视频、电子教案、流媒体课件、Flas、实验案例、素材库、网络课件等,形成了丰富的立体化的教学资源,并将这些资源放在教学网站上供教师和学生浏览。在媒体设计上一体化,突出各自优势、形成优势互补。除具备课程所需的课件外,还设置了诸如实时交互、网上答疑、远程网站、自学导读、电子阅览等网络教育可以实现的现代教学形式。

课程的教学平台是立体化的,在设计上既体现了基于建构主义理论的教师主导型,引领型的价值理念,又给予学生自主选择、自主讨论、自我测试的平台空间,实现了教师主导引领和学生自主选择的统一。通过导学,学生可以快速掌握网络学习的方法,利用教学平台进行师生交互。同时,我们还创建了一个完整的教学支持服务体系,可以合理、有效地组织每个教学环节,注重教学过程和教学质量的跟踪管理,以确保应有的教学成效,培养了学生网络环境下的自主学习能力与实践能力,达到培养优秀应用型人才的目标。

3针对网络教育的特点,建设师资队伍

在网络教育中,师生分离的特征决定了师生之间的交流不方便、不及时,教师从学生身上获得的信息很少,相反也是如此。这就从客观上决定了网络教学中的师生需要建立更多同步或异步的交流途径,以弥补师生交互的缺失,而教师则需要投入大量的时间和精力与学生进行交流,如解答学生疑问,指导学习过程,组织网上教学活动等。

在现代远程教育中,教师通常由学校教师兼任,教师的学校教学和网络教学之间经常发生矛盾。为了解决这些问题,我们在师资队伍建设时注意了各种不同类型人员的配备,包括了主讲教师、教学辅导教师、班主任以及网络维护技术人员。其中,主讲教师主要负责课程的学术质量,包括:制定课程目标,设计教学大纲,组织教学内容,完成教学设计,录制课程讲解,设计考试试题等;辅导教师主要负责教学过程的指导与支持,包括:课程信息,组织教学活动,指导学习过程,答疑讨论,布置和批阅作业,批阅试卷等;班主任则负责学生的管理工作,随时在网上和学生沟通,一方面增加了学生的归属感,另一方面能及时把握学生各方面的动态,及时解决他们的问题,对促进学生持续、有效的学习,降低辍学率有很大的帮助。网络维护技术人员则全天候为学生提供技术支持服务,维护与建设网络教学资源,确保系统平台正常运行。

经过几年的建设,目前我们已经形成了一支稳定的教师队伍。在完善的网络教学制度管理下,促进了学生个性化的自主学习,规范学生个性化自主学习的行为,引导学生按照开放教育的要求学习,并保证学生个性化自主学习的质量。

4网络资源建设中的教学设计与学习活动设计

在网络教育中,网络教学资源是学生进行自主学习、获得知识和技能的基本途径。远程学习者与本科生在自身特征上存在很大不同,需要建立导学策略和组织学习活动,引导和督促其完成学业。通过网络教学资源,应该能为学生系统化呈现教学内容,促进学生对课程的理解,引导学生进行学习。因此,我们在课程的网络教学资源建设时,精心进行了教学设计,主要包括以下几个方面:

(1) 学习内容设计:选择适应应用型人才培养的课程内容;打破课程内容的线性章节结构,设计出适合学生自主学习的内容组织结构。

(2) 教学策略设计:设计教学内容的呈现方式和使用方式,如文字呈现、教师讲解、动画演示、效果对比、模拟操作等。

(3) 动机策略设计:设计富有激励性的学习环境,激发和维持学生的学习动机,如技术的新颖性、界面的艺术性、反馈语的归因导向、学习伙伴的伴学等。

(4) 学习指导设计:设计学习指导的内容和呈现策略,包括学习的重点、难点、学习方法的建议等。

(5) 学习评价设计:设计学生自我评价的内容和评价策略,如自测练习、模拟考试、学习游戏等。

(6) 学习资源设计:设计并提供与教学内容紧密相关的扩展学习资源。

同时为满足学习者的需要,学习活动则设计了以下一些模块:

(1)“课程概况”,包括“课程介绍”、“课程大纲”、“考试大纲”和“参考资源”等模块,为学生提供学习的准备性材料。

(2)“自学周历”模块为学生的学习时间和活动安排提供指导。

(3)“教学互动”中“主讲教师”、“课程论坛”、“小组论坛”、“语音答疑”、“留言信息”、“问题解答”等模块是学生与老师和同学进行交流讨论学习的平台。

(4)“教学互动”中“学习进度”、“在线作业”等模块,帮助学员把握自己的学习进度以完成学习任务。

(5) 每一章的学习中,给学生提供了“学前指导”、“内容讲解”、“总结评价”和“扩展学习”模块。“学前指导”为学生学习章的内容提供准备性的材料,使学生明确学习的目标、方法、重点难点等;“内容讲解”是学生学习的主要内容,由老师进行讲授;“总结评价”让学生及时地评价自己对内容的学习情况及效果;“扩展学习”为学生提供更多的学习资料,满足学生的个性化学习需求。

(6)“原理动画”模块将课程中比较难以掌握的学习知识点内容,以动画和具体操作的方式呈现,帮助学生更好地理解学习内容。

(7)“概念速查”为学生学习提供一些辅的工具。

(8)“参考资源”模块给学生以广博的辅助材料,拓展学生的理论视野,增强学生的学习兴趣和知识面。

上述的教学设计和学习活动设计,在课程的远程教学方面起到了重要的作用。

5网络支持服务

远程教育不仅要为学生提供教学内容和资源、组织学习活动,还要提供强大的学习支持服务。这不仅包括提供关于课程内容答疑、资源、实践等与学习有关的服务,而且包括提供与教学管理及其他相关的支持服务。

为了网络教育的顺利开展,在本课程在网络资源建设中,提供了包括授课、课程发送、学习辅导、学习资料提供、作业批改和意见反馈、考试实施和成绩管理,技术培训等支持服务内容。

授课过程中,注重培养学生的自主学习、协作学习和探究性学习的能力,包括对资料的收集、整理、分析、判断、评价、综合等能力。

通过在线课程基本信息和课程导学完成了“学习目标、学习要求、学习内容、学习模式、学习方法、考核方式、评价标准、评价内容”等课程发送功能。

在学习过程中提供“语音答疑”,使学生能跟老师实时地交流学习中问题;在“主讲教师”、“小组论坛”、“班级论坛”等教学互动的模块中,可以通过发帖提问、跟帖学习的方式,让师生共同参与,讨论学习中出现的问题,引导学生积极思考,逐步提高;另外,学生还可以通过“友情链接”进入到与课程相关的资源网站。

完成课程学习后通过“总结评价”、“自测习题”、“模拟试题”等模块,帮助学生总结所学的知识,并对学习效果进行评价;通过“扩展学习”、“参考资源”等模块,帮助学生拓宽学科的视野,把握学科前景。

提供的学习资源具体包括:静态资源和动态资源。教学视频、教学讲义、教学实验录像、参考书目、历年考卷、在线习题、案例讨论、在线答疑、网络课堂、课程论坛、优秀作业等等。

考试实施和成绩管理,具体包括“编制考卷、施测、评阅考卷、成绩查询”,考卷的编制,由教学办公室组织,任课教师具体完成。考试工作的开展,由学院统一组织,各教学点配合,统一按北京理工大学考试管理制度进行实施。教师阅卷后,在线登录成绩,学生可在线查询成绩。

专职技术人员全天候为学生提供技术支持服务。北京理工大学现代远程教育学院还设立了技术支持免费网络电话,用来提供关于网络学习、操作指南、常见问题的支持。

另外,北京理工大学远程教育学院坚持定期开展教学效果评价和实时跟踪评价。建立了包括教学内容、教学手段、教学过程、媒体应用、考试管理等方面的多种评价措施,对教学效果进行全面评估。

对学习过程的监控,则利用教学管理平台,统计学生网上资源使用情况和教师对学生开展支持学习服务的情况。

经过几年的建设,本课程的学习支持服务系统全部实现了网络化,极大提高了服务的效率和水平。

6结论

“数据结构与算法设计”网络教育精品课程的建设,主要是针对远程教育的特性进行的。通过对“一流的教师队伍、一流的教学内容、一流的教学方法、一流的资源和教材、一流的教学管理和支持服务”的建设,体现了一流网络教学的特点,体现应用型人才培养目标,符合科学性、先进性及网络教育规律和教学改革的方向,适合于在职从业人员和业余学习和终身学习。通过现代教育技术、方法和手段的运用,到位的学习支持服务,发挥着示范、辐射和共享的作用。“数据结构与算法设计”2008年被评为国家级网络教育精品课程。该课程所建设的网络教学资源始终开放,这些资源已经与北京理工大学该门课程的本科教学共享。课程资源网址为/2008/ public/。课程资源今后将会不断地更新维护,以保障该课程的可持续建设与发展。

参考文献:

[1] 教育部办公厅. 关于2007年度国家精品课程申报工作的通知(高教厅函[2007]25 号)[EB/OL]. jpkcnet. com/new/ zhengce/default.asp.

[2] 教育部高教司. 关于2007年度网络教育精品课程建设与申报工作的通知(教高司函[2007]103 号)[EB/OL]. /new/zhengce/Announces_detail.asp?Announces_ID=98.

数据结构与算法范文5

关键词:数据结构;知识点;课程体系;程序设计

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2015)27-0125-03

一、引言

《数据结构》一直被认为是计算机、信息管理与信息系统、电子商务等专业重要的基础课程之一。该课程的知识涉及到多学科与多专业,掌握该课程将对学生后续课程的学习起到重要的知识链接作用。数据结构课程的主要知识点包括:①线性表的顺序存储结构与链式存储结构及对应算法;②栈的顺序存储与链式结构及对应算法;③队列的顺序存储与链式结构及对应算法;④串的顺序与链式存储结构及对应算法;⑤数组和广义表的存储结构及对应算法;⑥树和二叉树的顺序与链式存储结构及对应算法;⑦查找方法;⑧排序方法等。为学好这门课程,必须依据课程体系,明确数据结构课程中的概念与术语,灵活运用这些知识点,以达到扎实掌握该课程难点的目的。

二、数据结构的先修后继课程及知识体系结构

1.掌握数据结构课程的先修与后继课程。以信息管理与信息系统专业课程体系为例,清晰了解和掌握与数据结构相关联的先修与后继课程(如图1所示)。先修课程主要有:计算机信息处理概论、汇编语言程序设计、高级语言程序设计(C、C++、Java等)、计算机组成原理、离散数学、运筹学、图论等。后续课程主要有:数据库原理、信息系统开发方法、编译原理、信息检索、数据仓库与数据挖掘、操作系统、信息集成技术及应用、电子商务与物流信息管理、大数据分析等相关课程。

2.数据结构课程实施框架体系的创新模式。围绕如下页图2所示的数据结构课程实施框架体系的创新模式讲授数据结构课程。明确数据结构课程的知识体系和主要知识点。该模式的优势在于:能够使学生快速掌握数据结构的概念、术语,客观世界问题对应在计算机外部的表示方式,在计算机内部的存储方式,以及如何对它们进行操作(运算);除此之外,还能够严格按照数据结构课程的各个知识点进行梳理,清楚地归纳出数据结构与其他相关课程的关联关系。

三、运用归纳总结方法对数据结构课程的知识点进行分类

以严蔚敏教授出版的数据结构经典教材为例,将数据结构的知识点进行分类:第一类将第二章“线性表”、第三章“栈与队列”、第四章“串”、第五章“广义表”划分为数据的线性结构部分;第二类将第六章“树与二叉树”、第七章“图”划分为数据的非线性结构部分。

将自然界的线性问题对应的数据结构实例例举出来,形成数据结构问题的感性和直观的认识;然后再由浅入深地掌握其相关的知识点。例如:①为使管理人员快速找到客户相关信息,用计算机处理该业务应首先确定所使用的数据结构形式,如果希望将电话号码作为关键字,姓名的拼音作为次关键字,那么,会容易地查找出“陈”性拼音顺序排在“周”性之前的线性关系。②到银行办理业务对应的数据结构形式是队列模式,即满足“先来先服务,后来后服务”的服务规律。③对字符串进行存储与处理时,其存储结构具有紧凑和非紧凑形式,因此需按照形式的不同,进行分类处理后,再对其进行操作(如:插入、删除、查找、模式串匹配等)。④到图书馆借书时,图书管理员检索的模式与图书的存放形式有关。

与线性结构相比,非线性结构要复杂得多,即线性表的数据结构中数据元素的逻辑结构与物理结构之间存在一一对应的顺序关系;而非线性的数据结构中数据元素的逻辑结构与物理结构之间不存在一一对应的顺序关系,它们之间的顺序是任意的,也就是说非线性的数据结构中数据元素之间不存在前驱和后继的顺序关系,为使初学者掌握其存储结构对应的操作等相关知识点,必须将数据结构教科书中关于树与图的遍历进行深入而细腻的讲授。以二叉树的遍历问题为例,说明非线性结构应该着重讲授的知识点与教学方式。一般遍历某二叉树的原则是:先确定树根,然后按照树的递归原则进行先序、中序和后序等遍历,下图3所示。从三种遍历的序列可以看出,其每种遍历的结果序列都有其唯一的前驱和后继结点。这个规律说明一个道理:任何的非线性结构的结点元素都可以通过先确定遍历的名称,然后通过遍历方便地对其进行访问,比如:在前序遍历的序列“-+a*b-cd/ef”仿照线性表的定义找出它们之间的前驱与后继之间的关系;另外,同样中序和后继的遍历结果也可以仿照线性表的定义找出它们之间的前驱与后继之间的关系。同时,注意对学生发散性思维的培养,可通过三种遍历结果,进一步解释难以理解的概念推理,推论一:若已知一棵二叉树的前序序列和中序序列,则可以唯一地确定这棵二叉树;推论二:若已知一棵二叉树的后序序列和中序序列,则也可以唯一地确定这棵二叉树。在讲授该本课程知识点的同时,应考虑对后继课程的铺垫与衔接,上述三种遍历结果,对后续《编译原理》课程的前缀码、中缀码、后缀码等概念的理解与掌握将起到重要作用。

四、运用灵活的教学方式讲授难点章节

由于数据结构课程设计到多学科(专业)知识点,因此,教与学的过程中,难免存在难点、“瓶颈”问题和难以理解的算法。为解决此问题,在教学中应注重选用具有代表性的例子,如:在第七章的许多工程类例子与运筹学的例子非常相似,因此,在讲授此章节时,注重教材例子与运筹学学习的重点,但不同专业基础课程的侧重点不同。

1.非线性数据结构的讲授方法。以第七章为例,该章的相关知识内容有:图论、数据的逻辑结构及其对应的物理结构、算法实现的技巧与方法、优化问题、非线性问题的映射方法。主要存在如下难点:①非线性问题的逻辑表示方法。根据工程类例子的实际需求,找出该问题的逻辑表示方法是解决问题的核心。如:将符合多种方案选择的工程类的工序问题(如:排课问题、具有先后时间次序的问题),运用有向图的知识点将该问题表示清晰;应该标明该数据元素属于邻接表还是顺序存储形式。②非线性问题的物理表示方法。通过问题的逻辑表示方法可以将工程类的工序问题转换成有向图的存储方式,然后再选择图的存储结构,如:数组(顺序)存储、邻接表(链式)存储等方式。③如何编制实现解决非线性问题的算法(程序)。上述的逻辑结构确定了之后,再根据实际问题的要求进行实现程序的核心部分即算法的编制工作,当算法太复杂时,则先设计算法流程图然后再编写实现算法的程序。

2.非线性数据结构的上机实践方法。最为有效的方法是选择学生日常生活中与工程类算法处理流程相近的例子。如在拓扑排序的上机实践选择的题目是给某专业课程进行排序,这个例子的选课过程正好符合工程类工序(周期)施工排序的案例;设计报文或字符编码时,按照第六章中的哈弗曼树的存储结构对报文进行编码;选择顺序线性表的上机例子是在一张学生登记表中进行插入和删除运算;选择链式线性表的上机例子是在一张按照拼音顺序进行插入和删除运算的线性表。

五、阅读程序的技巧与必备知识

数据结构的大量算法都要靠其对应的程序来验证,那么,如何针对数据结构经典算法来编程并且阅读这些经典的算法(程序)呢?这也是学好数据结构这门课程的关键。

1.让学生通过阅读程序,了解如何科学选取一个好的程序(算法)。由于程序是依靠“算法+数据结构”实现的,对一个实际问题来说,可以有不同的程序来实现。仅以一个简单的例子说明,如:运用计算机进行n的平方计算,有3种方法:n的平方=n n;n的平方=1+3+…+2n-1;高级语言自带的求平方函数,如double pow(n,2)。上述算法一个采用乘法,一个采用加法,一个是高级语言自带的,究竟哪种方法好呢?主要还是看其运算精度、算法的复杂度和空间复杂度等综合指标。

2.让学生通过阅读程序,了解和掌握相关知识点。应补充程序设计分类的相关知识。程序包括:直接程序设计,条件控制的程序,循环控制的程序(计数器控制的循环结构程序的算法、条件控制的循环结构程序的算法、变量控制的循环结构程序的算法)。还应该向学生介绍算法转换为运行程序的经验,如:数据的初始化如何处理;程序中的循环计数器与判断条件以及检验结果如何检验;递归程序中的出口条件判断问题;逻辑变量、精度、机器零、数值零、文本非结构化等归一问题。

3.快速阅读程序的必备知识。按照数据结构的课程要求,必须在读懂经典算法的基础上,才能够编制一个逻辑结构严谨的程序。但是,在教学中发现,有的学生学习方法不当,导致阅读程序的能力低而不能系统掌握数据结构课程的知识点。为了解决这一“瓶颈”问题,在讲授数据结构第一章绪论内容中,增加了程序设计方法、编制算法流程图的标准与规定、算法与程序的区分、如何选用大O来计算算法的时间复杂度和空间复杂度等知识点。递归程序的阅读是数据结构中较难掌握的内容。为让学生顺利阅读递归程序,必须在阅读递归算法之前,补充相关的知识,如:计算机原理“中断”的概念;程序设计中的过程调用的步骤和阅读方法;递归程序本身的特点,以及递归过程与一般过程的区别等。

六、小结

数据结构课程是计算机相关专业重要的基础课程之一,但课程学习难度较大,为提高该课程的教学质量和教学效果,本文梳理了数据结构的先修后继课程,构建了课程的知识体系结构,提炼出数据结构知识点分类的线性与非线性两条主线,强调将理论学习与工程实践的有机结合,提出实现程序设计与具备阅读程序的技巧是解决课程难点的重要手段。

参考文献:

[1]严蔚敏,吴伟民.数据结构[M].北京:清华大学出版社,2011.

[2]陈燕,等.数据结构[M].北京:科学出版社,2014.

数据结构与算法范文6

关键词关键词:数据结构;算法;程序设计

中图分类号:TP3-0文献标识码:A文章编号文章编号:16727800(2013)011002202

0引言

《数据结构》不仅是计算机各专业的一门重要的专业基础课,而且是其它理工专业的热门选修课,在整个课程体系中处于承上启下的核心地位。数据结构这门课程旨在介绍各种重要的数据结构及有关算法,使学生对数据结构有全面的认识并能熟练运用于程序设计,为今后从事科研和开发打下良好的基础。这门课要求学生掌握数据结构的概念及有关算法,如线性表、数组、树、图、排序、查找、文件等,并能运用这些常用的算法去解决一些实际问题,为其它专业课提供程序设计基础。

通过《数据结构》的学习,使学生了解数据对象的特性,学会数据组织的方法和把现实世界中的问题在计算机内部表示的方法,以培养学生良好的程序设计技能,并初步掌握算法的时间和空间复杂度的分析技巧,以便在实际的工作中,能根据工作中的数据对象特性,选择适当的数据结构和存储结构以及相应的算法。同时使学生了解本课程及内容在计算机科学中的应用和地位,为编译原理、操作系统、数据库原理等后续专业课的学习打下坚实的理论基础和实践基础。

1《数据结构》难学原因

很多同学都觉得学好《数据结构》很难,以笔者的经验分析原因如下:

(1)大多数学校《数据结构》课程是安排在C语言程序设计之后,而C语言虽然相对而言是比较简单的计算机语言,但作为一门入门语言,能够学好的同学本身就不多,学精通的就更少了。特别是结构体、指针以及函数的应用,而《数据结构》中都是用的结构体数组、指针,而且都是以函数形式出现的。对于抽象的数据存储结构、消化算法,将算法转化为C语言函数,并要编写出运行该函数的主程序,这无疑是摆在学生面前的第一道难关。

如果C语言的基础没打牢固,学习数据结构当然就会觉得很难。

(2)《数据结构》中的算法较多,在数据结构的教学中,很多学生反映算法多,而且其中的部分算法非常不容易理解。对于一个算法,我们首先要了解它的思想,然后分析它的概要,接下来再考虑细节,然后读代码,要花很长时间才能彻底搞清楚一个算法。总之,学生要多下功夫,往往这个算法刚理解得差不多了,又来了下一个算法。比如讲到图这种数据结构时,图的深度遍历算法、图的广度遍历算法、生成树算法接踵而来,学生要学好,只有刻苦学习。

(3)学生掌握了算法,还要将算法转化为程序代码,再写出主函数到调试运行,需要很扎实的程序设计功底,这要求学生需掌握好某种程序设计语言(如C语言)才能做得到。因为实践中的问题往往比平时的习题要复杂得多。实践使学生所学的书本知识“活”起来,起到深化理解和灵活掌握教学内容的目的。由于上述几点原因,致使学生学习《数据结构》的难度变大。

2学好《数据结构》方法

《数据结构》是计算机课程中的一门专业基础课,但它又有着不同于其它一些基础课的特点,在于它有很强的综合性,不仅仅涉及计算机软件研究,包括“操作系统”、“编译原理”等,还与计算机硬件有着相当大的关系,从编码理论到数据存储都离不开数据结构。因此可以说,《数据结构》是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。但是由于课程内容繁多,许多内容有着相当的难度。所以学好它并不是一件很容易的事情。那么,如何才能学好《数据结构》呢?

(1)立足课本。学好课本上的理论知识。《数据结构》不是一种计算机语言,不会介绍新的关键词,而是通过学习可以高效地组织数据,设计出良好的算法。学习这门课,要熟悉对算法思想的一些描述手段,包括文字描述、图形描述和计算机语言描述等。因此,计算机语言基础是必须的,因为它提供了一种重要的算法思想描述手段——机器可识别的语言描述。

(2)抽象问题具体化 。《数据结构》的一大特点是比较抽象,因此学生较难理解,所以要想办法把抽象的问题具体化,一旦问题具体化了,学生理解起来就相对容易。例如本课程一开始就介绍了4种基本的逻辑结构:①集合结构:实体间除了“属于同一个集合”的关系外,再没有其它的关系;②线性结构:实体间除了“属于同一个集合”外,还有一对一的关系;③树型结构:实体间有一对多的关系;④图型结构:实体间存在多对多的关系。这4种抽象的逻辑结构形式是人们通过分析研究大量的实际问题而抽象出来的数据结构特性,很多同学很难理解,因此,可以先从实例开始讨论用计算机解决具体问题的各个步骤:①提取与此问题相关的数据信息并分析数据特性;②把该问题中的各种数据按某种方式存储在计算机中;③对数据进行相应操作以便得到想要的结果;④对各种存储形式和操作方法进行对比分析。然后再讨论另一个相似问题的求解步骤,并找出这两个问题具有的共同数据特性,让学生明白以上问题因为有着相同的数据特性,所以对数据处理的方法也相似。以此让学生明白集合结构、线性结构、树型结构和图型结构是根据现实世界中实体之间关系的不同特性归纳出来的数据结构特性。

(3)加强练习。在学习这门课程的过程中,要多加练习,以便学生能消化课堂上学习的知识,也能加强学生对所学知识的理解以及应用,并能够触类旁通,举一反三。

(4)注重实践。《数据结构》是一门理论与实践相结合的课程,如果只注重理论,学生容易造成“眼高手低”的情况,理论知识学的很扎实,但实际动手能力很差,不符合我们的培养要求;反过来,如果只注重实践,又会造成只见“点”不见“面”的情况,造成系统解决问题的能力差。实践有两个作用:①验证算法是否正确。比如,在设计一个新的数据结构时,我们脑中想到的设计算法并不一定是完美的,且往往是不完善的,甚至可能是错误的。“实践是检查真理的唯一标准”,我们通过程序来验证算法的正确性;②实践可培养我们完整、彻底解决问题的能力。 我们在思考时,只是简单、粗略地解决了一个问题,而很多细节问题并没有考虑到。而动手实践过程中,不得不考虑各种细节问题,不然,程序编译通不过,或者编译通过了,但没有达到预期的结果。因此在学习这门课的过程中,要采用实践与理论学习紧密结合的方式,通过上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,深刻理解、牢固掌握所用到的一些技术。实践是对学生全面综合素质进行训练的一种方法,是课堂教学的一种延伸。每个问题的正确求解,都要通过分析问题、建立模型、设计算法、编制程序、调试优化等步骤。通过实践后,可以提高对《数据结构》课程内容的深入理解,同时也能使学生更有成就感,从而更加积极地学习这门课程。

(5)注重总结。在《数据结构》的内容中,线性结构、树型结构、图型结构都遵循首先是逻辑结构、其次是存储结构、接下来是基本操作的实现这一原则;而且各种数据结构在存储时,均有两种方法:顺序存储和链式存储。顺序存储是以数据元素在存储空间位置间的某种关系来表示逻辑上的关系。如以位置相邻表示线性表中数据元素之间的前驱和后继的关系,一般用数组来存储。链式存储则不再要求数据元素在存储空间的位置之间保持某种关系,而是在存储实体属性值的同时存储一个或若干个指针指向其有关系的实体存储单元的首地址,一般用链表实现。顺序存储时插入和删除操作因为要大量移动数据元素(末尾除外),所以效率不高,链式存储则不需移动;如果按序号查找,顺序存储则可直接找到所需数据元素,而链式存储则效率不高。通过这些共性化问题可以理清思路,帮助我们理解本课程,同时针对这几种结构的不同特点,再强调它们各自在逻辑结构、存储结构和基本操作上的个性化,加深理解。所以,在学习这门课程的过程中,应该不断吸收、总结、归纳。

3结语

要学好《数据结构》这门课程,要多学、多练、多实践。同时,学习《数据结构》,能加强对某门计算机语言(如C语言)的理解和掌握;而对计算机语言的理解,又能促进《数据结构》的学习,两者相辅相成,互相促进。

参考文献参考文献:

\[1\]耿国华.数据结构:用C语言描述\[M\].北京:高等教育出版社,2011.