您好, 访客   登录/注册

数据结构教学改革思考

来源:用户上传      作者:

  【摘 要】针对数据结构课程教学,本文在教学内容安排、教学形式、实验形式、考核形式、教学关键点等方面给出了阐述。以期经过探讨提高数据结构课程的教学质量。
  【关键词】数据结构;教学改革;教学质量
  0 引言
  《数据结构》是计算机本科专业的一门核心课程,讨论如何在使用数据的时候有效地组织数据。该课程与《程序设计》、《算法设计》等本科课程有着重要的联系,是本科计算机专业的一门核心课程,在国内有不同版本的教材可以选择[1-6]。本文讨论《数据结构》课程的教学内容安排、教学形式、实验形式、考核形式、教学关键点等方面的相关问题,这些问题同时也在其它课程教学中存在。通过这些问题的讨论,期望为数据结构课程的进一步改革与提高提供思路与借鉴。
  1 教学思考
  在下文中,对数据结构课程的相关内容分项进行阐述和探讨。
  1.1 教学内容安排
  教师授课,应该对该门课的核心思想具有很深刻的认识。具体来说,应该对该门课的背景(在整个计算机学科中的位置与意义)、核心思想、典型技巧(如将典型数据结构模块化、接口标准化等)、核心内容(表、堆栈、队列等结构)具有深刻的认识。然后,再有所取舍地安排教学计划。在不同层次的学校,应根据学生的水平不同而对教学知识点有所取舍。教学计划最忌讳大而全地按照教材或考研大纲进行安排,这样很容易造成10个知识点都有所涉猎,但每个知识点学生都只能理解50%。这样还不如只深刻地教授3个核心的知识点,学生可以从这三个核心的知识点理解整个课程的关键与本质,同时可以由自我学习的途径去掌握其它知识点。现在,许多高校的教学形式是针对同一门课程,多个教师对不同班级进行教学,同时,在期末进行统一的期末考试。这种统一的考核形式有利有弊,其利在于可以比较客观地衡量不同教师的教学效果;但其弊在于各个教师倾向于按教学大纲撒大网式地教学,因为教师们害怕统一考试中有自己未讲到的知识点而遭到学生抱怨。久而久之,教师们就会形成不是按教学内容的核心与重点,而是按教学大纲(而非大刀阔斧地有所取舍)死板地安排教学计划,或者按统一期末考试可能的考点进行安排教学。而这样的危害是非常大的。
  1.2 教学形式
  现状强调多媒体形式教学(比如利用powerpoint),但某些内容不适合PPT。例如,某些算法或代码,其思维的产生可能不是从前往后过程化的,比如可能是先写后面一段,再写前面一段;又比如一些情况下需先写while循环内部的循环代码,再添加上面的循环条件判断语句。让学生了解思维的正常产生过程极其重要。因此,如果教师能不依赖PPT,即使在没有PPT的情况下也能依靠一页提纲和一只粉笔讲完整堂课,那么基本可以判断这个教师对该门课理解地很透彻了。当然,PPT的好处在于描述清晰与完整,节省时间。所以如何利用PPT的长处,同时避免依赖PPT是教师值得思考的问题。
  1.3 实验形式
  现有高校的数据结构实验通常是教师发放给学生实验指导书,然后学生按实验指导书进行编程实验,最后撰写实验报告并上交。教师最终根据学生的实验报告给出实验分数。这种实验形式弊端非常大,其一易导致学生互相抄袭,教师不得不浪费大量精力去鉴别是否抄袭;其二易导致学生把大量宝贵时间花在撰写死板的实验报告上,而忽视了实验本身的意义。笔者针对这些弊端,采取了一些相应对策。一是鼓励学生当场提交(实验指导书已提前发给学生),同时当场提交的学生需接受教师的提问。二是禁止学生在课堂上撰写实验报告。同时,若学生当场提交并回答教师提问的话,学生可以将实验报告极简要地撰写。教师可以通过这个方法很好地了解学生的情况并避免实验考核的形式化。
  1.4 考核形式
  上文提到,许多高校针对同一门课程,安排多个教师对不同班级进行教学,同时,在期末进行统一的期末考试。这种课程考核方式有利有弊。当然,笔者注意到,不由各个老师自由安排各自班级的考试,其目的还可能有防止个别教师因进行应付式的教学而轻率删减教学内容的原因。但是,我们认为,为了防止个别教师的应付式教学,利用本专业的教授委员会进行听课与评判,同时结合学生对教师的评价意见,是一个较好的方法。
  对于考核的形式,现在很多高校强调考试的标准化(比如要求题型分布多样,要求有选择题、判断题、简答题、编程题等。同时要求各题型分值分布均匀)。笔者认为,这种所谓的考试题型标准化,其弊远远大于利。不同学科有各自不同的特点。比如数据结构,如果是书面考核,很容易由一道算法设计题知道学生的大致水平。如果是上机考核,诸如算法设计并编程的题就更容易测试出学生的真实水平了。从教学实践上,学习考核对于学生学习什么内容、按什么方式学习、对学科知识理解到多少深度有着非常大的影响。比如,侧重于记忆性概念的考核则会引导学生花大量时间去死背概念,而不会注意思考概念背后的本质。所以笔者在教学过程中,加大平时实验在课程考核中的比重,让当场完成并能回答教师问题的学生得到更高成绩。
  另外,谈一下对教师的考核。从现状看,考核压力对教师的教学积极性影响很小。这是因为:督导和学生评价确实会突出一些教学方式优秀的教师,但并不绝对。因为确实存在因科目差异因素而导致评价与教师素质背离的现象(某些偏理论化和难度较大的科目,评分会普遍偏低;某些“观赏性”较强、较少公式推导的科目则会偏高)。而现有高校的教学考评往往会集中在上课是否缺席迟到、评卷是否分数有误这些易于把握,但和教师深层次的教学素质联系不强的考核标准上。因此,探讨有效的教师考评机制也是一个值得思考的问题。如前文所述,笔者认为让本专业的教授委员会听课并结合学生意见进行评价是一个效果不错的方法。
  1.5 教学关键点
  笔者在数据结构课程的教学过程中,对某些教学关键点有一些体会,在此简单列举。
  1)工具背景与设计思路。表、堆栈、队列、树、图等基本数据结构实际上是人们经过实践,抽象总结出来的常用数据模型工具。这些数据结构的出现背景与应用场景、设计思路与设计关键体现了数据结构课程的思维核心。
  2)工具接口的标准化。这些工具,抽象成某个数据结构类型的描述后,其接口(或者称ADT描述)应该是标准的。这就意味着接口描述(对应程序中的接口函数申明)不应随内部实现的形式不同而出现差异。这不仅是ADT描述标准化的要求,也是程序模块标准化的需求。但笔者注意到,在某些数据结构教材中,针对同一种数据结构,比如堆栈,顺序实现的堆栈和链式实现的堆栈却有着不同的函数申明。更具体地,用C语言描述,若顺序堆栈的pop接口申明是ErrorCode pop(Stack &S, ElementType &e),而链式堆栈的pop接口申明是ErrorCode pop(Stack *S, ElementType &e),那么这是明显不合适的。
  3)解决问题的基本流程。在教学过程中,应该让学生了解解决一个问题的完整流程是怎么样的。教师可以遵循“问题―问题的数学描述―算法描述―关键指标具体化―程序”的流程给学生讲解。关键是要让学生了解整个解决问题的思维过程。
  【参考文献】
  [1]严蔚敏,李冬梅,吴伟民.数据结构(C语言版)[M].人民邮电出版社,2011.
  [2]李春葆.数据结构教程[M].清华大学出版社,2009.
  [3]刘大有.数据结构[M].高等教育出版社,2010.
  [4]唐发根.数据结构教程[M].北京航空航天大学出版社,2005.
  [5]朱战立.数据结构(C++语言描述)[M].西安电子科技大学出版社,2004.
  [6]Data Structures Robert L. Kruse and Alexander J. Ryba. 数据结构与程序设计:C++语言描述(影印版)[M].高等教育出版社,2001.
  [责任编辑:汤静
转载注明来源:https://www.xzbu.com/8/view-11583213.htm