论文部分内容阅读
摘要:针对计算机专业人才培养特点,结合《数据结构》课堂教学中出现的问题,在深入分析计算机专业学生特点的前提下,探讨了对计算机专业能力型人才塑造的方方面面。论文阐述了如何从教师资源、授课方式、教学内容等方面为学生创造实践机会,培养学生动手能力。
关键词:课程实践;能力型人才培养;数据结构课程
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2013)39-0207-02
学校是为社会培养人才的,在大学办专业首先是要满足社会发展的需要。创造型人才的培养是高校人才培养追求的目标。创造型人才的核心是对人能力的要求,计算机专业是实践性很强的专业,要培养出合格人才,实践技能的培养尤为重要。任何创造性的理念都需要经过编程实现。这就需要我们在人才培养时首先考虑对人才能力方面的养成。大学4年的学习,对很多计算机专业的学生而言,学到了丰富的理论知识,但是并没有学到解决问题的思维方式和动手能力。《数据结构》课程是计算机专业重要的一门专业基础课程,也是计算机专业的学生接触到的第一门与实践结合紧密的课程。这门课程的目的是要教会学生在理解数据结构的同时,能运用数据结构解决实际问题。本人以此课为分析对象,结合笔者多年《数据结构》教学经验,探讨如何在当前学生思维多样性的情况下,踏实、有效地开展《数据结构》的课程教学,并真正让学生做到学以致用。本文从教材选取、内容甄别、授课方式和考核检验等方面,对《数据结构》课程教学活动的教师所起到的重要作用进行分析,以期阐述如何通过提高教师自身能力实现《数据结构》课程教学效果的提升。
一、教材选择
《数据结构》课程在学时安排上一般是64学时的课堂授课,同时还要安排相应课时的实践(或大型试验)课程作为辅助教学。实际上,《数据结构》这门课程的重要性在于所有软件开发人员都需要掌握《数据结构》的内容。无论是采用正式授课方式学习还是自学方式学习。但是,本人在多年的《数据结构》教学实践中体会到,学生对于《数据结构》的学习兴趣不大,更重要的是学习后并不知道如何使用学过数据结构的知识解决实际问题,课程学习停留在“学习/考试/遗忘/再学习”的模式。在教学实践中,《数据结构》课程一般安排在本科二年级进行。在这个阶段,学生已完成一些编程知识方面的课程学习,比如C /面向对象的程序设计等。在此基础上,《数据结构》的教学内容才能顺利展开,课程内容才能为学生所接受和掌握。目前《数据结构》的授课内容比较统一,授课内容大致包含数据的逻辑结构、数据的存储结构、相应存储结构下的算法实现等几部分。从教材看,清华大学严蔚敏(C语言版)的《数据结构》教程使用非常广泛,特别是在前几年的教学中普遍采用。近年来,随着编程技术(语言)的发展,逐渐更多的教学活动采用C 版或STL版的教材较为多见,同时国外引进的教材也有不少。不可否认,这些教材确实存在良莠不齐的情况。本人在教学过程中,先后使用过3种以上的教材,包括国产教材和国外引进教材。一般看来,国外的教材重实例、重代码,书中包含大量完整的实例代码,学习者可以通过研习这些代码加深对学习内容的理解。但是国外教材在理论性和条理性方面不太适合中国学生的学习。以严蔚敏C语言版位代表的国产教材,理论严谨,条理性强,但是实例代码不多,且以代码片段为主,对学习者来讲不能从整体上理解各种数据结构的应用。另外,国产教材多以C/C 为基础编写,对于像STL容器这样目前已普遍使用的标准数据结构的介绍不够,这也是造成我们的学生在学习数据结构后依然不能应用到实际编程开发解决问题的一个原因。对比之下,笔者认为《数据结构与算法分析(C 语言描述)》是一本较好的教材。该书以STL为基础,在剖析STL容器原理的基础上阐述数据结构的使用,非常深入浅出,而且条理性强,实例代码完整丰富。可惜目前这本书在国内比较少见。
二、教学内容的甄别
教材有千百种,但是内容确实大致统一。选定教材并不能意味着照本宣科。我们经常听到学生或其他人抱怨,学校教的东西“内容与实际脱节”。果真如此吗?本人的看法是否定的。《数据结构》的内容都来源于实践,软件开发实际中发现的问题,经过总结,才能成为《数据结构》中要阐述的内容。在教学内容方面,我们不能拘泥于教材。在学习《数据结构》之前,学生一般都已经学习了C 和面向对象的程序设计。但是从笔者的教学经验来看,在《数据结构》开始讲课前,对C 和面向对象的内容进行补课是必须的。大部分学生对数据的认识还停留在数组层面上,对程序开发的认识还停留在黑乎乎的控制台程序上,根本没有面向对象的思想。这些内容学生在考试过后已经还给老师了。《数据结构》的内容,乃至STL的各種容器,都是以面向对象思想为基础的。如果没有基础,这些内容就不能深入掌握。从笔者的经验看,一般要用6~8个学时来对学生进行针对性的补课,让学生能“回忆”起之前的内容,为后续内容打好基础。《数据结构》课程的内容很多,这些内容需要结合实际开发的需要进行甄别。比如对于链表,虽然是数据结构的基础,但是相对于STL的表容器来讲,后者使用更加广泛。结合表容器来讲链表,比单独讲解链表更有效果。再比如,对数据结构更深入的应用就是“树”,如果不能结合实际案例来分析,学生在学完“树”的内容后依然不知道如何/何时应该用它。但是我们在教学中,往往只关注“教下去”,而不是教会如何用。笔者认为这才是“教”与“学”脱节的问题关键。
三、教学方式的改革
甄选合适的教学内容,还要有合适的教学方法才能真正教会学生。笔者经常在课堂上对学生讲”如果你不知道自己愿意学什么,那么就老老实实学好老师交给你的东西”。但是对老师而言,这里面还有一个教的方法的问题。不可否认,目前高校内的老师,越来越多的是直接从讲台下走到讲台上,是“从学校到学校”的模式培养出来的。缺乏实践经验的他们,只能从理论到理论的教,把教材上的内容,完整地传授给学生,仅此而已。这样的教学,其实学生自己学习也完全可以。《师说》中讲,“师者,所以传道受业解惑也”。“解惑”是学习过程中自我提高的重要阶段。可是目前的实际情况是,很多学生在课堂上是不会提出任何“惑”的。这种情况下,就需要“师者”用各种方式帮助学生解惑。一个典型的例子就是笔者在讲授“树”结构后,在课堂上提问学生:对于海量数据,如果需要在读入数据的时候进行去重操作,哪种数据结构效率比较高。几乎所有的学生都不知道用树结构进行处理。书本上所学的东西和解决实际问题完全联系不到一起。课程学习的内容在“墙”的一边,实际问题在“墙”的另一边,学生不知道如何穿墙而过,反而一直抱怨在“墙”这边无所事事。这就是我们目前教学中面临的严重问题。因此,教师就应该把“墙”两边的内容打通呈现给学生。但是因为没有解决实际问题的经验,我们很多“师者”也是始终在“墙”的一边转,自己都不知道“墙”的另一边是什么样子,这样怎么可以呢?笔者有丰富的实际软件产品开发经验,通过言传身教,让学生知道如何从一个实际问题中提炼出问题关键,以及如何利用学过的知识解决这些问题。这样才能让学生掌握自己解决问题的能力,才能学有所用。课堂迹象表明,学生对这样的教学方式是很欢迎的。
四、教学效果的检验
学生上课就要考试,这是天经地义的。考试是检验学习成果的重要手段。长期以来,《数据结构》课程的考试一直以闭卷笔试为主。但是《数据结构》实际上是一门实践性很强的课程,我们的目的不仅是让学生知道《数据结构》的内容,更重要的是能使用数据结构解决实际问题。否则学生就真的成为考完就忘的人了。笔者在教学过程中,一贯坚持要求学生必须使用MFC完成各种课程上机作业。使用MFC可以极大拓展学生的编程世界,让他们接触到软件开发更丰富的应用,体验到真实软件开发的乐趣。开始的过程是痛苦的,学生不懂的东西太多,这时候舍得花时间、精力教会他们是最重要的。一旦学生入门了,就会激起他们对编程的兴趣和热爱。这点对于软件开发工作者来讲是非常重要的。因此在教学考核方面,笔者认为可以用上机开发部分代替书面试卷。自己动手利用学到的数据结构的知识,用MFC编程解决实际问题,这样学生会更有成就感。
总之,在笔者几年的《数据结构》教学实践中,体会最深的就是培养学生解决实际问题的能力远比教会他们一些书本内容更重要。这种能力的培养会让学生终身收益,而书本上的内容不通过实践检验,也不会牢固树立在学生脑海中。《数据结构》这门课程,正是培养学生解决实际问题和动手能力的最佳平台。正因如此,我们讲授这门课程的教师,更应具有丰富的实践经验,才能在教学中融会贯通,提高学生的学习兴趣和编程能力,让学生体会到学习的乐趣和学习的成就感,体会到学有所值。
参考文献
[1]教育部高等学校计算机科学与技术专业教学指导分委员会.中国计算机本科专业发展战略研究报告[J].中国大学教育,2005,(5):7-10.
[2]顾可民.计算机专业实用型人才培养模式的研究与实践[J].辽宁教育研究,2007,(10):84-86.
[3]严蔚敏,吴伟民.数据结构(c语言版)[M].北京:清华大学出版社,2002.
[4]刘晓利.现代教学模式下数据结构教学的组织与设计[J].计算机教育,2007,(10).
作者简介:陈志杨(197-),男,浙江工业大学计算机学院教授,博士,硕士研究生导师。
关键词:课程实践;能力型人才培养;数据结构课程
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2013)39-0207-02
学校是为社会培养人才的,在大学办专业首先是要满足社会发展的需要。创造型人才的培养是高校人才培养追求的目标。创造型人才的核心是对人能力的要求,计算机专业是实践性很强的专业,要培养出合格人才,实践技能的培养尤为重要。任何创造性的理念都需要经过编程实现。这就需要我们在人才培养时首先考虑对人才能力方面的养成。大学4年的学习,对很多计算机专业的学生而言,学到了丰富的理论知识,但是并没有学到解决问题的思维方式和动手能力。《数据结构》课程是计算机专业重要的一门专业基础课程,也是计算机专业的学生接触到的第一门与实践结合紧密的课程。这门课程的目的是要教会学生在理解数据结构的同时,能运用数据结构解决实际问题。本人以此课为分析对象,结合笔者多年《数据结构》教学经验,探讨如何在当前学生思维多样性的情况下,踏实、有效地开展《数据结构》的课程教学,并真正让学生做到学以致用。本文从教材选取、内容甄别、授课方式和考核检验等方面,对《数据结构》课程教学活动的教师所起到的重要作用进行分析,以期阐述如何通过提高教师自身能力实现《数据结构》课程教学效果的提升。
一、教材选择
《数据结构》课程在学时安排上一般是64学时的课堂授课,同时还要安排相应课时的实践(或大型试验)课程作为辅助教学。实际上,《数据结构》这门课程的重要性在于所有软件开发人员都需要掌握《数据结构》的内容。无论是采用正式授课方式学习还是自学方式学习。但是,本人在多年的《数据结构》教学实践中体会到,学生对于《数据结构》的学习兴趣不大,更重要的是学习后并不知道如何使用学过数据结构的知识解决实际问题,课程学习停留在“学习/考试/遗忘/再学习”的模式。在教学实践中,《数据结构》课程一般安排在本科二年级进行。在这个阶段,学生已完成一些编程知识方面的课程学习,比如C /面向对象的程序设计等。在此基础上,《数据结构》的教学内容才能顺利展开,课程内容才能为学生所接受和掌握。目前《数据结构》的授课内容比较统一,授课内容大致包含数据的逻辑结构、数据的存储结构、相应存储结构下的算法实现等几部分。从教材看,清华大学严蔚敏(C语言版)的《数据结构》教程使用非常广泛,特别是在前几年的教学中普遍采用。近年来,随着编程技术(语言)的发展,逐渐更多的教学活动采用C 版或STL版的教材较为多见,同时国外引进的教材也有不少。不可否认,这些教材确实存在良莠不齐的情况。本人在教学过程中,先后使用过3种以上的教材,包括国产教材和国外引进教材。一般看来,国外的教材重实例、重代码,书中包含大量完整的实例代码,学习者可以通过研习这些代码加深对学习内容的理解。但是国外教材在理论性和条理性方面不太适合中国学生的学习。以严蔚敏C语言版位代表的国产教材,理论严谨,条理性强,但是实例代码不多,且以代码片段为主,对学习者来讲不能从整体上理解各种数据结构的应用。另外,国产教材多以C/C 为基础编写,对于像STL容器这样目前已普遍使用的标准数据结构的介绍不够,这也是造成我们的学生在学习数据结构后依然不能应用到实际编程开发解决问题的一个原因。对比之下,笔者认为《数据结构与算法分析(C 语言描述)》是一本较好的教材。该书以STL为基础,在剖析STL容器原理的基础上阐述数据结构的使用,非常深入浅出,而且条理性强,实例代码完整丰富。可惜目前这本书在国内比较少见。
二、教学内容的甄别
教材有千百种,但是内容确实大致统一。选定教材并不能意味着照本宣科。我们经常听到学生或其他人抱怨,学校教的东西“内容与实际脱节”。果真如此吗?本人的看法是否定的。《数据结构》的内容都来源于实践,软件开发实际中发现的问题,经过总结,才能成为《数据结构》中要阐述的内容。在教学内容方面,我们不能拘泥于教材。在学习《数据结构》之前,学生一般都已经学习了C 和面向对象的程序设计。但是从笔者的教学经验来看,在《数据结构》开始讲课前,对C 和面向对象的内容进行补课是必须的。大部分学生对数据的认识还停留在数组层面上,对程序开发的认识还停留在黑乎乎的控制台程序上,根本没有面向对象的思想。这些内容学生在考试过后已经还给老师了。《数据结构》的内容,乃至STL的各種容器,都是以面向对象思想为基础的。如果没有基础,这些内容就不能深入掌握。从笔者的经验看,一般要用6~8个学时来对学生进行针对性的补课,让学生能“回忆”起之前的内容,为后续内容打好基础。《数据结构》课程的内容很多,这些内容需要结合实际开发的需要进行甄别。比如对于链表,虽然是数据结构的基础,但是相对于STL的表容器来讲,后者使用更加广泛。结合表容器来讲链表,比单独讲解链表更有效果。再比如,对数据结构更深入的应用就是“树”,如果不能结合实际案例来分析,学生在学完“树”的内容后依然不知道如何/何时应该用它。但是我们在教学中,往往只关注“教下去”,而不是教会如何用。笔者认为这才是“教”与“学”脱节的问题关键。
三、教学方式的改革
甄选合适的教学内容,还要有合适的教学方法才能真正教会学生。笔者经常在课堂上对学生讲”如果你不知道自己愿意学什么,那么就老老实实学好老师交给你的东西”。但是对老师而言,这里面还有一个教的方法的问题。不可否认,目前高校内的老师,越来越多的是直接从讲台下走到讲台上,是“从学校到学校”的模式培养出来的。缺乏实践经验的他们,只能从理论到理论的教,把教材上的内容,完整地传授给学生,仅此而已。这样的教学,其实学生自己学习也完全可以。《师说》中讲,“师者,所以传道受业解惑也”。“解惑”是学习过程中自我提高的重要阶段。可是目前的实际情况是,很多学生在课堂上是不会提出任何“惑”的。这种情况下,就需要“师者”用各种方式帮助学生解惑。一个典型的例子就是笔者在讲授“树”结构后,在课堂上提问学生:对于海量数据,如果需要在读入数据的时候进行去重操作,哪种数据结构效率比较高。几乎所有的学生都不知道用树结构进行处理。书本上所学的东西和解决实际问题完全联系不到一起。课程学习的内容在“墙”的一边,实际问题在“墙”的另一边,学生不知道如何穿墙而过,反而一直抱怨在“墙”这边无所事事。这就是我们目前教学中面临的严重问题。因此,教师就应该把“墙”两边的内容打通呈现给学生。但是因为没有解决实际问题的经验,我们很多“师者”也是始终在“墙”的一边转,自己都不知道“墙”的另一边是什么样子,这样怎么可以呢?笔者有丰富的实际软件产品开发经验,通过言传身教,让学生知道如何从一个实际问题中提炼出问题关键,以及如何利用学过的知识解决这些问题。这样才能让学生掌握自己解决问题的能力,才能学有所用。课堂迹象表明,学生对这样的教学方式是很欢迎的。
四、教学效果的检验
学生上课就要考试,这是天经地义的。考试是检验学习成果的重要手段。长期以来,《数据结构》课程的考试一直以闭卷笔试为主。但是《数据结构》实际上是一门实践性很强的课程,我们的目的不仅是让学生知道《数据结构》的内容,更重要的是能使用数据结构解决实际问题。否则学生就真的成为考完就忘的人了。笔者在教学过程中,一贯坚持要求学生必须使用MFC完成各种课程上机作业。使用MFC可以极大拓展学生的编程世界,让他们接触到软件开发更丰富的应用,体验到真实软件开发的乐趣。开始的过程是痛苦的,学生不懂的东西太多,这时候舍得花时间、精力教会他们是最重要的。一旦学生入门了,就会激起他们对编程的兴趣和热爱。这点对于软件开发工作者来讲是非常重要的。因此在教学考核方面,笔者认为可以用上机开发部分代替书面试卷。自己动手利用学到的数据结构的知识,用MFC编程解决实际问题,这样学生会更有成就感。
总之,在笔者几年的《数据结构》教学实践中,体会最深的就是培养学生解决实际问题的能力远比教会他们一些书本内容更重要。这种能力的培养会让学生终身收益,而书本上的内容不通过实践检验,也不会牢固树立在学生脑海中。《数据结构》这门课程,正是培养学生解决实际问题和动手能力的最佳平台。正因如此,我们讲授这门课程的教师,更应具有丰富的实践经验,才能在教学中融会贯通,提高学生的学习兴趣和编程能力,让学生体会到学习的乐趣和学习的成就感,体会到学有所值。
参考文献
[1]教育部高等学校计算机科学与技术专业教学指导分委员会.中国计算机本科专业发展战略研究报告[J].中国大学教育,2005,(5):7-10.
[2]顾可民.计算机专业实用型人才培养模式的研究与实践[J].辽宁教育研究,2007,(10):84-86.
[3]严蔚敏,吴伟民.数据结构(c语言版)[M].北京:清华大学出版社,2002.
[4]刘晓利.现代教学模式下数据结构教学的组织与设计[J].计算机教育,2007,(10).
作者简介:陈志杨(197-),男,浙江工业大学计算机学院教授,博士,硕士研究生导师。