基于程序设计课程群的数据结构教学编排与实践

    廖彬 蔡贤资

    

    摘? 要 从数据结构在程序设计课程群中的作用与教学现状出发,针对现阶段的本科建设任务与学生特点,对数据结构的理论教学内容、实验教学内容进行合理编排,探索分步教学与项目教学相结合的课程教学改革与实践方案。通过教学改革促使学生学以致用,从而提高学生的程序设计和计算思维能力,达到培养创新人才的目的。

    关键词 数据结构;理论教学;程序设计课程群;分步教学;项目教学;实验教学;教学改革

    中图分类号:G642? ? 文献标识码:B

    文章编号:1671-489X(2020)05-0073-03

    1 引言

    随着社会的不断发展,信息技术渗透进社会的各行各业,社会对信息处理类专业人才的需求日益增加。我国社会现阶段对信息处理类专业人才的需求以应用型人才为主,应用型人才的核心能力体现为工程实践能力[1]。编程能力、计算思维、算法能力、创新能力是培养信息处理类学生基本程序设计能力的基础和核心[2]。

    在现阶段的信息处理类专业本科教学中,程序设计课程群主要包括高级程序设计、离散数学、数据结构、算法五门课程,突出对编程能力、计算思维和基本算法实现能力的培养。其中,数据结构研究计算机存储、组织数据的方式,授课内容主要包括逻辑结构、存储结构、算法设计与分析基础等相关理论,通过培养学生的模型抽象能力,为学生研究和创新能力的形成奠定基础,在程序设计课程群体系中具有承上启下的作用。虽然数据结构在程序设计课程群教学体系中占有举足轻重的地位,但是由于其抽象性、复杂性与灵活性的特点,易使学生在学习过程中受挫,无法学以致用,进而影响学习兴趣,极大地影响了数据结构知识的学习。

    在华南农业大学信息与计算科学专业中,根据数据结构在程序设计课程群中的作用与教学现状,进行理论教学与实验教学编排,主要从教学内容和实验设置方面,探索适用于当前相关专业学生的数据结构课程教学改革与实践。

    2 数据结构课程教学中存在的问题

    现阶段,数据结构教学一般由理论教学与实验教学组合而成,通过实验教学对理论课所授知识进行加强,进而培养学生分析问题、解决问题的能力。然而,在数据结构教学中,理论课与实验课的内容与编排需要有机结合,才能达到互相促进的目的。

    前期课程的准备? 数据结构的前期课程主要由高级程序设计、离散数学组成。在现阶段的数学与信息学院信息与计算科学专业中,前期课程讲授的程序设计与算法语言采用C语言实现,由此对应的数据结构教材也使用C语言描述。然而在主流教材中为了便于简洁明了地解释概念,在诸如链表、树、图等算法解释中使用了类C语言如混合C++的语法进行描述,这在一定程度上增加了学生理解概念的难度。

    前期的程序设计与算法语言教学中,指针、结构体处于教学进程的后半段,所占比重较低,大多数学生未能熟练掌握。然而在数据结构教学中,大量使用指针与结构体,如线性表的链式表示与实现、栈、队列、树和图都借助引用传递进行实现,结点一般采用结构体类型表示。相应的算法实现,需要熟练理解与掌握指针和结构体的概念及其应用才能完成。能力與知识的脱节造成部分学生难以理解数据结构知识,进而影响后续内容的学习。

    数据结构教学内容与学生的学习兴趣? 数据结构作为专业核心课程,通常在大学本科二、三年级开设,具有较稳定、统一的教学大纲。但这在一定程度上也易形成教学内容较少更新,与实际应用联系不紧密的情况。随着社会的发展,科技资讯与信息的获取更为便捷,近年来本科学生的创新思维更趋活跃。学生在学习程序设计课程群中相关知识时,对所学知识与工程应用联系的关注日益增强。若在教学中仅采用课本所示的传统案例,难以引发学生的学习兴趣,也不利于实现培养创新人才的目标。在2015年发布的《国务院关于印发统筹推进世界一流大学和一流学科建设总体方案的通知》中,指出应该着力培养富有创新精神和实践能力的各类创新型、应用型、复合型优秀人才。由此,应在传统教学内容中适度引入部分工程应用实例,在提高学生学习兴趣的同时,促进创新人才培养目标的实现。

    后续课程的衔接? 在程序设计课程群中,算法分析与设计为数据结构的后继课程。算法分析与设计课程一般主要讲授递归法、分治法、动态规划算法、贪心算法、回溯法、分支限界法。通过算法分析与设计课程的学习,使学生深化理解数据结构与算法的结合,让学生理解并掌握算法分析和设计的基本技术。通过数据结构和算法的理论与实践相结合,培养学生解决实际问题的能力。

    在以往的教学中,数据结构注重讲授抽象的数据关系,其中教学后期虽然涉及一些算法,但较抽象且给予学时较少,讲述不够透彻,学生很难真正理解。算法分析与设计课程主要注重培养学生分析算法复杂度与设计算法的能力[3],然而由于前期数据结构中的实践掌握不牢,使得算法实践无从下手,影响了算法课程知识的掌握。数据结构和算法分析与设计这两门课程都以培养学生解决实际问题的程序设计能力为共同目标。在传统教学编排[4]中,此两门课程由于相对独立、分开授课,常导致内容脱节或重复,难以达到较好的教学效果。因此,需要考虑在数据结构教学中适当引入算法相关内容,逐步构建数据结构与算法的知识体系,实现程序设计课程群中知识的统一与衔接。

    3 理论教学与实验教学的改革方法与目标

    在数学与信息学院信息与计算科学专业中,“程序设计与算法语言C语言程序设计”在本科第二学期开设,数据结构在第三学期开设,第六学期开设算法分析与设计。在数据结构开课初期,需要针对性地强化程序设计能力,为数据结构知识的掌握打下良好基础。并通过数据结构的学习与实践,使学生在编程中理解理论,促进良好的算法设计和实现能力的形成。在教学中通过重新设计与编排数据结构教学内容,力图通过引入计算机求解问题之间的关系,降低学生学习数据结构课程的困难,从而使学生更好地理解数据、算法和程序之间的联系。为此,将数据结构的理论教学与实验教学内容进行合理编排,各章节关系与实验教学具体内容如图1所示。

    理论课教学内容设计? 如图1所示,数据结构课程的主要特点为知识点多,理论性强,内容比较抽象枯燥。在理论教学中,通过基本概念、结构、示例算法的讲授,使学生熟悉并掌握不同数据结构的特性,从而在分析解决具体问题时能为所要处理的数据选择合适的逻辑结构、存储结构。如图1所示,在理论课教学中使各章节内容相对独立,除第一章从总体上对数据结构所研究问题进行介绍外,后续各章节分别以线性表、栈、队列、树和二叉树、图为专题进行讲授,使学生在理解某一具体章节所述概念、算法时,不受数据结构其他章节的影响,由此降低学生学习数据结构理论知识的难度。

    作为数据结构知识引入的第一章,综述数据、数据结构和抽象数据类型等基本概念。其中,抽象数据类型的表示与实现贯穿于后续各章的类型定義中,该知识点的掌握与否极大影响学生对后续概念的理解。为此,在第一章传统内容的基础上,对抽象数据类型进行部分具体化,增加指针、结构体的定义及其实现的回顾,给出C、C++中实现结构体、引用传递的语法对比与说明。这部分内容的引入,对前期程序设计知识进行了简单回顾,为数据结构后续章节中相应概念的表示与算法的实现打下牢固基础。

    针对线性表、栈、队列、树和二叉树、图的内容,在介绍定义及其表示与实现后,以常见的简单应用为主,力求以学生熟悉的案例分析引出新知识,以提高学生的学习兴趣,从而达到教学目的与获得较好的教学效果。

    实验课教学内容设计? 在程序设计课程群中,数据结构的实验教学对于学生的理论知识内化、提升学生的探究能力与创新能力具有重要意义。数据结构的实验教学与前期的程序设计与算法语言实验教学从形式到难度上都有较大差别。数据结构的实验教学是对理论教学所述定义、算法的实现,完成的质量受到前期课程尤其是程序设计与算法语言掌握程度的影响。为了把学生实验的重点聚焦于数据结构的实现,而非程序设计基本知识的补充上,使用贴近学生日常生活或日常接触较多的例子,通过分步教学[4]与基于项目的教学[5],使不同的实验内容能够适应学生学习的不同阶段,从而促使学生能够对数据结构实验中涉及的知识和能力进行融会贯通、学以致用。

    以栈的应用实验为例,第一个实验为整数间的进制转换。数制转换的基本方法在计算机基础内容中已经讲授,且通常为大部分学生掌握较好的知识点。以此类整数的进制转换为栈的初步实验,能使学生在实验中不必对题目做过多分析,从而能将关注的焦点放在数据结构与算法的实现上,快速完成并掌握诸如构造空栈、入栈、出栈、清空栈等栈的基本操作。其后,进行栈的进阶实验:迷宫求解。迷宫作为常见的游戏,其常规解法为回溯法。路径上的分岔所在方块在每个方向未被搜索完时会被压入栈中;反之,若每个可行方向已搜索完毕,则该分岔所在方块出栈。

    迷宫问题的回溯过程较易为学生所理解,在栈的实验一已完成的基础上,学生利用已有的知识和背景可完成实验二。经过实验一的铺垫,在实验二中深化数据结构的知识,同时引入算法的部分内容,使程序设计课程群中的程序设计、数据结构、算法设计相关知识得以融合,借助日常熟悉的项目案例使理论和实践相结合,最终达到培养学生解决实际问题能力的目的。

    4 结语

    本文针对传统数据结构教学中存在的问题,从数据结构隶属于程序设计课程群的角度出发,结合现阶段的本科建设任务与学生特点,对数据结构理论教学内容和实验设置进行合理编排,进行适合于现阶段高校教学的数据结构课程教学改革与实践,探索以分步教学与项目教学相结合的课程教学改革与实践方案。通过教学改革促使学生学以致用,从而有效地提高教学质量,进一步培养学生的创新能力,以达到培养创新人才的目的。

    参考文献

    [1]张先伟,曲志坚,张立红,等.程序设计能力培养体系建设与实践[J].计算机教育,2019(9):75-79.

    [2]蒋宗礼.计算机类专业人才专业能力构成与培养[J].中国大学教学,2011(10):11-14.

    [3]孙笑微.“算法与数据结构”课程的知识体系和教学改革实践[J].沈阳师范大学学报:自然科学版,2010(3):446-448.

    [4]陈青青.数据结构课程中分步式案例设计的探索与实践[J].计算机教育,2019(10):109-112.

    [5]邱劲,王平.以项目为导向的数据结构课程改革与实践探索[J].西南师范大学学报:自然科学版,2019(9):167-172.

    项目来源:2019广东省质量工程特色专业建设项目“信息与计算科学”。

    作者:廖彬,华南农业大学数学与信息学院,研究方向为机器视觉、教育技术与教育信息化;蔡贤资,华南农业大学数学与信息

    学院,研究方向为算法、计算机网络、教育技术与教育信息化(510642)。

相关文章!
  • 高等教育人工智能应用研究综述

    奥拉夫·扎瓦克奇-里克特 维多利亚·艾琳·马林【摘要】多种国际报告显示教育人工智能是当前教育技术新兴领域之一。虽然教育人工智能已有约

  • 谈思维导图在高中语文教学中的

    李东强摘 要:思维导图是20世纪70年代的产物,是一种简单高效的思维工具。在高中语文课程中应用思维导图,不仅可以将学生大脑的储存潜能

  • 初中语文课堂提问中三个“度”的

    赵圣洁【摘? 要】好的课堂问题是成就一节好课的关键所在。本文基于初中语文部编版教材,结合课堂实践,谈谈课堂提问中对于问题角度、深度、