张媛媛
(辽宁科技大学 辽宁·鞍山 114001)
数据结构是我校网络工程专业的专业基础课,也是专业核心课,被评为辽宁省精品课和校一流课程。本课程不仅重视学生对理论知识的理解和掌握,锻炼学生的抽象思维能力,更加注重学生的实践动手能力。
结合网络工程专业的培养目标,确定本门课程的教学目标。
(1)知识目标,能够根据具体问题选择合适的逻辑结构和存储结构,能够说出不同的排序查找算法的思想以及特点,并完成重要算法的代码实现。
(2)能力目标,培养学生编写高质量算法的实践能力,应用高级语言,编写和实现结构清晰,正确,易读的有效算法。
(3)素养目标,使学生具有严谨的计算机思维,养成良好的编程习惯。
课程的主要内容是利用顺序和链式两大存储结构实现线性,树和图三种重要的数据结构,并在各种常用的数据结构上实现排序和查找算法。
通过对数据结构课程中理论知识的学习,培养学生依据实际问题的需求合理地组织数据,并在计算机中有效地存储数据的能力;解决算法设计的能力;对于学生在专业课程中树立正确的世界观、人生观和价值观的引导。针对数据结构课程中融入专业课程思政教育,让学生学习课程知识的同时,也加深了对高校学生正确核心价值观的培养和教育。从而,在真正意义上实现数据结构课程教学过程中知识与育人的协同发展功能,培养德能兼备的有为青年。
数据结构课程思政建设目标为:
(1)培养学生能运用所学专业知识,解决实际问题的能力,运用马克思历史唯物主义和辩证唯物主义的方法深入分析和认识问题,不断探索创新。
(2)培养学生发展计算机科学技术,提升科技报国的社会责任感。
(3)提升学生开展科学思维方法的训练,科学素养,探索未知、追求真理,树立终身学习的意识,不断改革创新。
(4)培养学生团队协作,沟通合作。
(5)引导学生在实践中理解并遵守职业道德和规范,培养学生精益求精的工匠精神。
因此对于思政资源的使用和分析依照思政建设目标,主要在人文,素养,知识和价值观等方面进行有效的融合,挖掘积极向上的思政元素。数据结构课程思政元素的设计借助以专业教学为主线,思政教育为辅线,传授学科知识的同时,也传递背后探索知识蕴含的育人内涵;将知识掌握转换为能力培养。把育人体现在科学思维的传导中,凝聚在精心设计的教学过程中,为学生上优美的、有灵魂的数据结构课。
(1)知识目标:描述二叉树遍历思想,根据算法思想,能够结合实际的例子写出4种遍历的结果。
(2)能力目标:在C++环境下能够完成二叉链表结构的前序,中序和后序遍历操作的递归算法实现。培养学生举一反三的学习能力,以及将课堂内容与实际生活相联系的应用能力。
(3)素养目标:培养学生对家庭的热爱,对社会的热爱;孝敬父母,增强社会责任感。
二叉树遍历算法思想以及遍历算法的 C++实现。二叉树遍历算法的递归实现。
通过对数据结构课程中理论知识的学习,培养学生依据实际问题的需求合理地组织数据,并在计算机中有效地存储数据的能力;解决算法设计的能力;对于学生在专业课程中树立正确的世界观、人生观和价值观的引导。针对数据结构课程中融入专业课程思政教育,让学生学习课程知识的同时,也加深了对高校学生正确核心价值观的培养和教育。
本节课的主要内容是树和二叉树——提出家族树的概念,引导学生进行爱国,爱家,爱父母,爱老人的尊老爱幼思想教育。并且在教学过程中,通过参与式教学,让学生充分的进行举一反三的能力,培养学生相信自我的自信情感。
2.4.1 通过引入例子
通过一张五世同堂举家庆贺的场面,引出老师看到这张照片之后感受就是一股幸福之感油然而生,同时也会产生一种期许,就是希望自己的父母家人也能幸福安康,长命百岁。所以也希望同学们在家要孝敬父母在外要尊敬老人。
图1:家族图片
(1)引出本节课主要内容:在我国经常用开枝散叶也就是树来形容人类的繁衍生息。而这种复杂的具有继承关系的家族组成情况,可以抽象为树形族谱树来观察。
(2)复习回顾:上一节已经学习过,对于树结构而言,可以将复杂的树结构转化为较为简单的二叉树来进行研究,学习了具体的转化方法。二叉树是树结构的特殊形式,也是研究树结构的重要研究对象。这里以某个家族的4代成员为例,抽象出一个二叉形式的家族族谱树。这样形成的家族树就可以称之为二叉树。
2.4.2 前测
家族树的所有人名的显示做出前测,掌握同学对遍历知识的了解情况。
2.4.3 参与式教学
(1)提问:在之间的二叉族谱树中,将这个实际问题抽象模拟为图片上的家族人员情况,那么请问,如果想要了解到这里所有成员的名字的话,应该如何处理。
这里强调继承关系,如果使用线性表的话是无法解决数据之间的关系的。因此通过本节课的学习可以找到这个答案。
(2)讲解定义:将二叉树的遍历结果规定为输出结点信息数据值,根据二叉树的定义了解到它的基本组成结构是三个部分,分别为左子树,右子树还有根节点。分别用LRD表示。
二叉树常见的遍历形式一种要4种,一般先定先左后右的顺序,则称之为前,中,后,层序遍历。以前序遍历为例,它的基本规则是访问根→前序遍历根的左子树→前序遍历根的右子树。
(3)利用已学知识进行对比讲解:根据以往的知识了解到这是一种递归的形式定义。所谓递归就是把一个 n的事情变成了n-1,如此反复可以得到一件关于1的事情,比如阶乘,n的阶乘等于nxn-1的阶乘,就是这个道理。在前序遍历的规则中,只要在当前树的根位置才进行访问即输出。
(4)讲解前测例子:前测中的例子再次抽象为二叉树结构,将每个家庭成员的名字用ABCD来代替。前测中的问题即为输出所有家庭成员名字,正好符合遍历操作。因此,以前序遍历为例,为同学们讲解具体的遍历过程。首先将所有的结点扩展成两个孩子分支。这样按照规则从左向右的遍历过程中,每个结点都需要遍历3次,遍历次数相同,接下来就是我们根据不同的需要,再合适的位置进行输出。
(5)总结规则:同学在写前序遍历结果的时候,可以在第一次遇到结点的时候进行输出即可。这里可以看出前序遍历对于家族树而言是按照家庭分支,从长辈的名字开始输出。
图2:二叉树遍历规则图示
(6)实现代码:要来实现前序遍历的算法。这里主要使用递归思想来解决。通过之前程序设计语言课程的学习,递归算法的实现主要是通过函数名称与参数的变化来体现的,并且强调重复操作中n次与n-1次的区别。
(7)提出类比要求:下面大家根据前序遍历规则,自己来仿写出这棵二叉树的遍历结果。提示一下,中序遍历是在左子树访问完毕后在输出根节点,再遍历右子树。也就是有左子树就要继续遍历,不能输出。大家也可以在遍历路径中,第2次遇到结点的时候开始输出。对于家族树而言中序遍历的实际意义不大。通过将前测的问题转化抽象为二叉树模型,利用动画演示遍历过程,得到前序遍历结果,同时将引导学生进行中序,后序和层序遍历结果的自主学习,进行参与式教学。通过对遍历算法的演示过程,进一步了解算法思想,并且给出具体的前序遍历算法实现过程。
2.4.4 后测
下面请同学们写出例题中的二叉树的前,中,后序遍历序列的结果。我请一位同学说明中序遍历序列的结果为:a+b*c-d-e/f,发现这个中序序列结果正好是一个表达式,所以,表达式在计算机中是可以使用二叉树进行存储,并且利用中序遍历对其进行访问。
图3:后测例题图片
2.4.5 总结及作业
总结本节课的主要内容。再次强调尊敬父母的优良传统,并且将中序和后序的算法实现作为本节课的作业内容。
2.5.1 教学理念
本门课程的教学理念是“以人为本,任务驱动”。以人为本体现在:
(1)尊重学生兴趣和发展目标上的差异。
(2)正视学生程序设计基础的差异。
(3)增加学生与指导老师交流的机会和形式。
任务驱动体现在:每个教学内容,都需要给出具体的实现任务,并对任务进行具体的分析,讨论,设计以及编码,做到有的放矢。
2.5.2 教学方法
教学方法采用多媒体+板书+师生互动形式进行授课。课堂采用了BOPPPS的教学手段和方法,将整个体系完整演示。并且在课堂中注意课程思政的融入。将尊敬父母和老人的传统美德融入到课堂教学的引例中,在不知不觉中将思政元素完美融合。
2.5.3 教学过程
(1)B:导入:利用生活中的家族树的例子。将思政元素进行融合。
(2)O:目标:在PPT和板书上,明确提出教学目标。
(3)P:前测。
(4)P:参与式教学:有师生的互动,并且能够提出问题让同学来进行解答。
(5)P:后测:对教学目标进行后测掌握同学对本节课的理解程度。
(6)S:总结:对本节课的课程内容进行重点强调和总结。并且提出下节课的学习内容。