论文部分内容阅读
阐述独立学院人才培养目标,分析数据结构课程在实际教学过程中存在的问题,并提出了解决的办法,探讨在数据结构课程教学上的一些改革和创新想法。
一、引言
数据结构不仅是计算机专业的核心基础课之一,也是数据库、操作系统等专业课的重要前导课,是一门实践性很强的课程,广泛应用于信息科学、应用数学和各种工程技术领域。因此,它是计算机专业本科自考和研究生考试的必考课程,也是计算机专业毕业生参加企业面试、笔试时最常涉及的内容之一。但是,数据结构课程内容丰富且抽象难懂,学习难度较大。针对数据结构课程教学中的问题,试图探索一个适应于独立学院专科阶段学生的教学模式,实现最有效和最优化的教学改革方案。
二、独立学院数据结构课程的教学目标
独立学院的教学目标是培养拥有高职业技能的综合应用型人才,各课程的教学目标则应以这个目标为中心。数据结构课程的教学目标是:使学生透彻理解各类数据对象的特点,掌握数据的组织方式和实现方法,进一步培养算法设计能力,能够选择和设计良好的数据组织方式解决实际问题的能力。
三、独立学院专科学生的特点
不同的学生群体有不同的特点。对于独立学院的专科生来说,他们共有的特点是:第一,都有较成熟的思想,开始考虑自己的就业和升学深造问题,会思考现在的学习与个人前途的联系,对重要的课程会倾注更多的学习热情和时间;第二,养成自学习惯的学生不多,自我控制能力不是很强,容易受外界因素的影响,遇到困难容易放弃;第三,基础知识稍显薄弱,有一定的逻辑思维能力,但不是很强;第四,容易厌倦理论知识的学习,课堂上能保持集中注意力的时间较短,但有较强的社会活动能力,爱好实践活动。第五,学习的主观能动性不是很强,需要适当的督促。基于这些差异和特点,需要根据学生的情况探索符合实际的教学模式,真正做到因材施教。
四、课程教学中存在的主要问题
1. 前导课程不扎实。多数高校的培养方案选择C语言作为学生第一门学习的程序设计语言,它是数据结构的前导课程。学生对C语言的掌握和熟练程度,直接关系到数据结构课程的教学效果。由于编程思想和一般思维方式的区别,使得C语言对初入大学的学生来说,是一门学习难度大,不易掌握的课程。学生对数组、结构体、指针这三种数据类型的认识和理解不深、对函数的使用不熟悉。而这些内容正是数据结构课程的重要基础。
在课程计划上,数据结构通常安排在C语言之后的一个学期。在学生本来就对C语言掌握不扎实的情况下,经过一个长假,学生对C语言的许多基本概念更加模糊不清。因此,在数据结构的教学中往往需要花费大量时间重新介绍这些知识,使得教学效果大打折扣。特别是学生看到这么多的代码,产生畏惧感,从心理上认定自己学不好,丧失了学习数据结构的兴趣和信心。
2. 实践环节重视程度不够。在与学生的交流中,很多学生反映算法能理解,或者阅读现成的程序能理解,但是由自己转化成编程语言实现很困难,从而产生严重的挫败感。现行的教学计划中实验课时明显不足,而且形式单调,很难调动起学生上机实验的积极性,导致应用能力差。
五、课程教学改革
要使学生学好数据结构,首要解决的问题是:“数据结构有什么用”。只有这个问题得到解决,学生才有学习的动力和兴趣。因此,在课程教学中要始终贯穿一个主线:“有什么用”以及“怎么用”。根据独立学院的培养目标和专科学生的特点,需要运用灵活的教学方式,精心组织教学内容,特别加强实践教学,引导学生从被动接受转变为主动学习。
1. 巩固前导课程,探索教学新模式。针对学生C语言学习不扎实的问题,可以在数据结构开课初期,利用实验课进行C语言专题复习,巩固数据结构算法中常用到的数组、函数、指针、结构体这些知识点。教学实践证明这样的专题复习对学生后续的学习帮助很大,有利于学生对算法的理解和应用。除了开设专题复习,在平时的教学中教师需要适时的对学生没有掌握牢的C语言知识点进行巩固和讲解。
将C语言和数据结构课程有机地结合起来是一个新的尝试。可行的做法之一是成立课程群,由同一位老师讲授C语言和数据结构课程。实践的对比证明,这种方式具有明显的优势。教师在C语言教学阶段,有意识地加强学生对数据类型的理解,在介绍算法的时候穿插数据结构的概念;在数据结构教学阶段,由于教师熟悉学生C语言学习情况,可以有针对性的进行讲解和练习。下一步的尝试是:将C语言和数据结构开设在同一学期,前半段C语言,后半段数据结构,使知识的衔接更紧凑。在条件成熟的情况下,最终将C语言和数据结构融合成一门课,互相促进,相辅相成。
应该向学生说明,学习数据结构不是进行单纯的程序设计,它的重点是在理解数据逻辑结构、存储结构等基本概念的基础上建立算法,是提高运用计算机解决实际问题的方法和能力,包括实际问题分析、数据结构描述、求解方法设计、程序实现等多个步骤。强调通过数据结构中算法的理解和实现,是一个再次提高编程能力的机会,帮助学生建立学习信心。
2. 采用范例教学,突出实用性。数据结构这门课程主要介绍线性结构、树形结构和图形结构这三大基本结构的逻辑结构、存储结构和基本操作,这些理论知识涉及的概念、算法比较多,自成体系并且很抽象。学生如果不理解这些概念则很难记住,更谈不上应用,很快失去学习信心。因此,上好第一节课非常关键。通过引用和学生生活联系紧密的、有趣的问题,阐明数据结构研究的对象,激发学生的学习热情。例如排队购票的线性结构,人机对弈的树结构,哥尼斯堡七桥问题的图结构等。首先让学生明确“数据结构有什么用”,在今后的教学过程中,将理论知识与实际应用结合,总是从生活中的范例着手,引出要研究的对象,再进一步解决“怎么用”的问题。除了纵向由浅入深的教学,还要进行横向的对比教学。在学习新内容的同时,通过对比,不断重温已学过的内容,这对专科阶段的学生是很有效的教学手段。
对知识背景人物进行介绍,学生既感兴趣,也备受鼓舞,还活跃了课堂气氛。例如介绍数据结构的奠基人Donald.E.Knuth、图论的创立者欧拉、最短路径Dijkstra算法的设计者Dijkstra等,这些科学家在青年时代就已经在学术上做出了巨大贡献。激励学生珍惜时间,建立克服困难的信心。
数据结构的内容多而杂,对专科学生来说,在课程教学中应该控制好内容的深度和广度,对教材中的内容进行取舍,突出重点。例如,特别加强线性表的存储结构:顺序存储方式和链式存储方式的讲解和练习,因为这两种存储结构贯穿整个教学过程;引导学生比较各种存储方式的优缺点,让学生掌握使用哪种存储结构是合适的。对于学生倍感困难的算法学习,采用先用自然语言描述,再用伪代码描述,最后用计算机语言实现的方式。
3. 变“宣讲课”为“互动课”,增强主动性。专科学生对于理论性强的内容会很快失去学习兴趣,并且能集中注意力的时间短。教师如果不注意学生的反应,只在讲台上进行“宣讲”,学生既没有学会知识,又浪费了宝贵的课堂教学时间。为了使学生能够保持学习注意力,需要增加课堂互动环节,让学生参与到课堂教学中来,可以采用多种方式:(1)教师不断提出问题,引导学生分析问题,让学生解决问题,最后由教师总结。(2)教师布置任务,学生单独或组成小组完成任务,再由教师评价效果,激励式教学。
这些方式有利于保持教师与学生的互动,提高学生的学习积极性和学习效率。学生通过完成任务得到成就感;通过教师的评价和其他同学的肯定,满足了自我表现的要求,从而确立了学习的信心和不断追求进步的良性循环,挖掘出更大的潜力。同时也增强了团队合作的能力。
4. 增加口试环节,增强灵活性。专业课口试,是国外很多大学最常使用的考试方法。口试不但可以检验学生最真实的学习效果,同时也锻炼了学生应变能力和口头表达能力,对学生将来就业和升学面试是一个很好的锻炼。口试的时间一般在10至30分钟,可以采取一对一或一对多的方式进行,但一组最多不超过5人。口试时,由教师随机提出问题,指定学生回答,或由学生自由回答,教师进行记录。对有分歧的答案,教师请学生进行辩论和说服,由学生达成一致意见后再由教师进行评价。口试完毕后,教师对共性的错误进行讲解和辅导,并将口试成绩计入平时成绩。
口试有利于教师了解学生的真实学习情况,针对每个学生的特点促进个性化学习,进一步增加了师生间的交流。口试环节对于性格比较内向、学习稍差的学生尤为有效,他们充分解决了自己的疑问,同时也感受到了教师的重视,在后续的学习中表现出很强的学习动力,提高了与同学交流的能力。
5. 运用多媒体手段,增强生动性。制作精良的课件可以生动、形象、灵活的呈现算法执行的过程和数据结构的动态变化。例如:链表的插入、删除过程,二叉树的构造过程,图的最短路径等,可以通过动画将每一步的变化表示出来,并且配合上与这个变化相对应的关键C语句操作。通过视觉的刺激进一步增强学生对概念的理解,将抽象的内容具体化,让学生明白每一个操作可以用怎样的C语句来实现,而不是一段段枯燥的、静态的代码。除了电子课件,教师还应指导学生使用网络资源,扩充知识面,深化知识点,跟踪学科发展前沿。
6. 重视实践环节,增强多样性。实践环节包括课后练习、实验和课程设计。对于课后练习,布置和各类考试题型相近的习题,教师批改后在课堂上进行集中讲解。对于实验题目的设计要紧扣教学内容,题目的难易程度要照顾到所有学生,分选做题和必做题,让学生从解决问题的过程中感受到成就感。题目的层次分成验证性、设计性和综合性。
对专科学生来说,实验课形式采取初期教师演示和讲解,学生进行模仿,使每个学生都能动手实现;中期教师提示和分析,学生进行扩展,使学生能够在一个代码框架的基础上进行修改和扩充;后期教师稍作提示,学生进行设计和实现,使学生独立完成分析问题、建立模型、形成算法、编程实现这几个步骤。循序渐进地提高学生的算法设计和编程能力。要求编写的程序要有注释、有容错处理、能正常运行;实验结束后要求撰写实验报告,教师对学生的实验情况做出及时总结,指出成功之处和不足之处,引导学生改进。课程设计的题目选择要结合实际,以学生经过努力能完成课题为度。通过课程设计,让学生初步感受到软件开发的过程。教师只需适度指导,让学生在解决问题和困难的过程中积累经验和能力。
六、结束语
本文根据独立学院的培养目标和专科学生的特点,提出了数据结构教学改革的具体方案,并且在实际教学中提高了教学效果。在今后的教学工作中,还将不断进行探索,进一步提高教师的教学水平,使学生掌握软件设计领域的思维方式,形成良好的程序设计习惯和扎实的软件开发基础。
(作者简介:吴佳芬(1981.10-),女,德国卡尔斯鲁厄大学信息学(计算机科学)硕士,现任武汉东湖学院计算机科学学院教师,主要从事计算机专业《C语言程序设计》、《数据结构》、《.NET程序设计》和《UML及软件建模》等课程教学工作。)
一、引言
数据结构不仅是计算机专业的核心基础课之一,也是数据库、操作系统等专业课的重要前导课,是一门实践性很强的课程,广泛应用于信息科学、应用数学和各种工程技术领域。因此,它是计算机专业本科自考和研究生考试的必考课程,也是计算机专业毕业生参加企业面试、笔试时最常涉及的内容之一。但是,数据结构课程内容丰富且抽象难懂,学习难度较大。针对数据结构课程教学中的问题,试图探索一个适应于独立学院专科阶段学生的教学模式,实现最有效和最优化的教学改革方案。
二、独立学院数据结构课程的教学目标
独立学院的教学目标是培养拥有高职业技能的综合应用型人才,各课程的教学目标则应以这个目标为中心。数据结构课程的教学目标是:使学生透彻理解各类数据对象的特点,掌握数据的组织方式和实现方法,进一步培养算法设计能力,能够选择和设计良好的数据组织方式解决实际问题的能力。
三、独立学院专科学生的特点
不同的学生群体有不同的特点。对于独立学院的专科生来说,他们共有的特点是:第一,都有较成熟的思想,开始考虑自己的就业和升学深造问题,会思考现在的学习与个人前途的联系,对重要的课程会倾注更多的学习热情和时间;第二,养成自学习惯的学生不多,自我控制能力不是很强,容易受外界因素的影响,遇到困难容易放弃;第三,基础知识稍显薄弱,有一定的逻辑思维能力,但不是很强;第四,容易厌倦理论知识的学习,课堂上能保持集中注意力的时间较短,但有较强的社会活动能力,爱好实践活动。第五,学习的主观能动性不是很强,需要适当的督促。基于这些差异和特点,需要根据学生的情况探索符合实际的教学模式,真正做到因材施教。
四、课程教学中存在的主要问题
1. 前导课程不扎实。多数高校的培养方案选择C语言作为学生第一门学习的程序设计语言,它是数据结构的前导课程。学生对C语言的掌握和熟练程度,直接关系到数据结构课程的教学效果。由于编程思想和一般思维方式的区别,使得C语言对初入大学的学生来说,是一门学习难度大,不易掌握的课程。学生对数组、结构体、指针这三种数据类型的认识和理解不深、对函数的使用不熟悉。而这些内容正是数据结构课程的重要基础。
在课程计划上,数据结构通常安排在C语言之后的一个学期。在学生本来就对C语言掌握不扎实的情况下,经过一个长假,学生对C语言的许多基本概念更加模糊不清。因此,在数据结构的教学中往往需要花费大量时间重新介绍这些知识,使得教学效果大打折扣。特别是学生看到这么多的代码,产生畏惧感,从心理上认定自己学不好,丧失了学习数据结构的兴趣和信心。
2. 实践环节重视程度不够。在与学生的交流中,很多学生反映算法能理解,或者阅读现成的程序能理解,但是由自己转化成编程语言实现很困难,从而产生严重的挫败感。现行的教学计划中实验课时明显不足,而且形式单调,很难调动起学生上机实验的积极性,导致应用能力差。
五、课程教学改革
要使学生学好数据结构,首要解决的问题是:“数据结构有什么用”。只有这个问题得到解决,学生才有学习的动力和兴趣。因此,在课程教学中要始终贯穿一个主线:“有什么用”以及“怎么用”。根据独立学院的培养目标和专科学生的特点,需要运用灵活的教学方式,精心组织教学内容,特别加强实践教学,引导学生从被动接受转变为主动学习。
1. 巩固前导课程,探索教学新模式。针对学生C语言学习不扎实的问题,可以在数据结构开课初期,利用实验课进行C语言专题复习,巩固数据结构算法中常用到的数组、函数、指针、结构体这些知识点。教学实践证明这样的专题复习对学生后续的学习帮助很大,有利于学生对算法的理解和应用。除了开设专题复习,在平时的教学中教师需要适时的对学生没有掌握牢的C语言知识点进行巩固和讲解。
将C语言和数据结构课程有机地结合起来是一个新的尝试。可行的做法之一是成立课程群,由同一位老师讲授C语言和数据结构课程。实践的对比证明,这种方式具有明显的优势。教师在C语言教学阶段,有意识地加强学生对数据类型的理解,在介绍算法的时候穿插数据结构的概念;在数据结构教学阶段,由于教师熟悉学生C语言学习情况,可以有针对性的进行讲解和练习。下一步的尝试是:将C语言和数据结构开设在同一学期,前半段C语言,后半段数据结构,使知识的衔接更紧凑。在条件成熟的情况下,最终将C语言和数据结构融合成一门课,互相促进,相辅相成。
应该向学生说明,学习数据结构不是进行单纯的程序设计,它的重点是在理解数据逻辑结构、存储结构等基本概念的基础上建立算法,是提高运用计算机解决实际问题的方法和能力,包括实际问题分析、数据结构描述、求解方法设计、程序实现等多个步骤。强调通过数据结构中算法的理解和实现,是一个再次提高编程能力的机会,帮助学生建立学习信心。
2. 采用范例教学,突出实用性。数据结构这门课程主要介绍线性结构、树形结构和图形结构这三大基本结构的逻辑结构、存储结构和基本操作,这些理论知识涉及的概念、算法比较多,自成体系并且很抽象。学生如果不理解这些概念则很难记住,更谈不上应用,很快失去学习信心。因此,上好第一节课非常关键。通过引用和学生生活联系紧密的、有趣的问题,阐明数据结构研究的对象,激发学生的学习热情。例如排队购票的线性结构,人机对弈的树结构,哥尼斯堡七桥问题的图结构等。首先让学生明确“数据结构有什么用”,在今后的教学过程中,将理论知识与实际应用结合,总是从生活中的范例着手,引出要研究的对象,再进一步解决“怎么用”的问题。除了纵向由浅入深的教学,还要进行横向的对比教学。在学习新内容的同时,通过对比,不断重温已学过的内容,这对专科阶段的学生是很有效的教学手段。
对知识背景人物进行介绍,学生既感兴趣,也备受鼓舞,还活跃了课堂气氛。例如介绍数据结构的奠基人Donald.E.Knuth、图论的创立者欧拉、最短路径Dijkstra算法的设计者Dijkstra等,这些科学家在青年时代就已经在学术上做出了巨大贡献。激励学生珍惜时间,建立克服困难的信心。
数据结构的内容多而杂,对专科学生来说,在课程教学中应该控制好内容的深度和广度,对教材中的内容进行取舍,突出重点。例如,特别加强线性表的存储结构:顺序存储方式和链式存储方式的讲解和练习,因为这两种存储结构贯穿整个教学过程;引导学生比较各种存储方式的优缺点,让学生掌握使用哪种存储结构是合适的。对于学生倍感困难的算法学习,采用先用自然语言描述,再用伪代码描述,最后用计算机语言实现的方式。
3. 变“宣讲课”为“互动课”,增强主动性。专科学生对于理论性强的内容会很快失去学习兴趣,并且能集中注意力的时间短。教师如果不注意学生的反应,只在讲台上进行“宣讲”,学生既没有学会知识,又浪费了宝贵的课堂教学时间。为了使学生能够保持学习注意力,需要增加课堂互动环节,让学生参与到课堂教学中来,可以采用多种方式:(1)教师不断提出问题,引导学生分析问题,让学生解决问题,最后由教师总结。(2)教师布置任务,学生单独或组成小组完成任务,再由教师评价效果,激励式教学。
这些方式有利于保持教师与学生的互动,提高学生的学习积极性和学习效率。学生通过完成任务得到成就感;通过教师的评价和其他同学的肯定,满足了自我表现的要求,从而确立了学习的信心和不断追求进步的良性循环,挖掘出更大的潜力。同时也增强了团队合作的能力。
4. 增加口试环节,增强灵活性。专业课口试,是国外很多大学最常使用的考试方法。口试不但可以检验学生最真实的学习效果,同时也锻炼了学生应变能力和口头表达能力,对学生将来就业和升学面试是一个很好的锻炼。口试的时间一般在10至30分钟,可以采取一对一或一对多的方式进行,但一组最多不超过5人。口试时,由教师随机提出问题,指定学生回答,或由学生自由回答,教师进行记录。对有分歧的答案,教师请学生进行辩论和说服,由学生达成一致意见后再由教师进行评价。口试完毕后,教师对共性的错误进行讲解和辅导,并将口试成绩计入平时成绩。
口试有利于教师了解学生的真实学习情况,针对每个学生的特点促进个性化学习,进一步增加了师生间的交流。口试环节对于性格比较内向、学习稍差的学生尤为有效,他们充分解决了自己的疑问,同时也感受到了教师的重视,在后续的学习中表现出很强的学习动力,提高了与同学交流的能力。
5. 运用多媒体手段,增强生动性。制作精良的课件可以生动、形象、灵活的呈现算法执行的过程和数据结构的动态变化。例如:链表的插入、删除过程,二叉树的构造过程,图的最短路径等,可以通过动画将每一步的变化表示出来,并且配合上与这个变化相对应的关键C语句操作。通过视觉的刺激进一步增强学生对概念的理解,将抽象的内容具体化,让学生明白每一个操作可以用怎样的C语句来实现,而不是一段段枯燥的、静态的代码。除了电子课件,教师还应指导学生使用网络资源,扩充知识面,深化知识点,跟踪学科发展前沿。
6. 重视实践环节,增强多样性。实践环节包括课后练习、实验和课程设计。对于课后练习,布置和各类考试题型相近的习题,教师批改后在课堂上进行集中讲解。对于实验题目的设计要紧扣教学内容,题目的难易程度要照顾到所有学生,分选做题和必做题,让学生从解决问题的过程中感受到成就感。题目的层次分成验证性、设计性和综合性。
对专科学生来说,实验课形式采取初期教师演示和讲解,学生进行模仿,使每个学生都能动手实现;中期教师提示和分析,学生进行扩展,使学生能够在一个代码框架的基础上进行修改和扩充;后期教师稍作提示,学生进行设计和实现,使学生独立完成分析问题、建立模型、形成算法、编程实现这几个步骤。循序渐进地提高学生的算法设计和编程能力。要求编写的程序要有注释、有容错处理、能正常运行;实验结束后要求撰写实验报告,教师对学生的实验情况做出及时总结,指出成功之处和不足之处,引导学生改进。课程设计的题目选择要结合实际,以学生经过努力能完成课题为度。通过课程设计,让学生初步感受到软件开发的过程。教师只需适度指导,让学生在解决问题和困难的过程中积累经验和能力。
六、结束语
本文根据独立学院的培养目标和专科学生的特点,提出了数据结构教学改革的具体方案,并且在实际教学中提高了教学效果。在今后的教学工作中,还将不断进行探索,进一步提高教师的教学水平,使学生掌握软件设计领域的思维方式,形成良好的程序设计习惯和扎实的软件开发基础。
(作者简介:吴佳芬(1981.10-),女,德国卡尔斯鲁厄大学信息学(计算机科学)硕士,现任武汉东湖学院计算机科学学院教师,主要从事计算机专业《C语言程序设计》、《数据结构》、《.NET程序设计》和《UML及软件建模》等课程教学工作。)