基于“一题多解”的数据结构实践教学模式

2018-02-08 12:17鲍爱华陈卫卫唐艳琴李志刚
计算机教育 2018年2期
关键词:一题多解数据结构一题

鲍爱华,陈卫卫,王 真,唐艳琴,李志刚

(陆军工程大学 指挥信息系统学院,江苏 南京 210007)

1 背 景

数据结构是一门兼具理论性与实践性的计算机基础课程,其实践教学的科学性和有效性,在某种程度上决定着教学效果的优劣,也是课程教学改革经常涉及的内容之一。

数据结构实践教学通常采用“小+大”的实验设置模式:采用“小”的验证性题目覆盖理论教学的主要知识点;采用“大”的综合(设计)性课程项目,让学生综合运用所学知识解决问题,提升学生的实践能力和知识运用能力。

在教学实践中我们观察到,“小”实验点多面窄,是知识孤岛;“大”项目覆盖面较广,但每个项目自成一体,没有贯通课程教学内容的始终,没有可比性,通常在课程后半段才能有效展开。在教学过程中,如何让学生自觉地将知识点连接起来,形成整体性思维并进行批判性运用,是教学改革中需要重点关注和研究的课题。

2 “一题多解”的数据结构课程实践教学模式

瑞士认知心理学家皮亚杰指出,教育的目标是造就具备批判性思维的头脑、敢于验证问题的头脑,而不是人云亦云的头脑;是培养有创造力、有发现和发明能力的人,而不是只懂得单纯地重复上几代人工作的人。“一题多解”的数据结构实践教学模式,就是要突破以往机械重复的实验模式,让学生在学习理论知识的过程中,持续运用不同的知识解决相同的问题,使学生不断对已经掌握的知识进行批判接受,进而改造创新,让学生的探究能力能够在坚实的基础之上得到持续发展。

2.1 “一题多解”实践教学设计的基本原则

“一题多解”实践教学是一种持续创造性的教学过程,其教学设计在遵循一般教学规律的基础上,还需要考虑其特殊性,因此,笔者在教学改革中,特别考虑了以下基本原则。

2.1.1 项目选题合理性原则

选题的合理性是“一题多解”实践教学能否成功实施的关键因素。选题应当考虑选取具有一定应用背景,并能够采用不同章节理论知识进行求解的综合性项目;选题应当具有可扩展性,既要能够让学生从小处入手迅速进入状态,也要能够让学生在题目范围内深挖探究、持续进行改进。

2.1.2 结构层次梯度化原则

维果茨基在“最近发展区理论”(ZPD)中指出,教学应着眼于学生的“最近发展区”,为学生提供带有难度的内容,调动学生的积极性,发挥其潜能,超越其最近发展区而达到下一发展阶段的水平,然后在此基础上进行下一个发展区的发展[1-2]。在进行“一题多解”实践教学设计时,教师应当为学生制定层次化的实践目标,如算法效率目标、问题规模目标,并设定难度等级,必要时可以放弃算法效率目标而只要求问题规模目标,使学生快速进入“最近发展区”,获得成就感,进而逐步发展。

2.1.3 过程暴露原则

实践教学过程中,教师有时会存在“掩盖或忽视思维过程”的情况,即唯结果论。在“一题多解”实践教学中,尽管实验结果比较重要,但更重要的是让学生展示其思维过程,即如何从“最近发展区”演化到下一个“最近发展区”的过程。在教学过程中,应当全面暴露这个思维过程,进而进行知识内化、深化探索和总结升华。

2.1.4 探究创新原则

“一题多解”实践教学应当以学生为中心,采取全员参与、合作学习的实践方法,激发学生自主学习热情,提高学生持续求知欲望,增强学生探究创新意识。在教学过程中,教师可以采用启发、鼓励、引导、评价以及总结的流程,帮助学生发掘题目的新意,不提供“权威”“正确”答案,营造民主、幽默、开放、互助、温暖的创新教学氛围,鼓励学生抛开固有模式,自主创新,敢于质疑问难,不断探索求解问题的新方法、新思路。

2.2 “一题多解”实践教学模式

现代教学理论认为,教育工作要以学生为中心,在学生自主创新学习的基础上,通过学生的观察、实践、思考、合作和迁移,培养学生良好的思维习惯。在“一题多解”实践教学过程中,也应当秉承这一思路,贯彻以学生为中心的核心理念,采用合理的教学模式开展实施。在教学改革过程中,我们采用的“一题多解”实践教学模式的主要环节如图1所示。

图1 “一题多解”实践教学的主要环节

总体而言,“一题多解”实践教学环节可以分为3个部分,即项目设置环节、项目迭代环节和总结汇报环节。

2.2.1 项目设置环节

项目设置是“一题多解”实践教学的先导环节,主要任务是针对课程内容,为学生选择合适的实践项目。选择实践项目时,应当着重考虑以下4个要素。

1)针对哪些课程内容实施“一题多解”实践教学。

如数据结构课程可以选定表结构、树结构、散列表、排序等知识点作为“一题多解”实践教学内容,并且使设计的实践项目能够将这些知识点串连起来。

2)针对实践项目制定哪些梯度化阶段目标。

选定实践项目后,教师需要按照“结构层次梯度化原则”,结合理论授课进程和学生实际情况,预先划分不同的实验阶段,并为不同阶段设置梯度化实验目标,如学生从哪种结构开始起步;在初始几个阶段内应当达到何种算法执行效率;如何定制不同阶段应当求解问题的复杂性(如测试样本数据量)等。确定目标后,教师就能够在教学过程中引导学生探索采用不同方法求解相同的实践项目。

3)如何评价学生阶段性实验结果。

在项目设置环节,教师应当考虑阶段性工作完成后如何进行评价。总体而言,可以从两个方面进行考虑:一方面,横向比较不同小组的解决方案,从性能、复杂性等方面进行评价;另一方面,纵向比较学生在不同阶段提出的解决方案,衡量学生对相应方案的改进情况。

4)如何引导学生突破思维定势,寻找开放创新的解决方案。

“一题多解”实践教学本质上是引导学生自行发掘新的解决方案,在学生实践过程中,应当避免让学生落入教师的思维定势中,否则会影响学生的创新。在项目设置时,应当考虑项目突破数据结构课本范围后的发展情况,项目本身应当具有开放性和可扩展性,如数据结构课程的算法通常不会涉及分布式或并行范畴,但在实际项目中,如果需要进一步提高算法实践效率和问题求解规模,则可以引导学生往分布式或并行计算方向发展,以取得更好的教学效果。

2.2.2 项目迭代环节

项目迭代环节是“一题多解”实践教学的主要环节,贯穿理论教学的始终。在该环节中,学生采用分组合作的方式,划分为多个不同的实验小组,按照教师给定的实施阶段和梯度目标,自行选择合理的解决方案完成实验。与以往综合实践项目不同,“一题多解”实践教学中,学生在每个迭代阶段都必须提出完整的项目解决方案,并给出实验结果。

1)启发探究。

美国教育家布鲁纳说过,“使学生对一门学科有兴趣的最好办法是使其知道这门学科是值得学习的”[3]。启发探究的目的在于让学生逐步理解所学知识对实践项目的积极意义。在阶段性实验开始之前,教师应当根据理论教学进度和前期实践情况,引导学生思考当前所学内容对实践项目的作用,分析前一阶段实验结果存在的缺点,进一步提高算法时空效率要求和问题复杂性规模,启发学生思考解决此问题可能的突破口,让学生带着问题学习理论知识,思考解决方案。

2)合作求解、汇报演示。

“一题多解”实践环节由学生分组组织实施,特点是既能培养学生的团队合作精神,又能在不同小组之间形成激烈的竞争关系,增强学生的学习紧迫感,进而激发学生的创新意识。汇报演示阶段应当要求学生在给出实验结果的同时,按照“过程暴露原则”,具体讲解实现思路和思维转换过程,使其他小组的学生不但知其然,也知其所以然,进而达到共同提高的效果。

3)点评分析。

学生分组汇报演示结束后,教师针对各组的点评分析是必不可少的环节,能够起到画龙点睛的效果。教师在点评时,应当着眼于小组求解问题的思维转换过程,分析其合理性以及相比于前续阶段的进步性,同时明确提出可能存在的问题,引导学生持续思考,为下一个迭代做好准备。

2.2.3 总结汇报环节

总结汇报环节位于“一题多解”实践环节的结束阶段,主要有3项任务。

1)纵向分析。

进行小组总结汇报时,各小组应当分析自身在所有迭代阶段提出的不同解决方案,对不同阶段取得的算法效率和求解的问题规模进行比较,重点说明自身对实践项目认知的转变,阐明思维演化过程。

2)横向比较。

横向比较的主要目的在于分析不同实验小组对实践项目采取的最终解决方案,比较各自的算法效率和问题求解规模,分析不同方案的优劣。在比较过程中,教师应当启发学生从实践结果优劣的比较中建构牢固的知识体系,培养学生的计算思维。

3)总结拓展。

在“一题多解”项目实践结束阶段,教师应当就整个项目迭代过程进行总结讲评,逐一分析各小组学生解决方案和思维转换中的创新点,起到从“发散”到“聚焦”的作用,通过归纳总结帮助学生拓展思维。此外,按照“探究创新原则”,创设更深的应用场景,引导学生在课程结束后继续思考,深化巩固课程学习成果。

3 数据结构课程“一题多解”实践项目案例

教学改革中,我们结合工程实践经验,精心设计了规模大小适中的多个“一题多解”实践项目(项目案例设计以教材《数据结构与算法》[4]为基础),依托这些项目践行上述理念。以“垃圾邮件地址过滤系统”项目为例,重点说明项目涉及的知识点、“一题多解”分层阶段目标和项目拓展情况,项目描述见表1。

3.1 项目相关知识点

表1所示项目,是以垃圾邮件地址过滤问题为背景,核心是从“垃圾邮件发件人地址库”中查找“待判断邮件地址样本”的问题,本质是一个查找问题。在数据结构课程教学中,查找问题是非常重要的基础问题,对查找需求的高效实现,产生了对数据结构设计的选择问题,采用“一题多解”方法实施教学,能够伴随理论教学的推进不断深化解读“不同需求导致了选择不同的数据结构,数据结构并非一定是自然关系的描述”内涵。具体而言,本项目可能涉及的知识点包括顺序表、链表、检索树、AVL树、B树、Trie树、散列表、排序等。

3.2 梯度化分层目标

在教学实践中,结合理论教学进程,将该项目划分为3个迭代周期,见表2。

3.3 项目拓展情况

通过“一题多解”项目的实践训练,学生能够将表结构、树结构、散列表、排序算法等知识点前后贯穿,形成有机的知识体系。对于教师而言,还应当为“一题多解”实践项目设置更为开放的应用场景,让学生有进一步拓展的空间。在教学实践中,我们主要从两个方面进行拓展。

3.3.1 并行计算

通过实践学生能够发现,随着问题规模的持续加大,单线程已经难以继续进行优化提高,那么能否使用多线程进行计算;利用CPU的多核是否能够加快速度;在多线程的模式下,线程之间的数据如何共享;是否会存在冲突等。通过这些引导,能够让学生进一步思考利用并行计算解决问题。

3.3.2 分布式计算

如果垃圾邮件地址库的大小进一步增加会发生什么情况,如增加到1PB;如果单台计算机已经无法存储,那么文件该如何存储;算法需要发生什么改变等。通过这些引导,可以让学生向分布式存储以及分布式计算方面拓展,进而引出云计算的相关内容,为学生后续学习做好铺垫。

表1 垃圾邮件地址过滤系统

表2 “一题多解”实践项目迭代周期

4 结 语

建构主义者认为,学习是学习者主动的建构活动,而不是对知识的被动接受,教师仅仅是“助产士”的身份,学生才是教学过程的主体,教师只能为学生的发展搭建“脚手架”。在数据结构实践教学改革中,我们尝试使用“一题多解”的多阶段实践教学模式,通过层层推进实践目标,让学生自主学习创新,为学生搭建“脚手架”。实践表明,“一题多解”式数据结构实践教学模式能够激发学生的学习兴趣,把学生从零散的知识点学习和实验验证中解脱出来,一边学习一边应用,在自然动态的过程中归纳小结,形成有机的知识体系,达到再创造、再发现的教学效果。

需要注意的是,教师应当把握好“一题多解”的“度”,即难度要适中,要将综合实验项目设置在学生“最近发展区”(ZPD)附近,便于学生进入学习状态,以免打击积极性;梯度要合理,要为学生设置合理的层次化迭代阶段和目标,便于学生在学习过程中稳步攀升;参与度要高,要坚持以学生为中心的教学理念,让学生自主创新,避免影响或主导学生的思维。此外,“一题多解”综合实验项目的设置也应当具有可拓展的深度和广度,为学生的后续课程学习和发展打下良好的基础。

[1]麻彦坤, 叶浩生. 维果茨基最近发展区思想的当代发展[J]. 心理发展与教育, 2004(2): 89-93.

[2]张兴. 维果茨基关于教学与发展关系的研究[J]. 外国教育研究, 1998(6): 11-13.

[3]布鲁纳. 教学论探讨[M]. 张渭城, 译. 北京: 人民教育出版社, 1989: 10.

[4]陈卫卫, 王庆瑞. 数据结构与算法[M]. 2版. 北京: 高等教育出版社, 2015: 1-3.

猜你喜欢
一题多解数据结构一题
数据结构线上线下混合教学模式探讨
发散思维 一题多解
重典型应用,明结构关系
一题多解
为什么会有“数据结构”?
例析初中数学的多解问题
一题多解的教学问题分析
高中数学“一题多解”的学习心得
高效学习数据结构