张伟伟 陈彦磊
“数据与数据结构”是选择性必修课程的第一个模块,该模块包含“数据及其价值”“数据结构”“数据结构应用”三部分内容。数据结构应用属于选择性必修1的第三部分,该部分要求学生掌握前两部分内容后,能综合运用数据结构知识解决实际问题,体现数据蕴含价值,结构提升效率是整个选择性必修1模块的难点和重点。《普通高中信息技术课程标准(2017年版)》(以下简称《标准》)对该部分的学业要求为:能针对限定条件的实际问题进行数据抽象,运用数据结构合理组织、存储数据,选择合适的算法(如排序、查找、迭代、递归等)编程实现、解决问题。本部分内容的学习,对于培养学生的信息意识和计算思维,将知识应用于解决现实问题,深入理解信息技术学科的核心素养,具有十分重要的作用。
● 课程内容分析
本部分内容涉及的学科概念主要是数据结构和算法,数据结构在现实问题中的应用需要选择合适的数据类型和恰当的算法,通过编程来解决问题。教科版教材中数据结构类型分别介绍了线性表、队列、栈、二叉树,算法引入了迭代和递归,涉及解决实质性问题的有排序和查找。
教材在第一章中提出了数据及其结构,引入了数据结构对提升数据价值、提高数据利用效率的重要性,其后的章节中分别介绍了线性表、队列、栈和二叉树,对每种数据结构的应用也贯穿在其中。数据结构应用的内容与新课标的内容要求对应如下表所示。
本部分通过对典型实例进行分析与体验,引导学生认识数据结构的类型、特征,迭代、递归算法。根据本单元教材内容及教学目标,结合新课标的教学理念,建议以项目学习的方式进行组织,通过项目的实施,引导学生学会运用相应数据结构解决问题的一般方法和过程,其知识结构与项目任务对应的思维导图如图1所示。
● 教学实施策略
依据《标准》对该部分的学业要求和素养要求,建议在本部分教学实施时采用基于真实情境的项目教学法。在学习过程中,教师采用多维度评测方式,对学生的项目实施过程和项目成果进行反馈和评价,提高学生的学习效率,以达到预期的学习目标,培养学生的信息素养。
1.创设真实情境
教师在创设教学情境时,要充分考虑与学生生活相关的主题。例如,图书馆的书籍分类放置、学生排队借书,就用到了两种不同的数据结构。图书存放采用的是树形结构,而排队借书用到的是线性结构中的队列结构。因此在解决相关问题时,需要建立不同的数据模型,利用合适的抽象数据类型来解决。
2.以学生为本开展教学
在教学实施过程中,要充分体现学生的主体地位。分析具体问题环节,引导学生通过小组讨论、头脑风暴的方式把握问题核心,将复杂的生活问题抽象成相关的数据模型。选择算法环节可以鼓励学生尝试选择多种算法,通过对比不同算法时间和空间的复杂度,来确定最优算法。
3.立足而不拘泥于教材
教材为教学实施设计了很好的教学思路,也为项目开展提供了较丰富的教学资源,但是教师在具体的教学中,应根据地域和学生水平差异对教材内容进行重组或者二次开发,以达到更好的教学效果。
4.有效评价提升项目实施效果
在整个项目实施过程中,教学评价多维度、多形式贯穿于教学活动的始终,包括学生自评、组内互评和教师点评,以及过程性评价和结果评价。有效的评价既能提高学生的学习热情和项目的参与度,又能让学生在学习过程中不断改进实施方案和探究方式,有效地促进教学目标的达成。
● 典型案例设计
下面,笔者以教科版“数据与数据结构”第四章“队列及其应用”中的第三节《排队取号模拟系统》一课为例,讲解如何以项目实施来开展模块教学,体现数据价值。
1.学习目标
①了解排队取号系统的基本功能。②分析该系统中用到的数据,并建立相应的数据结构。③掌握队列在排队取号模拟系统中的应用方法。④体会排队取号模拟系统在辅助决策中的应用。
2.项目分析
(1)项目情境
用餐高峰时段餐馆排队现象普遍,等待时间过久容易流失顾客,这对餐馆来说是一个损失,而通过应用队列结构来模拟顾客排队取号用餐的过程,统计顾客平均等待时间,优化餐桌配置,可以缩短等待时间,减少顾客流失。
(2)项目主题
餐馆排队取号,小组根据项目主题,进行讨论,制订项目学习规划方案,可用流程图、思维导图等形式表达,参考上页图2框架。
3.教学过程
(1)情境引入
用视频或文字描述生活中的实例,展示餐馆中顾客排队取号、等候和系统叫号、就餐的过程。
设计意图:①展示数字化创新对日常生活的影响;②理解数据的价值。
(2)项目探究活动
分析问题,将复杂的问题分成两个子任务。
任务一:模拟餐馆排队取号。
分析数据模型,得出该模型分为叫号和取号两部分。叫号为顾客在队尾入队,取号为顾客在队首出队,即FIFO结构,可用线性表中的队列进行表达和实现。
设计意图:了解排队取号系统的基本思路;体验队列在解决问题过程中的作用。
任务二:编程实现餐馆排队取号模拟系统。
引导学生分析解决问题的过程、需要用到的数据,并建立相应的数据结构,进行数据的存储。
①用顾客类Guest存储顾客所选的餐桌类型、顾客的用餐时间、顾客的取号时间。
②用餐桌类Table来记录餐桌的类型和状态。
③设计取号和叫号的算法。
④用Python编程实现模拟系统统计信息的展示。
设计意图:明白数据结构和算法是相辅相成的,两者的有效结合才能提升数据的价值;在解决问题的过程中培养计算思维;体会数字化的学习和创新在辅助决策系统中的作用;提高学生的信息意识。
(3)项目展示与交流
将每个小组的项目成果进行展示和分享。每个小组派一名代表描述本组项目完成的过程、遇到的困难,以及解决的办法。
设计意图:让学生通过陈述问题解决的方法,提升表达能力和自信心。
(4)项目评价
从以下几个方面对各小组进行评价:
①小组成员参与度的自评和互评。②项目的步骤是否进行了有效的规划。③项目结果是否有效地呈现。④教师对学生取得的成绩充分肯定,对其不足提出修改建议。
设计意图:在激励学生的同时,进一步完善学生的知识体系。
(5)教学重点总结
只有将有效的数据结构结合恰当的算法才能通过程序设计解决问题。
让学生通过应用理解算法与数据结构的关系,理解问题解决的本质是要挖掘出数据的价值,让数据为系统的决策提供支持。
(6)拓展探究任务
在现行方案上进行哪些改动,可以有效缩短顾客的等待时间?说明调整策略,并编程实现。
设计意图:从数据到数据结构,再到应用,逐步加深对问题解决一般性过程的理解,实现知识的迁移。了解数据结构应用的本质是提升数据的价值,让数据“会说话”。
数据结构应用是对数据结构基础知识的综合提升,难度相对较大,教师在教学时要抓住应用服务于生活的本质,让学生通过项目学习,体验数据结构在生活中的应用,更好地理解算法与数据结构的关系。教师在设计问题及解决方案時,要突出在应用数据结构之后能有效提升数据的存储效率、在应用数据结构解决问题之后能明显提高数据的应用价值,真正实现学习培养思维、应用体现价值。