基于计算思维的项目化教学与反思

2023-03-07 16:41吕宽武浙江省龙游中学
中国信息技术教育 2023年5期
关键词:百家姓子项目衢州

吕宽武 浙江省龙游中学

●缘由与思路

笔者所在区域举行的高中信息技术课堂教学评比活动由上课和说课两部分组成。此次活动是为了交流各县信息技术教学的新思路,因此采取同题异构的教学方式。但是笔者在接到《编程处理数据》这个课题之后,遇到了两个难题:其一,基于新教材的备课资料“一穷二白”;其二,时间紧(9天)、要求高(项目化学习),备课难度大。

浙教版高中信息技术教材将本课内容分为三块:①利用pandas模块处理数据,主要内容有Series和DataFrame两种数据结构,以及它们的常用属性和常用函数;②利用matplotlib模块绘图,主要内容是学习常用绘图函数;③利用Python分析数据实践。教师用书上建议先讲授pandas的两种数据结构Series和DataFrame,然后引导学生参照教材例题进行实践探究,但这种教法作为比赛课会不会太常规而提不起学生的兴趣呢?

在此前市教研员开展的相关培训中,笔者受到了启发:通过创设一个真实情境项目,再组织学生扮演特定的角色,一边开展学习一边完成项目。针对笔者这个想法,县教研员提出了修改建议:不仅要创设真实情境开展项目学习,还要落实计算思维的培养。因此,笔者明确了本节课的教学主题“编程统计衢州五校的百家姓”,该项目需要三个课时完成,以下是第一课时的内容。

●过程与实践

1.呈现情境脉络,提出学习项目

课前教师播放歌曲《百家姓》和视频介绍。

师:百家姓是对姓氏人数的一种统计及排名,不同朝代有不同的百家姓,今天我们一起来统计身边的百家姓。如果要统计班级中哪种姓氏的人数最多,应如何进行统计?

生:在班级名单上数一数(人工)。

师:如果我们要统计整个年级姓氏人数前五名,又需要怎么统计?

生:使用表格处理软件,如Excel。

师:如果要统计衢州五校的百家姓,又需要怎么统计?

学生思考、产生疑问。

师:要统计衢州五校所有学生的姓氏情况,数据量较大,如果还是使用表格处理软件处理数据就会比较慢,为了提升效率,选择使用编程软件处理数据会比较合适,如Python。接下来,我们一起来统计衢州五校的百家姓。

设计意图:首先以音乐、视频导入新课,激发学生的学习热情;然后提出处理数据量由小到大的三个问题,逐步引出项目“编程统计衢州五校的百家姓”。

2.理清算法步骤,驱动项目分解

师:假如你是百家姓统计小队成员,并已经拿到学生名单,请通过编程让计算机实现统计。根据计算机解决问题的一般步骤,首先需要设计算法。

学生设计算法。

师:编程统计衢州五校百家姓的算法是怎样的呢?在这里,老师给出了具体步骤,但是这些步骤是无序的(如图1),需要同学们自行排序。

图1

学生思考、总结、回答。

设计意图:让学生置身情境当中,主动思考算法步骤,驱动项目分解。

3.借力单元项目,发展计算思维

师:算法中的每一个步骤都是一个子项目,“编程统计衢州五校百家姓”这个总项目分成了六个子项目,接着,我们来实现第一个子项目“读取数据”。

探究问题1:如何从外部文件中读取数据?

学生根据导学案中探究1进行思考、总结、展示(如图2)。

图2

教师利用多媒体投影展示、评价、改正。

师:接下来,我们利用Python编写以上程序并调试运行,实现从外部文件读取数据。

学生编写程序、调试运行。

设计意图:通过探究问题1的开展,促进学生自主学习课本内容;通过多媒体投影展示,得以及时评价巩固;通过编写程序、调试运行的过程,体验成功的乐趣。

师:“编程统计衢州五校百家姓”中的第一个子项目“读取数据”我们已经完成了,接下来,我们要实现第二个子项目“取出姓氏”。

探究问题2:如何提取姓名中的姓氏?

学生思考、总结、回答。

师:同学们说出了通常的做法,现在要用计算机编程解决这个问题,首先要考虑在这个过程中会涉及哪些变量?

生:姓名、姓。

师:“姓名”可以用一个变量来存储,如name;“姓”可以用另一个变量存储,如“x”。这个过程称作什么?

生:抽象。

师:经过抽象后,这个问题变成了从name中取出x的问题(如下页图3),那么是怎样从name中取出x的呢?

图3

学生思考、总结、回答。

师:同学们知道根据name的情况来取出x,老师总结了大家的做法并推导出这个计算模型的过程(如下页图4),我们可以将其称为什么?

图4

生:建模。

师:在用计算机编程解决问题的过程中,首先是抽象,然后是建模,接下来是什么呢?

生:设计算法。

师:取出姓氏的自然语言描述的算法为:①获取姓名存入name中;②name是否复姓?如果是,取前面2个字符,如果否,取前面1个字符。请同学们根据上述算法,在导学案探究2中完成“取出姓氏”的流程图设计。

学生思考、绘制流程图。教师展示学生的流程图和标准的流程图并点评。

师:取出1个姓名中姓氏的流程图算法成功了,要取出多个姓名中姓氏的流程图又怎么实现呢?

生:可以进行多次循环。

师:算法设计好之后,就要编写程序,有了流程图表示的算法,编写程序就变得有章可循,只需按照步骤对应过来(如图5)。现在,请大家利用Python合作编写以上程序并调试运行,实现从所有姓名中取出姓氏。

图5

学生相互合作编写程序、调试运行。

设计意图:帮助学生理清用计算机解决问题的过程,落实培养计算思维的目标;通过合作编写程序,既能增强学生的获得感,又能提升学生的反思意识。

4.回顾关联知识,期待项目成果

师:本节课我们创设了一个总的项目“编程统计衢州五校的百家姓”,然后通过算法的设计,将其分成了六个子项目。通过第一个子项目“读取数据”,我们学习了pandas模块、Series和DataFrame两种数据结构、read_excel()函数;通过第二个子项目“取出姓氏”,我们回顾了用计算机编程解决问题的一般过程,学习了两种数据结构中的常用属性index和常用函数append。后面的课程我们将继续学习其余四个子项目以及统计“大众化名字”等拓展项目,让我们一起期待项目的实现吧。

设计意图:通过课堂总结,帮助学生整理学科知识并调动学生对后期项目学习的积极性。

●反思与困惑

1.项目化学习开展

项目化学习这五个字看似简单,但要真正执行起来,真正让课堂有效起来,是要付出很多努力的。创设项目要真实有趣,合作探究要涵盖所学内容,让学生的能力在完成项目的过程中得以提升。可见,项目化学习是一个系统工程,需要教师用整体的思想去设计教学,用分步的思想去开展项目。

在将知识融入项目的过程中,学生为实现真实有趣的项目并满足自己的成就感,对项目中所要学习的知识是十分渴望的,因此,在探究“如何从外部文件中读取数据”的过程中,学生积极且高效地开展自主学习,并取得了优异的成果。

项目化学习解决了真实问题,培养了核心素养,但其所涵盖的知识是有限和特定的,在平时的教学中还需要采用多元化的教学方式。

2.计算思维落实

笔者一直在思考什么是落实计算思维的信息技术教学。在“如何取出姓氏”的探究中,以往课堂教学的重心都会放在程序的编写上,那是因为学生没有理解计算机是如何进行处理的。在本课中,笔者通过抽象建模、设计算法、编写程序、调试运行,锻炼学生形成自主解决问题的能力,使学生能够采用计算机来界定问题、抽象特征、建立结构模型、合理组织数据,从而能够真正地通过计算机编程的方式解决问题。

猜你喜欢
百家姓子项目衢州
服务进程中消费者对子项目顺序的遵从性研究
百家姓之“乐”
活性炭为中心综合项目总体布局
百家姓
衢州烂柯山
铁拳剿劣 亮剑斩污 衢州环保坚决打好护水保卫战
衢州治超亮剑
衢州某大桥V型刚构挂孔研究
基于案例的电子技术实践教学内容与教学设备的设计
百家姓之方(Fang)姓