正文:摘要:本文分析了高职院校和就业培训市场的数据结构教学现状,从高职软件实用型人才培养的角度结合具体职业岗位综合技能需求提出构建适用于职业教育的现代数据结构,讨论了现代数据结构教学目标和教学内容体系的构建,围绕着学生职业素养和职业技能的综合养成提出了现代数据结构教学实施的系统环境构建方案。职业教育课程目标在于实现教与学、学与做、理论与实践之间的高度一致性,现代数据结构课程构建打破了课程壁垒,建立了课程之间的有效联系和相互印证的实践性教学强化机制,实现了教与做、学习与工作的一致性
关键词:职业教育;软件;人才培养;数据结构;教学研究
1 高职数据结构教学现状及改革出路—现代数据结构
高职院校软件人才的培养具有很强的职业特色和专业针对性。这样的职教特点要贯彻到高职软件人才培养每个教学环节,包括课程教学目标、课程体系、课程内容、课程教学模式等。数据结构课程是信息技术相关专业的专业课程。当前多数高职院校的软件技术专业都开设了数据结构课程,但是教学过程相当困难,教学目标也难以达到。分析来看,首先多数高职院校的数据结构往往都是本科教学内容的缩减版,理论性太强,教学内容太抽象,整个教学过程没有紧贴职教目标,没有体现职教特色。其次,教学内容设计上只是孤零零地讲授数据结构,没有注意数据结构和其他相关专业课的联系,没有发挥数据结构作为专业核心课程可以起到的综合教学作用,失去了实践意义和学习的趣味性。
软件开发的最终目标都是处理数据,某种意义上来说软件运行过程就是数据处理的过程,而如何存储数据、如何设计算法处理所存储的数据是数据结构课程的重要内容,也是学生在软件设计和编码中必须面对的问题。从这个意义上说,在高职软件人才培养过程中应该加强数据结构教学环节,而不是减少甚至抛弃数据结构。但是相对于本科数据结构教学来说,高职数据结构教学应该具有高职的职业教育特点,应以职业岗位实际需要为主要依据,而不是从学科本身的系统性、完整性出发,应该有继承有发展,在破和立中寻找新出路,即现代数据结构课程及其综合教学实施环境的系统构建。
2 现代数据结构的教学目标
现代数据结构是以现代软件开发环境作为出发点的。从现代软件开发环境的角度分析和制定的数据结构教学内容、教学模式是最符合岗位需求的,因此也最具有职业针对性,其职业教育特点体现在现代数据结构课程的教学目标中。
2.1 现代数据结构的实践性
软件开发的理论是由实践得来的,其本质是实践的,由于这种实践脱离不开软件开发企业的工作环境和软件工作者们在某个时期对理论和实践的集体认知程度,因此软件开发理论及其实践都是具体的而不是抽象的,都是因应用环境和开发成本的不同而具有某种选择性而不是固定呆板的,但也更不是随心所欲的自由创作。因此要将理论性很强的数据结构课程构建成为实践性很强的现代数据结构课程,并且将其实践性和当前软件开发过程中的典型应用结合起来,课程目标与实际岗位技能需要直接相关,以职业岗位的现实需要为主要依据制定课程内容,侧重专业实践能力的培养,在实践中理解理论。
因此实践性是现代数据结构的第一教学目标,通过紧贴软件开发岗位的软件实践,让学生在实践中理解数据结构的理论知识和实践意义、实践方法,从而确保教与学、学与做之间的高度一致性。
2.2 现代数据结构的系统性和综合性
由于数据结构本身的理论复杂性和应用的综合性,从而使它成为巩固和运用其他相关课程知识的最佳实践环境,这也是现代数据结构实践性教学目标的要求。首先现代数据结构建立在现代开发平台C#.NET和Java的基础上,利用这些现代平台实现数据结构算法的过程中会充分利用到相关软件开发知识,体现出现代数据结构的系统性和综合性。这包括在算法实现过程中利用具体语言、面向对象设计和面向对象编码;在面向对象设计和编码中采用软件开发中典型的设计模式、标准的编码规范和流行的开发工具。现代数据结构系统性和综合性的教学目标是其实践性的必然要求,也必然影响到其教学内容的体系设计和教学实施过程。所有的软件实践都是综合性和系统性的,按照木桶理论任何相关知识的缺失都会影响到学生软件能力的形成和职业技能的培养,因此系统性和综合性的教学目标赋予了现代数据结构丰富的实践意义和实践内容。
2.3 现代数据结构的岗位针对性
现代软件开发环境中.NET平台和Java平台占据了绝大部分比例。因此现代数据结构按照.NET平台和Java平台分别组织教学内容,从而形成了有效地针对就业岗位的教学目标。这种岗位针对性还有更深的含义,不论.NET平台还是Java平台都已经实现了最常用的数据结构,那么在教学过程中通过对这些数据结构的使用、再开发和使用上的相互印证使得学生不仅获得了数据结构的应用知识和理论知识,而且也理解和熟悉了.NET平台和Java平台,为更顺利地走向工作岗位打下了基础。现代数据结构系统性和岗位针对性的教学目标和教学内容设计使得学生的学习过程就像在真实的软件开发环境中做实际的软件开发,使用同样的软件开发工具,思考真实的软件开发问题,从而有利于学生职业素养的形成和职业技能的掌握。
2.4 现代数据结构的简单实用性
软件设计和编码贵在简单。在实际软件开发中如果某段代码是一个三重循环结构,那么这段代码可以被认为是具有相当复杂性的代码,所处理的问题也是一个具有挑战性的问题,而如果出现了更多层循环结构只能是说明设计上出现了问题。同理,现代数据结构在教学内容设计中体现了简单实用性的教学目标。在数据结构中线性表的逻辑关系最简单,树其次,图最复杂。社会经济中的2/8法则在这里同样有其影响力,线性表最简单但是用的也最为频繁,复杂些的树结构的应用比较少,但是由于XML的出现树的应用比以前要多了一些,而图的应用一定属于高度复杂的应用,并且这样的应用在一般的软件开发中极少出现,而这样的应用通常不是我们高职院校学生的岗位工作内容,往往是由相关专家完成,因此现代数据结构在内容安排上遵循2/8法则,实事求是地反映软件开发实际需要,既保证了简单性也保证了实用性。
3 现代数据结构教学内容体系的构建
从现代数据结构的教学目标出发,本着有所为有所不为的原则构建现代数据结构教学内容体系。现代数据结构主要分为下面几部分教学内容:集合与线性表、栈和队列、哈希存储与哈希表、树与XML、查找与排序、循环结构与递归结构。为了实现现代数据结构的教学目标,每块内容都有特定的组织结构。在教学内容的组织上分别从语义、语用和语法三个方面分析,而不再是一味的强调数据结构的逻辑定义等理论性太强的内容。
3.1 集合、线性表、栈和队列
集合、线性表、栈和队列是数据结构中最简单的数据关系,但同时也是最实用内容,这部分内容的学习让学生深刻认识到在软件设计和编码中要关注数据分析,深刻体会算法的设计是依据数据的逻辑关系,而算法的实现要依靠数据的存储结构的思想。其教学内容组织结构如图1所示。
图1 教学内容组织结构1
集合与线性表数据结构是实际软件开发过程中须臾而不可离的数据处理手段,栈和队列也属于线性表范畴,在解决比较复杂的应用时也经常用到,它们是现代数据结构内容结构中的重点部分,约占整个现代数据结构内容的50%。
这块内容按照语义定义也就是数据的逻辑关系划分为集合、线性表、栈和队列。分别从语义、语用和语法三个方面组织教学内容实际上也就是在回答有什么用、如何用和为什么这么用的问题。由于.NET框架和Java平台都有完整的集合、线性表、栈和队列的相关接口和类,分析和学习它们是理解这些数据结构的最快捷的途径,也是最符合当前软件开发实际需要的。首先是现代数据结构的语义分析内容。现代数据结构从这些接口和类的语义定义中认识和理解数据结构的逻辑关系,具体来说.NET框架和Java平台提供的相关接口类型是最纯粹和功能最完善的语义定义,理解了它们就知道了有什么用的问题。其次是现代数据结构的语用分析内容,通过利用这些数据结构解决实际问题来学习数据结构的用法,这就解决了如何用的问题,也有助于进一步理解其语义和逻辑关系定义。最后是现代数据结构的语法实现内容。分别通过顺序存储和链式存储两种具体存储方式编码创建它们的具体实现类,这个内容既是对数据结构的语法实现过程,也是对语义和语用的进一步理解过程。将现代数据结构语法实现的具体类替换上面解决问题时用到的开发平台自有类型使得学生认识到它们在语义和语用上没有任何区别,在它们的相互印证中理解如何选择恰当的数据结构处理数据。
3.2 哈希存储与哈希表
哈希存储与顺序存储、链式存储都是重要的存储结构和数据组织方式,在实际软件开发中也具有广泛的应用,.NET平台和Java平台都有具体类型利用了哈希存储结构。现代数据结构分为三个部分来组织哈希存储的教学内容:哈希存储原理、开发平台哈希表类型的语义定义和开发平台实现的哈希表、根据平台哈希数据结构语义定义按照哈希存储原理具体实现一个哈希表。如图2所示。
图2 哈希存储教学内容组织
3.3 树与XML
树是复杂的数据结构,当前的软件开发中XML文档的使用愈发频繁,而XML文档用树结构组织数据,因此树数据结构的应用也愈发重要。结合对XML文档处理的具体应用来组织树数据结构教学内容不光为树找到了符合了软件开发的实际应用,也让学生熟悉了开发平台提供的XML文档处理数据工具。另外,二叉树教学内容与递归算法的结合进一步强化了学生对递归结构的理解,为解决复杂问题的编程提供了良好的专业基础。
3.4 查找与排序
现代数据结构的查找与排序从应用实践的角度安排教学内容,没有讲解过于复杂的算法,目的在于让学生认识到算法复杂度的问题,认识到算法性能改进的重要性,不论是.NET平台还是Java平台都已经提供了大量的查找与排序算法,要让学生知道如何去选择适用的查找排序算法。通过查找与排序算法的编码过程培养学生组织处理数据的能力,熟悉平台既有的相关类型和设计编码中的抽象思维能力。
3.5 循环结构与递归结构
数据结构是讨论数据关系的,只有多个或者大量的数据才谈得上关系,程序对多个数据的处理要么是使用循环结构,要么使用递归结构。平时大量的语言课程多是以循环代码处理数据,而数据结构教学内容的安排为培养学生以递归角度分析问题提供了一个机会,学生从循环和递归两个角度看待数据和数据关系,并且通过在线性表和树中的具体应用来锻炼学生的这种能力,从而切实提高学生的分析和编码能力。
4、现代数据结构教学环境的构建
现代数据结构从应用实践的角度分析教学目标,提出了相应的具有职业特色的教学内容,这决定了现代数据结构教学环境的综合性和岗位针对性。由于当前软件工作岗位的开发环境多是.NET平台和Java平台,因此现代数据结构可以分别以.NET平台和Java平台构建,即.NET平台版本和Java平台版本。下面就以.NET版本的现代数据结构为例详细分析其综合性教学环境构建。
图3 现代数据结构教学环境
现代数据结构(C#.NET版本)在如图3所示的综合教学环境中培养学生数据结构知识实践应用的能力,同时实现了与.NET平台软件开发岗位的无缝化教学。该综合教学环境分别提供了几个方面知识的综合应用,包括C#语言、.NET框架类库、设计模式和编码规范、面向对象设计和面向对象编程、开发环境与开发工具、编程思想与职业素养。在数据结构教学内容中充分考虑了编码规范、设计模式、面向对象思想的实际运用;将面向对象的重要概念在数据结构这个复杂应用情形中尽可能地应用起来,并且最大程度上体现了C#语言的.NET框架编程特色,不论从编码规范还是设计模式上都和.NET框架保持一致性;包括设计和编码在内的程序过程尽可能地贴近软件开发实际,强调了平台和工具的使用;通过对不同的解决方法做两面性地分析和思考引导学生学会针对不同的应用环境做出恰当地选择,对解决方案的成本和效率做出企业开发角度的考虑,让学生理解设计和代码的易读性、可理解性和一致性始终是软件开发中的关键目标。和通常的数据结构比较起来,现代数据结构被赋予了更多的教学目标,具有更丰富的教学内容,因此也有了更综合的教学环境。
5 总结
现代数据结构以实践性、职业性、简单实用性为教学目标构建了综合教学环境和内容体系,体现了教和做的高度一致性,体现了认知方法和学习规律,体现了对学生批判性地主动学习过程的能力培养,符合当前职业教育中软件人才培养的教学改革的趋势,在继承与发展、破和立中有利于形成高职软件人才培养的创新机制。
参考文献:
[1] 赵志群.职业教育与培训学习新概念.北京:社会科学文献出版社,2003.
[2] Krzysztof Cwalina(著),葛子昂(译)..NET设计规范:.NET约定、惯用法与模式.北京:人民邮电出版社,2006.
[3] 徐孝凯.数据结构实用教程.北京:清华大学出版社,2007.
[4] 欧盟Asia-Link项目“关于课程开发的课程设计”课题组.学习领域课程开发手册.北京:高等教育出版社,2008.