首页 -> 2008年第2期

数据结构课程与学生逻辑思维能力的培养

作者:余丽娟




  摘要:数据结构课是计算机相关专业重要的专业基础课,要求学生具有较强的逻辑思维能力。在教学中,教师应采取多种教学方式,激发学生的学习兴趣,增强他们的自信心,调动他们的主动性,培养他们的逻辑思维能力。
  关键词:数据结构;逻辑思维能力;高职学生;C语言
  
  数据结构课是高职计算机应用技术及相关专业的一门重要的专业基础课。通过系统学习该课程,学生能够掌握不同数据结构的不同算法及其设计思想,体会并掌握结构选择和算法设计的思维方式及技巧,提高分析问题和解决问题的能力。该课程的特点是知识点多,概念之间联系紧密,算法抽象难懂,要求学生具有较强的逻辑思维能力。然而,高职学生的学习基础普遍较差,逻辑推理能力不强,在学习过程中经常感到困难,甚至产生厌学情绪。为了改善这种教学状况,使学生真正掌握这门课程,提高专业素质,笔者认为,在教学过程中,应着重培养学生的逻辑思维能力。
  
  使用设问答疑法讲解
  
  第一章概论,引导学生钻研教材
  培养学生的逻辑思维能力首先应从钻研教材开始。教材是教师教学、学生学习的主要依据。笔者所在学校数据结构课采用的教材是由全国高等教育自学考试指导委员会编纂、经济科学出版社出版的《数据结构导论》。该教材的特点是语言简练,概念、算法较多,理论性偏强。初学者在接触该教材时,经常不知从何学起,抓不住重点。容易产生畏难情绪厌学心理。为此,在讲授数据结构课的初期,不仅要引导学生明确学习目的,还要教给他们读懂教材和钻研教材的方法,深入讲解教材第一章的内容,采取恰当的教学方法帮助学生理解知识点。
  第一章概论包括五节内容,介绍了贯穿全书的基本概念、基本思想和基本原理。为了更好地让学生理解该章内容,在具体讲授每节内容之前,可预先围绕这部分内容设计问题,然后通过解答这些问题引导学生听课并进行思考。例如,可以在教材1.1节的引言部分举例说明数据表示与数据处理的过程,引出数据结构的主要内容。具体做法为:在讲课之前,先列出如下问题:(1)程序设计的实质是什么?(2)程序设计是如何进行的?(3)为什么学习数据结构?(4)它的主要内容是什么?然后根据课本内容逐一进行讲解。在设计问题时,需要注意两点:第一,问题要符合学生心理,即站在学生角度设计问题;第二,针对教材中重点、难点知识设计的问题,应具有层次性,一环扣一环,引导学生进行逻辑思考。下表列出了针对第一章各小节内容设计的部分问题。
  
  第一章各节内容及主要问题设计表
  
  通过提问与解答,尤其是引导学生一起讨论“为什么学习”和“怎样学习”,使学生明确了学习目的,掌握了思维方法,为后续内容的学习打下了坚实基础。
  
  运用实例和游戏,激发学生逻辑思维的兴趣
  
  兴趣,又叫求知欲,是学习动力中最现实、最活跃的成分。学生经常对所学知识感到难度过大、枯燥乏味且对自己用处不大,因而丧失对所学内容进行探索的欲望与兴趣。这就要求教师具有丰富的教学经验,准确把握学生的心态,力争将抽象概念转化为生活中常见的、切合学生实际的例子甚至有趣的游戏,激发学生逻辑思维的积极性。
  例如,讲到单链表时,可以请几位学生站起来,左手不动,右手指向下一位同学;讲授双链表时,可以要求学生举起两支手臂,分别指向两位同学;讲授栈先进后出的特点时,可以安排学生靠墙站立,将靠墙的一端做为栈底,邻近通道的一端做为栈顶,学生只能从通道的一端进出;讲授队列具有先进先出的特性时,可以联系学生在食堂排队买饭的情景;讲授拓扑结构时,可以请学生充当教务主任,安排即将学习的课程的顺序等。总之,将理论性较强的知识,融入丰富多彩的实例和游戏当中,让学生在活动中体会到思考的快乐,在兴致勃勃中得到训练。
  
  补充基础知识,增强学生的自信心
  
  教育心理学研究表明,新的认知结构必须以原有的认知结构为基础。学习新知识的过程,就是学习者积极主动地从自己的认知结构中提取与新知识最有联系的旧知识,并加以固定的动态过程。如果学生旧知识基础较差,甚至旧知识与新知识之间缺乏必要的联系,那么,学习者在学习新知识的过程中,势必会遇到难以逾越的障碍。比如数据结构课的前导课程为“高级语言程序设计”和“汇编语言程序设计”,相关教材中均采用C语言对其所有算法进行描述;数据结构的存储实现涉及计算机组成原理;数组的概念与运算实现又与线性代数相关等,学生必须掌握相关课程的知识,才能较好地理解数据结构理论。但是,由于高职学生学习基础较差,课程安排不合理等原因,给学生的理解和思考造成了困难。例如若将数据结构课的教学安排在“C语言程序设计”课之前进行,学生就会由于缺乏C语言知识,难以理解使用C语言描述的算法,无法体会到算法设计的思维方式及技巧,也就无法提高逻辑思维能力。在这种情况下,教师必须在追求教学进度的同时,考虑到学生的接受能力,适当放慢速度,在讲授新课前,首先讲解学习中将要涉及的其他课程的知识,弥补学生的知识缺陷。例如在讲授顺序表的类型定义时,有如下表述:
   const maxsize=顺序表的容量;
   typedef struct
   {datatype data[maxsize];
   int last;
   }sqlist;
   sqlist L;
  这段看似简单的C语言却让学习基础较差的学生十分困惑,无法理解代码的含义。对此,教师应首先讲解C语言中关键词const的意义和结构体类型变量struct的定义方法,说明数组的概念及使用方法。只有理顺这些知识点后,学生才能理解顺序表是由一个一维数组data组成,常数maxsize为顺序表的容量,才能理解last表示线性表当前的长度。只有储备了这些知识后,学生才能在未来学习栈、数组、二叉树等数据结构的顺序存储方式时,根据定义自行推理,不断加深理解,并从中增强自信心。
  
  营造条件和机会,调动学生思维的主动性
  
  数据结构课涉及的概念及算法较多,教师经常采用“满堂灌”、“一言堂”的教学方法,然而,效果却并不理想。由于学生没有真正参与到教学活动中,整个思维过程都由教师包办代替,结果往往是教师讲得辛苦,学生听得苦闷,达不到预期的教学效果。
  “教是为了不教”,叶圣陶先生这句话深刻体现出教的最终目的是发挥学生的主动性。现代教育理论认为,学习者在教学活动中占据着主体位置。我国教育界也已改变了对学习者、受教育者、被教育者和教学对象的认识,接受了“教师为主导,学生为主体”的教育思想。但这并不是否定教师的作用,在专业课教学过程中,教师的作用不可替代。教师不仅要向学生传授知识,还应精心设计,积极创造条件、提供机会,让学生共同参与教学活动。例如,介绍二叉树的定义时,教师可以先布置预习任务,然后请一位学生复述概念,并让其阐述自己对该定义的理解,再请其他学生判断“二叉树是特殊的树”这一论断是否成立。在这种情况下,学生便会积极联系上一节内容中学习到的“树”的概念。通过对两个定义的比较,最终得出“二叉树与树是不同的树形结构”的清晰认识。又如,在讲解某个具体算法时,教师可以先介绍算法要达到的目的和语法结构,再由学生根据要求书写板书,并用简单的语句进行讲解,教师负责指导。通过这种师生互动,既可以检验学生对语言的掌握程度,又调动了学生思维的主动性,使其参与到整个教学过程中,就会加深对知识的理解。
  
  参考文献:
  [1]陈小平.数据结构导论[M].北京:经济科学出版社,2000.
  作者简介:
  余丽娟(1969—),广东省江门市高级技工学校讲师,研究方向为计算机专业课教学。