杨猛,刘学敏,杨刚
(北京林业大学 信息学院,北京 100083)
摘要:结合高等教育心理学中的学习迁移理论,对数据结构课程设计的教学进行了思考与教学实践。文章针对数据结构课程设计的教学目标制定、设计题目设计、考核方式等各个环节的特点与问题,阐述了学习迁移理论对数据结构课程设计的指导作用;在此基础上给出了所制定的课程设计题目及一些有代表性的学生作品欣赏;对课程设计与课程实验的区别进行了论述。对今后数据结构课程设计教学具有很好的参考和借鉴价值。
教育期刊网 http://www.jyqkw.com
关键词 :学习迁移;课程设计;题目设计;作品欣赏
基金项目:北京林业大学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 结语
数据结构课程设计是综合运用所学的数据结构理论知识与实验实践能力来增强与提高独立分析问题、解决问题的有效手段,如何帮助学生快速、准确地理解并掌握课程的理论知识,是课程设计的目的之一。而学习迁移理论正是这样一种研究先验知识与后续知识之间转换关系的理论,这给数据结构课程尤其是课程设计环节带来了有力的指导。正因为如此,我们将学习迁移理论应用于数据结构课程设计。实验结果表明,这次课程设计比较成功,取得了较好的效果,基本达到了增强数据结构理论与提高编程能力的目的。
教育期刊网 http://www.jyqkw.com
参考文献:
[1] 严蔚敏, 李冬梅, 吴伟民. 数据结构(C语言版)[M]. 北京: 人民邮电出版社, 2011.
[2] 施良方. 学习论[M]. 2版. 北京: 人民教育出版社, 2001.
[3] Ivar Jacobson Grady Booch James Rumbaugh. 统一软件开发过程[M]. 周伯生, 冯学民, 樊东平, 译. 北京: 机械工业出版社, 2002.
[4] 吴永辉, 王建德.数据结构编程实验: 大学程序设计课程与竞赛训练教材(附光盘)[M]. 北京: 机械工业出版社, 2012.
[5] 苏仕华. 数据结构课程设计[M]. 北京: 机械工业出版社, 2005.
(编辑:白杰)