借鉴CDIO理念的数据结构多层次教学案例构建

2020-05-25 02:37谢锦林静周志钊
高教学刊 2020年16期
关键词:多层次数据结构教学案例

谢锦 林静 周志钊

摘  要:借鉴CDIO的工程教育理念,在理论联系应用的视角下,阐述了涵盖基础性、综合性、拓展性的数据结构多层次教学案例构建。探索多层次案例教学相适应的教学路径,着重于学生基本理论技术掌握、专业融通、问题建模、团队协作与表达、知识应用创新能力培养。

关键词:CDIO;数据结构;多层次;教学案例;应用

中图分类号:G640       文献标志码:A         文章编号:2096-000X(2020)16-0070-04

Abstract: Guided by CDIO engineering education concept and under the view of combining theory with application, this paper elaborates data structure multi-level teaching case construction with basic cases, comprehensive cases and extended cases. The corresponding teaching paths are also explored focusing on the ability cultivation, such as mastering basic theory and technology, professional integration, problem modeling, collaboration and expression, knowledge application and innovation.

Keywords: CDIO; data structure; multi-level; teaching case; application

一、概述

数据结构是本科信息类专业的核心基础课程,理论性和实践性都很强。传统的教学主要是教师讲授线性表、树、图等理论知识和算法,限于学生能理解理论知识并编程实现基本算法的教学形式。由于数据结构的高度抽象性,普遍存在学生理论知识理解困难、无自主学习动力、没有专业知识体系构建意识、理论无法联系实际应用、缺乏知识创新能力等问题。此外,有些学生学习前修的程序设计语言时基本功不够扎实、编程能力弱,会直接导致学习数据结构时上课听不懂、课外无法编程实现算法的困境。

针对数据结构课程的特点以及教学与学习中存在的问题,借鉴CDIO工程教育模式的理念,采取理论联系应用的多层次案例教学将有助于提高教学效果,培养学生专业技能和综合实践能力。

二、CDIO介绍

CDIO工程教育模式是近年来国际工程教育改革的最新成果,CDIO代表构思(Conceive)、设计(Design)、实施(Implement)、运行(Operate),主要理念是以产品或系统的构思-设计-实施-运行作为工程教育的环境,并提出能力大纲,通过构建一体化的教学计划,学生以主动的、实践的、课程之间联系的方式学习,通过全过程为载体达到培养学生工程能力的目的[1]。汕头大学自2005年发起了中国的CDIO工程教育模式改革,提出并实施以设计为导向的EIP-CDIO培养模式[2]。云南大学软件学院实施以CDIO能力培养大纲为目标的三级课程体系结构[3]。贵州大学陈静等将CDIO教育模式引入数据结构的教学,进行课堂教学改革、程序设计改革和数据结构实验改革[4]。华中师范大学叶俊民等提出基于CDIO的面向对象软件工程实践教学模式,解决软件工程实践教学中动手能力不强、团队协作意识差的问题[5]。

不仅综合实训、实习、毕业设计等大型综合性实践平台可以构建CDIO的C-D-I-O全过程工程教育环境,具体到专业课程,也可以践行CDIO相关理念,探索如何在课程教学中和学生当前知识面条件下构建并实践理论联系应用的教学案例,实现知识、能力、素质“三位一体”的培养模式。

三、理论联系应用视角下的多层次教学案例构建

本文借鉴CDIO理念,从理论联系应用的视角,阐述核心知识点有机灵活应用、面向专业知识体系跨课程综合应用、场景建模应用的数据结构多层次教学案例构建,进行数据结构教学案例一体化的设计与实施。参考现代工程教育认证要求和CDIO能力大纲要求,结合课程特点,数据结构多层次教学案例构建将着重于基本理论技术掌握、专业融通、问题建模、态度与习惯、团队协作与表达、知识应用创新等能力培养。教师需要精心设计教学案例,并根据不同问题层次,设计与之相适应的教学路径。

(一)核心知识点有机推进的基础性案例

遵循由浅至深、由点及面的学习规律,提炼核心知识点,梳理知识点之间的关联,构建数据结构理论知识基础性案例。需重视核心知识点有机推进的基础性教学案例构建,主要基于两个考量:一方面,部分同学编程能力弱,只有通过前面阶段基础性的自线性表到堆栈和队列的扎扎实实实践,才能解决编程困难问题;另一方面,线性表是最常见的数据结构,栈和队列是特殊的线性表,栈和队列应用广泛,树、图常需要借助栈和队列来实现某些操作,通过由简单到复杂的逐步推进,实现数据结构理論知识有机综合运用。

教学案例的设计遵循从简单到复杂、从一般到特殊、逐步增加难度、逐步扩展应用,具体到数据结构课程的基本知识点组织,即从线性表→堆栈和队列→树和图。线性表是处理线性结构的数据结构,分为顺序表和链表。而堆栈是一种特殊的线性表,具有先进后出的特性,堆栈的实现方式可分为基于一维数组的顺序栈和基于链表操作的链接栈。例如学生完成线性表、栈、队列单个实验后,再实现二叉树前序遍历非递归算法。前序遍历中第一个被访问的结点是根结点,然后访问左子树,最后访问右子树,该非递归方法需要借助一个堆栈来存放将要访问的树的树根。在熟练掌握线性表实现的基础上,自然就容易实现堆栈,最终就可顺利解决借助堆栈的二叉树前序遍历非递归问题。

对于此类知识点之间密切联系的基础性教学案例,以阶梯状进阶为主线,其设计目的是使学生熟练掌握基础理论知识和技术,并能有机综合运用理论知识。借鉴CDIO理念,采取的教学路径如下:

1. 构思:梳理知识点联系,制定解决方案;

2. 设计:系统設计、绘制关键算法的流程图;

3. 实施:模块编程;

4. 运行:系统调试运行输出结果。

通过基础性教学案例,逐步深入、逐步扩展的形式开展实验训练,着重基本理论技术的掌握、表达能力的培养、态度与习惯的养成。核心知识点有机推进的教学案例能有效地串联知识点,实现做中学,对前修课程没学扎实的学生,还可做中补,补习并进一步掌握编程语言中指针操作、结构体、递归思想等重点难点内容。对关键复杂算法绘制流程图,做到清楚地描述问题。养成良好编程习惯,如代码缩进、添加注释、标识符命名清晰明了、代码可读性高等。

(二)面向专业知识体系构建的综合性案例

数据结构是学科基础课程,教师需要深入调研并教研组讨论,提炼出数据结构应用于其他课程的跨课程案例,有利于学生自低年级逐步构建专业知识体系、提高学习兴趣、明确学习目的。数据结构广泛应用于操作系统、计算机网络、数据库等课程,例如进程管理是计算机操作系统的核心功能,常用链接方式将进程控制块组织在一起,形成就绪队列、阻塞队列等。下面将以操作系统中文件目录的树状结构组织以及基本操作为例,说明面向专业知识体系构建的综合性教学案例构建和教学路径。

目录结构组织要求具有方便查询、允许文件重名、利于文件保护的特点。树形结构是一类非常重要的非线性结构,利用树可以很好地描述客观世界中对象广泛具有的层次特性或分支结构。文件系统的多级目录是树状结构在计算机操作系统中的典型应用。树状目录基本操作教学案例要求实现树状目录创建、目录统计、目录结构显示等功能,需要学生设计树的存储结构,并综合运用树的各种遍历算法。

和前面基础性教学案例类似但又有不同点,面向专业知识体系构建的综合性教学案例采取以CDIO为主体、增设提出问题和总结环节的教学路径:“提出问题-构思-设计-实施-运行-总结”。数据结构课程一般于第2学期或第3学期开设,可能相关课程还没开始学习,因此需要教师开始阶段简单明了地提出并阐述问题,减少缺乏相关课程背景知识可能造成的困难。综合性案例工作量比较大,需要分工合作完成,在实施环节采取小组分工协作实现各模块编程,运行环节进行系统联合调试运行并输出结果,作品可以PPT讲解、动画演示、代码运行等多种形式展示。案例完成后,组织交流点评,反馈合理建议,便于案例迭代优化。

构思是整个案例实践过程中的关键环节,相比较于基础性案例,综合性案例比较复杂,故采用教师引导和学生独立思考相结合的方式。首先,以教师引导为主,教师以图形化的方式描述问题总体结构。鱼骨图是一种有效的问题描述和分析的图形化工具,基于整理问题型和对策型鱼骨图的融合,聚焦做什么(what)和怎么做(how),树状目录基本操作教学案例的鱼骨图如图1所示,该图清楚地表示了树状目录结构基本操作涉及的主要子问题以及相应解决方法。教师引导列出鱼骨图骨架上的主要子问题,如目录树状结构定义、目录创建、目录查询等,并组织头脑风暴式的讨论。然后,以小组协作独立思考为主、教师答疑为辅,学生提出子问题的解决方案,完成鱼骨图的整体绘制。

学生需要充分掌握树的特性、树的遍历及应用,才能系统性地分析、权衡比较,为目录树状结构定义、目录创建、目录结构显示等不同子问题提出合适的解决方案。树状目录中主目录是树的根节点、子目录是树的分支节点、文件是树的叶子节点。目录树状结构定义是首要问题,考虑到目录查询中找到某结点后,需要输出路径,因此在一般性树的孩子兄弟链表法的基础上增加父亲结点,故目录树状存储结构采用父亲孩子兄弟链表示法。采用面向对象编程技术定义树类,包含构造函数、析构函数、建立树链表结构函数、结点查询函数、缩进显示函数等。树有前序、中序、后序、层次遍历四种遍历方法,树的遍历是数据结构课程的难点和重点,针对某种应用场合,需选择合适的遍历方法。目录创建采用树的层次遍历方法。目录统计指统计某目录下的子目录和文件的个数,也就是统计树的结点数目,采用树的遍历递归算法,遍历的次序不影响统计结果,因此可选用树的前序、中序、后序递归遍历方法之一。目录的缩进显示时,要求缩进字符数目随目录层级增加而增加,采用树的前序遍历方法。

面向专业知识体系构建的综合性教学案例实施,大约历时2周~4周开展CDIO的构思、设计、实施、运行研发全过程,达到掌握数据结构重要理论知识、了解数据结构在其他课程的应用和培养学生专业融通能力、团队协作与表达能力的目的。

(三)应用场景抽象建模的拓展性案例

数据结构理论是很多常见应用系统的基础。图由顶点集和连接各顶点的边集组成,广泛应用于交通网络、社交网络和知识图谱的构建。教师搜集掌握前沿科研和实际生活中成功运用数据结构知识解决具体问题的实例和方法,创设真实有效的情境,构建应用场景抽象建模的拓展性教学案例,着重于问题建模、团队协作与表达、知识应用创新能力的培养。

例如建立一个简单的交通咨询系统,回答出行旅客提出的从任一个城市到另一个城市之间的最优路径问题,如中转次数最少路径、里程最短路径。此类取自生活应用的拓展性案例教学,可采取与前面综合性教学案例相似的教学路径,增加了抽象建模和学术拓展方面的考量,如图2所示。案例来自生活,需要在构思环节增加抽象建模的工作,即从实际生活场景问题导引出基本概念、映射具体现象为专业问题,从而建立形式化的描述。交通咨询系统设计思路是:建立基于邻接矩阵存储的全国城市交通图,用户输入城市起点和终点,以及决策选项(如中转次数最少、里程最短)后,系统通过最短路径算法计算城市起点到城市终点间的最优路径并输出结果。针对最短路径的实现问题,有多种算法,可利用图的广度优先遍历实现中转次数最少路径查询,或利用Dijkstra算法、Floyd算法实现里程最短路径查询。学生完成该案例后,还可进一步拓展,加入启发函数的A*算法,了解常见地图导航工具的路径规划算法。通过交通咨询系统案例实施,掌握图的存储、遍历以及应用、图的最短路径算法及应用。将拓展性案例进一步延伸扩展,可以形成创新竞赛课题。

应用场景抽象建模的拓展性教学案例具有贴近生活、涉及面广、问题解决方法具有多样性等特点,需要做中思,达到了培养学生抽象建模、分析问题、解决问题以及工程实践能力,同时开拓学术视野、激发主动学习热情和创新精神。

四、结束语

理论联系应用视角下,构建理论与应用相结合的涵盖基础性、综合性、拓展性的数据结构多层次教学案例,可有效地提高教学效果和教学质量。借鉴CDIO一体化实践理念,设计合适的教学路径,帮助学生融会贯通所学理论知识、主动构建专业知识体系、拓展视野和养成良好编程习惯,培养学生创新意识、综合运用理论知识分析和解决实际问题的能力。

参考文献:

[1]顾佩华,包能胜,康全礼,等.CDIO在中国(上)[J].高等工程教育研究,2012(3):24-40.

[2]顾佩华,胡文龙,陆小华,等.从CDIO在中国到中国的

CDIO:发展路径、产生的影响及其原因研究[J].高等工程教育研究,2017(1):24-43.

[3]李彤,张璇,王旭,等.SE-CDIO工程教育模式的探索与实践[J].高等工程教育研究,2014(1):52-57.

[4]陈静,张达敏,刘国敏.基于CDIO数据结构课程教学思考与改革[J].高教学刊,2016,25(1):109-111,113.

[5]叶俊民,王敬华,李蓉,等.基于CDIO的面向对象软件工程实践教学模式研究[J].计算机教育,2017(8):109-112.

基金项目:上海立信会计金融学院一流本科建设引领计划项目“校级实验实训课程——数据库与数据结构综合实践”(编号:B1-12-7101-18-003Z)

作者简介:谢锦(1974-),女,汉族,湖南洞口人,博士,副教授,研究方向:人工智能和图像处理。

猜你喜欢
多层次数据结构教学案例
数据结构线上线下混合教学模式探讨
重典型应用,明结构关系
构建多层次外语实验教学体系的探索与实践
小学数学课堂导入技巧及案例分析
反转课堂模式与数学教学案例
促进初中化学定量观建构的教学案例
多层次案例教学法在独立学院统计学教学中的实践
小学数学“反思型” 教学的探索与实践
新能源材料与器件专业多层次实验教学模式的探索
数据结构与算法课程设计教学模式的探讨