《数据结构》课程案例教学设计分析

时间:2022-03-11 11:31:52

《数据结构》课程案例教学设计分析

摘要:《数据结构》课程的教学面临知识点多且抽象枯燥等问题,案例式教学对于激发学生学习兴趣有积极的作用。然而,传统课堂授课教学模式下的案例教学一般作为导入理论课程教学的手段,很难将案例教学贯穿于整堂课程中,而现代化教育手段MOOC的兴起为线下实施案例教学创造了条件。对MOOC背景下《数据结构》课程的案例教学进行教学设计,给出案例集及相应的教学实施方法。该设计将作为教学改革手段,在后续的课程教学中实施。

关键词:数据结构;案例教学;MOOC

《数据结构》是计算机专业中的一门核心的专业基础课,研究非数值计算中计算机的操作对象以及它们之间关系和操作的学科[1]。在计算机专业课程设置中,该课程起着承上启下的作用,其教学效果直接影响到编译程序、操作系统、数据库系统等后续课程。然而在实际授课过程中,由于课程知识点多、内容抽象,学生普遍感觉枯燥,久而久之就失去了学习兴趣。为了克服此问题,许多教育工作者在该课程的授课过程中引入案例化教学方法[2-7],目的是借助于形象生动的实际案例,激发学生学习和解决此问题的兴趣,进而提高教学的学习效果。但是,传统的以课堂教学为主的授课方式将课堂上有限的时间主要用于基本知识点和概念理论的讲述,因此在应用案例教学的过程中普遍存在的问题是只能应用少量简单的案例,作为导入理论课程教学的手段,而很难真正将案例教学贯穿于整堂课程中。近年来MOOC(MassiveOpenOnlineCourse,大规模开放式在线课程)等现代化教育手段的兴起,使得传统的授课方式的改革成为可能。通过MOOC,学生可以在课下通过自主学习的方式学习基本知识点,而传统的课堂时间则可以用来实施更合理的教学方式。因此,MOOC背景下的线下授课为实施案例教学创造了条件。

案例是一种先进的教学方法,非常适合于理论与实践结合紧密的课程。《数据结构》课程采取案例教学可以带来如下好处:(1)让学生理解理论提出的背景。传统的授课方式多采取填鸭式教学,学生不知道所学知识的背景。通过案例教学,可以使学生了解知识为何而来。(2)让学生理解如何将理论知识应用于现实问题的解决。空洞的理论授课,只能使学生学会一堆概念,而不知道这些知识如何应用。在以后的工作中碰到问题,也不知道采取何种方式解决。(3)培养学生对问题进行抽象分析和实践的能力。案例化的教学首先需要对现实问题进行抽象分析,然后采取合理的方式对其实现。学生在这样的教学环境中进行熏陶和训练,其抽象能力和实践能力势必得到提高。但是案例教学要取得好的效果,案例的设计非常关键。案例需要被仔细设计,使其即满足学生的学习需求,又不至于让学生产生畏难情绪;同时还能在一节课或两节课的时间教学完成,符合教学的时间要求。在参考了大量教材、论文的基础上,并结合长期教学过程中总结的学生的学习需求和接受能力,设计了一套案例集,用于本校《数据结构》课程的后续教学改革。此案例集包含基本案例和综合案例。每章配备至少一个案例,通过该案例,引出该章知识点的背景、数据结构的设计、相关算法的设计,从而使得学生通过该实例理解该结构或算法的应用背景、知识的应用场景。除此之外,课程还配备了一些综合实例,这些实例能体现知识点的融合,从而能够使学生体会知识的综合运用、提高抽象思维能力。

1课程的知识体系

《数据结构》课程的知识体系一般分为两大模块:数据结构模块和查找排序模块。数据结构模块介绍每种类型的数据结构的定义、存储和基本操作的实现。查找和排序模块则讨论各种常用的查找和排序算法。如表1所示,《数据结构》课程知识点的组织一般分为七章,前五章讨论基本的数据结构,后两章讨论查找和排序。第一章线性表介绍顺序表、链表及其查找、插入和删除等操作的实现,第二章栈和队列介绍栈和队列的顺序存储和链式存储、插入和删除等操作的实现以及栈和队列的应用,第三章串数组和广义表介绍串的定义、存储、模式匹配算法、数组的存储和广义表的概念,第四章树和二叉树介绍树和二叉树的定义和存储、二叉树的性质、二叉树的遍历和线索化、树的遍历、赫夫曼树和赫夫曼编码等,第五章图介绍图的邻接矩阵和邻接表存储、图的遍历、最小生成树、拓扑排序、关键路径、最短路径等算法,第六章查找介绍顺序查找、折半查找、二叉排序树的定义、查找、插入和删除、哈希表的构造和查找等,第七章介绍直接插入排序、shell排序、起泡排序、快速排序、简单选择排序、堆排序和基数排序等。

2基本案例及教学实施方案

2.1基本案例。表2列出了基本案例集,其中每一行对应了数据课程的一章,第1列是该案例对应的基本知识点,第2列对应了在基本知识点上的引申,引申的知识点用于引出案例且可以用在案例的讲解上,第3列是基本案例,第4列是引申案例。2.2基本案例的教学实施。每章配置至少一个基本案例,其教学采取如下步骤实施:(1)对基本知识点进行讲解教师通过回顾本章知识,对该案例涉及到的基本知识点进行讲授,基本知识点主要涉及到数据结构的描述和基本操作的实现。(2)引申知识点的实现-引导式方法在基本知识点的实现基础上,对基本操作进行扩展,实现引申的知识点。该步骤采取引导式方法授课,即与学生互动,引导学生实现引申知识点。(3)案例的导入和实现-引导+框架+学生分组讨论基于引申知识点的实现,引入案例,说明案例的要求。引导学生对案例的数据结构和操作进行抽象设计,得到一个实现框架,最后让学生讨论来实现框架。(4)案例的讲解-有的放矢教学随机抽取学生分组,检查他们的设计及实现中存在的普遍问题进行分析。(5)案例的引申及类比案例的引出-教师引导+学生业余实现(开放式)对基本案例的实现进行总结,并类比引出引申案例,引导学生思考其如何实现,并在课下时间实现。以第一章的基本案例“有序表的合并”为例,该案例涉及的基本知识点包括表的顺序存储和链式存储、表的查找、插入和删除等基本操作。引申的知识点是有序表的插入,该知识点可以通过组合表查找和表插入两个操作来实现,同时该算法实现又可以用到基本案例的实现中。然后是基本案例的实现,因为有序表的合并可以在有序表插入的基础上实现,因此可以引导学生建立有序表并对有序表的插入进行改造来实现。最后,与此案例相类似的案例有约瑟夫环、多项式运算等,可以让学生思考如何采用类似的分析和设计方法对这些案例进行实现。

3综合案例

基本案例涉及的知识点相对单一,因此需要设置一定的综合案例,使学生理解知识的综合运用。综合案例的选择首先需要体现知识点之间的融合,即需要涉及到多个相互关联的知识点。其次需要控制其规模和难度,规模不易过大,难度要适中,这样才能使学生既有对其进行实现的信心,又能体会到学以致用的效果。综合案例的讲授方法采取“教师引导+学生分组讨论+确定实现框架+课下实现”的方法,即通过教师引导确定该案例涉及的知识点,然后由学生分组讨论可能的实现方案,继而总结这些实现方案确定可行的实现框架,最后留下具体的实现給真正感兴趣的学生课下实现。受限于固定的授课学时,综合性案例不易过多。选取了四个综合案例,如表3所示。表达式求值及形式转换,涉及到栈、二叉树的创建、遍历、字符串截取及转数值等知识点。通过该实例,不仅可以使学生体会到不同数据结构之间的相通性,也为后续编译原理课程的学习打下一定基础。哈夫曼编码译码涉及到正则二叉树的存储(静态链表)、生成及遍历等知识点,使学生可以体会到静态链表的用途、基于哈夫曼的加密解密实现等。基于索引的学生成绩管理系统涉及到数据元素及索引的外部存储和内部存储、基于索引的数据元素的插入删除(包括索引的插入删除和数据元素的插入删除),索引可以是顺序索引,也可以是树索引。通过该实例,不仅可以使学生体会到数据的外部存储和内部存储之间的关系,而相关的索引知识还可以为后续数据库原理课程的学习打下一定基础。

4结语

本文针对MOOC背景下案例法教学实施的问题,设计了一套案例集。该案例集包含基本案例和综合案例,基本案例用于每章的教学,综合案例用于综合性训练。该案例集中的不少案例已在笔者多年的教学实践中进行了实施。在后续基于MOOC的课程教学改革中,该案例集及教学方法将被实施到本校的《数据结构》课程教学中。

作者:杨春花 单位:齐鲁工业大学