首页 > 文章中心 > 数据结构课程设计总结

数据结构课程设计总结

开篇:润墨网以专业的文秘视角,为您筛选了八篇数据结构课程设计总结范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

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

(北京林业大学 信息学院,北京 100083)

摘要:结合高等教育心理学中的学习迁移理论,对数据结构课程设计的教学进行了思考与教学实践。文章针对数据结构课程设计的教学目标制定、设计题目设计、考核方式等各个环节的特点与问题,阐述了学习迁移理论对数据结构课程设计的指导作用;在此基础上给出了所制定的课程设计题目及一些有代表性的学生作品欣赏;对课程设计与课程实验的区别进行了论述。对今后数据结构课程设计教学具有很好的参考和借鉴价值。

关键词 :学习迁移;课程设计;题目设计;作品欣赏

基金项目:北京林业大学2011年“虚拟现实技术”精品课程建设项目;2014年北京林业大学微课建设项目“计算机动画原理与技术”。

第一作者简介:杨猛,男,讲师,研究方向为计算机应用技术,yangmeng@bjfu.edu.cn。

0 引言

数据结构[1]是北京林业大学信息学院的计算机科学与技术、数字媒体艺术、信息管理与信息系统等专业的一门重要专业基础课,也是必修课。它的总学时为64学时,其中理论授课48学时,实验16学时,课程设计(实习)一周,通常安排在第3学期或者第4学期开课。数据结构也是软件开发与设计、计算机算法研究与实现等课程的基础,其主要内容包括线性表、栈和队列、串、数组和广义表、树、图、查找算法和排序算法等。数据结构课程设计通常是在数据结构的授课环节以及实验环节之后,单独安排学生用大约一周的时间来完成一个较大的作业,以提高学生的思维能力,促进学生的综合应用能力和专业素质的提高。

学习迁移一般是指学习者已有的知识经验、技能等对另一种学习的影响。学习迁移是知识学习过程中普遍存在的。由数据结构课程实验到课程设计,是对数据结构基础知识到综合能力的一种自然过渡,这个过渡即为学习迁移。学生在课程学习过程中,如果能够很好地应用学习迁移,将有利于完善知识结构,收到举一反三、触类旁通的良好学习效果。可见,从数据结构基础知识到数据结构课程设计能力培养,是一种学习迁移的过程。因而,在课程设计的教学实施过程中,学习迁移理论对提高教师的授课质量和学生的学习效果起着非常重要的作用。

笔者对学习迁移基本理论进行了分析,并结合其在数据结构课程设计的实际教学实施过程中的体现,阐述了如何有效应用学习迁移理论来提高授课质量和学生的学习效率。

1 学习迁移基本理论

学习迁移是指一种学习中学得的经验对另一种学习的影响。迁移的基本过程是一个概括出新旧学习本质特征的过程。它是学习者运用已有的认知经验和技能,在对新的学习内容进行分析概括的基础上实现的。学习迁移有顺向和逆向两种,先前学习对后来学习的影响称为顺向迁移,反之则为逆向迁移。不论顺向迁移还是逆向迁移,都有正负之分。正迁移指一种学习对另一种学习起促进作用,反之起阻碍作用则为负迁移。按照迁移的方向来划分,可以分为水平迁移和垂直迁移。水平迁移指已习得的概念、规则或解决问题的方法等在同一抽象概括层次的新情境中的运用;垂直迁移指低级概念和规则向高级概念和规则的迁移。学习迁移理论主要包括以下几种[2]。

(1)形式训练理论。该学说以官能心理学为理论依据,认为通过一定的训练,可以发展心的官能,从而将其转移到其他学习上去。

(2)相同要素理论。该理论认为原先的学习能够迁移到新的学习中去的前提条件是两种学习情境有相同的要素。并且相同要素越多,迁移的程度越高。

(3)泛化理论。泛化理论是指将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去。因此在教学过程中,为使学生能够掌握学习迁移,应该让学生学会思考泛化。

(4)转化理论。支持该理论的心理学家认为学习迁移实际上是一个关系转化的问题。产生迁移的原因,是由于两者之间存在着相同的关系。我们平时强调通过理解而不是机械记忆来学习是因为理解可以转化到各种情境中去,减少知识的错误运用。

(5)学习定势理论。该理论指出迁移取决于通过练习而获得的定势或学习能力。通过练习某一种学习问题,可以帮助解决另一种不同的问题。

(6)认知迁移理论。该理论认为迁移的可能性取决于在记忆搜寻过程中遇到相关信息或技能的可能性。所以,如何增加学生在面临实际问题时提取所学知识的可能性尤为重要。提取的可能性与交互联结的数量直接有关,所以任何增加交互联结网络的“丰富性”的教育方法,对增加迁移的可能性均是有利的。

2 基于学习迁移理论指导的数据结构课程设计

依据前面对学习迁移基本理论的分析,以下将结合数据结构课程设计在教学目标、教学内容与基本要求、题目设计、考核方式以及学生作品欣赏等各个环节的特点与问题,阐述学习迁移理论对数据结构课程设计的指导作用。

2.1 课程设计教学目标

2.1.1 教学目标

学习数据结构是为了将实际问题中所涉及的对象在计算机中表示出来并对它们进行处理。根据形式训练理论的观点,学习技能的掌握是经过反复训练达到的,学生对知识的理解程度和技能的熟练程度越高,正迁移的可能性越大。因此实践教学环节非常重要。通过课程设计,一方面,使学生学会综合分析研究计算机加工的数据结构的特性,以便为应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,并初步了解对算法的时间分析和空间分析技术;另一方面,通过课程设计中的算法设计和上机实践的训练,培养学生全面的数据抽象能力、综合的程序设计能力等。通过此次课程设计主要达到如下目的。

(1)了解并掌握数据结构与算法的设计方法,掌握数组、链表、队列、堆栈、树、图、查找、排序等基本数据结构,具备初步的独立分析和设计能力。

(2)初步掌握软件开发过程[3]的问题分析、系统设计、程序编码、测试等基本方法和技能。

(3)提高独立分析和解决问题的能力。

(4)训练用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

2.1.2 教学实验中的迁移

教学实验[4]侧重于帮助学生详细理解相应章节的知识点,具有针对性强、目的明确等特点。同时帮助学生树立起动手编程的信心,逐步提高学生对该章节所涉及算法的理解与动手能力。这是由基础理论知识到编程实践的一种迁移,是正迁移。我们以实验1(基于线性表的学生信息管理)为例,该实验要求学生重点掌握线性表的定义与线性表的基本操作,如建立、查找、插入和删除等。其实验内容详细地介绍了需要实现的每一个功能。同时,为了使动手能力差、基础薄弱的学生也能快速地掌握编程技术,教学实验通常会给出一些代码不完整的参考程序供他们参考,只需添加需要实验的线性表功能的代码即可。这样,使学生能够对前面学习过的理论知识的理解更加清晰、深刻,有利于学生扎实地掌握理论知识。可见,这是后面编程实践所获得的经验对前面所学理论知识的一种迁移,是逆迁移。按照泛化理论,我们需要把一种情境中得到的经验进行“泛化”并运用到另一种情境中去,应该让学生学会思考泛化。为此,为了满足编程能力强的学生的需求,实验要求中除了必做题目外,还安排了选作内容供他们选择实现,充分调动不同能力的学生的编程积极性。

与教学实验不同,数据结构课程设计强调的是学生综合运用知识点与基础算法,设计出较为复杂的用来解决实际问题的算法。题目要求往往只是提出对课程设计题目的描述,而非一条一条的具体功能,这就要求学生具有一定的分析问题的能力和学习迁移的能力,综合运用所学知识解决题目中所描述的问题。所以,课程设计强调培养学生综合运用知识来分析问题、解决问题的能力,这也是泛化理论的体现。

总之,课程设计的目标[5]是使学生能将数据结构课程中所学的基本知识融会贯通,综合运用所学的知识解决相关的实际问题,能够把所学知识(包括算法和结构)在计算机上用编程语言加以实现,并且能够根据实际需求创建自己的数据结构和实现自己的算法。而学习迁移是实现这一目标的有效途径。只有在掌握好基础理论知识的基础上学会迁移,才能更好地解决问题、达成目标。

2.2 课程设计的内容及基本要求

合理安排课程设计的内容才能充分发挥其迁移的功效。从学习迁移的角度来说,合理安排课程设计的内容的标准就是使课程设计内容与课堂教学内容具有一定的关联性和一致性,这有助于学生在做课程设计的过程中巩固课堂所学知识,加深对知识的理解,重构教学内容的结构,为知识迁移提供很好的支撑。

课程设计的内容既要遵循基本的授课内容,又要从一定的高度上对基本内容进行抽象与发展,使之能够真实、准确地反映出由基础知识到综合运用能力的迁移过程。因而本文中课程设计的内容主要包括:①设计准备:理解实习任务,明确相关算法,搜集可用资源,熟悉实习环境。②方案设计:完成设计目标、设计路线的确定,并进行模块设计和任务分工。③代码编写:各模块代码编写、模块测试。④代码测试:模块组装、整体测试。⑤设计报告:完成设计文档,制作设计报告。

为了保证综合、灵活运用基础知识的迁移效果,课程设计有如下基本要求:首先,学生应该独立思考、独立完成。在课程设计过程中各任务的设计和调试要求小组独立完成,遇到问题可以讨论,但不可以拷贝。其次,要做好上机准备。每次上机前,要事先编制好准备调试的程序,认真想好调试步骤和有关环境的设置方法,准备好有关的文件。再次,按照课程设计的具体要求建立功能模块,每个模块要求按照以下几个内容认真完成,包括需求分析、概要设计、详细设计、调试分析、课程设计总结。最后,课程设计结束后需要对课程设计结果进行检查和演示,并提交程序源代码和文档文件、课程设计报告等内容。

课程设计过程中的编程环节是从程序设计语言课程到数据结构课程的另外一种重要的知识迁移,需要用面向程序或者面向对象的思想来完成数据结构中线性表等基本的结构定义以及操作。本文中课程设计需要重点注意的事项有:①注意备份源文件;②不要轻易删除代码,如需要修改,最好用注释方法来代替删除;③熟悉常用的调试技巧。

2.3 课程设计题目设计

为了促进学生正迁移学习,教师要科学合理地设计课设的题目,要建立在学生主动、适度、适量、适时且形式多样化的基础上, 引导学生综合利用所学知识和经验,深入思考分析问题,学以致用。按照形式训练理论,我们需要通过一定的训练进而发展学生心的官能,从而将其前面所学知识转移到其他学习上去。为此,通过教学实验内容的训练,我们已经训练了学生在基础理论与基础编程中的能力,这些经验为先前知识的转移打下了坚实的基础。按照泛化理论,我们将在一种情境中得到的经验进行“泛化”并运用到另一种情境中去,需要让学生学会思考泛化。为此,与教学实验的细化要求不同,我们所设计的课程设计题目主要是给出题目要求的概括性描述,之后是一些要求与提示,还会有一些对题目中个别语句的解释,但不会给出参考的代码,全凭学生自己的知识组成以及算法设计来完成题目要求。我们从泛化理论出发,2011级数字媒体艺术专业的课程设计共8个题目,其中题目1~7具体给出所做题目的描述,同时为了发挥学生的学习积极性,允许学生自拟题目,给学生一定的自由发挥的空间,但是需要教师对自拟题目的难度以及实验小组的组成进行一定的把关。

2.4 课程设计成绩评定体系

课程设计成绩评定体系是对学习迁移理论在课程设计中应用的成果的一个重要体现,因而需要我们更客观、更公平地评价学生的实习成果。为了避免片面的评价,本文中课程设计将综合考虑小组成员各自完成的任务与工作态度情况、机房中源代码系统与PPT的演示与答辩情况、课程设计报告书的质量等,请三位老师分别对上述项目分别打分,最终按照一定的权值进行综合求和。为了体现编程实践、报告在课程设计最终目标中的知识迁移效果,规定源代码演示未通过、未提交报告等情况记为不及格。

3 学习迁移效果展示

学生最终的作品是学习迁移理论应用于课程设计成果的具体体现。课程设计过程中,每个小组对各自的题目进行了深入研究,从基础知识向深度、广度上进行探索与综合,经过团队协作,完成了各自作品。我们选取了3个具有代表性的作品向大家展示。图1展示了某小组学生完成的手机通讯录系统界面,该系统具有大多数其他手机通讯录系统所不具备的动态常用联系人标定功能。图2展示了某小组学生完成的贪吃蛇游戏。该游戏通过MFC设计界面,通过链表组织贪吃蛇的结构,完成了贪吃蛇游戏的功能,但没有处理蛇碰壁的情况。图3展示了某小组学生完成的电梯模拟系统。该题目是学生自选题目,该系统可以自动模拟电梯的不同运行情况,同时考虑了用户请求的优先级问题。自选题目使学生充分发挥自己的主观能动性,更好地将理论知识迁移到综合设计能力上来。

4 课程设计分析

本次课程设计以学习迁移理论为指导,为了调动学生的积极性,并适合不同学生的风格和能力,这次课程设计共出了7个指定题目供学生选择,如果学生有自己的想法,也可以自拟题目,充分发挥学生的主观能动性,同时要求学生以软件工程的要求来实现这次课程设计,从需求分析到概要设计,再到详细设计,最终是调试分析。

从学生最终的作品来看,选择《手机通讯录功能模拟》的学生比较多,其次是《文章编辑系统》,其他题目选择的人数较少,《教学计划编制问题》无人选择。这主要是因为《手机通讯录功能模拟》题目与实验1有很多相似之处,只要对实验1做合理的改动以及扩充,即可完成手机通讯录的功能。从学生课题完成情况看,绝大多数学生完成了课程设计的基本功能要求,一部分学生还综合考虑了用户界面、程序健壮性等因素,课题完成质量较高。数据结构课程设计是在所学基础知识之上,对数据结构的深层次应用,既引导学生深入熟悉编程技巧,又加深对课程知识的理解,这体现了学习迁移的过程。实践证明,这在一定程度上激发了学生的积极性,有效提高了学生的编程能力,使得部分以前不怎么会编程的学生体会到了编程的乐趣。不过,还有一些学生并没有找到自己编程的方法,对数据结构的基本概念不是很清晰。这一方面与学生自身的编程基础较为薄弱有关,另一方面也是需要教师在指导过程中进一步加强基础知识与编程环境之间的联系,引导学生积极主动掌握学习迁移,并且能够针对实验中出现的问题及时进行一些专门讲解。实际情况表明,这次课程设计不但使得学生可以充分了解算法设计,而且能使学生了解软件工程的设计过程,为后续课程的进行提供一个好的开始。同时锻炼了学生的学习迁移能力,对后续学习是非常有利的。

5 结语

数据结构课程设计是综合运用所学的数据结构理论知识与实验实践能力来增强与提高独立分析问题、解决问题的有效手段,如何帮助学生快速、准确地理解并掌握课程的理论知识,是课程设计的目的之一。而学习迁移理论正是这样一种研究先验知识与后续知识之间转换关系的理论,这给数据结构课程尤其是课程设计环节带来了有力的指导。正因为如此,我们将学习迁移理论应用于数据结构课程设计。实验结果表明,这次课程设计比较成功,取得了较好的效果,基本达到了增强数据结构理论与提高编程能力的目的。

参考文献:

[1] 严蔚敏, 李冬梅, 吴伟民. 数据结构(C语言版)[M]. 北京: 人民邮电出版社, 2011.

[2] 施良方. 学习论[M]. 2版. 北京: 人民教育出版社, 2001.

[3] Ivar Jacobson Grady Booch James Rumbaugh. 统一软件开发过程[M]. 周伯生, 冯学民, 樊东平, 译. 北京: 机械工业出版社, 2002.

[4] 吴永辉, 王建德.数据结构编程实验: 大学程序设计课程与竞赛训练教材(附光盘)[M]. 北京: 机械工业出版社, 2012.

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

【关键词】数据结构;教学改革

《数据结构》是计算机科学与技术专业的必修课之一,是一门综合性的专业基础课和专业核心课程,而且正逐步发展成为众多理工专业的热门选修课。通过本课程的学习,能使学生熟练掌握如何合理地组织数据、有效地存储和处理数据,正确地设计算法以及对算法的分析和评价等知识。它是学习操作系统、编译原理、数据库原理等计算机专业核心课程的基础,掌握好这门课程的内容,是学习计算机其他相关课程的必备条件。因此,该课程在专业建设的地位十分重要。

《数据结构》课程体系不断发展,传统的教学内容和教学方法已落后于时代的发展和市场经济的需要,作为以应用型本科人才培养为目标的高等学校,如何针对计算机科学与技术专业学生就业难的特点,利用有限的教学课时,让学生接触到较新的理论和技术,同时提高学生对数据结构理论的掌握能力,并且能利用数据结构理论进行实践,培养创新能力和自主学习能力,使学生毕业后能尽快适应就业市场的需要,是一个急待解决的问题。

而当前《数据结构》课程的教学存在以下问题:①教学内容跟不上计算机技术的快速发展,教材没有从理论、抽象和设计三种形态的高度来组织教学内容,理论性强,实践性弱。②教学方法单一,不能使学生掌握本学科系统分析、解决问题的基本科学方法。③教学手段的落后,只通过PPT讲稿向学生讲解教学内容。④教学实践设置侧重于单一知识点的训练,与实际应用脱节。

通过教学改革,以上问题才能得到解决。一方面,使教师教学和教研水平得到提高;另一方面,使学生掌握最新的学科知识及对知识的灵活运用能力及实践动手能力,为将来的进一步深造打下良好的基础,所以《数据结构》课程的教学改革势在必行。

《数据结构》是计算机科学与技术专业的主干课程,遵循应用型本科院校的办学宗旨,不断更新课程内容,改进教学方法,加强学生实践能力和创新能力的培养,从而提高学生素质的教学改革思想,构建课程体系。改革主要分以下几方面:

一、吸取国外教材的优点,对教学大纲内容进行调整

删减必要性不大、陈旧过时的内容,如广义表、多维数组、串的基本内容等,逐步增加了反映学科发展趋势的新内容,如生物信息计算、各类搜索引擎中常用的数据结构和算法等,还增加许多典型的数据结构的算法与应用,如跳表、优先队列、B-树等内容。重新修订现有的教材和教学大纲,保持教学内容具有先进性、科学性。同时考虑到与其他课程的衔接问题,进行双语教学,并且申请校级优秀课,以此促进教学改革的进行。

二、教学方法和手段改革上,采用面向问题求解的教学方法

从科研工作或现实生活中的大量实际问题入手,引导学生主动探求答案的积极性。并依托学校的网络建立《数据结构》教学平台,提供丰富的《数据结构》教学资源,包括高质量的多媒体课件,算法动态演示系统,授课内容,教案,大纲,参考文献,疑问解答等等。全方位地为学生提供学习方便,与学生进行网络互动,学生随时有问题都可以通过网络进行求解,从而极大地吸引了学生的学习兴趣,激发了学生学习的积极性和主动性。

三、建立高素质教师队伍

由于《数据结构》技术发展飞速,建立起一支稳定的、高素质的《数据结构》教师及实验教师队伍,这也是提高《数据结构》实验及理论教学质量的关键,从多个渠道解决了师资缺乏的问题,从而使教师的理论和实践操作水平大大提高。

为了提高教师的指导水平以利于进一步的培养学生的实践动手能力,同时能够使理论课教师通过对实验的掌握更好的讲授和体会理论课的教学,每隔一段课程组开培训和研讨会,讨论课程内容的设置及实验和课程设计的内容安排问题。课程组所有成员积极提出有效合理的改善方案,使课程的发展稳固进行。无论是主讲教师还是实验教师均在讨论中有所提高。同时在讲授有关实验内容时更准确、更有自信,避免了在出现问题时无法解决的尴尬局面,进一步激发学生的学习兴趣,培养了学生应用能力,达到了教学要求,而且对其它课程的教学具有深远的意义。

四、在实践环节教学方面,以创新能力培养为目标,进行实践环节的教学改革

详细分为以下三点:

1.以学生为出发点进行调研选择合适的实验项目

从科研和实际问题选题,编写实验指导书和课程设计指导书,实验增设设计型和综合型的实验内容,通过实践培养学生面向问题求解的能力,如:结合ACM认证进行教学,使学生马上从理论过度到实际应用;讲课过程中的理论,课后布置实际问题作业和学期末布置大作业,让学生利用理论自己解决,编写程序,完成作业。在选择实验内容时重点考虑开设哪些实验,所开设的实验中,哪些是验证性的,哪些是综合性、设计性的;并且对于计算机专业所开设的实验项目要有不同的针对性;针对每个实验确定考核依据和方法以及整个实验课程的考核评分方法;提高学生对《数据结构》理论的动手实验能力。使学生通过实验课程的开设来提高实践能力,实验的设置做到了少开一些验证性的实验,多开一些设计性的、综合性的实验。真正提高了学生的动手能力及技术应用能力。当然,在教学过程中理论课教师与实验课教师应经常相互沟通、相互协调教学内容。

《数据结构》课通常是56学时以上左右,《数据结构》课程的重要性不言而喻。在理论课内容的设置上,不同专业由于学时不同而有所区别。计算机专业的学生不但要掌握线性表,树,图实验,而且还要开设有关表,树,图的综合设计性实验;而软件专业除了掌握上述实验外,对多维数组等内容也要进行实验。通过不同性质的实验设置,催发学生的学习主动性和兴趣,有效地利用《数据结构》资源,帮助学生深人理解和掌握《数据结构》的原理和技术,提高了学生实践和运用数据结构知识的能力,锻炼了学生独立分析解决问题的能力,加强了学生学习的协作精神,从而达到了数据结构课程的教学目标。

2.有良好的实验室条件

除实验室专门配备的实验室指导教师外,课程组教师都在实践环节中进行指导,利用实验室的环境,加上合理的实验题目引导学生积极主动地学习,锻炼学生的动手能力、创新能力及面向问题求解的能力。实验室有专门的实验环境,从实验目的到实验原理,实验步骤都可以从实验环境中得到,有了这些理论基础,学生就可以在此基础上顺利完成各个实验项目。实验中心每天在无课的情况下,全天对学生开放,为学生自主创新提供方便。对不同层次的学生进行不同层次的辅导答疑。实验成绩由程序设计,文档说明组成,课程设计成绩由程序设计、设计作品、报告撰写和答辩表现四部分组成。

3.采用“理论――实验――理论总结” 的方法进行实验内容的讲解

传统计算机课程教学中,理论课与实验课教师为同一人,《数据结构》课程也不例外,经过多次讨论和改革,应设专门的实验老师,在实验课上,主讲老师和实验老师同时指导,方便学生提问,有问题及时解决。无论是授课老师还是实验老师在每次实验课后都要对实验内容和对应的理论内容作出总结,经过理论到实验的总结,授课教师和实验教师对课程的内容有了更加深刻的认识,对以后的教学和实验指导有重要意义。

在长期的《数据结构》课程讲解中,可以积累丰富的教学经验,实行理论课与实验课相剥离的教学方式,并采用“理论-实验-理论总结”的方法进行教学会起到事半功倍的作用。即理论课教师在做实验之前先讲解一次要做的实验项目,可能学生会明白50%~60%的内容;然后再安排专门的实验课教师在做实验时边指导边讲解,这样学生在有了对实验内容的大致了解之后经实验课老师的指导再经亲自动手去完成,大概就可以理解90%;实验结束后理论课教师再对实验中的重点进行总结,对问题加以分析,就可以使学生更好的掌握《数据结构》理论和实验知识,从而加强了《数据结构》实践能力的培养。

4.依据实验过程和书面的《数据结构》实验基础知识进行考核

通过实验过程进行考核,教师重点查看学生对实验中所出现问题的理解或解释,鼓励学生在做每个实验时开动脑筋独立解决问题,而不拘泥于查看学生实验报告的工整性,对解决问题好的可另酌情加分;对于综合性实验或创新性实验,根据学生个人意愿进行分组选题或自选题,重点查看学生如何围绕实验目标来解决问题的思路而不过分拘泥于实验的结果,对完成实验优秀的学生另酌情加分。在期末考核时,既实现了书面的《数据结构》实验基础知识卷面考试,也组织进行专项的实验设计或模拟应用动手考试,围绕教学大纲由师生或聘请有关专业人士一起对实验成果进行分析评定等。

通过改革,对调动学生的积极性、培养学生的综合素质、创新能力、创新意识以及扩大就业机会具有重要的意义,为他们将来进入社会打下良好的基础。《数据结构》课程实践操作能力培养模式的构建,对于普通工科院校尤其是工程类专业提高学生的综合素质和能力,具有一定的参考价值和可借鉴的经验。同时也提高了教师的理论水平、业务素质和科研能力。这种教学方式和方法是一种颇有成效的教学改革。

参考文献:

[1]马艳芳,姜桦.《数据结构》课程教学方法的探讨[J].科技信息.2009

[2]梁海丽.浅谈《数据结构与算法》课程教学的改革[J].邢台学院学报.2009,24(2):104―106

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

课程衔接 层次性教学 任务驱动教学

一、引言

设计、实现一个复杂或者高级项目的软件项目,可能需要涉及程序设计语言、数据结构、算法设计与分析、计算机网络、数据库等许多课程。而计算机科学技术专业的每一门课程都是从基础理论入手,复杂、高级项目不适合作为课程的学习案例或者习题。

不少课程选用比较简单和容易理解的小项目作为例题讲解知识点或者作为习题巩固学生所学知识点。比如约瑟夫程序,在程序设计语言中是链表操作习题,而数据结构课程中又作为线性表的习题或者上机题目;图书馆管理程序,可能作为数据结构课程的线性表的课程设计题目,也可能作为数据库课程范式优化的例题;集合的交集和并集可能作为离散数学课程的习题,也常被选做数据结构课程线性表操作的算法优化例题;网络蜘蛛常被作为计算机网络课程的课程设计题目,也常因为其中的典型树形结构关系被数据结构课程选作综合性课程设计题目;多优先级作业调度既是操作系统课程的主要研究内容,也是数据结构课程队列内容的习题。

以往的教学实践反映,很多学生学完课程之后并没有达到预期的目的。究其原因,一是对学生动手能力的培养没有到位,以至于部分同学对课程的学习还停留在“纸上谈兵”的阶段;二是对学生自主学习能力的培养没有到位,以至于涉及讲授范围之外的问题学生就不知从何入手。可以采用分层次教学,就是要因材施教,根据大多数学生的情况,正确处理教学中难与易、快与慢、多与少、应知与应会的关系。充分发挥学生学习的主体作用,转化差生、培养优生,全方位增进教学效果。

目前的教学活动,主要考虑的先后关系,而没有建立良好的课程的衔接关系。需要研究、整理他们直接的衔接关系。

需要整理本课程案例,考虑与先修课程或者后修课程的关系及所选题目的价值和意义,同时对案例采用层次性分解方法,满足层次性教学需求。

鉴于计算机专业本科教学课程数量多,本文针对计算机两大具有紧密关系的核心基础课程《数据结构》和《程序设计C语言》进行探索,并期望扩展到其他课程。

二、课程的衔接关系

C语言程序设计与数据结构是工科院校计算机专业中开设的两门重要的专业基础课。在以往教学中,这两门课程是相对独立、分开授课的,因此导致内容脱节,教学效果差。一般C语言程序设计课程只注重C语言的语法体系,因此学习后却不能用C语言进行程序设计;后者则注重讲授抽象的数据关系和算法在计算机中的表示及实现,学生能进行抽象算法的描述,上机实践应用时却无从下手。然而,这两门课程都以培养学生解决实际问题的程序设计能力为共同目标。因此,如何将这两门课程有机地结合起来,构建C语言与数据结构的新体系,改革教学方法,提高教学质量,成了当前教学改革中亟待解决的问题。

在传统的教学模式下,C语言程序设计与数据结构这两门课程分开教学。C语言程序设计的学习主要在语言语法的层次上,数据结构难度较大,注重思维训练,造成学生不能结合有效结合这两门课程运用到实际中去。通过不断探索,认识到这两门课程有很多内在联系,如软件是用一种程序设计语言编写解决该问题的算法,通过编译、链接成为可执行程序而成,而算法是通过处理输入数据转换为输出的解决方案,因此数据结构和程序设计语言密不可分;再比如数据结构讨论的抽象数据关系和算法要用C语言去实现等。

针对差异化的学生现状,整理课程关系,精巧的设计教学案例和习题实现任务驱动式教学法,对于调动学生学习兴趣,先修课程的简单案例让学生能够逐渐独立实现,有助于学生产生满足感,增加学习自信心;对于案例的扩展性引导,启发学生深入思考和逐步掌握自学方法,通过自学后修课程,提出的较难的问题又有助于激发学生参与后修课程学习的积极性。

三、拟解决的主要问题

数据结构与C语言课程的结合方式的探讨,针对探讨结果设计实际结合方法,并在学生中实践,选择最佳结合方式。

数据结构与C语言,每门课程需要有经验的任课教师结合本课程特点,探讨并确定各个案例与各知识点和其他课程关系,针对学生差异性现状和任务驱动式及层次性教学需求,对选择的案例采用递增式设计;确定跨课程案例及相关课程名,涉及的知识点。探讨选择的习题(包括课堂练习题、课后思考题、课后作业、上机实验题和课程设计题目)于知识点及其他课程的关系,标注习题难度级别,以达到层次性教学目的。

针对这两门课程的案例和习题,深入探讨相互关系,特别是相互的衔接性,C语言课程首先需要讲解基本语法知识,帮助初学者建立简单的程序设计过程思想,但由于教学时间限制,只依靠课内学习和课后作业及上机实验是不能充分达到熟练运行C语言解决问题,编写项目程序的目的。

C语言是大一学生首先接触的程序设计语言,加上许多学生还存在中学时期的一切依赖老师的学习方法和观念,未能进一步学习并提高程序设计能力,因此在后续课程中,比如数据结构课程中需要在讲解数据结构抽象数据类型及解决问题的时候,学生应该尝试借用C语言编程实现抽象算法。因此,应该结合学生的这个实际情况,进一步细化和分解选择的案例和习题,让学生在C语言学习过程中学会应用C语言解决和数据结构简单问题相关任务,为数据结构课程打下坚实基础;而数据结构课程中有意识的安排一些案例和习题,让学生能够有运用C语言解决简单问题的能力,并通过数据结构课程的学习和培养,掌握复杂问题的解决方法和更加熟练的应用C语言工具。

四、总结

根据计算机课程关系,设计优化与其他相关课程有关系的案例与习题,一来可以引导学生理解后修课程部分内容,引起学习兴趣,二来在一些先修课程已经介绍本课程该知识点的基础上,提出新的解决方案或者优化方法,更容易激发学生探索问题的好奇心和解决复杂问题的满足感,加强学生理解课程相互关系和培养计算机创新思维。

以数据结构课程和程序设计语言课程为例整理课程关系,研究和设计教学案例及习题,满足学生差异化需求和对学习内容的兴趣,进行层次性教学,将其经验和方法最终推广到计算机本科教学的各课程。

参考文献:

[1]黄迪明.C语言程序设计(第2版)[M].成都:电子科技大学出版社.

[2]吴跃,李树全,尚明生.数据结构与算法(第2版)[M].北京:机械工业出版社,2010.

[3]萨师煊.数据库(第3版)[M].北京高等教育出版社,2000.

[4]傅彦,顾小丰,王庆先.离散数学及其应用.北京:高等教育出版社,2007.

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

关键词:数据结构;教学方法;任务驱动;实践教学

中图分类号:TP311.12-4

数据结构是计算机专业中介于数学、计算机硬件和计算机软件三者之间的一门综合性的专业基础课。数据结构的内容不仅是程序设计进行总结和提高,而且是编译原理、操作系统、数据库系统等后续专业课提供基础,具有承上启下的重要作用。本文针对数据结构的课程特点和教学过程中存在的问题,探讨教学实践中如何针对产生的问题进行教学改革与实践,以提高教学质量和学生学习效果。

1 数据结构教学中存在的问题与现状

1.1 缺乏对数据结构认识。正确深刻地理解数据结构的涵义、作用以及数据结构课程内容体系是学习好数据结构的前提和基础。但是,一般情况学生只是大概了解了数据结构的概念,在缺乏正确认识和深刻的理解的情况下,就开始直接学习课程内容了,认为具体的内容才是最重要的。对于为什么需要数据结构,课程中包括哪些内容,从哪些角度和方面对数据结构进行讲解,原因是什么等等,都没有认真研究和体会,导致数据结构的学习效果和教学效果都不甚理想。如果这些问题都理解了,就从整体上认识了数据结构,那么学生学习,教师教授都会有的放矢。

1.2 C语言知识储备与数据结构的要求相脱节。数据结构涉及指针、结构体、类型定义、函数调用等相关知识,所以要求学生对这些内容的掌握程度比较高高。但是在C语言教学中,一方面,这些内容都是在课程的后半部分且学习起来难度较大,学生学习有畏难情绪,往往对这些内容掌握不牢;另一方面,教师在授课过程中,对不同专业区别度不大,很少特别为后续课程的需要专门对相关知识做重点讲授,这样就影响后续课程的学习。最终导致学生掌握的C语言知识不能满足学习数据结构课程的要求。

1.3 缺乏独立分析解决问题的能力。在课堂讲课过程中,一般以教师讲授课程内容为主导,在讲解课程内容时,学生貌似都学会了,和老师的互动也非常积极,对老师提出的启发式问题都能正确回答,认为课堂上老师所讲的实例也都很简单。但是,若在没有老师的引领的情况下,让学生单独分析、解决一个例题,多数学生就很难掌握方向,不知从哪做起,缺乏独立分析问题、解决问题的能力。

1.4 动手编程能力不强。相对于理论知识的学习,学生在上机实践中遇到的问题更大。学生的程序设计基础薄弱,缺乏足够的系统训练,对调试程序的方法不够熟练,程序结构设置不合理,代码编写可读性差。即使一些学生看懂了教材上的算法,将其转换成能运行的C语言程序,也存在一定的难度。这些都对学生的学习效果都有较大的影响,甚至会削减学习的积极性,进而产生畏难和厌学情绪,产生恶性循环,有些学生干脆不学了。数据结构中教学中出现的这些问题,严重影响了数据结构课程的教与学,探讨数据结构课程教学方法,势在必行。

2 教学探讨与实施

2.1 正确认识“数据结构”。认识数据结构课程不仅仅让学生了解其在专业中的地位和重要性,更要理解数据结构课程本身的涵义和作用。所以在课程开始的时候开课之初,对课程绪论部分的讲解不应吝啬时间,要把这部门内容讲清楚讲透彻。数据结构是一门研究非数值计算机的程序设计问题中计算机的操作对象以及他们之间关系的操作等的学科。从这个定义中,我们从中抽取对象、关系、操作等关键词,再以设计实现一个家族家谱这样一个比较形象的例子进行讲解,进而引出如何存储表示数据对象及关系和能对这个家族的族谱做哪些操作,这样就引入了逻辑结构和物理结构的知识以及对数据结构建立相应操作的问题。这样学生就基本能建立数据对象、数据关系、基本操作三元组的概念,并能深刻理解逻辑结构与物理结构的概念和关系。从总体上认识、把握、建立数据结构的整体概念是学习好数据结构的基础。

2.2 针对数据结构课程需要制定C语言课程教学大纲。因为不同专业学习C语言的要求不同,所以根据教学计划制定科学合理的数据结构前导课程的教学大纲、考试大纲能有效解决前导课程储备知识不足的情况。根据教学计划安排有数据结构课程的专业,其C语言课程与其他专业的课程不同,是单独列出的。其教学大纲、考试大纲等教学文件由讲授C语言和数据结构的老师根据专业特点及后续课程的需要共同研究制定,并按学校的规定定期修订。教学中只要按照制定好的教学大纲等相关文件规定执行,就能满足数据结构课程的要求。这样就从源头上解决了C语言储备知识不足的问题,避免了以往数据结构课程教师需要与C语言课程教师沟通重点讲解哪些内容,但因只是个人行为而没有学校相关文件规定的限制,所以不能达到较好的效果。通过制定专门的教学大纲,也无需要求数据结构与C语言课程采用“一师制”,避免了人员变动等其他因素带来的不确定性影响。

2.3 构建整体教学内容体系。数据结构课程内容抽象涉及很多概念和技术,学生在学习的课程过程中总是感到知识没有连贯性与整体性,难以对所学内容融会贯通,对课程的知识缺少一个整体的把握。所以建立整体的知识框架体系对数据结构的教学非常重要。数据结构课程的内容主要围绕数据的逻辑结构、数据在计算机中存储的物理结构以及对数据操作算法的实现及评价展开。数据的逻辑结构根据数据对象之间关系的不同特性,分为线性结构(一对一)、树形结构(一对多)、图结构(多对多);数据的物理存储结构按照数据对象之间关系的表示方法分为顺序存储结构和非顺序存储结构。在教学中引入抽象数据类型(ADT)观点介绍数据结构技术,采用算法时空分析来判断算法的好坏。在讲授每一个数据结构时,以抽象数据类型为主线,按照抽象数据类型的定义—抽象数据类型的设计—抽象数据类型的实现三个层次展开来讨论,渗透并应用模块化的思想,在此基础上介绍数据结构的具体应用。在教学过程中教师会反复强调课程的篇章结构及其关系,数据结构课程的章、节、目,是课程的“骨架”,反应了课程内容的逻辑关系,以此加强学生对课程的内容体系的理解和掌握。

2.4 课堂上适当进行编程示范教学。教学过程中,我们发现,学生能听懂老师所讲授解题的算法思路,但就是不知道如何用编程语言或算法表达出来。为解决这一问题,在教学中会在课堂上对有代表性的算法进行现场编程演示。课堂上教师先带着学生先把算法总体思想写出来,接下来选择合适的物理存储结构利用C语言进行编程调试运行。这种方法可以让学生掌握将解决问题的思路转变成代码的全过程,对学生编写和调试程序起到很好的示范作用。在编程过程中,教师会边写代码边讲解,引导学生积极献计献策一起来解决问题。由于现场编程比较耗费课时,对于比较长的程序,一般教师会在课前完成,留下解决问题的关键步骤在课堂与学生一起编程实现。通过这个过程学生能深刻理解绪论中算法的设计只取决于将要解决问题的数据对象之间的逻辑结构,而算法的实现则依赖于数据对象及其关系的存储结构。同时学生也能认识到用类C语言表示的算法与用C语言编写的程序有哪些不同。有了现场的变成演示,在上机实践中,学生直接将教材上的算法照抄到计算机内运行的情况大大减少,理解了如何将抽象的数据结构理论应用到实际解决问题当中去。

2.5 任务驱动教学方法的应用。所谓“任务驱动”就是在学习信息技术的过程中,学生在教师的帮助下,紧紧围绕一个共同的任务活动中心,在强烈的问题动机的驱动下,通过对学习资源的积极主动应用,进行自主探索和互动协作的学习,并在完成既定任务的同时,引导学生产生一种学习实践活动。“任务驱动”是一种建立在建构主义教学理论基础上的教学法。它要求任务的目标性和教学情境的创建。使学生带着真实的任务在探索中学习。在这个过程中,学生还会不断地获得成就感,可以更大地激发他们的求知欲望,逐步形成一个感知心智活动的良性循环,从而培养出独立探索、勇于开拓进取的自学能力。在教学中,我们应用了任务驱动的教学方法并加以改进,达到了较好的教学效果。我们的做法是根据不同的场景“任务”不仅仅是学生的,也是老师的,或者是由老师和学生共同完成的。比如在讲解第二章线性表的时候,我们就会根据课程内容,设计完成一个共同的任务:一元多项式的相加。为了完成这个任务师生共同找解决的方法,当然任务的完成需要老师的按既定的方向循序渐进地引导,先讲解两个集合合并到一起的算法,再讲解将两个按值非递减有序排列的线性表如何合并,一元多项式相加的问题稍加改进就解决了。在完成一些比较大任务的过程中,我们会将其分解成若干个小任务让学生独立完成。当然,在教学实践中也不是所有的内容都可以通过任务驱动的方法实现,不能执行一刀切。授课教师应根据课程内容,学生的能力多方面考虑设计合适的任务。任务太大完不成,容易打消学生的积极性,任务太小不能起到应有的作用。

2.6 系统化实践教学。为了满足不同层次学生对实验题目难度,提升学生对实践教学的兴趣;我们针对不同学生的特点,制定分层次实践教学的方法。按照实验的难易程度分为验证性实验、设计性实验、综合性实验三个层次。验证性实验根据数据结构基础内容设计,难度较低。目的是让学生掌握基本数据结构的特点和基本概念,同时掌握基本算法及应用。在上机指导中授课教师将验证性实验作为主要的考核内容,只有对基本算法的完全掌握,才能灵活应用。设计性实验是在验证性实验的基础上增加难度和深度。根据特定的数据结构有针性设计题目,必须使用某种数据结构解决。授课教师会和学生一起分析问题,引导学生如何解决,如何设计数据结构,采用什么样的算法,但是具体的数据结构及算法编程实现需要学生独立完成。综合性实验一般要求综合使用多种数据结构解决一个难度较大的现实问题;主要训练学生综合运用知识的能力、协作能力和创新能力。由于问题难度较大,我们采取将综合性实验安排在课程设计阶段。

教学实践证明,这种重点进行验证性实验,适当补充设计性实验,通过课程设计完成综合性实验的分层次的实践教学体系,符合学生的认知规律和特点,在实践教学中也取得了较好的教学效果。

3 总结

数据结构课程在计算机专业的课程体系中具有非常重要的作用。本文通过对数据结构课程教学中存在的问题及现状进行深刻剖析,结合教学经验有针对性地提出了相应的解决方法,从问题的源头上避免了这些问题的发生。教学实践表明,通过在教学中采用以上教学方法,提高了数据结构的教学质量,并取得了良好的教学效果。

参考文献:

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

[2]余建国,刘双红.基于任务驱动的协同教学模式在程序设计类课程中的研究与实践[J].科技信息,2009,27:104,83.

[3]陈红琳.《数据结构》课程建设的探讨与实践[J].现代计算机,2012,10:45-47.

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

【关键字】 软件技术基础 教学改革 应用能力 应用型人才

教育部高等学校计算机基础课程教学指导委员会(简称“教指委”)于2009年10月编制了《高等学校计算机基础教学发展战略研究报告 暨计算机基础课程教学基本要求》,指出深化高等学校计算机基础教学的发展趋势和改革意见,强调“加强以知识体系和实验体系为基础的课程建设,加强以应用能力培养为核心的实践教学,加强教学方法、手段的改革与教学环境建设”的高校计算机基础课程的改革意见。

计算机“软件技术基础”课程(简称“软基”)是工科非计算机专业计算机基础教学“三个层次”课程体系中第二层次的一门技术基础课,也是我校生物医学工程(简称“生工”)专业学生的一门必修课程,是全面锻炼学生逻辑思维到动手能力的核心课程,是将来生工学生进行硬件类接口程序开发的基础。该课程包含了操作系统原理、数据结构及算法、数据库及应用、软件工程等内容,目标是在生工专业中打造其软件能力的核心地位,使学生掌握计算机软件技术的基础知识和基本方法,培养学生利用计算机技术分析问题、解决问题的基本思路与能力。传统的“软基”教学,由于其涵盖内容广,课程抽象,学生感觉非常难学,教师同样也感觉难教。很多学生在学完“软基”课程后,并不知道应该将所学知识应用于何处的情况非常常见。为解决这些问题,需要对“软基”课程的教学模式加以改革。目前,各大院校都在探索有关计算机教学的改革。我校在长期调研的基础上,仔细研究生工专业的特点和对计算机的特殊需求及依赖性,前瞻生工专业毕业生将来从事的医药卫生工作实践,考虑解决各种医药实践问题所需的计算机知识和应用能力模块,提出针对我校生工专业学生“软基”课程教学体系的改革并付诸实践,构建具有医药院校特点的“软基”课程体系。力求摸索出一条适合医药类院校生工专业特点的、真正做到学有所用的教学模式,使生工专业毕业的大学生能够更好的将所学知识应用到医学领域软件开发和硬件控制中去。

实际上,医药类院校的学生学习计算机,有其自身的特点。首先,医药类专业的学生在高中多数是理科学生,已经养成了一定的分析和解决问题的习惯,具备掌握计算机基本程序设计的数学、算法基础。同时,医药类学生将来要面临大量医学数据的处理和分析,但医药类学生的数学、物理等基础学科相对比较薄弱,这给“软基”课程的学习带来了困难,计算机技术侧重于综合分析问题的能力,包括将问题算法化、逻辑化、数字化,这些都需要比较厚重的数学等自然科学的基础,医药类高等院校学生计算机应用能力比理工类院校学生低,如何在课程建设中体现能力培养,提高应用型技能,是符合我院办学理念和专业培养模式的有益尝试。因此,学好“软基”课程,可以对前面学过的计算机课程起到很好的总结作用,也可以为后续的计算机学习打下坚实的基础。

鉴于以上分析,围绕培养生工学生的软件设计及应用能力,开展教学模式、理论教学、实践教学和自主延伸教学方式方法的研究,提高生工专业毕业生要求的核心竞争力,兼顾教育部对于非计算机专业大学生计算机教育的要求,我们对“软基”课程教学及实践方式进行了调整和改革。

1、理论教学,夯实基础

我校“软基”课程共50学时,但内容覆盖到数据结构、操作系统原理、软件技术、数据库技术等知识。如何在学时少,涵盖门类多的情况下,兼顾统筹,注重“软基”各章内在联系和各章对于学生形成综合研发能力的作用,以此为侧重点进行教学。万丈高楼平地起,基础才是学好知识的关键,只有掌握牢固的基础知识,才能更好的学习后续知识。课堂教学,从简单到复杂,在各个学习情境中选择递进层次性的学习内容,融合“知识+技能+素质”三维度能力要求。采用任务驱动的教学方法,在平时学习和实践考核过程中,学生自主延伸学习,主动查找资料,互相学习,协作完成课程设计。

2、实践教学,提升能力

鉴于国内外大学教育模式的差异,国外的计算机基础教育没有更多的可比性,我们始终关注国内大学的非计算机专业的“软基”课程教学方式的开展和改革。当前,“软基”课程涉及软件工程、数据结构、操作系统、数据库、计算机网络编程等方面知识,内容覆盖面广,各知识模块因为其相对独立性,导致实践教学没有形成以打造学生能力为主线的一体化教学。“软基”课程的每一部分都会对学生软件研发能力的形成有很大影响。有重点的讲授课程,以“精讲多练”为原则,以提高学生综合素质为最终目标,加大实验力度,增加大作业内容和广度,注重学生实践能力的培养,鼓励学生动手解决问题,互相帮助,在培养学生团结协作的同时,使学生在练习中学习,在练习中提高。实践教学是将理论知识充分糅合然后提升的过程,是课堂教学的有力补充,学生的实践开发能力是检验这门课程是否讲好的试金石。如何打破各章知识体系的边界,培养学生综合的系统开发能力,是“软基”实践教学改革的重点。利用实验教学,在验证课堂知识的前提下,引导学生分析问题,自己动手解决问题,鼓励学生优化程序,配合理论教学夯实基础。

3、课程设计,整合知识

采用课程设计的方式检验学生的学习成果。在学完数据结构和数据库技术部分的课程后,学生完成不同的课程设计。数据结构部分,学生随机抽取不同的作业,在一定的时间内独立完成;数据库部分,由学生自由分组(每组人数少于5人),再随机抽取数据库设计题目的基础上协作完成。

通过面向某一具体应用的数据结构和数据库应用的设计,加深学生对数据结构和数据库知识的理解和掌握。数据结构题目的编制将配合ACM竞赛(ACM国际大学生程序设计竞赛,ACM International Collegiate Programming Contest)和“蓝桥杯”软件设计大赛,着重提升学生数据结构模块的算法设计能力;数据库应用设计部分,配合具体应用,促使学生学以致用,更好地掌握知识。通过程序的编写,充分锻炼学生分析问题、解决问题、程序设计的能力,培养学生的团队精神,提高学生学习的主观能动性。

4、网络平台,加深交流

加强网络教学平台的建设,构建数字化学习环境。实现课程教案、电子教案全部上网,教学录像上网,使得学生能够随时“温故而知新”。通过网络,为学生提供丰富的教学资源,对于知识重点、难点给出多媒体演示;通过网络布置课后作业、习题、提交作业;通过网络,实现教师与学生、学生与学生之间的互动交流,共同学习。

5、通过考核,检验教学

我校“软基”课程,学生最后考核的成绩由三部分组成:学生平时的作业成绩、学生课程设计的成绩和期末考试的成绩,各部分的比重为10%、30%、60%。为客观的检测学生学习的成果,改革传统的考试方式,建立“软基”题库。传统的笔试考试由教师命题组卷,试题缺少客观性。建立并完善题库,通过题库系统随机组卷,考查学生的学习情况。期末大作业由以往的教师命题,学生在考试中随堂作答的方式,改成对数据结构和数据库两部分作业程序的编写。课程的考核能充分反映出学生的学习情况和教学情况,使学生能学用结合。

6、知识延伸,开拓学识

由于“软基”课程学时少,内容覆盖广,作为课堂知识的有效延伸,开设C++程序设计、程序算法设计、Java程序设计、数据库应用等选修课辅助课堂教学;和校内有关部门及教研室合作开发项目,在实训中提高实际应用能力;以第二课堂教学和开放实验室的方法,为学生提供良好的学习环境。鼓励学生参加省级计算机大学生比赛,如ACM竞赛和“蓝桥杯”软件设计大赛等,通过与其他学校学生的交流,使学生发现自己的不足之处,督促学生学习。

7、开设“计算机软件综合实践”课程

计算机“软件技术基础”课程教学涵盖计算机多门课程,为使学生更好的了解程序开发过程,掌握程序设计技巧,应用所学知识开发应用程序,近年我校新增“计算机软件综合实践”课程。通过该课程,学生在教师的指导下,针对专业领域内的软件应用问题,有针对性地进行软件设计或专题研究,独立完成一定的设计任务,学会软件设计的基本方法与基本步骤,提高专业知识的综合应用能力,使学生初步具备一定的综合分析问题与解决问题、独立进行软件系统设计的能力,为毕业设计和今后从事专业工作打下初步基础。

通过对学生的教学实践,改变了“软基”课程传统的教学模式,努力做到《基本要求》中对教学方法、教学手段提出的“加强实践环节的要求与考核,加强研究型学习、自主式学习、资源型学习、协作型学习能力的培养”要求,使我校生工专业的“软件技术基础”教学更加适应21世纪人才培养的需要。通过对学生应用能力的培养,我校多名学生在ACM程序设计大赛和蓝桥杯程序设计大赛中获得良好名次。实践证明,根据学生的特点和知识掌握情况,针对不同的教学内容,采用不同的任务驱动的教学模式,在教学中取得了较好的效果,可以极大提高学生学习的主动性和分析、解决问题的能力,培养学生的团队精神,对学生未来的工作和学习都将产生积极的影响。

参 考 文 献

[1] 教育部高等学校计算机基础课程教学指导委员会.《高等学校计算机基础教学发展战略研究报告 暨计算机基础课程教学基本要求》.高等教育出版社.2009.10

[2] 教育部高等学校计算机基础课程教学指导委员会.《高等学校计算机基础核心课程教学实施方案》.高等教育出版社.2011.10

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

关键词:C++程序设计;课程建设;负反馈教学法;实践环节;特色教材

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

文章编号:1672-5913(2007)12-0018-03

C++不仅是一门程序设计课程,而且是这些专业后续专业课程(如数据结构、操作系统、微机原理、单片机及应用等)的重要基础,更是这些专业开展计算机研究和应用的重要表达工具和开发工具。因此,Visual C++程序设计课程的教学改革与建设具有十分重要的意义。本文下面从教学方法改革、教学内容研究、实践环节建设、特色教材编写等方面介绍我校VC++课程建设的一些做法。

1积极推进教学方法改革,形成颇具特色的负反馈教学法

负反馈教学法的原理是从教学过程中反馈(作业、实验、答疑、单元测验等)的问题入手,通过及时讲评,解决学生学习中存在的问题,以达到预期的教学目标。由于反馈的是教学过程中存在的问题故称此方法为负反馈教学法。负反馈教学法包括以下方面。

1.1用“范例”组织课堂教学,贯彻“发现式”教学思想

范例教学法由教育学家瓦根舍因提出,教师通过范例辅助学生理解、掌握知识和原理,其目的是让学生能够独立地获得判断能力、推理能力、认识能力和继续学习的能力。以往,程序设计课程教学通常以一门具体语言为主线,围绕语法知识展开。而实质上,设计程序是为了解决实际问题,是一种缜密思维方式、创新素质和综合能力的培养。要使学生对程序设计有兴趣,必须亲自感受并体验程序设计的无限魅力。为此,我们改用范例组织课堂教学。在多媒体教学设备和真实编程环境的支持下,课堂教学以程序(范例)为主线。所选范例程序具有典型性、综合性和可扩展性,涉及基本语法、基本算法和基本调试技术。范例程序的讲解首先符合“现象发现问题分析问题解决问题验证”的探索过程,使学生掌握基本语法、算法及应用。其次,通过对范例程序的启发式扩展,揭示程序由小到大、由简单到复杂直到实用的过程,激发学生的探索热情和兴趣,使学生掌握知识间的联系和编程的工程化思想,获得实际编程能力。

1.2采集教学负反馈信息,做好分类、分析和讲评

按负反馈教学法要求,任课教师做好作业和实验报告的抽样批改、单元测验的全样批改,重视实验指导和答疑,从中了解学生的学习情况。在获取足够的负反馈信息后,任课教师及时做好问题的分类、分析和讲评,及时发现和解决学生学习中存在的问题,确保学生对所学知识的真正掌握。

1.3根据大班教学特点,推进强同步教学策略

大班教学成功的关键在于保持师生教与学的同步状态。负反馈教学法的师生同步措施有授课、作业、实验、讲评和测验等。其中,作业与实验报告由于学生存在一定抄袭现象,同步效果欠佳,为弱同步措施。授课、讲评和测验同步效果较好,为强同步措施。为使大班教学取得较好效果,采用强同步措施是必要的。特别地,我们在每个单元安排一次测验,以实现师生的强同步,及时取得真实的负反馈信息。

1.4编写负反馈教学法配套教辅资料,培养学生自学、探索和自我完善能力

配套教辅资料主要有:①学习指导。注重概念理解、知识巩固,设单元测试,便于学生学习和自测自查;②实验指导。共有17个实验,每个实验包含调试技术介绍、程序调试题、程序设计题和选做题,注重培养学生的编程能力和调试能力,激发学生编程兴趣;③典型问题和综合问题编程。共8个专题,便于学生突破难点,融会贯通,体验综合编程的乐趣,培养分析和解决问题的能力;④二级考试模拟试卷;⑤VC++ 6.0程序调试技术,包括使用VC++ 6.0 IDE编写和调试程序的方法和技巧。

2强化实践教学,注重培养学生的实际编程能力

VC++课程是一门难点多、综合性较强的课程,实验是该课程至关重要的环节,只有通过实验才能检验自己是否真正掌握和运用该语言。通过上机调试程序,会发现很多想不到的问题,通过解决这些问题,可以加深对语言和算法的理解,提高程序调试和实际编程能力。为此,本课程设有课内实验(32学时)和课程设计(两周)实践教学环节。

2.1课内实验注重培养学生基本编程和调试能力

基本编程和调试能力是深入学习本课程并取得实际编程能力的前提。课程实验是至关重要的教学环节,与课堂教学同步进行。我们根据教学内容编写了一套以调试技术、基本语法、基本算法、综合编程为核心内容的同步实验指导,共拟定了17个实验,每个实验通常包括调试题、编程题和选做题,可供不同层次的学生选用。

2.2课程设计注重培养学生综合编程和实际应用能力

课程设计安排在课程结束以后,以综合性程序设计训练为主,选题具有典型性、综合性和示范性,突出难点与实用价值,使学生体会到难点不难,难点在实际编程中非常有用。通过课程设计,学生进一步巩固和掌握基本语法、基本算法和基本调试技术,养成良好程序设计风格(模块化、结构化)和严谨的科学作风,初步形成软件工程化思想,具有一定的程序组织能力。

课程设计的内容涉及基本算法和数据结构。基本算法包括穷举、迭代、递推、递归、排序和查找等。基本数据结构包括数组、结构、指针、动态内存分配、单向链表、对象、文件等。课程设计的实施,对非计算机专业采用小综合方案,计算机专业采用大综合方案。所谓小综合是指程序规模在几十到几百行的小题目,大综合则是程序的规模在数百行以上有一定实用价值的题目。

2.3实践教学认真实施,严格考核,确保效果

在课内实验和课程设计的实施过程中,配备富有经验的指导教师,现场实时进行辅导和答疑,指导学生解决编程中出现的问题。同时对学生严格要求,严格考核,确保实践教学质量。加强实践环节的考核是提高实践教学质量的重要保证。预习和考勤占总成绩的30%,上机检查并回答提问占总成绩的40%,课程实验报告和课程设计报告占总成绩的30%。

3积极开展教学内容研究,不断优化和更新教学内容

根据程序设计课程本身发展快、更新快、综合性强、存在问题多的特点,针对同类教材中存在的一些问题和不足,积极开展教学内容的研究,先后发表 “C++运算符重载教学和编程中易被忽视的问题”、“C++中二维数组与指针关系的深入剖析”、“C++语言引用型变量的实现机制浅析”、“C/C++语言可变参数函数的参数传递机制剖析” 等论文,并及时把这些教研成果和学科最新进展引入教学。

3.1课程内容分为三个知识模块

(1) 结构化程序设计基础:包括C++概述、数据类型、运算符、表达式、简单的输入输出、算法与流程控制语句等。

(2) 模块化程序设计:包括函数、编译预处理、程序的多文件组织、数组、结构体、共用体、枚举类型、指针和引用。

(3) 面向对象程序设计:包括类、对象、构造函数、析构函数、继承、派生、友元、虚函数、静态成员、运算符重载、I/O类库、命名空间、模板和异常处理等。

3.2课程的重点、难点及解决办法

(1) 算法表达、结构化语句:结构化编程的基础。注重讲授算法的结构化表示法,结构化语句,常用基本算法,断点+单步调试技术。

(2) 函数:模块化编程基础。注重讲授程序的模块化组织思想和方法,自顶向下逐步求精的程序设计思想,参数传递,变量作用域,程序的多文件组织。

(3) 数组、结构体、指针:数据的结构化和模块化组织基础。指针是重点和难点,应正确区分指针与地址,强调指针类型的作用,讲清各类指针的含义及作用。特别注重讲授指针在动态生成基本数据结构,解决实际问题方面的综合实例。

(4)类、对象、继承、运算符重载、虚函数:面向对象程序设计基础。运算符重载较易理解,但有些方面易忽视,应提请学生注意。虚函数是重点和难点,应注重讲授虚函数的必要性、重要性、实现机制和综合实例。

4改革考评方式,正确发挥考试的导向作用

根据VC++课程的特点,正确发挥考试的导向作用。改革考评方式,实行考教分离,并使其与江苏省大学生计算机等级(二级)考试方式接轨,采取笔试(50%)+机试(50%)的方式,理论与实践并重。

试卷的试题源自题库和现任教师的征卷,试卷由选题算法和软件系统产生,难度与二级考试相当,提高了考评的科学性。

5总结提炼教学经验和成果,积极开展特色教材建设

教材建设是课程建设的重要方面。几年来,课程组对国内外流行C++教材进行研究、分析和试用,总结、积累和提炼自己的教学经验和成果,从校内讲义开始,逐步开展具有自己特色的教材建设工作。2005年2月,自编教材《Visual C++程序设计习题、实验与编程实践》由华东理工大学出版社出版,同年12月又第二次印刷,得到了社会读者的认可。2005年10月,本课程获江苏省高等学校精品教材立项建设,课程组编著的体现“负反馈”教学特色的教材《C++程序设计实践教程》一书目前已与清华大学出版社签订出版合同,书稿已经交付,将于2007年上半年出版。

6运用现代化教学手段,加强网络教学资源建设

经过多年的教学、研究、建设和总结,本课程已积累了丰富的网上教学资源,经常更新,在教学中发挥重要作用。网上教学资源包括:课程教学大纲、课程设计大纲、教学日历、课程设计任务书、实验指导书、教学课件、习题集、典型问题及参考程序、相关教学论文、英文版课外辅导材料、模拟试卷等。课程组成员开发的“基于WEB的《C语言程序设计》教学系统”2006年11月获得第二届全国高等学校计算机课件评比二等奖。本课程网上教学资源的网址为:。

参考文献:

[1] 刘维富,陈建平,王春明. 浅谈“C++程序设计”课程的建设与实践[C]. 第二届全国计算机课程报告论坛,2006,11.

[2] 刘维富,丁卫平,沈学华. Visual C++程序设计习题、实验与编程实践[M]. 上海:华东理工大学出版社,2005,2.

[3] 顾晖,刘维富,管致锦. 负反馈教学法的原理与实践[J]. 电气电子教学学报,2004,(4): 102-104.

[4] 邱建林,刘维富,顾晖. C语言程序设计教学的研究与实践[J]. 电气电子教学学报, 2003,(4):96-98.

[5] 刘维富. C++运算符重载教学和编程中易被忽视的问题[J]. 南通工学院学报(自然科学版),2003,(3):56-59.

[6] 刘维富. C++语言引用型变量的实现机制浅析[J]. 南通工学院学报(自然科学版),2002,(1):64-66.

[7] 顾晖. C/C++语言可变参数函数的参数传递机制剖析[J]. 电脑与信息技术, 2004,(3): 37-38.

[8] 丁卫平,刘维富,沈天晴. C++中二维数组与指针关系的深入剖析[J]. 南通工学院学报(自然科学版),2004,(3):85-87.

投稿日期:2007-2-24

作者简介:陈建平(1960-),男,江苏南通人,硕士,教授,研究方向为快速算法设计与实现等。

刘维富(1961-),男,江苏南通人,硕士,副教授。研究方向为计算机语言与程序设计等。

通信地址:江苏省南通市啬园路9号南通大学计算机科学与技术学院陈建平邮编226019

E-mail:

电话:0513-85975405,13962955020

数据结构课程设计总结范文第7篇

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

中图分类号: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.

数据结构课程设计总结范文第8篇

关键词:研究型教学;前导式案例教学;头脑风暴;创新型学习

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

一、前言

《数据库系统原理》是本科计算机类各专业的核心课程或必修课程,是一门理论性和实践性都很强的课程。既可以培养学生计算机操作能力,又可以培养学生数据库管理能力以及数据库应用系统开发能力。研究型教学模式是指在教师的指导下,学生根据各自的兴趣、爱好和条件,选择不同研究课题,独立自主地开展研究,从中培养学生创新精神和创造能力的一种教学模式。这种教学模式的突出特征是坚持在学习过程中的自由选题、自主探究和自由创造,与以往教学模式相比,研究型教学模式更有利于培养学生创新能力。

本文提出的新的研究型教学模式在原有研究型教学模式的基础上,针对本校学生的具体情况,对多年的《数据库系统原理》教学经验进行总结,从案例教学、头脑风暴法、知识点整合、教师引导创新型学习等几个方面进行了研究,将其应用到实际教学中,并且取得了良好的教学效果。

二、数据库教学现状与不足

笔者总结几年的课堂教学经验,得出几点传统教学的不足。

1.课程理论教学方面,因为学生没有相关的项目实战背景,在学习理论时普遍感觉概念抽象、难于理解。例如学生无法真正体会E-R图的作用,不知道如何建立若干关系,为什么这样建立关系。在后半程理论学习的过程中,学生仅仅掌握几个孤立的知识点,例如学生不知道为什么建立审计机制,如何使用并行控制机制等,不会设计和评价具体的数据库系统,无法完成预定的教学目标。另外理论学习的过程枯燥乏味,加之学生无法体会理论的用处,从而使得学习处于被动状态。

2.课程实验教学方面,目前关于数据库的实验大多是验证性的,学生把课本中的例题和课后习题输入验证,因此实验失去了本来的作用,而实验内容也因为缺乏创新,无法激发学生的兴趣,失去了提高学生学习能力的辅助作用。

3.课程设计环节的用意在于为学生提供一个平台,将《数据库系统原理》的前序课程《数据结构》和后续课程《软件工程》融汇贯通,使学生了解学习数据库的作用。然而在实际教学过程中,这一环节基本无法执行,数据结构中的上机编程使用的是C或者C++,而软件工程所做的项目大多是B/S模式,需要使用的语言是ASP或JSP,数据库中的SQL语言需要嵌入ASP或JSP,但不同的宿主语言嵌入SQL的格式不尽相同。因此,学生在学习《数据库系统原理》课程时普遍感觉实际用处不大,缺乏学习兴趣。

三、研究性教学模式的实施

对于大学教育而言,积极研究开发研究型课程,并在教学实践中鼓励运用研究型学习的方法,是培养研究型人才的可行途径之一。

1.前导式案例教学。传统的案例式教学一般是在描述了原理之后,给出有关的典型事例,从而一目了然地帮助学习者建立相关的图式,案例教学法已成为一种较为成功的教学方法。研究型教学模式提倡在学习理论之前给学生充分的思考空间,只有真正经过研究的问题,学生在学习过程中才能掌握好、记得牢。本文提出的前导式案例教学在不学习理论知识的前提下,将往届学生的成功案例展示给学生,让学生接触实实在在的东西,建立数据库的第一印象,让学生观察案例中包括几个表,适时提出问题,为什么要建这几个表,建表的依据何在,表中的字段如何安排,如何控制表的完整性和安全性。当然往届学生的案例可能会有一些缺陷,但是较之设计完整、功能完善的大型系统,这些小系统更能引起学生的学习兴趣,激发他们的学习热情。通过演示案例,简单介绍数据结构中的某些算法,例如排序算法、查找算法在案例中的应用,让学生了解为什么《数据结构》是《数据库系统原理》的先序课程以及它在整个案例中的作用。然后分模块介绍该案例,并且简单介绍软件工程的基本知识,让学生了解《软件工程》为什么是《数据库系统原理》的后续课程。通过第一次课中的案例引出为什么要学习数据库,学习了数据库能干什么事情,并且把案例中的知识重点分散到各个章节,让学生了解数据库各章节的连贯性,能够全局把握本书的内容,做到有目的地、主动地学习。

2.头脑风暴法的课堂教学。在教学过程中,教师可以将课后习题布置给学生,要求学生在短时间内完成,并且鼓励学生尽可能多地应用多种方法解题,同时教师还可以将历年学生的习题答案和应届学生的答案作对比,看他们掌握到何种层次。最后由教师将所有的答案整理分类,分为正确和错误两大类,课堂上为学生讲解可以用什么样的方法正确作答,另外从理论上分析错误类的问题所在,提示学生以后避免发生类似的错误,然后在上机时为学生演示习题结果,加深学生的印象。例如笔者在教学过程中,以第三章课后习题四“求没有使用天津供应商生产的红色零件的工程号JNO”为例,正确做法包括用NOT IN引出的嵌套查询、连接查询、两个集合的差操作和EXISTS与IN引出的嵌套查询等几种操作,错误的做法包括“=”的错误使用、JNO选择范围错误、表连接错误和ANY的错误使用等一些错误。头脑风暴法的应用拓宽了学生的思维,使学生了解到习题的解答不仅有一种方案,可以使学生充分掌握各种SQL语句。

3.课程内和课程间知识点整合。研究型教学模式不仅仅单纯把知识灌输给学生,还注重培养学生在学习过程中的自学能力,注意大学期间各门课程之间的联系。很多学生在学习过程中认为数据库的知识点太零散、抽象,不容易掌握,因此失去了学习的兴趣。如在第一章绪论,介绍了数据库系统的特点――数据的共享性高、冗余度低、易扩充,在学生还没有关系的概念及内容的时候,就显得抽象、空洞。又如关系代数和SQL语句都是对关系运算的描述语言,在这两者之间有什么联系和区别,如何进行两者之间的转换。通过这样的两个问题来思考两者之间的联系。又如在数据库设计的逻辑结构设计阶段,要使用前面章节的关系理论的知识,来对初步的关系模式进行范式识别、规范化处理,针对设计过程中的实例进行分析处理,在强化关系理论知识的同时,掌握它的实际应用。

本文提出的知识点整合包括两方面的内容,一方面指合理调整教学内容、知识点,加强各章节内容之间的联系,使学生易于理解、掌握,形成一个完整的知识架构。另一方面还指将《离散数学》、《数据结构》、《数据库系统原理》、《软件工程》和《操作系统》等多门课程知识点的整合。在教学过程中,不断地将其先序和后继课程的知识点贯穿其中,让学生充分了解到不仅这门课程内部有连贯性,整个大学四年的课程都具有连贯性。例如,在课程之间离散数学中的存在量词、全称量词、蕴含都在数据库的元组关系演算中有所体现,而在数据库内部,存在量词、全称量词、蕴含又是SQL语句中EXISTS谓词子查询的基础。教师应该在充分熟悉《数据库系统原理》这门课的同时,也应了解《离散数学》、《数据结构》、《软件工程》和《操作系统》等多门课程的基本知识点,才能做到课程内部和课程之间内容的真正整合。

4.教师引导的创新型学习。学生的动手能力和实践能力首要在课程实验中逐步培养,因此,教师的引导作用就显得极为重要。课程的综合设计性实验对大多数学生来说是一个较大的跨越,涉及面向对象的程序设计和SQL SERVER 2000的融合问题。教师应该为学生搭起支架,给学生提出问题,引导学生去探究。如怎样在VB的环境里访问SQL SERVER的数据库,如何对数据库进行更新和查询操作,这是数据库应用系统设计的最基本的问题。对于在学习过程中感觉有困难的同学,还要结合实验项目,讲解具体的ADO的连接方式、信息的插入、删除、修改以及查询功能的具体实现语句,并按照编程过程一步步演示,这样让学生对数据库应用系统的实现有直观的实际的理解,逐步为后期课程设计打下动手的基础。

四、结束语

数据库技术是信息技术领域发展最快的技术之一,《数据库系统原理》课程进行教学改革也是为了紧跟数据库的前沿技术,积极跟踪当前数据库技术发展的水平和趋势来培养管理类人才。本文分析了数据库教学的现状,结合多年的教学经验总结了课程理论教学、实验教学和课程设计等方面的不足,究其原因,主要是学生缺乏学习的兴趣,从而导致学习效果不佳。然后提出了一种新的研究型教学模式,在原有概念的基础上对其进行了改进。笔者将这些新的措施应用于实际的教学,实践表明这些措施能够调动学生的学习兴趣,在扎实的理论基础之上,培养学生的实践与动手能力、创新能力。

参考文献:

[1]萨师煊,王珊.数据库系统概论[M].第四版.北京:高等教育出版社,2008.

[2]胡彩平.“数据库系统概论”课程的研究性教学探讨[J].时代教育,2009,(5):90-92.

[3]徐一平,李艳丽,董亚凡.案例式教学法在VFP程序设计课程中的探索[J].吉林大学学报(信息科学版),2005,(23):81-83.