时间:2023-01-25 12:34:17
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇数据结构实验报告,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:数据结构;实验环节教学;改革;实践
随着计算机处理的数据量越来越大,数据之间的关系也越来越复杂。“数据结构”这门课介绍最常用的数据结构,阐明数据结构的内在逻辑关系,讨论它们在计算机中的存储表示,并结合各种典型应用,说明它们在进行各种运算时的动态性质及实际的执行算法。“数据结构”的研究不仅涉及到计算机硬件,还和计算机软件密切相关。计算机科学各领域及有关的应用软件都要用到数据结构[1]。
1实验教学在“数据结构”教学中的地位
“数据结构”的前导课是高等数学、高级语言程序设计、离散数学;它又是操作系统、编译原理、数据库原理、算法分析、人工智能、图像处理等专业课程的前导课,具有承上启下的作用。在计算机硕士研究生入学考试中都设有这门课,并且分值最高,所以该课被我校选入第一批重点建设课。它又是一门实验性很强的课程,CC2001对该课程及相关内容和相关度进行了明确的描述。“数据结构”课程要让学生掌握计算机处理非数值运算问题时的一般原理和方法,熟悉解决各种问题的基本模型,培养学生运用已有的算法语言编写准确、清晰程序的能力。另外,通过本课程理论体系的学习,学生在设计软件系统时应学会合理选择数据结构,并能对所选模型进行初步评价,学生通过学习,能够设计一个“好”的程序[2]。
实验是学生检验所学理论知识是否牢固,并探索和运用知识的过程。通过实验,学生不仅可以进一步理解数据结构的基本知识,通过对不同存储结构和相应算法的对比及上机编程练习,提高根据求解问题性质选择合理的数据结构并控制求解算法的时间、空间复杂度的能力,而且能进一步提高软件设计和编程水平,提高学习的积极性和主动性,形成科学的思维方法和严谨的科学态度[3-4],因此“数据结构”的实验十分重要。
2 “数据结构”实验教学的改革和实践
2.1更新教材和实验报告
要推进实验教学的改革,首先要改革现有教材,应重视学生实验能力的培养,体现以学科为基础的学科特色。在“数据结构”教学中,重点是让学生通过实验环节学习数据结构,让学生明白哪些知识是基本点,哪些是难点和重点,明确学习目的和作用。在这样的指导思想下,我们在2005年组织课题组成员,按照CC2001的要求,结合我国计算机的发展和2009年考研大纲,编写了C++描述的《数据结构与算法》教材,于2008年秋季开始使用,效果良好。每过一学期,我们都根据当前情况和学生意见及时更新实验报告。比如最初的实验报告有一道字符串的实验题,随着计算机的发展,不论是C++语言还是Java语言,已经有现成的字符串库函数,学生只要会使用库函数即可,不需自己编写,而且考研大纲也不作要求,所以我们及时更新了教学内容和实验内容,并在实验题目中增加了ACM大赛的实验题,为学生参加程序设计大赛打下良好的基础。
2.2设计合理的实验题目
实验报告是“数据结构”实验环节的重要内容,题目的选取要符合学生的实际水平,而且要有跨度,否则会白白浪费学习时间。2001年,我们调研了清华、北大等各院校的教学改革情况,并征求了毕业生和已学过这门课的在校生意见,发现我们的教学没有从学生的实际情况出发,很难调动学生的学习兴趣。为此,我们从2002年开始编写实验报告,把实验题分成三个层次,有验证(改进)型、综合型和设计型题目。验证型题目是对教科书上典型算法的实现,也有验证改进型的,即是对书上算法稍加修改,这就要求学生必须事先看懂书上的算法才能修改;综合型题目是将不同的实验进行组合,综合解决较复杂的问题,要求学生利用各种知识解决新的问题;设计型题目是教师提出实验目的和要求,学生自行设计,完成实验内容,要求学生的基础比较好,一般安排在课外进行,极大丰富了第二课堂。学生可根据自己的能力选择不同层次的实验题目,大大提高了学习积极性。
我们还鼓励学生对教材中的遗留问题进行自行设计,也鼓励学生根据自己的爱好做一些小的系统实验。这不但使学生的基本知识和实验技能得到巩固,还可以提高学生的创新能力。实验报告的每道实验题都有明确的“对问题的描述”、“实验目的”、“实验内容及要求”、“测试数据”和“思考”,学生每做一道题,都明白实验的目的和要求,完成后,教师还要根据“思考”题目及时向学生提出问题,学生可以自行设计实验方法来解决,教师也可以引导学生设计疑问,主动将教材上的验证性实验转变为设计性实验,教会他们举一反三,促进学生的思维向新和深的层次发展,加深他们对所学知识的理解。
实验题目还要新颖、有趣。比如我们的实验报告有猴子选大王、迷宫等问题,学生可以使用动态规划、回溯法、分支限界法等算法,将几个算法的实际执行时间进行比较,从实验结果证明理论分析的正确性。
2.3建立“以老带新,青年为主”的教学梯队
我们的教学梯队平均年龄35岁,教授、副教授占40%,讲师占40%,助教占20%。青年教师中有硕士和博士研究生,他们接受新鲜事物快,精力充沛且动手能力强,但缺乏教学经验,所以我们要求青年教师至少带两年的实验辅导和习题课,在第一次主讲之前至少要听有经验教师一学期的课,而有经验的教师还要不断试听青年教师的课,指出不足之处,帮助他们尽快提高教学水平。经过几年的锻炼,青年教师陆续登上讲台,共有3人在内蒙古大学“青年教学技艺大赛”中获得了1个一等奖和2个二等奖,其中1人获得高等院校第四届青年教师课题教学技能大赛理科组一等奖,成为这门课的骨干教师。
2.4加强上机辅导和课后辅导
编程是高强度的脑力劳动,不是听会的,也不是看会的,而是自己练会的。刚开始,大部分学生上机前没有编好程序,而是上机时现编程序,白白浪费宝贵的上机时间;有些教师辅导时发现学生的程序有错,就动手帮助调试,而不是给学生指出错误的原因,让学生明白后自己修改。结果虽然程序调试好了,但学生不知道是什么原因,以后再有错误时就依赖教师修改,辅导教师很累,而教学效果并不好,学生和教师都有怨言。针对这些情况,我们要求每个学生上机之前就把程序编好,上机调试过程中有问题要及时问老师,最大限度地利用上机时间;教师辅导时既要认真负责,又要讲究方式方法,学生有问题,教师要指出错误所在,让学生明白错误的原因,然后让学生自己改。这样既可以提高学生的编程能力,又使每个学生的问题都能及时解决。
每做一道实验题前,教师都会大致解释题目的含义、用到的知识模块,有的还要引导学生查阅一些参考资料。每当一个模块结束后(以一个逻辑结构为一个模块),我们都要把几个班的学生组织在一起(平时上课是小班),对已经验收过的较好程序和普遍存在的问题进行统一讲解和总结。通过总结,学生加深对实验的理解,知其然,也知其所以然。通过融会贯通已完成的各部分实验,自然引出下一模块的实验。
由于现在学生都没有固定教室,教师没有辅导的固定地点,我们每周一至周四下午安排一名教师在办公室答疑,哪个班的学生都可以到指定办公室问问题,值班教师在办公室的机器上修改学生的程序,这样比在教室里单纯讲解理论的效果要好得多。
2.5加大对实验环节的考核力度
学计算机的,不动手是学不会编程的,学不会编程也就等于没有学会计算机,所以要提高学生的编程能力,就要加大对学生实验环节的考核力度。在“数据结构”课程考核中,平时成绩、实验成绩和理论考试成绩比例为1∶4∶5。为了杜绝考前突击复习的现象,我们在第一节课就讲清要求,让学生从上课的第一天起就重视这门课,真正掌握这门课。在实验环节的考核中,验证型题目一般要求1周内完成,综合型题目一般要求2~3周内完成,对于综合型题目,学生先按2~3人分成一组,每人完成一个模块,通过接口的调用组成一个完整的程序,最后随机抽取小组中的一名代表讲解编程的设计思路,演示程序执行情况,辅导教师根据完成情况给出一个代表小组的分数。学生要在规定的时间请辅导教师验收实验题,过期不验收,视为自动放弃,本次实验题没有成绩。
经过七年实验教学的改革与实践,我们取得了明显效果。2007年6月,在哈尔滨工业大学举行的“东软杯”ACM/ICPC中国•东北地区首届大学生程序设计竞赛中,我院选派了3支代表队,结果分获一、二、三等奖;2007年11月,在计算机学会、高等学校计算机教育专业委员会主办,内蒙古大学承办的第二届ACM/ICPC
大学生程序设计竞赛中,我院分获团体、一、二、三等奖;2008年,在ACM程序设计相关比赛中,我院获自治区级一等奖、2个二等奖,获东北赛区1个三等奖、2个优秀奖。
实践证明,这样教学改革不仅能激发学生学习的积极性,还能锻炼他们的团队精神,让他们学会软件开发的整个过程,为他们编程能力的提高、毕业论文设计和走向工作岗位打下良好基础。
3结束语
从2009年开始,计算机硕士研究生入学考试采取全国统考的方式,“数据结构”是必考科目,而且占分值最大,这更能说明这门课在计算机专业中的重要性。这些年来,我们一直致力于这门课的建设,从教材选用、课程体系建设、师资队伍、课程教学、实验教学等各个环节进行了不断的实践和探索[5]。我们相信,通过加大对“数据结构”教学,特别是实验环节的改革和实践,一定能进一步调动起学生学习这门课的积极性,激励他们热爱计算机,热爱科学,成为IT业的优秀人才。
参考文献:
[1] 殷人昆. 数据结构[M]. 北京:清华大学出版社,2007.
[2] 王昭荣,曾卫东,鲁兴萌. 改革实验教学及管理模式,培养创新型本科人才[J]. 高等理科教育,2007(1):63-65.
[3] 汪沁. 基于“数据结构”实验的探讨和研究[J]. 中国教育信息化,2007(4):17-19.
[4] 徐大华. 程序设计语言教学方法探讨[J]. 高等理科教育,2007(1):36-38.
[5] 赵艳红,邵定宏.“数据结构”教学的探索与研究[J]. 计算机教育,2008(9):131-132.
Reform and Practice in Data Structure Course’s Experimental Aspects
ZHAO Yu-lan
(College of Computer Science, Neimongol University, Hohhot 010021, China)
论文摘要:在建构式教育理论的指导下,以就业需求为目标,针对数据结构教学中教与学目标不明、学习信心和动力不足、编程基础薄弱等问题,提出建构式的数据结构教学方法,在实际教学中取得较好的教学效果,这些措施也可作为其他计算机专业课程教学的参考。
近年来,在产业界急需大量软件开发人员的情况下,普通本科院校计算机专业学生的就业率持续走低。网络、报纸等媒体对计算机本科教育现状多有批评,甚至出现了大学不如培训公司的极端观点,严重影响了学生对专业课程的学习兴趣、动力和信心。数据结构是计算机专业的核心基础课程,上承程序设计语言、离散数学,下启操作系统、编译原理等课程,其重要性不言而喻。一方面,数据结构学科具有难度大、抽象层次高、概念繁杂等特点,学生很难掌握,更不要说将抽象理论与就业实践需求相结合。另一方面,国内主流数据结构教材和相应的传统教学模式侧重于培养学生的计算机学科基础理论素养,而将如何通过组织数据结构教学活动积极推动就业的问题留给了任课教师[1]。这造成了学生学习数据结构的目标不明、信心和动力不足。笔者面向就业需要明确了数据结构的两大主要教学目标,并在实际教学过程中实践建构式教育理论,尝试解决学生对专业认识不清、学习兴趣不足、编程基础薄弱等问题。一些做法得到了学生的认可和配合,成功地激发了学生的学习主动性、在一定程度上培育了学生的创新精神。
1面向就业需求的数据结构教学目标
教育要服务于社会生产需求。数据结构教学也必须紧扣这一根本目标。本节从满足就业需要的角度阐明了数据结构教学的两个主要目标:
1) 培养超越具体程序设计语言技巧的编程技术。
现阶段是一个传统的生产生活方式迅速向电子化、信息化转变的时期。人们需要开发和维护更多、规模更大的计算机系统来满足生产和生活的需要[2]。这就决定了具有熟练编程技术的程序员在很长时期内都将受到产业界的青睐。大学对学生编程技术的培养始于程序设计语言的教学,如c语言,java语言等。但是现今编程语言繁多,各种新概念层出不穷,常常出现学生无所适从或者质疑某门语言课程已经过时无用的现象。甚至很多教师也在争论讲授何种编程语言。笔者看来掌握编程技术(而不仅仅是语言),回归编程的本质问题更加重要,无谓地追赶时髦不可取。作为编程语言课程的后续,数据结构教学的重要目标就是帮助学生理解编程的本质、锻炼编程技术以及学习提高编程技术的方法。
2) 培养围绕复用的软件开发方式。
随着软件规模的日益增大,软件开发模式逐渐从“从无到有”的模式过渡到“从有到有”的模式,即复用现有的丰富的软件资产,开发新的应用系统。事实上,复用的思想已经被广泛的用于软件开发实践之中,从各种各样的程序库、软件开发包、软件构件、web服务等各种可复用资产已经简化了软件开发的难度、提高了软件开发的效率也极大地改变了软件开发的模式。数据结构学科本身就是对软件复用思想的一种实践,它通过总结大量软件系统中反复出现的数据结构(如表、树、图、集合等),定义和实现处理这些数据结构的基本操作,最终达到能够在不同项目开发中反复应用的目的。这些基本数据结构和算法已经被实现为可复用的产品随着程序设计语言,如c++ stl、c# collections, java collections等,并得到了广泛的使用。因此,数据结构教学的另一个重要目标就是引导学生习惯围绕复用的软件开发方式,能够使用和定制已有的数据结构和算法库。
其他传统的数据结构教学目标,如培养学生面向实际问题进行算法设计和分析的能力,培养学生计算机学科的基本理论素养和思维方式等也非常重要。但普通本科院校学生对理论内容的接受能力以及将理论和现实就业需求相联系的能力相对较弱且教学时间有限[3],笔者认为重点突破本节给出的两个更具体、更可达的教学目标,并在实现这种具体教学目标的过程中潜移默化地培育学生的计算思维和理论素质,将会取得更佳的效果。
2建构式数据结构教学
教学理论研究以及教学实践反馈均表明,学生主动学习的效果远较被动地接受老师灌输的效果好的多。因此,为实现上述教学目标,在建构式教育理论的指导下,笔者探索并采用了一系列建构式教学措施,激发学生的主动性和兴趣,取得了较好效果。
建构主义认为,学习并非学习者对教师所授知识的被动接受,而是学习者以自身已有知识和经验为基础的主动建构过程[4]。知识不仅是通过教师传授而得到,更是学习者在一定的情境中,利用必要的学习资料,通过同化新知识、顺化自身知识结构的方式而获得。建构主义提倡在教师指导下的、以学习者为中心的学习,也就是说,既强调学习者的认知主体作用,又不忽视教师的指导作用,教师是意义建构的帮助者、促进者,而不仅仅是知识的传授者与灌输者。学生是信息加工的主体、是意义的主动建构者,而不仅仅是外部刺激的被动接受者和被灌输的对象。下面从理论教学和实践教学两个方面介绍我们采用的一些教学措施。
2.1理论教学措施
课堂教学是数据结构教学活动的主要部分,充分利用课堂教学时间,激发学生学习数据结构的兴趣和信心,帮助学生建立学习数据结构的环节非常重要。我们采用了如下措施:
1) 组织小型讨论。
好的开始是成功的一半,好的课堂教学须在上课之初就抓住学生的注意力,让学生带着轻松、愉快的心情听课。我的做法是在课堂的前5分钟,提出一个学生感兴趣的话题,组织若干个有3~5位同学参与的小型讨论。到一个学期结束时,每位同学都有至少一次的发言机会。讨论的主题可以灵活设置,如时事、技术、社会热点等。有时,课堂中间学生比较疲惫、注意力下降的时候,也可以穿插一点讨论,改善课堂环境。大多数学生非常喜欢这种讨论活动,积极参与其中,成为课堂的一部分,从被动上课转变为喜欢上课。
2) 重建理论知识所针对的问题。
国内的经典数据结构教材侧重严谨的理论,较少讨论各种概念、算法出现的背景以及探讨的问题是否仍然具有现实价值。而回答这些问题能够帮助学生重建理论知识所针对的问题原型,重现解决方案的提出、发展乃至最终成熟的整个过程,更有助于培养学生解决实际问题的能力,养成批判性、创新性思考的习惯。众所周知,关于树的存储方法很多,有双亲表示法,孩子表示法和二叉链表表示法[5],其中以树的二叉链表表示法使用最广,但其他存储方法也有其适合的应用。例如,在利用树表示各个集合,求集合中的等价类时,双亲表示法更为合适。每一个集合都用树的双亲表示法存储时,并设树的根结点的值为集合名,集合中的每个成员都对应一个结点,这样很容易找到一个元素所属的子集(顺着双亲指针找树的根结点)。
3) 组织“我来讲”活动。
数据结构涉及很多抽象的概念和算法,初学者很难理解。而教师则对理论内容比较精熟,常常倾向于从理论的角度逐步递进、展开讲解,这就增加了学生的学习难度。教师和学生在教学语言上的鸿沟是影响教学效果的一个重要障碍。教师当然可将抽象的理论概念与生活中更形象的概念进行类比,帮助学生理解,也可以将复杂的算法过程用多媒体动画模拟出来,直观地展示给学生,帮助学生掌握。但一方面,根据建构主义理论,教师和学生的知识背景不同,由教师设计概念类比语境和算法模拟动画实际上仍然是基于教师的知识结构对知识点进行的同化和顺化,而不是对学生知识体系的直接建构。另一方面,教师的经验和智慧有其局限性,未必总能够找到最适合的类比语境和动画模拟。为此,笔者采用了充分发挥学生智慧的方法,组织“我来讲”活动,要求学生通过设计算法的动画模拟,创建概念的类比语境等方式进行学习,并随机选择学生走上讲台对抽象理论概念和复杂算法进行说明。这样不但能够调动学生思考问题,还能帮助那些无法完成自我知识体系建构的同学从学生的视角去理解同一个问题。例如,对于n维数组是元素为n-1维数组构成的线性表这一递归的类型定义,可采用符号推理的方式,培养学生的理论素养,而同时可鼓励学生根据自己的理解将抽象理论具体化,建立帮助理解和记忆的现实语境。
2.2实践教学措施
数据结构是帮助具有基本编程语言基础的学生锤炼编程技术的关键课程。它揭示了程序设计的基本面,即如何处理相互之间存在一种或多种数据关系的数据元素所构成的集合、如何设计算法并分析算法的优劣。若没有相应的配套实验指导学生如何将理论应用于实际问题,只是泛泛而谈、纸上谈兵,学生容易迷失在数据结构的一连串复杂概念和算法之中,而不知道学习数据结构的意义何在。为实现教学目标,笔者锁定实验内容设置和实验考核等两个关键环节,实践了如下措施,取得了较好效果。
2.2.1实验内容设置
实验内容设置是进行实践教学的最重要部分。从覆盖知识点的角度看,实验内容须面向数据结构教学目标,即实验内容须能够锻炼学生的编程技巧,如算法设计、调试、测试以及调优等能力,还能够让学生体会到围绕复用开展软件开发的威力以及思路。从覆盖教育对象的角度来看,实验内容须面向大多数同学并充分考虑优秀同学,即实验内容须划分不同的层次,让大多数学生能够很容易入手,并让有能力、有余力的学生能够不断地深入,直至形成综合型课程设计。
基于以上考虑,并借鉴同行经验,笔者开展三个层次的实验教学活动,一是要求所有学生都完成的实验内容,要求学生采用不同的数据结构实现同一个问题并进行对比分析,例如,分别使用静态数组和动态分配的连续内存区实现顺序表,使用整型、字符型数组或者链表实现长整数的乘法,使用带头结点或不带头结点的循环链表模拟约瑟夫环等;二是组织程序设计竞赛,让部分学有余力的同学能够在算法设计、程序实现和调试、优化等方面得到锻炼和提高;三是设计综合型课程设计锻炼学生解决问题的综合能力,并通过适当分组,培养学生团队协作精神和能力,锻炼学生解决问题的综合能力的目标,最终达到以点带面全面提高学生能力的目的。
2.2.2实验考核手段
考核手段在教学环节中至关重要。考核手段是学生学习和锻炼自身能力的风向标。为保证每位同学都能积极完成实验并有所收获,避免抄袭和敷衍的现象,笔者采取了综合型的考核手段。其一,提交实验成果,即程序及其运行结果;其二,记录实验过程、分析实验结果以及总结实验得失的实验报告,对实验报告进行选优讲评,培养学生撰写科学实验报告的能力;其三,每位同学必须面向教师讲解自己编写的程序,包括主要思路和细节性语法,优秀的同学可走上讲台宣讲自己的实验方案和程序设计技巧。这就基本杜绝了学生相互之间抄袭程序和实验报告的现象,使得学生真正能够思考问题,并尽力动手完成实验。综合上述三种手段的综合型考核方法既能够达到督促大部分同学完成实验、锻炼动手能力目的,又能够达到培养优秀同学的目的。特别地,优秀同学宣讲活动能够使学生观摩到如何从学生的视角从无到有的解决问题的过程,这能够培养学生解决实际问题的信心并激发其学习积极性。
3应用中遇到的问题
建构式教学模式在应用和推广过程中遇到的主要问题来自三个方面。其一,目前学生的课业负担较重,习惯于被动“填鸭”而不习惯于主动“求索”,这是推动和开展建构式教学模式的主要障碍。其二,建构式教学活动,需要师生的密切交流,但现有师资不足难以满足实际需求。一个可能的解决方法是综合多门课程和多个老师,建构整体的知识框架和学习体系,避免课程教学中的重复劳动,提高师资的利用率。另一个可能的解决方法是利用互联网技术,建立在线教学园地。其三,建构式教学模式仍然处于探索阶段,各学科缺乏建构式教学素材。从笔者在实践教学的体验来看,应尽量从学生的学习背景和能力成长规律出发而不仅仅是从学科背景出发,为学生建构知识体系设计更平滑的路线。
4结语
笔者提出将“培养超越具体程序设计语言技巧的编程技术”和“培养围绕复用的软件开发方式”作为普通本科院校的数据结构教学目标,在建构式教育理论的指导下,设计并实践了一系列建构式教学措施,分析了应用建构式教学模式所遇到的一些问题。
未来将开展两个方面的工作。一是通过问卷调查、统计分析等手段定量地分析建构式教学方法的实际效果;二是创造和积累建构式教学素材,如研究数据结构课程设计过程中不同类型学生的知识建构路线,挖掘并推广其中优秀的知识建构方法。
参考文献:
[1] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[m]. 北京:高等教育出版社,2006:8-101.
[2] 蔡敏,郑尚志,梁宝华.“数据结构”课程教学改革之我见[j]. 计算机教育,2009(4):50-51.
[3] 揭安全,李云清,杨庆红,等. 项目教学模式指导的“数据结构与算法”教学改革[j]. 计算机教育,2008(22):21-23.
摘要:“数据结构”课程是计算机学科的专业基础课,是一门实践性比较强的课程。课程中的实验环节显得尤为重要,该环节可以锻炼和提高学生对复杂程序的设计能力。笔者在多年的教学过程中摸索出实验环节的教学模式,与大家共同探讨。
关键词:数据结构;教学内容;组织形式;考核方式
中图分类号:G642
文献标识码:B
利用计算机来解决实际问题的步骤是:给出问题描述,将问题抽象成数学模型,根据数学模型写出求解问题的算法,再根据算法写出程序代码,最后上机调试并分析结果。在上述过程中,非数值的数学模型是数据结构研究的主体,它操作实现主要是通过数据结构的实验教学环节来完成的,在该教学环节中作为教学主体的学生,首先要具备抽象思维能力和语言基础。往往在环节实施过程中,语言基础是薄弱环节,以至于课时用完了,学生还是写不出满意的算法及代码。鉴于此,我们在教学内容、组织形式、考核方式等教学环节中进行了一些设计,与大家一起来探讨。
1教学内容
我们在教学内容上,围绕课内、课外两条主线进行改革,给学生较大的自主学习空间,有利于学生创新精神及实践能力培养。整个实验教学由浅入深,重在基础、提高能力、挖掘潜力、拓展思路。在课时内的教学主要以基础性实验为主,安排一个综合性实验;课时外的教学主要以设计性实验和综合性实验为主。
1.1学时内的教学内容
在我校数据结构课程共64学时,理论课48学时,实验课16学时。安排了5个实验项目,由于多数学生语言基础不算太好,特别是指针的运用和结构体的定义是薄弱环节,所以在做实验项目时,主要是从教材上的算法出发,使得学生有章可循:
项目1:顺序表的操作
主要训练学生对顺序存储结构的理解,掌握顺序表的查找、插入和删除等基本操作;同时引导学生对于静态参数传递和动态参数传递的使用方法。
项目2:单链表的操作
主要是与顺序存储结构进行比较,完成线性表在链式存储结构上的查找、求长度、插入、删除等基本操作。
项目3:栈和队列的应用―停车场的管理
深入了解栈和队列的特征,以便在实际问题背景下灵活运用;利用两个栈和一个队列模拟停车场管理及相关操作。
项目4:二叉树的遍历
掌握二叉树的结构特征,以及二叉链表存储结构的特点;掌握二叉树三种(先序、中序和后序)遍历方法;熟悉并且掌握递归算法。
项目5:折半查找和快速排序
掌握折半查找和快速排序的方法,掌握要进行折半查找应该采取的存储结构形式。并进行对其进行时间复杂度的分析。
对于每个实验项目的实验目的和实验要求,提前2周放在教学平台上。在实验前1周,利用辅导课时间,以测试的形式,让学生写出算法代码,由于每个实验基本上可以在教材中找到源代码痕迹,所以难度不大。
在实验教学过程中,采用任务驱动式的教学模式,首先从总体思路上讲解10分钟左右,边辅导边发现问题,每半个小时总结1次。由于学生已经在课前作好了准备,在实验室里他们赢得了更多的自主时间用来调试程序,分析结果。学生水平参差不齐,在上课过程中穿插实验验收考核,考核的形式是现场写出主要操作的代码,在规定的时间内进行调试、分析。验收完一个模块,学生再进行下一个任务。教师通过讲课、辅导、验收使得实验课堂充实起来,由于学生每个时间段都有活干,所以课堂气氛非常活跃,讨论热烈。
1.2学时外的教学内容
在学时外,以课程设计的形式,利用开放实验室时间,严格按照软件工程的思想进行训练。
在课程设计时,教师列出多个设计课题,每个课题都有相应的要求或说明。各课题的难易度是有差异的,每个课题后以标准分的形式标出了难易度。例如:
课题1:设有n个人围坐在圆桌周围,现从某个位置m(1≤m≤n)上的人开始报数,报数到k的人就站出来。下一个人,即原来的第k+1个位置上的人,又从1开始报数,再报数到k的人站出来。依此重复下去,直到全部的人都站出来为止。试设计一个程序求出出列序列(难易度90)。
课题2:用递归算法和非递归算法实现下面问题,并比较其算法优势。把一只老鼠放进一个无盖的大箱内, 箱内设置若干隔板,使老鼠走动的方向受到阻碍,看其如何找到一条通道,走出大箱(难易度80)。
“难易度90”表示设计中的各项全部达到要求时的最高得分大致为90。因此,参加课程设计的学生首先要了解设计的任务,仔细阅读各题的设计要求,然后根据自己的基础和能力情况从中选择一题。一般来说,选择课题应以在规定的时间内能完成,并能得到应有的锻炼为基本原则。课程设计的总体思路是:数据模型选取构造求解算法选择存储结构编写程序代码调试测试总结分析。
在做课程设计时,不再拘泥于语言环境的限制和存储结构的限制,主要锻炼学生的开放思维能力和综合知识的应用能力。同时,引导学生从结构化程序设计到面向对象程序设计的思考。例如学生正在学习C#,在做课题1时,除了传统的设计方法外,可以引导学生画出类图和顺序图,写出C#的代码。
设计结束后要写出课程设计报告,以作为整个课程设计评分的书面依据和存档材料。主要包括:需求分析、概要设计、详细设计、调试分析、用户使用说明、测试结果、参考文献等。课时外的训练主要是为毕业设计打下基础,同时也培养了学生的团队协作精神。
2组织形式
2.1学生的组织
对于学生进行分组,每组中按照好、中、差的学生进行搭配。由于学生水平参差不齐,早做完的学生,进行考核验收。验收合格,同时给出相关思考题,可以再对于思考题进行进一步的思考,锻炼创新精神。同时,让已完成任务的学生辅导未完成任务的学生,这样培养了学生的团队协作精神,课堂气氛非常活跃,激发了学生学习的主动性。对于教师的工作也减轻了一些,教师主要是总体部署,分步考核,可以有充足的时间进行验收,比较清楚地掌握总体情况,以便讲评。这样组织学生,可以解决“优等生吃不饱,差等生吃不了”的局面,实现了“因才施教”。
2.2内容的组织
对于每一个实验项目的实验目的、相关要求等,以实验指导书的形式与学生见面,一本好的实验指导书能给学生的上机实验带来事半功倍的效果。
首先,让学生明确实验目的和要求。每个实验项目都给出了实验目的,并且提出了具体要求。有了实验目的,学生才有方向性;有了具体要求,学生实验时才有章可循。对于要求,要按时间分块执行。比如单链表的操作为2学时,第一个学时完成建立、查找、部分主函数工作;第二学时在第一学时基础上完成插入、删除操作,完善主函数。每一个学时在最后进行验收,若有问题通过小组完成。
其次,让学生掌握实验步骤。每一个实验项目按照软件工程的思想去组织,先需求分析,抽象出数据结构模型,再明确数据类型,详细设计,最后给出类C语言的算法描述。要求学生要严格遵循实验步骤来思考问题,这样,可以培养学生良好的工作作风和解决问题的方法,并且为后续课程做准备。
3考核方式
市场经济体制下的学生不如计划经济体制下的学生好教育,特别目前高校扩招,入学的学生素质参差不齐,基础相对薄弱,自学能力不强,不少学生在学习上存在畏难心理。而对于高等教育也不能降低要求,这样就要求在教学模式上进行革新,我校对教和学提出两个转变,“变学生管理为学习管理,变管理学生为服务学生”。对于课程教学,不能再采取应试教育下的考核形式。鉴于此,在数据结构的教学过程中,特别是实验教学,探索出了新的考核形式。
分数对学生来说是非常重要的,以此作为课程管理的抓手。对于教学计划内的实验项目成绩分成两个部分,一个是个人成绩,一个是小组成绩。个人成绩主要考核学生个人能力,小组成绩主要是考核学生的团队协作精神。对于个人成绩考核形式有两个方面,一个方面是学生的程序代码调试技能的测试,一个方面是书写实验报告,从实验报告上可以考查学生的逻辑组织能力。笔者把该考核模式称为“实验2+2”模式。每个实验项目结束前进行验收考核,经常进行阶段性考核,主要是激发学生的学习兴趣,保证了课堂教学纪律,基本没有缺勤的学生,让学生找不出来不学习的理由,因为每处都与成绩挂钩,都在拼命的去“挣分”。
对于课程设计部分,实验室开放时间结束时,由学生提交课程设计源代码和设计总结报告。源代码提交时,要生成可执行文件,对文件进行压缩,压缩文件名为“学号+姓名”形式,发送到指定邮箱地址。课程设计成绩根据学生设计任务完成情况、设计报告、设计成果的质量以及答辩情况综合评定。完成情况主要包括:功能实现情况和程序设计情况;设计报告包括课程设计报告格式,课程设计思路及设计过程,以及对设计的自我评价,收获和体会等;答辩要求思路清晰,模块关系清楚,回答问题敏捷。
对于学生的学业成绩采用结构化成绩,把100分不再作为一个整体看待,把它融进教学的全过程中去。学生的学业成绩由平时成绩、副卷成绩和主卷成绩构成,平时成绩占20%,副卷成绩占20%,主卷成绩占60%。在平时成绩中课程设计10分,作业和平时课堂表现5分,小考5分;副卷成绩中个人成绩15分(其中程序调试10分,实验报告5分),小组成绩5分。
4结论
通过实施验证,效果是良好的。实验的创新也带动了整个课程的进步,特别是上课出勤率,基本上是全勤。课堂气氛活跃,问题讨论热烈,学生的学习主动性大大提高了,网络教学平台登录次数明显增多。在问题答疑和考核验收方面,虽然增加了教师的教学工作量,但是提高了教师的工作热情。真正实现了“教”和“学”的良好互动,提高了教学质量。
参考文献:
[1] 周苏. “数据结构与算法”的教学改革和实验创新[J].计算机教育,2007,(15).
关键词:建构主义;重点课程建设;弹性内容体系;网络化协作学习;基于兴趣的学习
近年来,随着军队信息化建设步伐的加快,各军校都致力于信息类专业的建设[1]。作为信息类专业基础课程和专业课程的结合点,“数据结构”的重要性不言而喻,我院也于2009年确定了“数据结构”重点课程建设,教学对象主要是生长军官学历教育指挥类学员。以建构主义教学理念[2]为指导,将“教员引导下的学员自主学习”教学思想贯彻于课程建设的全过程,把握合理的课程教学体系建设,是本重点课程建设的主要特色。下面,我们将就体现该特色的具体实践过程及其所包含的教学内容体系建设、教学方法改革以及教学团队建设等组成环节进行阐述。
1教学内容体系建设
在课程教学体系中,教学内容是基础,不同的教学内容决定着不同的教学形式与方法,对于学员的知识能力建构的效率和效果也有着不同的影响。目前,各高校普遍压缩了专业基础课教学课时,因此,为了让学员在有限的学时内进行有效的学习,我们必须首先考虑课程教学内容体系建设问题。
一般讲,“数据结构”课程包括线性结构、树型结构、图状结构、查找与排序等内容,并以抽象数据类型、算法度量与评价贯穿其中[3]。各类院校根据其人才培养方案及学员特点,在课程内容组织上也有明显区别:有突出数据逻辑结构的,有侧重算法实现及度量的;有用C语言描述的,有用C++或Java描述的。结合我院信息类专业课程体系设置以及学员特点,根据ACM/IEEE CC2005[4]和教育部CCC2006[5]学科规范,我们在课程内容体系建设方面主要实施了以下几点措施。
1.1采用弹性课程内容体系
由于“数据结构”课程课时有限,本院数据结构课程仅为50学时,课程内容设置不可能面面俱到,必须结合建构主义思想及学员的具体特点确定教学内容。在此次课程建设中,我们在课堂讲授和实践教学环节中均采用了弹性内容体系,在课程讲授内容设置上,我们主要采用了“基本模块”+“扩充模块”的体系,其中“基本模块”包括算法度量基础、线性结构、字符串与模式匹配、树、图、排序、检索等7个模块共16个二级知识点,要求教员必须全部讲解完成;“扩充模块”则包括广义表、AVL树、倒排序及一些前沿应用譬如XML的DOM树、OWL的分类树等,由教员根据学员学习情况灵活掌握实施。
在实践教学环节,我们采用分层次的实验内容体系,自主编写实验教程,设立验证性实验、提高性实验、课程设计等三层次实验要求。其中最基础的验证性实验指课本知识点的具体实现,譬如,线性表存储结构以及其插入、删除、替换、检索等算法的实现等,侧重加深学员对基本数据结构的理解以及基本编程能力的培养;提高性实验则从实际问题解决出发,综合2至3个数据结构的应用或对相关数据结构的算法扩展等,譬如银行的多窗口排队服务,多叉路口车辆调度等问题,需要将现实世界抽象成数据模型并应用相关数据结构的知识解决,有一定建模与实现难度;实验内容体系的顶层是课程设计,以一定规模的实际问题解决为目标,以具体任务为驱动,覆盖数据结构的多种模型,锻炼学员抽象建模和解决问题的能力。根据学时的要求及数据结构教学目标的把握,共计设计了20个实验,其中验证性实验12个,提高性实验7个,课程设计性实验1个,要求学员在数据结构实践过程中至少完成15个实验,包括12个验证实验,任意4个提高性实验以及参加课程设计。
1.2采用C++结合STL(Standard Template Library)框架的描述方法
根据CCC2006的建议,选择面向对象语言C++作为数据结构描述语言,从数据结构的逻辑描述到物理存储及算法实现过程均采用面向对象的分析与设计思路;同时考虑到主流编程语言C++、JAVA及C#等都不同程度地应用了STL框架并提供了常用的数据结构类,譬如Vector、List、Set、Stack、Queue等,在数据结构课程内容中增加了对于主流语言中常用数据结构模板类的分析与编程,以增强学员对数据结构应用的理解。例如,对于STL中的Vector类,其实现功能为大小可动态增长的数组。教学中不仅仅要求学员能够应用该类型,同时要求能够分析理解该类型,譬如要求学员找出其动态增长性实现的代码段,并对其插入、删除算法进行归纳总结等。通过分析STL框架相关类的实现,扩展讲解面向对象思想与概念在实现该类过程中的应用,以提高学员面向对象分析与设计能力。
1.3规范化的教学文档建设
教学是否符合先进的教学理念,是否采用了合理的教学方法,我们从教学文档中就可以看出来,教学文档的形式十分重要,而更重要是教学文档的内容。在本次课程建设中,我们采用了规范化的模板,对课程标准、课程设计、教学计划、教学大纲、教案等进行了统一的设计与规范。譬如,在教案设计中,哪些内容易于CAI展现,哪些内容适合传统板书,我们都进行了仔细研究。譬如概念定义、背景知识、计算结论等,可以拟制要点并进行文本展示;公式定理推导过程如二叉树的性质推导,必须进行板书;原理与过程展示如递归过程分析、树的遍历、排序过程等,推荐使用动画。同时,我们要求教员授课时必须将教材、课件、教案、教学实施表(包括课程标准、大纲、计划)等文档备齐并通过教学组审核。课建组认为:严格规范的教学文档看似传统的要求,实则是课程教学是否成功的前提条件。譬如,课程标准体现了课程的知识体系,即知识建构的基础;教学计划、课程设计与教案则体现了知识的传递体系,即合理地引导学员完成知识的掌握与新知识的建构。通过教学文档建设,提高了课程教学的规范化。
2教学方法改革
在本次“数据结构”重点课程建设中,教学方法改革是研究重点。传统“教员教,学员学”的方法已不能适应“以学员为中心”的学习需要;而照本宣科式的“PPT课件播放朗读”已严重束缚了学员学习过程中的主动性与创造性,与素质教育目标背道而驰。对此,我们在本次课程建设中以建构主义理念为指导,结合“信息化教学”的特点,提出了“网络化协作学习方法”、“基于兴趣的学习模式”两种教学方法并进行了研究尝试。
2.1网络化协作学习方法
“网络化协作学习”是一种以WEB网站和信息资源为依托的新型学习方式[6],在信息资源平台面前,教员和学员、学员和学员之间更加平等,它提高了学员的学习自主性,有利于以学员为中心的学习。在“数据结构”重点课程建设中,我们通过引入“网络化协作学习”,引导学员在课后进行有效的自主学习,从而达到能力培养的要求。在“网络化协同学习”教学方法实施过程中,我们始终把握两个要点:网络课堂的开设与网络化协同学习的实践。
2.1.1信息资源建设与网络课堂开设
开设网络课堂主要依赖网络教学平台和课程信息资源。此次“数据结构”网络课堂建设采用了总部统一配发的网络课程教学平台,该软件平台不仅提供了章节知识点的构建、关联、、检索,而且可以通过公共信息、小组信息、点对点的信息支持交互,该平台能够较好满足教员与学员之间、学员与学员之间的协同学习。基于该网络教学平台,以“数据结构”课程的内容体系为依据,课题组将该课程的章、节、知识点进行了统一的组织,不仅设定了章、节、知识点的隶属关系,还以数据的逻辑结构为线索,将相关知识点进行了关联,形成了“数据结构”课程的知识网,这样做有利学员整体把握该课程;同时,为每一章、节都设置了教学目的、学习方法、学习进度、习题参考、实验练习等栏目,这有利于学员进行自主学习。
2.1.2网络化协同学习方法实践
信息资源的建设是基础,而基于信息资源的“网络化协作学习”实践则是该教学方法改革的重点。 “网络化协作学习”方法实质上是一种建构主义理念指导下的信息化教学方法,它即不同于远程教育模式,也有异于绝大多数的自学网站,“网络化协同学习”强调在教员引导下的学员自主学习和协作学习。在该方法学习中,教员是“导演”,是“总指挥”,教员需要完成学习场景组织、学习进度管理、学习效果评价等活动;学员则可扮演“演员”与“分队指挥”双重角色。作为“演员”,学员需要提出学习计划、实施自主学习;作为“分队指挥”,学员需要组织学习小组、分解学习任务、合成工作成果。
例如,针对模拟实现XML解析器这样的实际应用问题,教员的活动应包括:1)提出应用问题:模拟实现XML文件的DOM存储机制(要求模拟程序能读入、存储XML文件并将XML文件中节点关系按树型显示);2)提示讲解内容:XML文件的DOM存储原理;3)提示学习任务:树型结构的逻辑表示与存储方法、树型结构的遍历、树型结构的显示;4)分配任务给各学习小组,明确学习进度要求;5)验收并讲评学员实验报告等。学员的活动应包括:1)学习任务计划;2)树型结构相关知识学习与交流;3)XML解析器设计;4)XML解析器实现;5)撰写并提交实验报告和相关代码。以上学习活动,主要通过网络课堂所提供的信息、信息浏览、BBS、文件传送进行支持,并通过教员策划组织、学员协作实施的方式完成,是一种有效的“网络协作学习”方法。
2.2基于兴趣的学习模式
“基于兴趣的学习模式”以教育心理学为理论基础,结合“数据结构”课程内容特点,从课程引入、课程展开以及课堂气氛营造等方面进行以提高学员学习兴趣为目标的相关方法研究。该模式的详细论述见文献[7],此处作一简介。
在课程引入阶段,我们将“数据结构”与学员所学专业领域问题相结合,让学员认识到学习“数据结构”课程的现实意义,引发学员的学习兴趣。在课程展开阶段,我们采用“循序渐近式教学”与“任务驱动式学习”两种方法增强学员学习兴趣。“循序渐近式教学”主要指重视先导课与当前课程的衔接,让学员“能够学”;而“任务驱动式学习”则通过应用情景创设提高学员学习知识、解决问题的兴趣,让学员“有兴趣学”。“基于兴趣的学习模式”的第三个主要措施即课堂气氛营造,通过多种方法譬如小组竞赛、知识竞答、结对互助活跃课堂学习气氛,使学员“乐于学”。
3教学团队建设
加强教学团队建设是重点课程建设一项重要内容。教学队伍建设的质量,直接关系到课程教学的质量和人才培养的水平。因此,在课程建设初期,我们根据教研室和课建设小组的具体情况制定了“引进
来,走出去”的教学团队建设策略和具体的教员培养计划,在两年内引进教员2~3名,送学培养2~3名。目前,我们已引进3名具有硕士学位的教员,其中1名教员加入课程建设小组;选送2名教员攻读博士,1名教员攻读硕士学位,其中,1名脱产2名在职;我们还通过短期培训的方式选送教员学习相关专业知识,拓宽视野;通过参加学术会议的方式选派教员参与交流,学习兄弟院校的先进经验。上述措施使教员整体业务水平有了明显提高,教员队伍培养计划圆满完成。此外,通过课程建设活动,我们培养了一批年轻教员,其中有些教员已成为教学骨干。在两年的课程建设中,我们大胆启用年轻教师,每年都有意识地安排部分年轻教员承担“数据结构”的课程教学任务,积极推荐和支持他们参加院举办的各类教学竞赛活动,并指派经验丰富的老教员进行跟踪指导。在这些年轻教员中,先后有5人在课件制作、教学研究以及优质授课比赛中获奖,并取得了一定成绩。
4结语
此次“数据结构”重点课程建设以建构主义教学理念为指导,在教学内容、教学方法、考核方式及教学团队等方面进行了改革与实践,特别是一些改革后的、具有通用性的内容和方法,如“数据结构”课程弹性内容体系、基于兴趣的“数据结构”学习模式以及网络化协作学习方法在本次课程建设得到应用,它为下一阶段的软件基础类课程群的建设打下了基础。
参考文献:
[1] 候喜贵. 军队信息化建设研究[M]. 北京:出版社,2002:17-19.
[2] 张建伟,陈琦. 从认知主义到建构主义[J]. 北京师范大学学报:社会科学版,1996(4):75-82.
[3] 严蔚敏,吴伟民. 数据结构(C语言版)[M]. 北京:清华大学出版社,2001:2-3.
[4] ACM/AIS/puting Curricula 2005[EB/OL].(2007-05-08)[2010-12-20]./education/
curric_vols/CC2005-March06Final.pdf.
[5] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行) [M]. 北京:高等教育出版社,2006:38-40.
[6] 陈文汉,张建奇. 高等教育网络化教学研究综述[J]. 比较教学研究,2003(9):46-52.
[7] 张立,王伟嘉,石岩,等. 基于学习兴趣开展数据结构教学[J]. 计算机教育,2010(13):95-97.
Key Course Construction for Data Structure Base on Innovative Teaching Ideology
ZHANG Li,SHI Yan,ZHANG Hongping,WANG Weijia,YU Congbin
(Department of Logistical Information Engineering, Logistical Engineering University, Chongqing 401311, China)
【关键词】数据结构与算法 实验改革 平台建设
【中图分类号】 G 【文献标识码】A
【文章编号】0450-9889(2014)07C-0132-03
数据结构与算法实验是计算机专业学生必修基础课数据结构与算法的配套实验课程,是培养学生程序设计技能必不可少的重要环节。其目标之一是培养学生能运用理论知识与算法技术分析解决实际问题,能运用高级程序设计语言编程实现算法。从近年实验情况来看,在上机编写程序实现具体算法时遇到的种种问题,效果不容乐观,学生很难按时完成实验所要求的内容。
一、实验教学存在的问题与分析
数据结构与算法实验是一门实践性很强的技术基础课,经过多年实验教学分析,发现普遍存在如下主要问题:
(一)课程抽象,实验难度大
数据结构具有一定的抽象性,学生面对抽象概念在学习过程中常会遇到困难,基本每本理论教材在呈现概念时都会受到多方面限制,比如篇幅的限制,省略了算法细节部分或只给出伪代码,由学生自己补充,学生需要将算法用程序设计方法实现,完成有一定难度和技巧的程序设计并上机调试运行。对编程基础稍微薄弱的学生来说,就会出现不小的困难。
(二)实验相关资料偏少
由于学生基础薄弱,实验前又没有更多的相关实验资料进行预习,仅靠看课本理论和实验时的几个学时难以完成实验所要求的任务,也就谈不上创新人才的培养。
(三)学生程序设计语言课程基础薄弱
数据结构与算法课程是第四学期开设,对于很多先修课程要求高,高级程序设计语言是大学生进校第一、二学期学习,第一学期学习过程序设计思想,第二学期学习面向对象程序设计思想,由于大部分同学高中没接触过计算机语言学习,对过程程序设计思想还没掌握透,第二学期的面向对象程序设计学习又开始,学习非常吃力;导致常用的一些语法结构,如指针和结构体等内容难于理解。而这些语法恰恰是程序设计语言教学时的难点,也正好是学生完成数据结构实验必须掌握的内容,这给部分学生学习带来了一定困难。
(四)编程语言难
数据结构与算法编程语言描述主要用到C++语言,并大量用到了指针、链表和结构体等运算,这部分内容正好是大多数学生掌握知识点薄弱的环节,导致学生很难用高级语言将教材中的算法描述出来,由于问题的堆积、实验的欠账,容易使学生丧失学习兴趣和信心,导致学生间抄袭程序或实验报告的现象。
(五)编程技巧差
普通学生在低年级只编写过功能单一、结构简单的程序;而从功能单一的简单程序向涉及算法和稍复杂程序的数据结构编写过渡学习时,需循序渐进的方式和细致的引导,紧密结合理论教学。学生一下从简单编程直接到复杂的程序设计,不仅不适应,且设计技巧性较差。
二、实验教学改革目标的提出
根据以上学生实验时出现的诸多问题,特提出该课程的实验改革目标:
一是紧密配合理论教学,通过相关实验,帮助学生加深对数据的逻辑结构、存储结构、算法思想和具体实现等各个环节的整体理解,强化学生“结构――算法――编程”三者密切相关的意识,让学生思考和发现利用数据结构解决实际应用问题的有效方法,从而使学生分析和解决问题的能力得到锻炼和提高。
二是因材施教,让原本不同水平和能力起点的学生通过数据结构实验,能力和水平都有所提高,并且有兴趣有信心学好数据结构课程。
三是培养学生多方面能力,比如团队精神,口头表达能力,对学生全方面发展起到较好的推动作用。
三、调整实验项目内容,使其更加符合学生的认知规律
数据结构与算法实验内容主要是编程实验,提高学生的实践编程能力,巩固和强化理论课的教学效果。为了保证和提高实验教学质量,加深对课堂知识的理解,培养学生动手能力和思维能力,尝试对数据结构与算法实验项目进行重新设计,主要内容有:
针对编程基础较薄弱的学生,我们开发了数据结构与算法实验教学平台,学生在该平台上可获知实验相关的更多内容,通过平台引导学生重点回顾程序设计语言的基础知识,特别是数组和指针等有关操作。通过这些辅助手段,使学生对将要编写程序的一些语法和程序规则有所复习和掌握。还可通过平台对实验原理的动画演示,得到帮助和启发,从而更好更快地完成实验内容。
每个实验内容以章节为单位安排,依据实验教学目的,针对计算机相关专业所要达到的不同实验教学目标,以及考虑学生个体差异,每个实验项目都设置基础必做题和附加选做题两部分内容。这两类实验都需要紧密结合理论教学。必做题相对简单,目的在于帮助学生掌握基础知识。对于该部分题目,学生容易完成,能提高学生学习积极性并增强学习信心;选做题针对学有余力的学生,各个实验项目中的必做题均设计详细的实验准备内容,用于引导学生更好地进行实验前预习准备工作;主要在于培养和鼓励学生的学习兴趣和扩大知识面,进一步培养学生应用能力和创新意识,保证基础弱的同学学习兴趣,也提高了编程能力强的同学动手能力。例如,与线性表一章理论教学相配合的实验项目是多项式加减法,这个实验是对线性链表的建立、插入、删除、遍历等进行综合运算,对数据结构与算法第一实验内容来说稍有难度,可作为选作题或增加实验学时。在与栈一章理论教学相配合的实验项目是迷宫,这部分实验内容要求掌握回溯法和栈的基本运算等知识,有一定难度;用括号匹配作为必做题,能培养学生独立钻研,有助于学生解决问题能力的训练。
四、实验教学方法探究
实验前学生必须先预习和熟悉实验教学平台,了解实验内容的目的和要求,理解算法,描述语言的语法,查看相关资料,写预习报告。
通过多年实验教学中实验完成情况分析,软件工程专业的学生语言掌握较好,大部分学生能按时完成实验项目,其它专业的学生实验完成情况较差;由此,实验编程语言可以因学生而异,除软件工程专业的学生采用面向对象程序设计C++外,其它专业主要采用C语言描述,并且可增加前期语言学习时间。只有编程语言掌握扎实,数据结构与算法实验才能很好地完成。
开发数据结构与算法实验网络教学平台系统,该平台主要包含有课程介绍、在线课程、互动学习、下载资料等模块。有针对性地对每一个实验项目进行详细讲解和实验原理分析的动画演示,将抽象的数据结构问题制作为教学动画,借助形象的案例理解抽象的概念。教学内容利用Web页面为基本元素出现在站点中,学生通过访问站点来进行交互式学习。以辅助学生自主学习为主要目的,解决学生实验时无从下手的局面,启发学生思维,促进学生程序设计能力的提高。平台系统流程图如图1所示。
在线课程是教学平台核心部分,也是学生对数据结构与算法实验加深理解的重要环节,该平台从实验预习,到实验原理算法的演示,再通过在线课堂的视频教学、在线测试题训练及各种原理进行拓展教学。为了方便学生学习较抽象的数据结构与算法,能顺利进行程序编写,该教学平台还包含有18个flas用于原理算法演示,主要包括栈和队列、线性表、递归、查找与排序、树、图等内容,每个flas都有实验原理及主要代码实现过程,能更加形象展示数据结构的原理。例如:栈是一种先进后出的数据结构,在对栈原理进行动画设计时,根据用数组实现栈的特点,采取对栈先进行初始化的代码模块来对栈进行初始化,之后运行相应代码模块观察压栈出栈过程,同时还能观察到栈中数据的变化。在大部分flas演示过程中,flash页面左侧是代码部分,能体现当前执行的代码,并与右侧的动画演示及讲解分析一一对应。演示过程中如用户需要重新开始,还可点击“重新开始”按钮。这些flas演示将代码与动画有机的结合在一起,将抽象的代码转换为有形的动画,大大方便学生学习和对实验内容的理解。
如对栈原理进行动画演示的flash点击界面中压栈代码动画效果,该动画效果包括等待入栈的数字入栈的动画效果和位于等待区域的数字前移的动画效果。等待入栈的数字、入栈的动画效果和位于等待区域的数字前移的动画效果如图3所示。
图3 压栈的动画效果图
该平台互动学习是一个教师和学生互动的场所,实现动态交互的功能,教师能添加、更改、删除各种资源,学生、教师可以查看各种资源库里的资源。同时,学生可从平台上下载练习题和测试练习题资料,练习题有主要算法描述,可帮助学生进一步理解每个章节的算法原理,测试练习题有自动报错功能。
五、改革数据结构实验考核方式
让学生对以前所做实验作一个分析和总结。具体操作方案如下:首先将学生自由分组,小组成员共同从以前做过的实验项目选做题中选择一个进行程序的分析设计和编码实现,要求考虑程序的编写规范,程序的执行效率等方面。考核时,由实验教师从该小组随机抽取学生到讲台进行讲解和演示,根据程序完成情况和学生演示情况,决定该小组成员的平均得分,而每位学生的具体得分由小组成员内部根据该学生在该程序实现中的工作情况决定。通过这种方式,能培养学生的团队意识,达到互学互助的效果,同时也锻炼了学生的表达能力。
数据结构与算法实验环节教学改革的创新之处在于依托一门编程语言以及所开发的实验教学平台,因材施教,根据不同专业实际情况,综合考虑进行实验项目、实验内容和实验准备的合理设置,帮助学生在实验课上找到自己的最好学习方式,提高实验教学质量。
【参考文献】
[1]吴兵.高校计算机文化基础课程网络学习题库的研发[J].实验技术与管理,2011(2)
[2]朱洪浩.数据结构课程“工程化”实践教学模式研究[J].赤峰学院学报(自然科学),2013(15)
[3]马晓波,王翠茹.《数据结构》实践教学改革探讨[J].内蒙古农业大学学报(社会科学版),2010(02)
一、完善的实验课计划和提纲
上机实验计划是实验课的总体安排,包括实验题目、时间、地点、课时分配、实验次数、硬件和软件环境等内容,以便任课老师和实验室管理人员之间能够很好地配合,提前安排上机实验的有关事项。每一次上机实验都要有实验提纲,实验提纲格式为:1.实验题目;2.实验目的;3.实验要求;4.实验内容;5.实验步骤及注意事项;6.实验思考题。实验提纲必须和实验计划一起编制,两者协调一致,实验提纲是实验计划的具体内容和实施细则。在教学中不管是哪个老师上这门课,都要按照统一的实验计划和提纲进行实验,学生在实验提纲的指导和安排下上机,完成实验课程,根据实验提纲执行情况书写实验报告。教师也是按实验提纲的要求来检查实验结果,评定学生成绩。因此,教师在进行实验提纲编制时对每门课程的每一次实验课都要有周密的安排,进行精心的设计。
二、计算机实验课程的准备工作
计算机实验课程的准备工作是非常繁琐同样也是非常重要的,通常包括以下几个方面的工作:
1、硬件环境。实验室内学生上机所需的计算机及有关外部设备都要能正常运行,功能完好,适合学生上机实验;学生所用的磁盘要合理分配,集中管理,一些辅助教学设备(如投影仪、无尘黑板等)都要能满足上机实验的要求。
2、软件环境。实验室管理人员要根据实验计划,选择好所需的操作系统软件、高级语言环境、应用系统和辅助教学软件,预先把这些软件装入计算机内并调试好,随时可供调用。若有网络环境,管理员要为每一个上机的班级设置各自的账号,根据实验计划分配所需的软件和必要的权限。另外,版本新、功能强的杀毒软件也是必不可少的,管理人员要随时用它来清除计算机系统内的病毒。
3、组织和管理。计算机的使用要严格管理,要保持良好的秩序,严令学生遵守实验室各项规章制度,有条件的实验室要实行学生上机自动管理(学生上机之前用上机证划卡,系统自动为学生分配一个机号,该生即可在这台计算机上上机,否则该生不能上机)。
该系统还可以自动记录学生的上机时间,我们曾经根据这个功能破获了学生盗窃计算机内存芯片的案件。如果实验学生的人数超过了计算机台数,最好是分组进行实验,使每个学生都有上机的机会,同时也便于管理和辅导。管理人员要严格控制学生使用外来磁盘,预防计算机病毒带入实验室。
4、教师和学生。教师要对实验课的全过程进行周密的思考,要避免出现漏洞和疏忽;而学生要按实验提纲作好实验课前的准备工作,特别是要学生自己编程上机时,学生一定要在上机前准备好程序,实验时主要是编辑输入程序和调试程序。
三、实验课的实施
计算机实验课是计算机课堂教学的继续,也是教学效果的初步体现。为了上好计算机实验课还必须做好以下工作:
实验课开始时,老师要重申本次实验课的目的和要求,指明实验要点和要注意的事项,对实验中的疑难之处和可能出现的问题要给予必要的提示和说明。在实验过程中学生初次使用的应用软件或生疏命令,教师要首先进行演示和讲解。
在实验中要尽可能发挥计算机的优势,充分利用计算机辅助教学软件和多媒体教学手段。特别是学生进行程序设计的实验时,教师可以先演示和讲解自己在科研工作中开发的一些应用软件,将一些程序设计的经验传授给学生,使学生有了一些感性认识以后能尽快动手进行程序设计。另外,教师要根据教学内容选择一些效果比较好的辅助教学软件。例如,《数据结构》课程的实验课,可选择集编辑、编译、调试为一体的Pascal可视集成环境VP1和算法与数据结构的作业系统AD1,Pascal源程序可以在VP1上可视执行,能同步演示程序和数据的动态视图,为学生理解算法、学习编程、调试程序提供了便利的环境,AD1可对数据结构的程序设计作业进行测试评分,可以大大提高软件基础课的教学效果和质量。
四、实验课的总结
关键词:数据结构;课堂教学;实验教学;教学策略
中图分类号:G642 文献标识码:A
1引言
近年来,随着计算机技术应用领域的不断拓展,各高校也都致力于计算机交叉学科专业的建设,信息管理、信息与计算科学以及地理信息系统等信息类新专业蓬勃发展。“数据结构”是计算机专业的一门核心基础课程,由于各信息类专业与计算机技术有着密不可分的关系,因此在这些专业的本科培养计划中,“数据结构”仍是十分重要的专业必修课。
非计算机信息类专业的培养目标、课时安排、学生基础等具有自身的特点,这也使“数据结构”教学面临着新的问题。针对问题,笔者在近几年信息类专业的“数据结构”实际教学中,认真研究了课堂策略并积极应用到了具体的实践中,取得了一定的效果。
2存在的问题
2.1课堂教学中的问题
(1) 学生有畏难心理
“数据结构”主要研究非数值计算的程序设计问题中计算机的操作对象及其之间的关系,课程要采用高级语言作为算法描述和实现的工具。非计算机专业学生在大学一年级开设了程序设计基础课程,近两年我院开设的是“C++”。对大部分学生而言这是第一次接触高级语言,加之这门公共基础课课时分配较少,学生总体的掌握程度较差。“C++”中的函数、指针、类与对象等内容更是学习中的薄弱环节,而这部分知识却是数据结构中要频繁用到的。因此,在以“C++”为工具的“数据结构”教学中,学生打开课本看到大量用“C++”描述的算法,觉得十分繁琐和复杂,必然会产生畏难情绪。
(2) 个别学生产生漠视情绪
“数据结构”课程理论性较强,在学习中部分学生会产生“纸上谈兵”的感觉,觉得学习这门课程没有什么实用性。同时,个别非计算机专业学生还会觉得该课程和本专业关系不大,所以更容易对课程的学习提不起兴趣,即产生漠视的情绪。
(3) 多媒体教学方式的利弊
“数据结构”教学采用多媒体方式,具有生动形象,图文并茂等优点,但多媒体课件放映过程中信息量大、速度快,而学生的反应能力和接受能力有限,这就很容易走入“填鸭式”教学的误区。
2.2实验教学中的问题
“数据结构”的实验教学是整个课程中十分重要的环节。目前数据结构实验教学中主要存在的问题有:
(1) 实验课时不足
目前“数据结构”的课内上机和课堂教学时间分配是1∶3,为16学时。学生在上机课中完成作业的时间很不充裕,课外上机较难保证,因此很难达到实验教学预期的效果和目的。
(2) 编程能力两极分化
在实验教学中学生的表现呈现出两极分化的现象。通过观察和了解,程序设计基础较好或对编程兴趣浓厚的同学,能够完成实验项目,写出合格的实验报告;而编程基础较差的同学,缺乏信心,上机时坐在计算机面前茫然无措,随着课程学习的深入,形成了恶性循环,进而影响到班级整体实验教学的顺利开展。
3改革措施
3.1重视前导课程相关内容的复习
在“数据结构”的第一讲课中,不应操之过急地直接进入课程第一章的讲解,而应对程序设计基础中的指针、函数及类与对象等内容进行归纳和复习。由于课程中基本的数据结构都是用类模板来描述,因此对于类和对象这一部分更是要作为重点。同时,要求学生课后必须完成程序设计基础课本中指定内容的复习巩固。第一次实验的作业要求学生编写两个简单的基于面向对象的小程序,目的在于复习如何定义类、如何用构造和析构等各种成员函数实现对数据成员的操作以及如何使用对象等。
实践证明,学生通过对前导课程的学与练,通过上机成功调试面向对象的程序后,在心理上首先放下了包袱,不再觉得类与对象等概念高不可攀。这也十分有助于教师对后期教学的深入展开。
3.2转变教学模式,重视激发学生兴趣
教学应该是一个“教”与“学”同步进行的过程,在这个过程中学生才是主体。授课中如果教师只是满足于自顾自地把内容交代清楚,而不注意学生的接受程度,不营造生动的课堂氛围,那么学生的学习行为只能是被动行为,更不可能成为课堂的主体,也就不可能达到理想的教学效果。
首先,在课堂教学中要精心组织课件。多媒体课件决不能是课本内容的堆积,应该将文本、图片、声音、动画等合理地组织起来。例如在讲解算法时,用动画来演示算法的动态执行过程,以增加课程的生动性,降低课程的难度。
其次,课堂讲授应符合学生的认知规律。范例教学模式在“数据结构”授课中就能发挥很大的优势:即用特例具体直观地阐明“个体”的具体特征,根据范例“个体”的知识推论特点,分析掌握整个“类别”事物的特征,使对“个体”的认识上升为对“类别”的认识,从而掌握其规律和范畴。数据结构中的主要算法和一些抽象的概念,可以尽量先从直观意义或具体实例解释着手,让学生更容易理解。因此在教学过程中宜多画图、多举例、多解释。这种从特殊到一般,从具体到抽象的方法,适用于数据结构中的很多内容。例如:讲解队列的概念时,可通过日常生活中的购物排队的过程来反映队列中插入、删除的原则,再结合计算机中的操作队列、打印队列的应用来说明;对二叉树的遍历算法可通过一个特定的二叉树的例子说明其遍历思想,再推广到一般的二叉树。
再次,在课堂上要鼓励学生大胆想象,勇于实践。例如在讲解起泡排序时,可以启发学生思考:如果在排序中奇数趟排序从前向后、偶数趟排序从后向前两两比较相邻记录,算法的效率会如何变化?先让学生进行几分钟的讨论,然后可以总结分析:从两端两两比较的起泡算法可称为双向起泡排序,它是对起泡排序的改进。然后,请学生编写双向起泡算法,并上机编程以和传统起泡排序算法的效率进行比较。这样,可以培养学生大胆想象、勇于实践的创新精神,还可以调节课堂气氛,利于师生交互,同时还能激发学生上机编程的热情。
3.3循序渐进,精心设计组织实验内容
“数据结构”课程中的实验可分为三大类:验证实验、设计实验和综合实验。验证实验是将教材中的重要数据结构上机实现;设计实验是针对具体问题来应用某个知识点,需要自己设计简单的方案;综合实验是针对具体问题应用某几个知识点,需要设计总体方案。这三类实验由易到难,由浅入深,构成了完整的实验教学体系。实验的开展应该以此为主线,循序渐进地进行。
关键词:数据结构;教学现状;教学改革;学习兴趣
中图分类号:G642文献标识码:A文章编号:1009-3044(2011)04-0954-02
Research Educational Reform about "Data Structure" Course
ZHAO Xiao, SUN Lian-shan, WANG Xiao-xia
(Electrical and Information Engineering College, Shaanxi university of Science & Technology, Xi'an 710021, China)
Abstract: Depending on teaching practice, and on the base of analysis the present teaching construction of data structure course, stimulating the student's interest, we bring up educational reform about contents and methods. The achievement of this paper studies has a good shows in practice teaching, and Obtained many student's commendation.This article studies the achievement through in the long-term teaching practice's application, makes the good progress in the practice teaching, obtains student's high praise.
Key words: data structure; teaching present situation; educational reform; study interest
数据结构是计算机科学与技术专业的重要专业基础课,在整个课程体系中处于承上启下的核心地位,它一方面扩展和深化在离散数学、程序设计语言等课程学到的基本理论和技术,另一方面为进一步学习操作系统、编译原理、数据库等专业课奠定理论与技术基础。
数据结构课程能够培养学生的抽象思维能力、逻辑推理能力,锻炼学生分析问题、解决问题的能力,使学生从对程序设计语言基本语法以及离散数学的抽象理论的学习逐渐过渡到对解决实际问题、进行大型、复杂软件程序开发所需要的专业理论和技术的学习上来,是激发学生对专业课学习兴趣,树立专业自豪感的关键。如何激发学生的兴趣,让学生爱上学习《数据结构》,是目前数据结构教学中值得任课教师思考的问题,如何培养学生理论联系实际,应用所学知识分析问题、提出方案、改进、总结提高再到创新,树立创新意识和信心也是教师义不容辞的责任,所以有必要对该课程进行改革,让学生学好《数据结构》,并能应用好《数据结构》。文章以目前该课程教学的现状入手,提出教学改革的内容和方法,最后总结改革的成效。
1 课程教学研究的现状
数据结构课程的学习非常重要,但目前本课程在教学和学习中存在很多需要解决的问题。我们在教学过程中发现,学生在刚刚接触这门课的时候不知道怎么去学,对学过的知识也不知道怎么应用,而教师也在如何将抽象的概念和枯燥的算法如何准确、生动、高效地传达给学生的问题上,通常是绞尽脑汁、费劲口舌、反复讲解但效果却并不理想。
通过实践教学观察、与学生谈话交流以及理论分析等手段,我们发现造成这种现状的原因大致来自三个方面:
1) 课程本身的特点。
在长期的教学过程,我们总结出如下的特点: ① 内容抽象且繁多。课程内容的抽象程度较高,主要体现在基本概念很多,而且比较抽象难以理解,抽象数据类型以及算法本身并不特定于某一个程序设计语言,且数据结构常常以数学符号表述,这都给学生理解和学习造成了障碍;② 课程内容的逻辑性强,各种数据结构之间存在许多内在的联系,但又自成体系、较为独立,如一方面树、图等以线性表、栈和队列为基础,又广泛用于查找和排序之中;③ 综合性强、技巧性强,数据结构课程综合了计算机硬件、数学、以及计算机软件的知识,各种算法中凝结了近半个世纪的大量杰出计算机科学家的智慧,综合性和技巧性非常强,学生常常因为不能很快入门而丧失学习的信心。
2) 学生的知识和技能储备不足。
主要体现在学生对前导课程的掌握不到位,目前大部分高校的数据结构的算法描述工具是C语言,所以前导课程一般为C程序设计,高等数学、离散数学等,尤以C程序设计为重,但在教学中发现每一届学生都存在同样的问题:C语言基础薄弱。因此我们在教学过程中所面临的现实挑战是:一方面要在数据结构的教学过程中逐步培养和巩固学生使用C语言动手编程、调试、阅读程序的能力,另一方面,又要使得大部分学生在缺乏必要的C语言的基础知识的前提下,理解数据结构的理论和神髓。
3) 教学手段单一、师生沟通渠道有限、教学工具和素材欠缺。
首先,传统的教学方式以“一言堂”为主,教师讲授是整个课堂教学活动的主线,虽然也有课堂练习、提问、鼓励学生提问等形式活动的穿插,但由于课程内容有一定的难度,同学往往不能正确回答问题、或不能恰当地提出问题。其次,师生之间沟通的渠道非常有限,常常是课上学生不会提问、课下学生找不到教师提问。第三,教学工具只是简单的黑板和粉笔以及少量幻灯片,缺少算法的动态演示和网络学习等多媒体手段,教学素材仰赖于各个教师多年教学活动的积累,教师之间的经验和素材的交流较少,教学素材的数量以及难度分级都非常随意。
上述内容是《数据结构》课程教学中存在的一些现实问题,我们通过优化教学内容、改进教学手段、丰富师生沟通渠道、建设教学工具和教学素材库、完善考试考核等方法,达到改善教学效果、提高学生综合应用的能力。
2 本项目研究的内容
依据对陕西科技大学计算机科学与技术专业数据结构教学现状的分析,我们从以下几个方面实现对本课程的教学改革:
1) 优化教学内容和教学方法,提高面授效果。
针对数据结构基本概念多且抽象的特点,在教学中引入案例教学法,以学生已有知识结构和生活常识出发,形象生动的讲解概念,这样不仅学生容易接受而且开拓学生的思维。让学生的学习做到有的放矢。
比如参考文献[1]的第1章绪论里,基本概念一节中阐述的内容包括有:数据结构,逻辑结构、存储结构等概念。学生刚刚接触数据结构,教师如果对这些概念的讲解处理不好的话,学生是难理解清楚这些概念以及它们之间的联系与区别的,而且很容易让学生产生畏难心理。实际教学中,我们引入学生熟悉的成绩表,相信学生会在轻松的教学环境中学习新的知识。针对上面提到的三个概念,引入的案例是:学生成绩表。有一张记录某班学生各门课程成绩的成绩表,表中每一行(每条记录)包括学号、姓名、性别和各门课程成绩。容容 例如,有一张学生成绩表记录了某一例如,有一张学生成绩表记录了某一个班级的学生各门课程的个班级的学生各门课程的成绩,这张表的每一成绩,这张表的每一行(即每条记录)包括学号行(即每条记录)包括学号、姓名、性别及各门课程的成绩。这张表是包含多条记录的一个集合,每条记录就是一个数据元素,各数据元素之间按照学号顺序排列,所以这张就是数据结构。这里把数据元素用结点表示,分析整张表,第一个结点没有前驱结点,最后一个结点没有后继结点外,其他的结点有且只有一个直接前趋和直接后继。这种关系就这张表数据元素的逻辑结构。紧接着提出:如何把这张成绩表中的数据元素存储到计算机里,对于数据元素之间的逻辑关系用高级语言又该如何表示呢?是用一片连续的内存单元来存放这些记录(如用数组表示)还是随机存放各结点数据再用指针链接呢?这就是存储结构所讨论的问题。到此,学生对这3个概念有了一定的印象,教师及时总结并引入课本的概念,进一步加深学生的理解。
通过案例教学法,学生通过讨论和老师的引导,在轻松的教学氛围中快速掌握所学的知识。
对于算法的讲解,根据数据结构在数据类型定义和算法设计中均采用类C形式描述这一特点,又因学生对C程序设计掌握的欠缺,故而对算法的理解和掌握有困难,单一的通过算法讲解算法不如用图形描述更直观。为此引入算法的动态演示系统,增强算法的直观性,提高教学效果。
2) 激发学生学习的兴趣,鼓励学生对教学内容提出问题,师生共同讨论,提高教学和学习水平。
兴趣是学习的动力,如果学生对本课程产生极大的兴趣,学生学习的自主性自然就有了。由此可见,学生学习兴趣的培养是至关重要的。培养学生兴趣的方法很多,我们课题组将从以下几个方面实现:① 将工程应用融入到教学中,让学生了解到所学的内容在实际工程中的应用,消除学生不知为什么要学的疑虑;② 鼓励学生在学习过程中不拘于以往的解法,对同一个问题可以提出不同的解法,深化对问题的理解;③ 将奖励的方法应用于教学活动中,比如:布置给学生的实验任务或课后思考题,对完成好的同学,在课堂上发一些诸如本子、圆珠笔等小礼品,以此鼓励。对于大实验做的好的同学采用加分的措施激发学生学习的兴趣。对于一些教学任务事先将内容布置给学生,在课堂上以讨论的方式让学生参与到教学中来,相信会很好的调动学生的积极性。
3) 精心选择习题和上机实验题,着眼于基本知识的理解和基本编程能力的培养。
通过我们对同学的调查,发现很多同学存在课上听懂了,课下不会做题的情况,另外学生最怕的是老师让他们写算法,以及上机调试程序。针对这一现象,我们通过一些精选的习题和实验题,学生首先做题然后通过习题课对习题进行精讲,对学生存在的问题集中解决。实验题目要求上机前一定要写好程序,甚至课下用自己的电脑对程序进行调试,上机时逐个给老师讲解程序的实现算法及实现过程以及实验的结果,并对结果进行解释说明。通过这些方法提高学生对基本知识的理解水平,培养学生的编程能力。
4) 本着“精讲多练”的原则,改进考核方式。
传统的考试模式是闭卷考试,学生期末的考试成绩=卷面成绩的70%+实验成绩的20%+平时成绩的10%。这种考试模式看似合理但还是存在一些弊端,主要体现在:一份试题很难做到对学生所掌握知识的全面考核,而且试卷内容可能偏重于理论知识的考核,很难反应出学生的实际水平;实验成绩给分仅凭借实验报告显然是不科学,应该加大学生实验过程的考核。对考核方法的改革,我们打破传统的考试模式,除了闭卷考试外,加入实际问题解决能力考核部分;对于实验的考核采用实验考核一对一的方法,教师更注重的是每位学生对实验任务的分析过程,实现方法和结论的考核;同时加大对平时习题完成情况的考核力度,并将其考核的结果加入到最终的考试成绩中,让学生懂得考试仅仅是一种手段而不是学习的目的。
3 课程改革的成效
以上教学改革的方法,在我校两届学生数据结构课程实际教学活动中的应用,通过调查有85%的同学表示对该课程产生极大兴趣;78%的同学认为案例教学、工程应用等多种手段引入到实际教学中,消除他们学习的盲目性,建立良好的学习自信心,提高了学习的积极性;通过精选习题的练习、讲解以及实验题目的上机,加大实践教学的考核力度,公平公正的评判学生对课程的掌握程度。在传统教学的基础上,以学生作为教学活动的主体,形成学生自主学习、合作学习、研究性学习和探索性学习的氛围,为学习后续课程打下坚实的基础。
参考文献:
[1] 严蔚敏.数据结构(C版)[M].北京:清华大学出版社,2006.
[2] 顾红生,曲娟.关于数据结构课堂教学模式的研究[J].辽宁广播电视大学学报,2007(4):44-45.
[3] 徐金梅,罗刘敏.《数据结构》教学方法研究和探讨[J].现代计算机,2007(8):78-80.
关键词:离散数学;实验教学;实践能力
离散数学课程所涉及的概念、理论和方法,大量地应用在计算机科学体系中,数理逻辑是计算机中的逻辑学、逻辑电路、人工智能的基础课程,集合与关系是数据结构、数据库系统的理论基础,而代数系统则是现实世界的缩影,直接模拟了现实系统,图论知识更是直接应用在计算机网络、数据结构、编译原理等专业课程中。但传统教学中过于注重理论教学而忽略实践,学生普遍认为枯燥难懂,认为是纯粹的数学课程,对计算机编程用处不大。因此教师在授课过程中要注重理论联系实践,培养学生的专业素养,我们将从以下方面循序渐进加强教学理论与实践。
1课程教学注重教学方法与教学实践的改革与创新
加强理论联系实际,从提高计算机编程思想的角度对学生展开教学,教师在讲解理论的同时,要注重其实际应用与算法描述。例如在讲解最短路径时,就要介绍Dijkstra算法,单源最短路径的基本思想如下:设S为最短距离已确定的顶点集(看作红点集),V-S是最短距离尚未确定的顶点集(看作蓝点集)。
①初始化:只有源点s的最短距离是已知的(SD(s)=0),故红点集S={s},蓝点集为空。
②重复以下工作,按路径长度递增次序产生各顶点最短路径:在当前蓝点集中选择一个最短距离最小的蓝点来扩充红点集,以保证算法按路径长度递增的次序产生各顶点的最短路径。当蓝点集中仅剩下最短距离为∞的蓝点,或者所有蓝点已扩充到红点集时,s到所有顶点的最短路径就求出来了。
我们通过实例给学生模拟算法执行过程,验证算法的正确性,但细心的学生会发现前面加进去的点并不一定是后期考察路径的必经点,例如有三个点A,B,C,AB、BC、AC间权值分别为1,2,4,如果设A为源点,则第一次加进来的点是B,到C的最短路径应该是A-B-C,如果BC权值为4,则到C的最短路径应该是A-C,这里就要注意红点集加入的点不是其他点必经点,这是因为集合元素是无序的,不是联结已有的点作为最后点的路径的。
我们给出求解的动画演示过程,加深学生的认识,实际多应用在交通网络中路径的查询中,两地之间是否有路径以及如果有多条路径时找最短路径等,最后再对算法进行扩展解决单目标最短路径问题、单顶点对间最短路径问题等,扩展学生对算法的理解等。
在讲解逻辑推理时,建议学生使用Prolog语言可以轻松实现命题和联结词表示以及逻辑推理,代数系统则是无处不再,自动售货机、电梯系统、自动取款机等都是一个代数系统,有自己的运算关系,鼓励学生定义一些运算,完成一个具有输入输出的可交互的系统。
2建设完善实验课程体系,加强学生实验实践能力
挖掘课程内容,建设完善的实验课程体系,实验课程的主要目的是,培养学生的数学建模能力、算法设计能力、编写程序能力和应用创新能力,使学生养成良好的数学素质。学生可以有选择地做。
(1)基础实验如表1所示,基础实验设计一些离散数学基本问题,要求学生利用所学基础知识,完成相应的算法设计和程序实现。如在集合论部分,设计有限集基本运算算法设计实验,要求学生利用熟悉的程序设计语言完成有限集合的数据结构、集合间的交、并、差、迪卡尔积、子集判断等基本运算。学生可以在每部分中自由选部分题,完成一定的基础实验。这样的设计使得学生学会基本操作,巩固程序设计基本调试方法的掌握。
(2)综合性实验如表2所示,设计一些比较复杂的离散数学问题,要求学生综合运用各章知识或多学科知识,完成问题的分解与求解、综合和整体实现。例数理逻辑部分的命题真值表计算实验中,要求学生设计实现命题数据结构、五种基本逻辑运算的代数运算转换、表达式求值等;学生需要综合运用命题逻辑、数据结构等知识,完成实验各个环节,实现运算结果的显示。可由几个同学组成一个学习小组完成实验。
(3)设计性实验如表3所示。这一层次要求较高,对那些学有余力、兴趣浓厚的学生,给出一些难度较高的课题,要求他们自行设计问题描述模型和实验方案,开发实现小型应用软件。例如,要求学生针对某景区内景点的分布情况,设计可满足旅游者不同需求(如费用最省、线路最短、重复较少、景点最全等各种要求)的实用小软件。教师检查实验现象和实验结果。学生对实际程序的运行结果应能进行分析并提出改进方法,每完成一个实验,都要求写一份实验报告,挑选出好的作品,做成精品演示系统。
3发现实际应用点,扩大学生知识面
让学生了解离散数学在现实生活中的主要应用,有意识地引导学生运用所学理论去分析问题、解决问题,从而让学生充分感受到离散数学这门课程的魅力和实用价值。部分实际应用如表3所示。鼓励学生按照如下流程操作:发现问题,然后构思一个可能求解该问题的算法过程,再设计算法并将其表达为一道可执行程序,最后精确地评价这个程序,考查其作为一种工具去求解其它问题的潜能,锻炼学生数学建模能力,提高分析问题,解决问题的能力。
4建设开放式教学环境,丰富网络教学资源
充分利用网络学堂、课程学习网站等丰富的教学资源,构建了开放式的教学环境,我们开发了离散数学教学网站,模块包括:实验、实验申请、已审核实验、成果展示、精品展示、在线解答(前台如图1所示,后台如图2所示)、资料下载等模块,实验项目可选或自拟,增强了师生间互动,也为学生个性化学习提供了良好的条件。
学生可以在任何时间远程登陆,发表咨询,下载资料,参与实验项目,申请实验项目,获得批准后,我们开放实验室免费提供设备,实验项目结题后提交成果,我们从中提炼出精品,做成精品演示系统,学生还可以对已有成果做深入研究。
总之,鼓励学生吃透书本,挖掘理论的应用领域,鼓励学生改进算法、挖掘应用点,从抽象的理论到实际应用,再扩大应用,抽象到一般情况,让学生感觉到学习离散数学的重要性,理论与实践相结合,互相促进,切实提高大家学习离散数学的兴趣,能够达到学生积极主动为了实现应用而吃透理论,发挥主观能动性。采用项目训练为主的教学理念,切实提高学生的实际动手能力、创新能力和自学能力。
参考文献:
[1]耿素云,屈婉玲.离散数学[M].北京:高等教育出版社.
关键词:编译原理;实验教学;词法分析
中图分类号:G642. 41 文献标识码:A
文章编号:1672-5913(2007)18-0045-02
1引言
“编译原理”是大学本科计算机专业的必修课程,但学生在学习这门课时普遍感到难度较大,学习内容抽象,不易理解。如果不配合实践教学,仅通过理论课程的学习,难以使学生真正地理解编译程序的构造原理和技术。但是,编译原理的实践课程也存在着一些困难,比如:有些算法本身理解起来都十分抽象,如自动机理论、集合论的推演、LR文法等,大部分学生在实现这些相关算法的时候,难以形成思路;又由于多采用分组实验方式,一部分同学产生依赖思想,寄希望于组内其他同学。这样,显然达不到深入理解理论知识、提高实际编程能力的目的。本文就以词法分析实验为例,讨论编译原理的实验教学方法。
词法分析实验主要包括以下几个方面的内容[1]:词法分析器的设计和实现,三个算法(正规式转换为有穷自动机的算法,有穷自动机的确定化,确定的有穷自动机的化简)设计以及词法分析自动生成器。其中,词法分析器的设计和实现是重点内容。通过这个程序的设计,学生可以掌握词法分析器的作用、分析方法、和实现原理,并了解词法分析在整个编译过程中的地位。三个算法的实现有一定难度,通过三个算法的实现,学生可以加深对算法的理解,提高解决问题的和实际编程能力。
2实验前的准备
在进行词法分析实验课之前,应督促学生做好充分的准备工作[2]。首先,应该明白词法分析器的功能,它主要分成输入部分,字符分类识别和识别结果处理输出部分。根据不同的输入,调用不同的识别函数进行识别。进而得到词法分析器的程序框架。再后,进行系统的详细设计,设计出关键的数据结构,将每一个函数实现的算法和关键点,详细的用伪代码表示出来。
实验课前的准备过程非常重要。否则,上来就匆忙动手,很可能写了很多代码之后,才突然发现,最初的数据结构设计竟然不合理,导致不少的工作都得之后重新来做。因此,在实际编程前要求学生编写实验思路及实验流程,根据实验任务,设计程序的模块流程图及算法,并提出编程过程中可能遇到的困难和解决途径,最终形成一个预习性质的实验报告[3]。这样,学生对实验有一个整体思路。思考过程不仅使学生对所学理论有了较深刻理解,而且对理论与实践如何结合进行思考和归纳,提高了实际运用高级语言编程的能力。
3实验课中的指导
在实验课进行的最初,根据实验项目,指出实验目的和总体要求,介绍关键实验注意事项和操作要点等。对实验中的难点和重点,进行有针对性的讲解,并就实验中学生普遍会遇到的一些典型问题,做启发式地分析和引导,包括讲解学生的预习报告中提到的某些好的思路,起到抛砖引玉的作用,鼓励学生尝试新思路和新方法,最后由学生自主完成实际的系统设计并进行相关的研究尝试[4]。比如,词法分析器的设计思路,主要的数据流程,以及编写识别指数常数的等较难程序的关键技术等。
编程题目由简到难的进行。一般认为,编译原理中的将正规式转换为NFA,将NFA转换成DFA等算法都比较抽象。实现起来有一定难度。如果一开始就从这些算法下手,很可能有一大部分同学都会出不了结果,从而产生畏难情绪,以至于对这门课程今后的学习都没有信心。所以,建议开始的时候从简单的词法分析器入手,帮助学生产生学习积极性。即使不能完整的做到每种单词都能识别,至少可以写出其中一部分。这样,有了初步的小成果之后,就会有兴趣也有信心来完成后续的实验内容。
4实验之后的总结
在每次实验课的最后,留出时间用于全班的分组讨论。主要围绕两项内容:其一,每个同学对编程过程中出现的问题,讨论相应的解决方法。建立一定的鼓励机制鼓励学生积极发言,提出自己的看法、观点。讨论后,各组指派一名学生代表总结发言。这样,各组学生可以相互了解其他同学在编程中遇到的困难和解决方法,相互取长补短、共同进步。为了让每个学生都得到发展,小组代表随机产生。通过讨论,学生变被动的学习为主动的学习,学习积极性有所提高。其二,由于每人只编写整个词法分析程序的某些部分,所以对整体把握有所欠缺,为弥补此缺陷,要求最后每个讨论小组把各自编写的程序连接起来,形成一个完整的词法分析器,进行总体调试。
实验之后应做好实验总结。每个同学提交实验报告。报告内容包括对词法分析器输出的数据进行分析,关键程序的实现思路,遇到的困难以及解决方法,自己认为自己做的比较好的、不足的地方及其原因,自己的想法等等。教师再从中选取一些比较典型的问题和优秀的例子进行讲解,让同学们能够有所感悟[5]。通过实验总结,不仅让优秀的学生更加开阔了思路,也让比较差的学生看到了自己的不足之处,对他们理论知识的深入理解和实际编程能力的提高都有很好的促进作用。
4结论
在近几届的学生实验课程中,通过不断尝试、改进我们的教学方法,包括自己编写学习指导,实验指导书等,使编译原理实验课程逐步完善。同时,教学结果也表明,教学实验取得了一定的成绩,比如:学生从以前一上实验课就手足无措,变成了都可以自己动手编写大部分或者全部程序;在同样水平的要求下,学生的平均实验成绩有所提高;学习方式也由过去的被动学习变成了自己积极主动的学习。但是,仍然存在一些问题,如有小部分同学由于以前的程序设计课程学习不够坚实,导致编程能力有限,在对这部分同学进行单独辅导的时候,既要讲解编译原理的知识,还得给他们补习程序设计的知识,导致学习压力更大,兴趣激发更为困难等。这些问题需要进一步寻找解决的办法,以期达到更好的教学效果。
Discuss on Teaching Method of Complier Principle Practice
Abstract: Take lexical analysis as an example, this paper discusses teaching methods of complier principle practice, and proposes some problems should attention in the teaching process. It meets with understanding Complier Principle theory and promoting capability of applying.
Keywords: Complier Principle, Practice Teaching, lexical analysis
参考文献
[1] 陈火旺等. 程序设计语言编译原理(第三版)[M]. 北京:国防工业出版社,2000.
[2] 赵曦. 《编译原理》实验教学改革初探[J]. 实验室科学,2006,8(4).
[3] 毛玉萃. 编译原理实验课的实践探索[J]. 大连大学学报,2004,(6).
[4] 张晶,杨冬等. 编译原理实践课程教学方法研究[C]. 2005全国计算机程序设计类课程教学研讨会论文集,2005.
【关键词】实验教学;创新能力;实践技能
随着计算机行业的发展和相应的计算机课程建设,实验环境在不断地更新,实验内容也随之在不断地改革与更新。通过实验教学,既巩固了课堂知识,促进了学生对课外知识的获取,又拓宽了知识面,培养了学生创新能力、分析问题和解决问题的能力。
1、 加强素质教育,搞好中职实验室建设
实验室建设就显得非常重要。我们在建设实验室时主要抓两方面建设。其一,硬件建设方面;建成了计算机基础、计算机系统、计算机控制和网络技术等实验室,为实验教学改革提供了必要的物质基础。其二、软件建设方面,通过多年的摸索、总结、修改及完善,我们制定出了一套较为完整的管理制度和岗位责任制度。具体包括《机房管理制度》、《指导教师岗位责任制》、《安全管理制度》、《学生上机守则》等。通过这些制度的切实贯彻执行,使每位工作人员都明确自己的职责,并且将实验室繁杂的各项工作,如实验的准备,仪器的维护、维修、管理,实验教学法的研究,硬件设备的改进,软件的开发及实验内容的改革等都与本职工作量挂钩,以充分发挥大家的积极性,因而在实验教学上取得了较好成效。实验室是培养人才的摇篮,一些刚分派来的大学生首先安排到实验室,在得天独厚的用机环境中,通过指导实验,维护、维修仪器设备,相互学习,知识得以拓宽,动手能力可以有很大提高,并且对实验教学环节、学生实验情况有所了解,有助于今后在主讲教师岗位上的教学工作。可见人才的流动,不仅给实验室带来了青春的活力,也带来了新的思想和其他院校好的教学经验、教学方法,从而有益于推动实验教学的改革和建设。
2、改革实验教学内容,注重创新能力培养
作为计算机的专业实验室,承担了计算机专业的专业基础课及专业课的软、硬件实验,以及课程设计、毕业实习、毕业设计的教学任务。随着信息技术的迅猛发展,在知识更新加快,知识愈来愈多元化、专业化和系统化的情况下,改革过去传统的以验证性为主的实验技术手段、方法和落后的实验内容,增加设计性、综合性、开放性和系统性的实验内容,加强学生动手能力的训练,注重全面素质的提高,注重创新精神的培养已势在必行。因此,我们在实验教学内容的改革上,本着“加强基础、拓宽专业、注重实践、提高素质”的方针,把专业基础实验模式分为指令性、指导性和设计性三种。在指令性实验中,注重学生巩固理论课的学习,进一步掌握基本概念和基本技能。在指导性的实验中,注重培养学生灵活运用所学知识去分析问题和解决问题的能力。
例如,有意设计一些有问题的或不完整的程序,让学生去发现错误,改正错误,完善应用程序。在设计性的实验中,注重培养学生的创新意识、设计能力、创造能力和动手能力。在这一类的实验中,只给定实验的课题及达到的目的,中间过程需学生自己去查阅资料和设计方案,直至最后调试完成。
例如,在讲授微机原理实验课中,在有关部门的支持下,尝试将教师参与研究开发的科研成果用于毕业实习中,使学生不出校门就可接触企业工作环境,使科研成果在教学中真正发挥作用。为他们的毕业论文和今后走上工作岗位打下了一定的基础。实验内容的改革,激发了学生对实验的兴趣。
3、 改革实验教学方法,规范管理,提高教学水平
教学方法的改革就是要注重发挥“学生是教育主体”的作用。通过对学生的引导、帮助和促进,充分调动他们的积极性和主动性,去获取知识,增强能力,提高素质。实验是教学活动的一个重要环节,因此,实验教学方法的好坏直接影响着学生对实验课的态度,影响着他们动手能力、创新意识的培养。实验教学方法的改革,体现在实验教学的各个环节。在教师的主导作用方面,我们首先改变过去按部就班的教学模式,以启发式的方式指导实验。教师在备课时,对每次实验重点和难点、实验中可能出现的问题、实验的数据与结果都要心中有数。在指导实验时,要勤于巡视,及时了解、掌握学生的实验情况。当学生在实验中出现问题时,教师从基本概念、解题思路及实现方法上引导学生,促使其积极思考,发现问题,解决问题,真正使他们成为实验课的主体。对每个实验的数据和结果,都要经过教师的检查认可,并在检查时,让学生阐述自己的设计思想及实现过程,培养他们的口头表达能力。对那些学有余力的学生,允许在完成实验任务之后,利用我室的设备及网络环境,去研究和学习自己感兴趣的东西,以促进他们个性的发展。在学生主体作用方面,由于实验报告是培养学生写作能力、表达能力、分析能力和总结能力的一种较好的方式,因此,我们改变了过去软件上机不提交实验报告的做法,要求学生
对每一个实验都要提交实验报告,在报告中要注重设计思想的描述,注重分析、总结实验中的收获、体会。在实验课程结束时,进行上机考试,最后根据学生实验情况、实验报告情况及上机考试的情况,客观评定学生的实验成绩。通过以上措施,提高了学生对实验课的重视程度,同时对指导教师也提出了更高的要求。
4、提高自身素质,促进实验室建设
计算机技术的发展可以说是日新月异。从事计算机工作的技术人员只有不断地学习,才能适应形势发展的需要。为此,我们通过参加培训、参与项目研究,并将新实验的开发和研究与工作量挂钩等手段,激励大家努力钻研业务,掌握新技术,提高业务水平和实际工作能力。经过我们的努力,建设了计算机网络实验环境,开设了《C语言》、《数据结构》、《操作系统》等软件实验课程。每一门实验课我们都自编了相应的实验教材,并且根据课程建设和计算机行业发展的需要,以及学生对实验内容的反馈情况,更新了实验内容
结语:实验教师队伍自身素质的提高,是推动实验教学内容改革,搞好实验教材建设,提高实验教学水平的关键因素。我们要不断地深化改革,积极探索实验教学的新模式和能力培养的多途径,提高实验教学水平,使实验室成为有助于培养适应新世纪高质量人才需要的基地。
【参考文献】
[1] 张红娜. 中等职业学校计算机实训教学浅议[J]. 大众科技, 2009,(03)
关键词: NTeQ模式 教学设计整合教学研究
1.引言
NTeQ的含义是“整合技术促进探究”(iNtegrating Technology for inQuiry),是由美国孟菲斯大学的Gary R.Morrison教授和Deborah L.Lowther教授首先提出的。该模式是信息技术与课堂教学整合的实用模式,它真正实现将信息技术作为教师教的工具和学生学的工具。NTeQ模式以学生和课程目标作为出发点,从学习理论、学习目标、课程内容及学习方式等方面入手,选择适当的计算机技术,将信息技术与课程整合的规划过程详细地体现出来,从而能够帮助教师在做教学设计时有一个清晰的设计思路。
2.NTeQ模式的操作步骤
按照NTeQ模式的思路,创建一个将计算机技术整合到课堂教学的单元计划需要10个步骤,如图1所示。
2.1制定目标
教师的每一个课程计划的列出都是从学习目标开始的。一般根据课程大纲要求,结合学生的认知结构及内容特点,制定出学生在不同阶段应达到的目标。
2.2计算机功能
教师在课前应充分考虑需要用到的计算机功能,并选择合适的功能来辅助完成教学目标。例如学生需要使用互联网或者教学光盘搜索相关资料,因此连通的网络和光驱是必需的;学生在数据分析时可能用到电子表格、数据库和图表等,还可能会创建文档,编辑图片、绘图等,这就需要安装相应的Office组件和其他应用软件。
2.3确定问题
问题是在教学目标的基础上提出来的,教师在向学生陈述问题时要讲究艺术性[1],从学生的角度考虑,问题要来自现实世界,具有真实性,也可以围绕教学目标引导学生自己提出问题,教师指导学生制定行动计划,让学生通过自主、探究的学习活动来解决。
2.4处理数据
在处理数据阶段,教师要明确学生将如何解决问题,也就是教学目标将如何成功的实现过程。
2.5显示结果
学生的学习结果展示有多种方式,有打印稿、口头陈述、Web页、幻灯片演示、海报等,教师可以根据教学目的和教学时间的不同选择不同的展示方式。
2.6评估
NTeQ教学模式中替代性评估弥补了传统评估的不足,不仅能让教师掌握学生的学习情况,还能做到因材施教。选择评估内容,如测验、演示报告等,采用任务列表或量规等评价工具,根据教学目标设计评价量规,为行为标准分配分数级别[2]。
2.7支持性活动
计算机是用来辅助教学的,在教学过程中有时仅靠计算机不能完成整个教学活动,有的教学活动本身不适合使用计算机,需要在教学过程中借助支持性活动,如相关阅读、小组讨论等。
2.8准备活动
考虑学生在使用计算机时将开展哪些活动,以什么方式开展活动,是自主学习还是合作学习。教师的活动设计必须紧紧围绕教学目标和中心问题展开。
2.9结束活动
教师对结束活动也需要精心准备,准备好响应的问题以引导学生进行活动反思,从而加深他们的学习过程。
2.10技术整合活动
考虑学生在使用计算机时将开展哪些活动,以什么方式开展活动(是自主学习还是合作学习)。教师的活动设计必须紧紧围绕教学目标和中心问题展开。
3.教案示例
NTeQ教学模式应用方便,教师按照NTeQ教学模式的步骤进行教学设计即可。下面是对计算机本科专业《数据结构》课程排序章节采用NTeQ教学模式进行教学设计的教案。
3.1基本内容
本章主要讨论比较各种内部排序方法――插入排序、交换排序、选择排序、归并排序和基数排序的基本思想、算法特点、排序过程,以及它们的时间复杂度分析。在每类排序方法中,从简单方法入手,重点讨论性能先进的高效方法(如插入排序中的希尔排序、交换排序中的快速排序、选择排序中的堆排序等)。
3.2学习目标
学习目标A:掌握每一种排序方法的机理;
学习目标B:深刻理解排序的定义和各种排序方法的特点,并能加以灵活应用;
学习目标C:掌握各种排序方法的算法描述及时间复杂度的分析;
学习目标D:理解排序方法“稳定”或“不稳定”的含义,清楚在什么情况下要求应用的排序方法必须是稳定的。
3.3资源列表
3.3.1网络资源列表。
A.吉林大学“数据结构”精品课程
http://202.198.16.51/wangluo/xueyuan/wangluoxuexi/01.dkch/selected.jsp
B.西北大学“数据结构”精品课程
http://jpkc.nwu.省略/datastr/
C.西安石油大学“数据结构”精品课程
http://jpkc.dept.xsyu.省略/shujujiegou/index.htm
D.浙江师范大学“数据结构”精品课程
http://teacher.省略/quyt/
3.3.2文章列表。
A.数据结构中典型排序算法性能分析(PDF文件)
B.一个比快速算法更快的算法(PDF文件)
C.摇动排序算法性能的研究(PDF文件)
D.奇偶交换排序算法性能的研究(PDF文件)
3.4技术与工具
A.Microsoft PowerPoint
B.Microsoft Word
C.IE浏览器或其他浏览器
D.Macromedia Flash MX
E.Microsoft Visual C++6.0
3.5多维活动
3.5.1活动1:内容的讲解。
在这个活动里,教师讲解排序方法的基本分类及分类所依据的原则。插入排序、交换排序、选择排序和归并排序的基本思想和各类排序方法中的简单排序法的排序过程通过Flas演示。插入排序类中的直接插入排序、选择排序类中的简单选择排序和堆排序、交换排序类中的快速排序等排序方法的实现、算法即算法分析是本章教学中的难点和重点。
在讲授各种排序方法的同时,提醒学生注意排序方法的稳定性问题。即对于具有同一排序码的多个记录来说,若采用的排序方法使排序后记录的相对次序不变(即前面的仍在前面,后面的仍在后面,当然由远邻变相邻),则称此排序方法是稳定的,否则称为不稳定的。
3.5.2活动2:内部排序方法的比较。
此活动通过上机操作深化学生对各种排序方法的理解和掌握。
上机内容为对6种常用的内部排序算法进行比较:直接插入排序、简单选择排序、堆排序、希尔排序、冒泡排序、快速排序。已知待排序的表长不小于100,其中的数据要用伪随机数产生程序产生,至少要用5组不同的输入数据作比较,比较的指标为有关键字参加的比较次数和关键字的移动次数。最后要求对结果做出简单分析,包括对各组数据得出结果波动大小的解释。
本活动的主要工作是设法在已知算法中的适当位置插入对关键码的比较次数和移动次数的计数操作。程序还可以考虑几组数据的典型性,如,正序、逆序和不同程度的乱序。调试的时候可以采用分块调试的方法。
3.6评价
对于学生的评价主要包括以下几个方面:
3.6.1完成上机实验要求,程序调试成功,运行结果正确。
3.6.2能对结果进行合理分析。
3.6.3提出创新思路或对现有程序有所改进。
3.6.4成果展示(作业、实验报告等)内容完整,材料齐全。
4.教学过程中几点需注意的问题
教师在教学过程中要充分发挥NTeQ教学模式的作用,必须注意以下几个问题:
4.1明确教师的主导和引导角色
传统的教学,只要教师带着已经精通的教学内容走进教室,再拿起粉笔和张开嘴就能开始课堂的进行。而现在要求教师作为学习促进者的角色设计教学计划,要求将技术整合到教学活动中,引导学生不仅要掌握教学内容,还能通过其他的手段在加强掌握知识的同时熟练使用计算机的应用软件和开发软件。
4.2教学环境的准备
教师在教学设计时,应根据不同的教学内容准备好教学环境。例如在讲授栈的应用时,可以通过演示小运用程序汉诺塔来阐释栈在递归调用中的使用,如图2所示。
4.3正确使用信息技术
NTeQ教学模式强调以学为主、以计算机为辅来解决问题,并且在解决问题的过程中不断学习。但是应注意到信息技术只是加强教学效果的手段,而更为重要的是教师如何引导学生学会怎样思考,即通过信息技术的使用解决问题而不是单纯地操作计算机。
5.结语
从上面的教学设计中可以看出,采用NTeQ教学模式进行教学,不仅可以提高学生掌握课程基本内容,还可以让学生在掌握学科知识的同时学会思考,提升学习的主动性。
教学有法但无定法。当使用一种新模式时,我们只能在摸索中前进。NTeQ模式是国外教育专家首创的,由于国外教育方式与我国有着很大的区别,因此在运用该模式的时候,要从我国的教学环境出发,根据所在院校的条件,制定出符合教学对象的教学模式。
在信息技术与《数据结构》课程的整合教学研究中,作为教学研究方案的设计者和实施者,笔者在教学实践过程中不仅开拓了视野,而且激发了探索各种教学模式的热情,更认识到教学研究的开展和深入是自身不断发展和完善的过程。
参考文献: