关键词:数据结构;课程设计;以人为本
1 背景
数据结构课程是计算机相关专业的专业基础课程,也是专业课程体系中的核心课程。数据结构课程设计与其他课程设计不同,它不仅是对本门课程知识的综合训练,而且要综合运用几个学期积累的程序设计知识,是对程序设计能力的一次关键的训练;因此,需要以整个教研室的力量完成该课程设计的教学工作。
在数据结构课程设计教学中,学生的基础、心态、积极性等因素在很大程度上影响教学的效果。近年来很多教学一线教师对数据结构课程设计面临的问题进行了探讨,介绍实践经验或提出改革建议,如基于问题驱动(以问题求解为核心)、案例驱动、任务驱动和项目驱动的课程设计模式;文献[6]指出以人为本的教育理念是时展的产物,主张把人放在第一位,以人作为教育教学的出发点;文献[7]认为提高教学质量的关键是在教学中坚持以人为本。数据结构课程设计教学涉及出题、选题、指导、评价等工作,任务繁重,参与的老师众多,因此,探讨如何在数据结构课程设计教学管理和教学实施过程中贯彻以人为本的理念,对数据结构课程设计的教学工作具有指导意义。
2 数据结构课程设计教学中的问题
在数据结构课程设计教学过程中通常会遇到以下问题:
(1)学生程序设计基础薄弱。高级语言程序设计是数据结构课程的先导课程。学生对于高级程序设计语言的语法知识的掌握和具备的基本程序设计能力是顺利完成数据结构课程设计的基础。由于计算思维与人类思维差异较大,尽管有些学生学习高级语言程序设计课程非常努力,但对于设计程序解决实际问题仍然不得要领。无论国内还是国外的高校,这都是困扰计算机相关专业教学的一个重要的问题。
(2)存在照搬、照抄他人课程设计的现象。部分学生在接受课程设计任务时没有建立起靠自己的努力认真完成任务提高自身能力的意识,当课程设计时间不够,无法按期完成任务时,从而采用抄袭的办法以图过关。查阅资料,消化吸收他人的解题思路,完成自己的课程设计,这原本是很好的方法;然而,由于数据结构课程设计的题目相对固定,在互联网上很容易查找相似题目的课程设计源代码。这些学生不是借鉴资料中解决问题的方法,而是直接拷贝,或者简单地改头换面之后交给老师。
(3)存在重视编码、轻视设计的现象。由于数据结构课程设计的题目完全可以不运用数据结构的知识直接用程序设计的方法来完成。有些程序设计能力较强的学生习惯于跳过设计步骤直接编写程序代码,看似他们在编程中使用了一些数据结构课程中的存储结构和处理操作,其实根本没有领会和运用数据结构的基本思想和方法。除了编码前的设计外,测试和分析也常常被学生忽略。
(4)很多学生在完成课程设计过程中不能与老师及时沟通。对于学生而言,理想的情况是在课程设计过程中只要遇到问题,指导老师都能及时详尽地指导;然而,这几乎是不可能的,由于学生多、问题多,而且在设计、编码、测试和分析中的每个学生的问题都不同,老师通常需要较长的时间来了解问题,然后才能给予解答,难以保证问题解答的及时性。导致很多学生很少提出问题,老师也不了解具体出现了哪些问题。还有一些学生问题特别多,不愿意靠自己的努力去解决,只要有困难就找老师,造成过度指导的现象。
对于上述问题,运用单一的教学模式是不够的,在数据结构课程设计的教学过程中,导人以人为本的理念是提高教学质量的关键。
3 以人为本理念的工作原则
以人为本是一种管理理念。在高校教学管理工作中贯彻以人为本,既要以学生为本,使学生健康成长成才,也要以教师和教学管理人员为本,调动他们的工作热情和积极性,推动学校各项工作的有序运行。一门课程的教学实施是高校教学管理工作的一个基本单元,是贯彻以人为本理念的一项具体工作。根据数据结构课程设计的具体要求,我们整理出在该课程中体现以人为本理念的工作原则,具体体现在以下几方面。
(1)尊重学生兴趣和发展目标上的差异。学习数据结构课程设计的学生并不都是以软件设计专家等为发展目标。有些学生在了解计算机专业、经历了程序开发体验之后,基于自身的兴趣和特长逐渐树立不同的发展目标,因此,教学管理在坚持课程目标的同时,考虑学生的发展目标和兴趣爱好,这是体现以人为本理念的一项重要的工作原则。
(2)正视学生程序设计基础的差异。对于程序设计基础较差的学生不能简单地降低题目要求,而是在题目设计、启动报告、选题过程、指导、评价、总结等各个方面都考虑鼓励、激励和帮助他们向自己设立的目标靠近。
(3)增加学生与指导老师交流的机会和形式。学生在完成课程设计的过程中需要得到及时指导,由于问题不同,如果采取一对一的有问即答方式,指导老师没有足够的时间;因此,采用灵活多样的师生交流方式也体现了以人为本的理念。
(4)明确区分指导与管理工作。数据结构课程设计指导老师的任务是帮助学生制订切实可行的进度计划、随时检查学生的进展、帮助学生解决遇到的问题。管理任务包括计划安排、过程监控、评价和总结等。这两类任务要明确区分开来,否则容易造成管理混乱,给学生带来困扰,不利于课程设计的顺利完成。
(5)尽可能不额外增加指导教师的工作量。高校教师在承担基本教学任务的同时,还肩负着科研的重任;如果改革使得教师工作量显著增加,教师的积极性就难以提升,这会影响实施效果。所以,教学工作不仅要以学生为本,考虑学生作为教学接受者的实际情况;还要以教师为本,考虑指导教师的主观能动性和客观的任务承受能力,不能为了教学改革无限制地给教师指派额外的工作任务。在构建数据结构课程设计工作实施方案时,应该想方设法提高教师指导工作的效率,确保指导教师的工作量不会大幅增加。
无论是从学生的自身差异出发,还是从教师的实际情况出发,在数据结构课程设计这一具体的微环境中贯彻以人为本的理念,有利于该教学过程的顺利实施,同时更好地诠释了以人为本理念的工作原则。
4 以人为本理念的教学过程
数据结构课程设计的时间安排主要有两种:一是在学期末或者学期初停课1~2周集中进行;二是要求学生利用课余时间分散进行。前者似乎比后者更好,因为教学效果的提升必须以指导老师的加倍付出为前提,基础较差的学生要在短时间内完成任务就需要指导老师更多地指导。
我们采用时间上的梯次安排法,也就是分成3个或者更多个梯次,不同梯次使用不同的时间安排,要求也不同。最高梯次适合基础好的学生,留给学生的时间大概两周,要求在时限前一次性提交课程设计报告和代码。中间梯次适合程序设计基础较强但设计能力弱的学生,分两个阶段完成任务,每个阶段为两周时间,第一阶段根据老师提供的比较粗糙的设计进行编码,第二阶段分析所写代码的不足,改进设计且重新编码。对于编码能力弱的学生,可以借用软件工程中的原型法来进行,把任务划分成若干部分,一步步地做,根据每一步的需要,老师可以提供函数库作为替代部分,但这需要老师投入更多的时间,同时要求整个课程设计的时间延长。
这种灵活的时间安排虽然适合数据结构课程设计的实际情况,却需要老师们的密切配合和精细的管理,而且在教学管理和实施过程中坚持以人为本的理念以取得最佳效果。下面分别按照计划与准备、启动、选题、课程设计、评价和总结6个阶段阐述体现以人为本的数据结构课程设计教学过程。
1)计划与准备阶段。
本阶段的任务是做好人员分工、任务安排和时间安排。参与数据结构课程设计工作人员根据所承担的不同任务分为5类:管理员、指导老师、讲座教授、评审老师和教研室主任。不同人员的职责如下。
管理员由一线教师承担,可以有多个管理员分别负责不同学生的数据结构课程设计管理。管理员的任务是按时间安排收集文档资料、检查学生的进展情况,并做好记录,从指导老师和学生那里收集、总结一些共性问题提交给教研室主任。指导老师主要任务是准备题目并对题目作详细的描述和要求,规定题目的限选人数,帮助学生制订进度计划,指导学生解决遇到的问题。讲座教授的任务是精心准备和主讲各种专题讲座(包括启动报告)。可以根据以往的经验提前总结一些针对典型问题的讲座,并根据收集上来的具体问题充实讲座内容。评审老师的任务是根据管理员收集的文档、资料和进展记录对学生所做的课程设计进行打分。规范了不同工作人员的职责,有利于教学过程的顺利实施。教研室主任负责总体协调、推动进程和最后的工作总结。
数据结构课程设计围绕题目进行,题目主要由指导老师提供,学生也可以自行选题。对于指导老师提供的题目,其本人应该亲自完成该题目的设计、实现和测试工作,并且形成规范文档。每个题目有详细的描述、要求、难度系数和限选人数。题目描述应该留有余地,供学生发挥自己的想象力。题目设计尽量有实际应用背景,如有向图求解最短路径问题,赋予了物流或者旅游等背景之后,题目本身就鲜活了。每个指导老师可以准备多个题目,这项工作往往在第一次进行时花费的时间多一些,以后每年只需做细微调整即可。指导老师把每个题目的描述、要求、难度系数、限选人数、报告文档和代码提交给教研室主任。教研室主任召集所有相关人员对这些题目进行研讨,以便对于题目要求、难度系数、评分标准等方面达成统一。
2)启动阶段。
启动报告以讲座形式进行,主要强调数据结构课程设计的重要意义,介绍与数据结构课程设计相关的各项安排,展示和讲解数据结构课程设计范例。启动报告的主要目的是让学生全面了解课程,调动学生的积极性。讲座教授在主讲各种专题讲座时切忌使用自己设计的例证性错误实例,尽可能使用学生写的文档和代码,分析其中的问题,教给学生解决问题的办法,而不是仅仅告诉学生问题的正确答案。
3)选题阶段。
该阶段主要工作是确定每个学生的题目,同时也就确定了指导老师,选题过程如下:
(1)学生选择已公布的题目(不受限选名额的限制);
(2)该题目的指导老师根据学生的情况和题目难度确定接受选题的学生名单(不得超过该题目的限选人数);
(3)没有被接受的学生可以进行再选题,直至每个学生都找到自己的题目。
确定题目之后,学生同指导老师一起确定题目相关的细节,确定遵从哪一个梯次的时间安排,并制定具体的进度计划。
4)课程设计阶段。
在这个阶段,管理员要严格按照进度计划进行检查,不能按照计划进行的学生要说明原因,请指导老师修改进度计划,同时扣分;同时管理员要及时发现共性问题,教研室主任安排讲座讲解有代表性的例子;指导老师检查学生是否完成了阶段性任务,给出修改意见,老师在此阶段投入的时间很多。从整个教学体系出发,学生在校期间要做的课程设计还有很多,数据结构课程设计仅仅是在高级语言程序设计课程设计之后的第二门。如果老师们在这门具有核心基础地位的课程中投入更多的精力,也就意味着在以后的课程设计中花费的时间会大大减少。
5)评价阶段。
评价数据结构课程设计的方法和标准要兼顾学生作品的质量、努力程度和学习态度,考虑题目难度等因素。对于作业质量评价可以采用部分答辩的方式,即由学生申请后按照不同难度系数分组答辩,最后评价小组评定各组质量等级。
6)总结阶段。
在总结工作中既要对学生的努力予以表扬,也要对所有老师的工作进行评价。可以分别从设计质量、编码质量、设计报告质量等角度对学生作品展开评优活动,颁发优秀证书。优秀名单及优秀作品存入学院评优查询系统,并在校园宣传板进行公告,并附指导老师的姓名。
5 结语
教学中坚持“以学生为本”,尊重学生在兴趣爱好和发展目标上的差异,激发学生的学习激情,用灵活的方法方式不断地保持和加强这种激情和动力,这是提高数据结构课程设计教学质量的必由之路;坚持“以教师为本”是提高课程设计教学质量的根本。我们将以人为本的理念运用到2010级的数据结构课程设计教学,提供A、B、C3种梯次供学生选择。19%的学生选择了A类,教师主要负责课程设计报告撰写指导。48%的学生选择了B类,教师主要指导数据结构设计、物理结构设计、复杂算法设计和课程设计报告。对于选择C类的学生,教师还要帮助他们解决程序调试等问题。我们根据教学进展情况安排了7次讲座。实践证明,学生非常欢迎这种细致的工作方案,96%的学生能够独立完成课程设计任务。然而,尽管利用讲座提高了效率,指导教师的付出比之前要多出一倍。如何减轻教师的工作量是我们下一步关注的问题。
参考文献:
[1]李治军,廖明宏,张岩数据结构与算法课程设计教学模式的探讨[J].计算机教育,2006(2):54-56.
[2]李英梅,夏伟宁,邢恺.“数据结构”课程设计教学过程的研究与实践[J].计算机教育,2009(5):68-69.
[3]庞晓琼.案例驱动的数据结构课程设计教学改革实践[J].计算机教育,2009(1):53-64.
[4]姜雪茸.任务驱动教学模式探究[J].兰州教育学院学报,2013(1):147-148.
[5]唐轶媛,蒋荣萍,周卫.项目驱动式教学在数据结构课程设计中的应用[J].轻工科技,2013(1):137-141.
[6]张亚平.“C程序设计”体现以人为本的教育理念[J].计算机教育,2009(12):22-23.
关键词课程设计数据结构教学模式问题驱动
1 引言
课程设计是课堂理论教学的延伸和补充。作为一门独立的课程,它应该完成如下基本目标:应能够完成理论与实践的结合,应能够锻炼学生的设计创新能力、分析和解决问题的能力。
数据结构与算法课程是计算机科学与技术专业以及相关专业的一门专业基础课程,同时它也是计算机科学与技术专业课程体系中的核心课程之一,它在计算机科学与技术专业的课程体系,特别是软件系列课程体系中处于承上启下、联系左右的中心地位。大量的实践表明,是否学好数据结构与算法课程对于能否学好计算机本科课程有着相当重要的作用,同时也对后续的工作和研究有着深远的影响。
现今,各大学的数据结构与算法课程和教材的内容都主要集中在“基本数据结构的阐述和分析、基本数据结构的应用、典型基本算法的适当渗透”这三个方面。其中,前两部分是重点,并占据了较多的篇幅,而这些内容的教与学离不开大量的实践,所以在数据结构与算法课程教学中经常会有大量的课程实验作为辅助。
通过进一步的深入分析可以看出,上述基本知识的学习并不是最终目标,而是为到达最终目标打下的基础。显然,从计算机科学与技术专业的知识体系可以看出:如图1所示,学习数据结构与算法更深层次的目标是能够针对实际问题来选择、扩展甚至是设计全新的数据结构,然后设计相应的存储结构并加以实现,从而最终完成问题的求解。可以看出,这一过程是一个融会贯通的过程,是不能通过课程实验完成的,也不可能在课堂教学中就可以建立完整意识的,所以在课程之后需要进行课程设计。
为此,数据结构与算法课程设计应能达到如下基本目标:培养学生应用数据结构基本知识来分析问题、解决问题的综合能力;帮助学生建立计算机问题求解的全局意识,主要是通过认识数据结构在问题求解中的地位来完成全局认识的建立(这一全局认识如图1所示);训练学生从系统的、规范的观点来进行计算机问题的分析、设计、编码、测试等。
上面分析得出的数据结构与算法的课程设计目标是符合一般的课程设计规律的。但数据结构与算法课程具有自身的、明显区别于其他课程的地方,再结合计算机专业的特点,就决定了还需要分析并建立适合数据结构与算法课程设计特点的教学模式。所以本文在第2节就数据结构与算法课程设计和其他课程的课程设计进行了对比分析,在第3节提出了一种基于问题驱动的教学模式,并就其中的关键部分给出了详细的描述。
2数据结构课程设计的特点分析
任何事物都是一般性和特殊性的统一,数据结构与算法课程设计也是一样的。和许多其他课程的课程设计一样,它有着课程设计的共性,也有自身的特性。经过和其他课程的课程设计的对比,作者认为数据结构与算法的课程设计主要具有如下特殊性。
2.1不具有明显的整体性
这是由数据结构与算法课程本身的特点决定的。由于该课程的核心内容主要集中于对各种数据结构的认识上,虽然各种数据结构之间总是存在许多内在的联系,但总的来说还是自成体系、较为独立的。
就这一点而言,数据结构与算法课程就和其他许多课程存在不同,也就使得数据结构与算法课程设计具有相应的特点。比如计算机组成原理的课程设计,可以通过做一个完整的、简化的计算机硬件系统(包括的简化的存储器、控制器、运算器等部件)来完成课程内容的全面训练,并让学生建立对计算机组成的整体认识。机械原理的课程设计可以是一个简单的机械系统的设计,完成对机械原理各部分内容的综合训练。而对于数据结构与算法的课程设计来说,几乎不可能构造一个题目把所有的数据结构都包含进去。实际上这样做是毫无意义的,因为数据结构本身就是不断扩展的,在学习、掌握基本数据结构的基础上能够对知识加以扩展并灵活运用才是真正重要的。
所以在数据结构与算法的课程设计中,应强调问题求解能力的培养,而不像其他课程的课程设计那样来强调综合设计能力。
2.2课程内容具有很强的可伸缩性
从发展状况来看,数据结构与算法的发展是极其迅速的,不断地有新的数据结构和新的算法出现,而且针对不同的问题,数据结构与算法可以做出非常灵活的调整。在这一点上它和许多其他课程不同,比如操作系统中可能会不断出现各种各样的调度算法,但都集中在进程管理中,并总归结于资源管理这一基本框架下,只要冯・诺伊曼体系结构不变,操作系统的资源管理框架就不会改变。而数据结构就不同,如就树结构而言,二元树虽然在概念上较为规整,但在实际问题中,大多都采用树结构的变形,如B树以及其他新型变形等,似乎两者都可成为教学的重点。
正是因为数据结构与算法的可收缩性,培养针对问题的数据结构设计能力才是最重要的。
2.3具有极其广泛的渗透性
计算机问题领域包括许多其他行业的问题,如经济领域问题,只要涉及到对数据的组织与处理,都能或多或少地找到数据结构的用武之地,所以培养依托数据结构完成各类问题求解的“嗅觉”是十分必要的。
总的来说,基于数据结构与算法课程的特点,建立起与之相匹配的课程设计教学模式,这样才能更好地完成教学。
3基于问题驱动的课程设计教学模式
在以上分析基础上,如图2所示,本文提出一种基于问题驱动的课程设计教学模式。
3.1问题来源
数据结构与算法课程设计的问题来源(即教学内容)主要包括:基本数据结构在解决实际问题中的应用;基本的算法策略在解决实际问题的应用;新兴数据结构的相关问题;新兴算法的相关问题及实践;经典问题的经典算法;典型系统的计算机模拟;需自行设计数据结构和算法来解决的实际问题。
3.2问题描述
在问题的描述上,侧重于用半自然语言进行描述。完全的形式化描述将减少问题分析能力的培养力度,完全的自然语言描述有包含太少的启发信息。
一般来说,要求问题的描述必须能够清晰地说明问题的含义和目标,并就采用的数据结构适当地给出启发,其中,也可以设计一些题目故意将问题的目标隐去,加强对学生问题定义能力的培养。
3.3问题求解的迭代性
问题求解是不能够一蹴而就的,一开始设计(选取)的数据结构与算法往往存在这样或那样的问题,建立逐步求精、多次迭代的问题求解思维是必要的。
为此,我们需要在学生的课程设计过程中,鼓励学生对其解决方案进行理论分析和实验分析,鼓励学生大胆提出优化方案,鼓励其积极主动的创新意识。
3.4结论形成
最终的结论(体现为课程设计报告)应以数据结构的描述为核心,并集中体现如何针对问题来完成数据结构的设计与优化。
其中,数据结构的描述应以抽象数据型(ADT)为基本手段,并在抽象数据型的基础上,引导学生深刻理解和掌握数据的逻辑结构、性质、特点、基本操作和存储结构的特点、实现和优化,并引导学生在实际应用中有意识地去为实际问题选择恰当的存储表示。
结果分析应采用理论分析和实验分析并重的方式,应适当加大实验分析的力度,使得学生能在分析结果的基础上形成总结并产生启发,最终能形成问题求解过程的全局意识。
3.5结果考核
鼓励学生选择需要设计新型数据结构(至少需要对已有数据结构作出修正)的题目,而不仅仅是实现一个定义明确的数据结构;鼓励优化方案的提出、分析和验证;鼓励学生扩展知识体系,并建立问题求解的修养;鼓励创新意识和主动学习意识的培养。
4 结束语
针对数据结构与算法课程设计的一般性和特殊性分析,本文在提出该课程设计的基本要求后,更提出了适合于数据结构与算法课程设计的“以问题求解为核心”的教学模式。近年来,经过对计算机科学与技术专业本科生的多次实践,可以看出,这一模式可以取得很好的教学效果。
参考文献
1 耿蕊,李敬有,邓文新.关于计算机基础课课程设计的研究.高师理科学刊,2005,5
2 郭福顺,廖明宏等.数据结构与算法基础.大连:大连理工大学出版社,2000
3 王伟,王东宏.计算机控制技术课程设计的实践.江苏大学学报(高教研究版),2003,10
关键词:数据结构;多维一体;实践教学体系;教学改革
1、研究背景
1.1 数据结构课程的重要性
在专业课程体系中,数据结构课程不仅是计算机科学与技术专业的核心基础课程,同时也是信息与计算科学专业、电子商务专业和信息安全专业等与计算机技术关系密切的专业的必修主干课程。在程序设计与软件开发中,数据结构课程是建立问题的数据模型、进行算法分析、设计与实现的奠基石,特别是非数值计算模型问题的程序求解完全离不开数据结构课程所介绍的知识体系和方法;在研究生入学考试中,数据结构课程是计算机专业的必考课程,是提高和评价学生专业素质和技能的重要方面,一定程度地影响着学生的深造和发展。没有学好数据结构课程的专业从业者,在专业能力的提升上将遇到极大的瓶颈,无法突破。总之,数据结构课程的教学在专业教学体系中有着举足轻重的地位。
1.2 数据结构实践教学的重要性
目前,高等院校教学主要分为理论教学和实践教学两大块。数据结构实践教学主要有数据逻辑结构及其存储结构的选择与设计、建立在特定存储结构上的算法分析、设计与实现等教学活动,是提高学生程序设计实践能力的保障,同时也为提高学生的创新能力与创新意识奠定坚实的基础,是理论教学环节所不能替代的。学生在实践活动中会出现大量的问题,其中一些问题在理论教学环节是无法出现或无法发现的,因此,只要学生能在发现问题后,找到合适的方法和途径去解决,就可以提高学生系统的综合分析问题和解决问题的能力,能体现理论与实践的完美结合。
1.3 数据结构实践教学的现状
从数据结构教学过程的实际情况看,绝大多数教师存在“重理论轻实践”的现象,主要表现在:
(1)实践教学的地位未能真正达到与理论教学平等的高度,缺乏统一的基本教学要求和大纲,许多学校没有形成完整且科学的专业实践教学体系。
(2)在实践教学内容上大多局限于验证性实验,没有合适的实践教学设计,没有高质量的实践教材与实验指导。
(3)从该门课程对学生的考查情况来看,考查形式单一,一般是用一份试卷来反映学生的掌握情况,而试卷情况又是理论方面考查的多,实践方面考查的少,一般是最后一道题要求学生设计算法并用程序实现,其他的基本是对理论的考查。
(4)大多数系部及教师对于实践环节的考查,只有形同虚设的制度,没有实施保障与监督机制,教学过程容易被“偷工减料”,很难真正落实。
综上所述,为了提高数据结构课程的教学质量和学生对该课程的满意程度,为了规范数据结构实践教学过程,对数据结构实践教学体系进行优化设计研究是非常必要的。
2、数据结构实践教学体系的设计原则
数据结构实践教学体系必须科学合理,内容必须完整,方法必须开拓创新,其设计主要遵循以下原则:
(1)理论教学与实践活动高度统一,不能重理论轻实践,或重实践轻理论。
(2)实践教学层次化,实践活动应遵循从简单到复杂,从验证、设计到综合,再到创新的认知规律。
(3)实践教学体系符合湖南人文科技学院学生的基础现状。
3、数据结构实践教学体系设计
湖南人文科技学院自2004年升为本科院校以来,开设数据结构课程的专业有计算机科学与技术、信息与计算科学等6个专业。数据结构课程的教学改革一直在有计划、有步骤地进行,其教学改革紧紧围绕提高学生的程序设计能力、创新能力的目标,多维度地进行展开,逐渐形成了一套比较成熟的多维一体的实践教学体系。
3.1 数据结构实践教学与理论教学地位平等化
为了强化数据结构实践教学,避免师生在实践教学环节上“偷工减料”,蒙混过关,我们将其单独开设成一门课程,而不再是理论教学的附属。该课程周课时2学时,共36课时,有统一的教学大纲、考试大纲、实验大纲和课程设计大纲。教师必须跟理论教学一样有备课、上课、辅导答疑、作业与实验报告批改等环节,考试也同样分为笔试、机试和课程设计3个部分。笔试部分集中考查各种数据的逻辑结构、存储结构及其算法分析与设计等知识;机试部分集中考查常见算法的程序实现和简单应用;课程设计部分主要考查在给定特定问题的情况下学生综合分析问题与解决问题的能力。
3.2 数据结构实践教学层次化与阶段化
人的认知遵循由简入深的渐进式发展规律,数据结构实践教学也必须遵循人的认知规律。因此,可以将数据结构实践活动划分为验证型实践、设计型实践和综合应用型实践3个层次。同时,针对线性结构、树形结构和图状结构3种逻辑结构和查找与排序两种常用算法,将数据结构实践教学分为5个阶段,每个阶段都进行总结和综合应用训练。最后每个学生都参与课程设计,将所学知识综合应用到实际问题中,进行问题分析、数据结构设计、算法设计与分析及算法的最终实现。
3.2.1 3个实践层次
1)验证型实践。
验证型实践是通过运行教材中已实现的或学生自己编写程序实现的算法对算法及其相应理论进行正确性和运行效果的验证。通过验证型实践可以使学生进一步理解知识的本质与内涵,为知识的应用打下基础。验证型实践最好安排在课堂教学的当天或第二天,这样符合人类记忆活动特点,也能提高课堂教学效果。
2)设计型实践。
设计型实践是指将所学的一个或多个知识点用于解决简单问题。通过设计型实践,学生可以初步掌握知识的应用场合,清晰地把握知识点之间的联系和融合,为以后解决复杂问题奠定基础。教师应该设计一些需要应用多个知识点来解决的问题,如线性表的逆转问题涉及线性表的创建、遍历、插入等算法;数制转换可以用栈来完成,则涉及栈的建立、人栈、出栈,而栈其实就是线性表,也会深化对线性表的理解。
3)综合应用型实践。
综合应用型实践是指将所学的数据结构的知识、思想和方法用于解决较为复杂的问题。综合应用型实践不可避免地会涉及多个知识点,学生必须对每个知识点及其联系都很熟悉。因此,通过综合应用型实践能有效提高学生的问题分析能力、存储结构的设计和算法的设计与实现能力,并加深学生对数据结构内容的整体把握。
3.2.2 5个实践阶段
根据相对独立的章节内容,数据结构课程可以按章节和教学进度分为5个阶段,即按线性结构(线性表、栈与队列)、树形结构、图状结构、查找与排序5个部分划为5个阶段。每个阶段都会有3个层次的实践,最后都要以综合应用型实践收尾,并提交实践报告。教师评阅后要求1~2个学生上台讲解其实践过程、方法和技巧等,以提高学生的胆量、表达能力和综合应用能力等。
3.2.3 课程设计
课程设计是在课程教学结束后进行的综合实践训练,涉及的知识不仅有数据结构、软件开发内容,还有课外知识。成功的课程设计能实质性地提高学生分析问题、解决问题的能力,能大幅提高学生的算法分析与设计水平及程序设计水平。课程设计的时间可以安排在课程结束后,约1-2周时间。教师可以提供参考题目,如库存管理系统、混合表达式求解、贪吃蛇游戏、压缩软件、管道铺设施工的最佳方案选择、哈希查找算法的应用、大量数据的排序算法的实现与比较等。课程设计部分以竞赛形式组织,成绩优秀的要予以公布和奖励。
3.3 数据结构实践教学形式多样化
教学形式是教学活动中师生相互作用的结构形式,是教学论中的一个重要问题。数据结构实践教学以班级授课为主要组织形式,个别教学和分组教学为辅助形式进行。个别教学主要体现在答疑,即安排充足的答疑时间,这是一种很有效率的形式。因为学生经过学习之后,带着问题或疑问来问教师,经过教师讲解,会产生豁然开朗、茅塞顿开的效果。分组教学主要体现在任务分组、协作完成,以及共同接受检查。
3.4 数据结构实践教学成绩评价多元化
成绩评价多元化机制相比传统的仅以考试定成绩的方式,有着积极的导向作用,能促进学生全面发展、全面提高。多元化评定方式,主要有两个方面,一方面由平时成绩、期中成绩和期末成绩组成;另一方面由教师评价、答辩评价、组内互评和组间互评结合,其中组内互评和组间互评部分,评分者必须有评价依据和结论说明,不能信手拈来随便评分。
3.5 数据结构实践教学制度化
一个科学的体系必有一个完善的科学制度。“不以规矩,不成方圆”,只有制度化,才有管理依据,必须做到有制度可依。数据结构实践教学也应如此,很多院系制定的实践教学制度形同虚设,没有执行,主要是没有把数据结构实践教学当作一门课程来教学,而是当作理论教学的附属物,所以应把数据结构实践教学开设成一门课,因此必然要配有相应的制度,也就能得到实施和监督。教学制度应该包括教学过程制度、教学评价制度和教学监督制度。
4、数据结构实践教学体系的应用实施和改革成果
从课题开展到实施应用,经过课题组多年的努力,取得了较好的成果。第一,逐渐形成了完善科学的数据结构实践教学体系,主要包括“数据结构实践教学大纲”“数据结构实践教学考试大纲”“数据结构实践教学评价机制”和“数据结构实践教学监督机制”;第二,提高了学生的自主学习兴趣、学习能力、程序设计能力和团队合作能力,学生成绩显著提高,并多次在湖南省程序设计大赛中获得好成绩,课程设计质量整体较高。
5、结语
中图分类号:G642
摘要:结合高等教育心理学中的学习迁移理论,对数据结构课程设计的教学进行了思考与教学实践。文章针对数据结构课程设计的教学目标制定、设计题目设计、考核方式等各个环节的特点与问题,阐述了学习迁移理论对数据结构课程设计的指导作用;在此基础上给出了所制定的课程设计题目及一些有代表性的学生作品欣赏;对课程设计与课程实验的区别进行了论述。对今后数据结构课程设计教学具有很好的参考和借鉴价值。
关键词:学习迁移;课程设计;题目设计;作品欣赏
0 引 言
数据结构是北京林业大学信息学院的计算机科学与技术、数字媒体艺术、信息管理与信息系统等专业的一门重要专业基础课,也是必修课。它的总学时为64学时,其中理论授课48学时,实验16学时,课程设计(实习)一周,通常安排在第3学期或者第4学期开课。数据结构也是软件开发与设计、计算机算法研究与实现等课程的基础,其主要内容包括线性表、栈和队列、串、数组和广义表、树、图、查找算法和排序算法等。数据结构课程设计通常是在数据结构的授课环节以及实验环节之后,单独安排学生用大约一周的时间来完成一个较大的作业,以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。
学习迁移一般是指学习者已有的知识经验、技能等对另一种学习的影响。学习迁移是知识学习过程中普遍存在的。由数据结构课程实验到课程设计,是对数据结构基础知识到综合能力的一种自然过渡,这个过渡即为学习迁移。学生在课程学习过程中,如果能够很好地应用学习迁移,将有利于完善知识结构,收到举一反三、触类旁通的良好学习效果。可见,从数据结构基础知识到数据结构课程设计能力培养,是一种学习迁移的过程。因而,在课程设计的教学实施过程中,学习迁移理论对提高教师的授课质量和学生的学习效果起着非常重要的作用。
笔者对学习迁移基本理论进行了分析,并结合其在数据结构课程设计的实际教学实施过程中的体现,阐述了如何有效应用学习迁移理论来提高授课质量和学生的学习效率。
1 学习迁移基本理论
学习迁移是指一种学习中学得的经验对另一种学习的影响。迁移的基本过程是一个概括出新旧学习本质特征的过程。它是学习者运用已有的认知经验和技能,在对新的学习内容进行分析概括的基础上实现的。学习迁移有顺向和逆向两种,先前学习对后来学习的影响称为顺向迁移,反之则为逆向迁移。不论顺向迁移还是逆向迁移,都有正负之分。正迁移指一种学习对另一种学习起促进作用,反之起阻碍作用则为负迁移。按照迁移的方向来划分,可以分为水平迁移和垂直迁移。水平迁移指已习得的概念、规则或解决问题的方法等在同一抽象概括层次的新情境中的运用;垂直迁移指低级概念和规则向高级概念和规则的迁移。学习迁移理论主要包括以下几种。
(1)形式训练理论。该学说以官能心理学为理论依据,认为通过一定的训练,可以发展心的官能,从而将其转移到其他学习上去。
(2)相同要素理论。该理论认为原先的学习能够迁移到新的学习中去的前提条件是两种学习情境有相同的要素。并且相同要素越多,迁移的程度越高。
(3)泛化理论。泛化理论是指将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去。因此在教学过程中,为使学生能够掌握学习迁移,应该让学生学会思考泛化。
(4)转化理论。支持该理论的心理学家认为学习迁移实际上是一个关系转化的问题。产生迁移的原因,是由于两者之间存在着相同的关系。我们平时强调通过理解而不是机械记忆来学习是因为理解可以转化到各种情境中去,减少知识的错误运用。
(5)学习定势理论。该理论指出迁移取决于通过练习而获得的定势或学习能力。通过练习某一种学习问题,可以帮助解决另一种不同的问题。
(6)认知迁移理论。该理论认为迁移的可能性取决于在记忆搜寻过程中遇到相关信息或技能的可能性。所以,如何增加学生在面临实际问题时提取所学知识的可能性尤为重要。提取的可能性与交互联结的数量直接有关,所以任何增加交互联结网络的“丰富性”的教育方法,对增加迁移的可能性均是有利的。
2 基于学习迁移理论指导的数据结构课程设计
依据前面对学习迁移基本理论的分析,以下将结合数据结构课程设计在教学目标、教学内容与基本要求、题目设计、考核方式以及学生作品欣赏等各个环节的特点与问题,阐述学习迁移理论对数据结构课程设计的指导作用。
2.1 课程设计教学目标
2.1.1教学目标
学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。根据形式训练理论的观点,学习技能的掌握是经过反复训练达到的,学生对知识的理解程度和技能的熟练程度越高,正迁移的可能性越大。因此实践教学环节非常重要。通过课程设计,一方面,使学生学会综合分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术;另一方面,通过课程设计中的算法设计和上机实践的训练,培养学生全面的数据抽象能力、综合的程序设汁能力等。通过此次课程设计主要达到如下目的。
(1)了解并掌握数据结构与算法的设计方法,掌握数组、链表、队列、堆栈、树、图、查找、排序等基本数据结构,具备初步的独立分析和设计能力。
(2)初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能。
(3)提高独立分析和解决问题的能力。
(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。
2.1.2 教学实验中的迁移
教学实验侧重于帮助学生详细理解相应章节的知识点,具有针对性强、目的明确等特点。同时帮助学生树立起动手编程的信心,逐步提高学生对该章节所涉及算法的理解与动手能力。这是由基础理论知识到编程实践的一种迁移,是正迁移。我们以实验1(基于线性表的学生信息管理)为例,该实验要求学生重点掌握线性表的定义与线性表的基本操作,如建立、查找、插入和删除等。其实验内容详细地介绍了需要实现的每一个功能。同时,为了使动手能力差、基础薄弱的学生也能快速地掌握编程技术,教学实验通常会给出一些代码不完整的参考程序供他们参考,只需添加需要实验的线性表功能的代码即可。这样,使学生能够对前面学习过的理论知识的理解更加清晰、深刻,有利于学生扎实地掌握理论知识。可见,这是后面编程实践所获得的经验对前面所学理论知识的一种迁移,是逆迁移。按照泛化理论,我们需要把一种情境中得到的经验进行“泛化”并运用到另一种情境中去,应该让学生学会思考泛化。为此,为了满足编程能力强的学生的需求,实验要求中除了必做题目外,还安排了选作内容供他们选择实现,充分调动不同能力的学生的编程积极性。
与教学实验不同,数据结构课程设计强调的是学生综合运用知识点与基础算法,设计出较为复杂的用来解决实际问题的算法。题目要求往往只是提出对课程设计题目的描述,而非一条一条的具体功能,这就要求学生具有一定的分析问题的能力和学习迁移的能力,综合运用所学知识解决题目中所描述的问题。所以,课程设计强调培养学生综合运用知识来分析问题、解决问题的能力,这也是泛化理论的体现。
总之,课程设计的目标是使学生能将数据结构课程中所学的基本知识融会贯通,综合运用所学的知识解决相关的实际问题,能够把所学知识(包括算法和结构)在计算机上用编程语言加以实现,并且能够根据实际需求创建自己的数据结构和实现自己的算法。而学习迁移是实现这一目标的有效途径。只有在掌握好基础理论知识的基础上学会迁移,才能更好地解决问题、达成目标。
2.2 课程设计的内容及基本要求
合理安排课程设计的内容才能充分发挥其迁移的功效。从学习迁移的角度来说,合理安排课程设计的内容的标准就是使课程设计内容与课堂教学内容具有一定的关联性和一致性,这有助于学生在做课程设计的过程中巩固课堂所学知识,加深对知识的理解,重构教学内容的结构,为知识迁移提供很好的支撑。
课程设计的内容既要遵循基本的授课内容,又要从一定的高度上对基本内容进行抽象与发展,使之能够真实、准确地反映出由基础知识到综合运用能力的迁移过程。因而本文中课程设计的内容主要包括:①设计准备:理解实习任务,明确相关算法,搜集可用资源,熟悉实习环境。②方案设计:完成设计目标、设计路线的确定,并进行模块设计和任务分工。③代码编写:各模块代码编写、模块测试。④代码测试:模块组装、整体测试。⑤设计报告:完成设计文档,制作设计报告。
为了保证综合、灵活运用基础知识的迁移效果,课程设计有如下基本要求:首先,学生应该独立思考、独立完成。在课程设计过程中各任务的设计和调试要求小组独立完成,遇到问题可以讨论,但不可以拷贝。其次,要做好上机准备。每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。再次,按照课程设计的具体要求建立功能模块,每个模块要求按照以下几个内容认真完成,包括需求分析、概要设计、详细设计、调试分析、课程设计总结。最后,课程设计结束后需要对课程设计结果进行检查和演示,并提交程序源代码和文档文件、课程设计报告等内容。
课程设计过程中的编程环节是从程序设计语言课程到数据结构课程的另外一种重要的知识迁移,需要用面向程序或者面向对象的思想来完成数据结构中线性表等基本的结构定义以及操作。本文中课程设计需要重点注意的事项有:①注意备份源文件;②不要轻易删除代码,如需要修改,最好用注释方法来代替删除;③熟悉常用的调试技巧。
2.3 课程设计题目设计
为了促进学生正迁移学习,教师要科学合理地设计课设的题目,要建立在学生主动、适度、适量、适时且形式多样化的基础上,引导学生综合利用所学知识和经验,深入思考分析问题,学以致用。按照形式训练理论,我们需要通过一定的训练进而发展学生心的官能,从而将其前面所学知识转移到其他学习上去。为此,通过教学实验内容的训练,我们已经训练了学生在基础理论与基础编程中的能力,这些经验为先前知识的转移打下了坚实的基础。按照泛化理论,我们将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去,需要让学生学会思考泛化。为此,与教学实验的细化要求不同,我们所设计的课程设计题目主要是给出题目要求的概括性描述,之后是一些要求与提示,还会有一些对题目中个别语句的解释,但不会给出参考的代码,全凭学生自己的知识组成以及算法设计来完成题目要求。我们从泛化理论出发,2011级数字媒体艺术专业的课程设计共8个题目,其中题目1-7具体给出所做题目的描述,同时为了发挥学生的学习积极性,允许学生自拟题目,给学生一定的自由发挥的空间,但是需要教师对自拟题目的难度以及实验小组的组成进行一定的把关。
2.4 课程设计成绩评定体系
课程设计成绩评定体系是对学习迁移理论在课程设计中应用的成果的一个重要体现,因而需要我们更客观、更公平地评价学生的实习成果。为了避免片面的评价,本文中课程设计将综合考虑小组成员各自完成的任务与工作态度情况、机房中源代码系统与PPT的演示与答辩情况、课程设计报告书的质量等,请三位老师分别对上述项目分别打分,最终按照一定的权值进行综合求和。为了体现编程实践、报告在课程设计最终目标中的知识迁移效果,规定源代码演示未通过、末提交报告等情况记为不及格。
3 学习迁移效果展示
学生最终的作品是学习迁移理论应用于课程设计成果的具体体现。课程设计过程中,每个小组对各自的题目进行了深入研究,从基础知识向深度、广度上进行探索与综合,经过团队协作,完成了各自作品。我们选取了3个具有代表性的作品向大家展示。图1展示了某小组学生完成的手机通讯录系统界面,该系统具有大多数其他手机通讯录系统所不具备的动态常用联系人标定功能。图2展示了某小组学生完成的贪吃蛇游戏。该游戏通过MFC设计界面,通过链表组织贪吃蛇的结构,完成了贪吃蛇游戏的功能,但没有处理蛇碰壁的情况。图3展示了某小组学生完成的电梯模拟系统。该题目是学生自选题目,该系统可以自动模拟电梯的不同运行情况,同时考虑了用户请求的优先级问题。自选题目使学生充分发挥自己的主观能动性,更好地将理论知识迁移到综合设计能力上来。
4 课程设计分析
本次课程设计以学习迁移理论为指导,为了调动学生的积极性,并适合不同学生的风格和能力,这次课程设计共出了7个指定题目供学生选择,如果学生有自己的想法,也可以自拟题目,充分发挥学生的主观能动性,同时要求学生以软件工程的要求来实现这次课程设计,从需求分析到概要设计,再到详细设计,最终是调试分析。
从学生最终的作品来看,选择《手机通讯录功能模拟》的学生比较多,其次是《文章编辑系统》,其他题目选择的人数较少,《教学计划编制问题》无人选择。这主要是因为《手机通讯录功能模拟》题目与实验1有很多相似之处,只要对实验1做合理的改动以及扩充,即可完成手机通讯录的功能。从学生课题完成情况看,绝大多数学生完成了课程设计的基本功能要求,一部分学生还综合考虑了用户界面、程序健壮性等因素,课题完成质量较高。数据结构课程设计是在所学基础知识之上,对数据结构的深层次应用,既引导学生深入熟悉编程技巧,又加深对课程知识的理解,这体现了学习迁移的过程。实践证明,这在一定程度上激发了学生的积极性,有效提高了学生的编程能力,使得部分以前不怎么会编程的学生体会到了编程的乐趣。不过,还有一些学生并没有找到自己编程的方法,对数据结构的基本概念不是很清晰。这一方面与学生自身的编程基础较为薄弱有关,另一方面也是需要教师在指导过程中进一步加强基础知识与编程环境之间的联系,引导学生积极主动掌握学习迁移,并且能够针对实验中出现的问题及时进行一些专门讲解。实际情况表明,这次课程设计不但使得学生可以充分了解算法设计,而且能使学生了解软件工程的设计过程,为后续课程的进行提供一个好的开始。同时锻炼了学生的学习迁移能力,对后续学习是非常有利的。
5 结语
【关键词】数据结构;基本知识;课程实验;方法;改革
中图分类号:G423.07 文献标志码:A 文章编号:1673-8500(2014)01-0068-01
一、数据结构内涵
数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。目前,对数据结构研究已经成为世界上一些非数值量的信息结构及其处理方法,它被定为计算机科学与技术相关专的重要课程,同时也是应用数学、管理科学等很多专业的一门基础课程。为了更好有成效的使用计算机、让计算机的性能得到充分发挥,数据结构的有关知识的学习和掌握是非常必要的,大量的很难的算法存在于数据结构中,分解与抽象是它的核心技术,要想让学生掌握这门核心技术,就要认真扎实的通过对课程内容的学习与实践,构造性思维训练的特征得到有效的体现,提高学生的操作能力和实际应用水平。
二、数据结构课程设计改革
通过课程设计来让学生进一步掌握数据结构的整体框架和知识层次,课程设计的内容主要是根据三种逻辑结构(线性、树型和图型)把课程分成三部分贯穿下来,对每一部分又采用层次结构,即逻辑结构、存储结构和在该存储结构上的操作及相应的算法。结合讲过的一个和几个典型的算法给学生留一个实际问题,让学生编程序上计算机去处理。如:讲线性问题的插入和删除这部分时,就留一作业题:把学生成绩按学号录入进计算机中,一涉及到实际问题就会用到许多的相关知识,需要查阅大量的书籍和网站。不过,得到的收获也是可观的。
三、数据结构教学手段和教学方法的改革
实现以教师主导下的以学生为主体的教学模式。在具体的教学手法方面,把学生为教学的主体,坚持实行任务驱动的教学手段,诱导学生主动学习,相互协助学习,共同进行探索与研究,这种教学方式学生很容易接受并受到好评,取得成效很显著。研究算法的具体法则是给学生的算法实现的有关程序和算法实现的思路。每一节课上完后,对讨论过的内容作出总结,对本节极容易出错的状况做好归纳,梳理出具体条款。学生对每一种数据结构的特点和实现都能够牢牢地掌握。除此之外,做好与学生沟通协调工作,重视课后辅导。课下辅导除在课堂中以及学生上机进行辅导之外,还有一种办法是和学生取得联系,利用网上交谈的手段,利用这种手段,掌握学生的思想动态、学习状况,迅速回应学生在自主学习及课后学习时遇到的疑难问题。教师在数据结构教学手段上,要精心设计教学内容,对较困难的算法制作以及收集了大量FIASH演示动画方面的材料。把抽象的概念和空间结构加以具体化、形象化,使所教的数据结构内容直观、生动、提高了学生的学习的积极性,同时提高数据结构教学质量和学生的学习效果。
四、数据结构基本知识部分教学的改革
数据结构的基本知识是这门课程的重点,包括数据的逻辑结构,相应逻辑结构的存储结构,以及在此存储结构上的相关操作及算法等,这些内容必须要讲,也很枯燥,教学时可以根据实际情况做一些调整。
教授学生理解数据结构这门课,同时也是提高学生的学习兴趣的实践过程。通过举例分类、总结学生参与进来的办法来帮助学生理解数据的逻辑结构和存储结构等概念。首先从实际情况入手来引出逻辑结构的概念:学生都知道计算机能进行图书管理,能和人对弈,可是学生要明白计算机之所以能干这些事是靠人工编的程序输入到计算机中来支配计算机工作的,程序怎么编,不同的问题有不同的编程思路,那么实际中的问题基本上就是这么三类;线性问题、树型问题和图型问题。接着通过分析上面图书管理问题,下棋问题,以及修路问题来让学生明白什么是线性、树型和图型问题,接着给一定的时间让学生每人想出一个线性、树型和图型关系的例子,在生动活泼的气氛中把实际问题过渡到这门课中来,实际生活活跃了学生的课堂气氛。反过来,学生也把数据结构的理论知识应用到了实际中去,最后总结到实际问题的线性、树型和图型的逻辑关系是人类对实际问题的逻辑思维。在数据结构这门课中把这种逻辑关系叫做逻辑结构。要让计算机处理实际问题必须把从实际问题中抽象出来的数据和它们之间的逻辑结构存储到计算机中,计算机才能够对实际问题进行处理,那么怎么存储呢?逻辑结构在计算机中的存储方式在数据结构中就叫存储结构。逻辑结构和存储结构这两个概念学生就顺其自然地接受下来。
五、数据结构课程实验部分教学的改革
进行实验教学改革,加强实践教学环节。让学生学以致用是教师传授知识的目的,因此明确教学目标,把培养学生的能力放到重要位置,重视数据结构实践性环节。数据结构课程的让学生上机实习,是对学生极有利全面综合训练,它与课堂上听老师的讲解、自主学习和独立训练是相辅相成的,也是教学中不可或缺的一个教学环节。因此为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,制定了实验大纲,实验指导书,实验手册等设计了系统的有效的实验项目,规范实验报告,提高学生编程能力和专业技术水平。
在学生理解了数据结构的逻辑结构和存储结构这两个概念的基础上,接着让学生学习计算机对数据的操作和算法。算法一般都是用C语言来描述的,要想让学生掌握好每个操作的算法,一定要学生自己编出完整的程序,直接上机训练每个算法。在理论课上把每种逻辑机构联系到的操作进行初步归类后,接着讲每种操作的算法。讲算法时主要采用以下方式帮助学生理解和掌握:
1.尽量用自然语言描述清楚,把每句自然语言对应地用C语言写出来,这就是程序。学生感觉在明白了算法的思路后,写程序就像用英语说话一样。
关键词:数据结构;数据结构课程设计;评价方式
中图分类号:TP3 文献标识码:A 文章编号:1009-3044(2013)05-1088-02
数据结构课程内容抽象,信息量大;在学习过程中所用到的技术多,而之前所介绍的专业性知识又不多,因而加大了学习难度;隐含在各部分的技术和方法丰富,也是学习的重点和难点。根据数据结构课程本身的技术特性,设置数据结构课程设计环节十分重要。通过实践内容的训练,能达到学生程序思维的训练和动手上机调试程序能力的增强 , 提高学生组织数据及编写大型程序的能力。
1 概述
当前我国工程教育面临的普遍问题是:工程教育与社会和产业的需求脱节,包括,工程教育的培养目标与社会需求不一致;工程教育中的质量评估结果不能真实的反映学生的能力;工程教育环境与职场环境相差甚远。当前工程教育中,很少能体现课程体系,学科之间的关联很少。关于课程评价和反馈,包括师生双方地互评。老师评价学生的手段是在学期结束时,给学生一个或好或差的成绩。学生从这个结果中,无法得知他需要进一步努力的方向。用人单位无法依据这份成绩来判断这个学生是否符合他们的需求。学生评教制度就是让学生在某个时间段(比如第14周到第16周)给老师一份评价。学校根据这份评价来考核老师的教学工作是否合格。而评教的根本目的:促使教师改进教学,服务学生,满足学生学习需求并实现学生学习利益,在很大程度上被忽略。
数据结构课程设计作为工程教育的一个环节,同样存在上述问题。另外总共32学时的课时太少,导致学生没有充分时间去实施系统分析、设计和实施的完整过程。
学生的语言掌握程度较大程度地影响到数据结构课程设计的实施。往往系统实施的思路是正确的,由于语言不熟练,又缺乏正确的调试手段和调试方法,导致程序无法通过调试或者花费大量时间进行调试。由于没有软件工程的思想,系统事先没有经过周密的设计,程序调试通过,验收时发现题目理解错误,与老师的要求相差甚远。需要重新设计,编写代码,造成学生大量时间的浪费。
最后,学生的创新能力、沟通和团队协作能力有待于进一步提高,而这些能力是作为一名工程型和创新型的计算机专业人才所必需具备的。比较显著的就是沟通问题。在验收阶段,一个简单问题无法用恰当的语言回答教师。
2 课程改革的理念和思路
课程改革的理念是充分利用本校本学院已有资源,结合CDIO理念,提高学生整体计算机专业能力,训练良好的思维方式,培养扎实的实践能力,具备创新能力和团队合作精神。
课程改革的思路:课程改革从课时数、教学内容、教学方法和评价与反馈等多方面展开。首先是在教学大纲上增加本门课程的学时数。在教学内容上,把程序语言和软件工程的内容以恰当地形式加入课程设计中。
在教学方法上,加强思维方式的训练,强调产学结合,增加学生工程经验,训练实践能力。思维方式的训练从两方面展开:在布置任务时,提醒学生按照一定的方法进行抽象,尽量避免手工操作(自动化手段);在验收阶段,针对具体的代码和算法设计思路,教师提具体的改进方案,并相应地指出可能存在思维误区。思维方式的形成不是一天就可以完成,希望经过一学期的训练可以有效地改变部分同学的思维方式。工程实践(包括工程开发各个环节的实践)能力提高也是从两方面展开:一是让学生经历工程开发的整个过程;二是提业界真实地案例供学生模仿分析学习。
评价和反馈从师生双方互评入手。教师对学生的评价要真实反映当前的知识和能力,让学生明白自己的优势和不足。学生对教师的评价真实反映这一学期教师的教学能力和教学态度。让教师进一步清楚学生具体的学习需求和自身能力提高的方向。
课程改革的目标包括加深学生数据结构基础知识的理解,拓展知识面,增强学生实践动手能力,激发学生的创新和团队协作能力,训练学生的沟通表达和思维能力,培养学生具备良好的职业素质,使学生成为一名工程型和创新型的优秀计算机专业人才。
3 课程改革的内容
该综合课程设计预计需要32学时。其中6学时用来帮助学生加强程序设计能力,先由老师讲解部分的难点重点(主要是在数据结构实施过程中常用的知识点),然后学生完成一个相对复杂的程序。
数据结构的课程设计占用中间的26学时。一学期的课程设计需要学生完成3到4个不同章节的题目。由于学生能力水平参差不齐,每章教师给出3到4个难度不同的题目供选择。这些题目部分来自配套教材,部分由教师自行设计。学生根据自身能力选择完成其中的一个题目(也可以自主选择题目,经教师审核后去实施),然后提交教师验收。在此过程中,诱导学生按照软件工程的思想去完成各个题目。具体的手段是给学生一个合理的、按照软件工程思想设计的课程设计指导书。(先设计后实现)
充分利用学院已有资源,在ACM网站开辟一个数据结构专区,按照ACM竞赛的模式设计一些题目供有余力的学生选择。对于已完成教师安排任务的学生,建议他们注册登录学院ACM网站去完成额外的题目,以此增强他们的实践动手能力。
课程设计的其中一个重要环节是验收。它不仅起着评定成绩的作用,而且还承担着训练思维,提高算法设计和沟通表达能力的作用。程序测试通过后,教师选择部分感兴趣的代码,要求学生解释。如果得不到满意的解释,教师可以暂停此次验收。这个环节可以考验学生的沟通表达能力,以及对系统的理解程度。在一定程度上的杜绝拷贝这种现象,退一步,就算是拷贝也必须完全理解整个系统,强制学生必须实际参与课程设计。
接着去提高代码的质量和效率。先一起分析具体的代码,研究算法的效率有无进一步提高的空间。若有该如何修改,教师根据学生的具体情况,讨论确定方案后,交由学生完成。效率提高后的系统,可以在下一次课再次要求验收。另外,教师需要明确指出明显不符合计算思维的代码,要求学生当堂修改。
最后根据题目难度、完成的质量以及验收时的表现,给出一个成绩并登录在册,作为最终成绩的一部分。每个验收的系统必须提交一个配套的课程设计报告。课程设计报告能让学生学会正确的测试和事后的分析总结,起到部分的自我评价功能。每份课程设计报告也有成绩,同样登记在册,作为评定最终成绩的一个标准。
在课程设计结束时,老师除了给每位学生的一个成绩以外,再对出现的问题进行分析总结并以文档的形式反馈给学生。内容包括语言的掌握程度以及还存在的问题;数据结构的基本内容掌握情况,提交程序的效率、有无按照软件工程的思想完成,还需重点解决的问题;创新能力、沟通和团队协作能力如何等等。
参考文献:
[1] John Malmqvi st. The Application of CDIO Standards in the Evaluation of Swedish Engineering Degree Programmers[J].World Transaction on Engineering and Technology Education,2006,5(2):361-364.
[2] 查建中. 面向经济全球化的工程教育改革战略[J].计算机教育,2010(11):2-7.
[3] 中国CDIO网站. CDIO简介[EB/OL].http:///vNews.asp?typeID=30&parentID=29. 2011.
[4] 苟喜霞.车载导航系统最优路径规划的研究[D]. 北京:北京交通大学,2009.
[5] 任雪萍,王立波,赵葆华.融入PIC-CDIO理念的“数据结构”课程教学改革[J].计算机教育,2012(7):29-32.
[6] 殷旭,胡景繁,张红.基于CDIO教育模式学生学习评估方法的探索[J].高教论坛,2010(2):24-25.
注:本文为网友上传,不代表本站观点,与本站立场无关。
发表评论 快捷匿名评论,或 登录 后评论