林晓明,李宏贞,梁丽霞
(1.广东省广州市南海中学,广东广州 510170;2.广东省广州市荔湾区沙面小学,广东广州 510170)
2017版《普通高中信息技术课程标准》强调教育要面向学科核心素养,而计算思维是信息技术四大学科核心素养之一,是信息技术学科教学首要培养目标[1],因此在Python教学中培养学生的计算思维是一项重要的任务。同时新课程标准强调要通过项目教学法开展教学,突出学生的实践活动,避免信息知识的机械接受,明确指出要紧紧围绕学科核心素养,把项目整合于课堂教学中,重构教学组织方式。根据《广东省教育厅关于普通高中体育与健康等科目学业水平考试工作的指导意见》,广东省2020届及以后的学生要进行信息技术学业水平合格性考试。如何在应考的同时,做好Python项目式教学,培养计算思维,是一线信息技术教师迫切需要解决的难题。
因此,笔者联合科组的教师和广州市西关外国语学校的教师在2019年申报了广东省教育技术中心课题《基于计算思维培养的Python项目式教学策略研究》,对Python教学、计算思维培养和项目式教学进行实践探究。经过两年的实践研究,形成了基于计算思维培养的Python项目式教学模式。
广州市所使用的高中信息技术必修课中Python教学内容主要集中在必修1《数据与计算》,必修2《信息系统与社会》,在第3单元有利用Python设计开发信息系统的内容,经过整合梳理,形成了以下几个项目(如图1),在教学中以这四个项目主题开展Python项目教学,基本不进行拓展。主要原因有两个,一是课时比较紧张,二是学生基础一般。
图1 书本Python项目梳理
课题组成员在教学过程中,逐渐形成了Python教学、计算思维培养和项目式学习三位一体的教学模式(如图2),并在广州市南海中学和广州市西关外国语学校进行了教学试验,效果良好,适合广州市高中新课程。该教学模式的特色在于理清了Python项目式学习的开展流程结构,详细描述了开展的操作步骤,可操作性强,便于借鉴使用,创新之处在于提出了范例学习的两种可操作性变式,灵活可用。
图2 基于计算思维培养的项目式教学模式
1.范例学习
首先设计好项目范例。范例可采用并列反复式,范例一与范例二是平等的关系,来进行知识点的强调与重复,或强化知识点的学习或重点知识点的学习。如“算法探究”项目,范例一可选择鸡兔同笼问题,用解析法和穷举法两种方法去解决问题,范例二可选择斐波那契数列,用递归法与迭代法两种方法去解决问题。讲完这两个范例,相当于为学生打下了基础,剩下的程序留给学生自主探究学习,进行拓展。范例的学习也可以采用递进深入式,范例二是范例一的深入和扩展,强调知识点的不断深入与拓展。如“生活问题解决”项目,范例一是存款收益,涉及循环结构,范例二是火柴棒摆数字,不仅涉及循环,还涉及函数的使用,从难度和知识点上范例二是范例一的递进深入。在当前课时紧张的情况下,范例学习不适宜多,两个是最为适宜的。
2.项目学习
学生参照之前学习的范例进行本项目其他Python作品的制作,也就是编写项目内其他程序作品,如在“算法探究”项目中,学生要完成本项目教师所讲的范例程序之外的其他所有程序,必须要经过小组探究,分工完成。这时学生开展项目学习会存在很多问题,首先是存在大大小小的技术难点。教师帮助学生解决技术难点的方法主要有两个,一是把程序做成半成品,只挖空让学生补充完整;二是充分利用微课及Moodle教学平台给学生搭建脚手架,把技术难点做成短小精悍的微课,有条理地放在Moodle教学平台上。当然学生也可以回顾范例,举一反三,也可以上网搜索,询问教师和小组探究。Python作品程序的编写,是项目制作阶段的重点和难点,需要全组所有成员的共同参与,强调所有成员必须掌握。到后面的研究报告撰写、项目活动记录、演讲PPT的制作,则可以分工合作,让一个学生上网搜索整理本项目有关的理论知识,另一个学生可以在教师给出的模板和参考范例的基础上进行可视化报告的撰写,第三个学生可以进行项目活动记录表的填写,第四个学生进行演讲PPT的制作。经实验研究发现,四个人一组的小组搭配是最佳的,这样的小组人人有事干,不多也不少。
3.分享评价
学生按要求提交作品、可视化报告、项目活动记录表、演讲PPT,教师进行全班共享,学生可以自行浏览。同时,可以进行随机抽号抽取小组上台演讲,台下的学生可按照教师给出的评价标准边给其他小组评价边听台上学生的演讲。最后结束前,教师对整个项目进行点评提升。分享评价阶段是项目学习的点睛之笔,是培养学生计算思维最直接的关键环节。在这个环节,教师要强调学生的项目总结须围绕本项目主题,如学生总结反思“综合问题解决”项目时,要思考用计算机来解决一个综合问题是怎样一个过程、如何进行分析、哪些是关键问题,也就是让学生总结软件开发的基本流程。从而帮助学生理解计算思维的本质特征,即抽象、设计、自动化,培养学生的计算思维。
对应上面的教学模式流程路线,教师要进行相应的实施操作(如图3)。
图3 教学模式实施步骤图
1.项目备课
把书本的相关知识点整理成一个项目,在依纲靠本的同时,可以对教材进行适当改造。如绘制函数图像这个案例可以结合生活实际、解决生活问题进行设计,设计成基于最优用电缴费方案的电费计算器,或者解决哪种手机套餐更合理问题的手机费用计算器。备项目时,也要注意如何把计算思维渗透进项目中,强调不是为学编程而学习,而是为锻炼计算思维而学习,强调举一反三,强调解决问题的本质。同时也要备学生,掌握学生的知识水平,根据学生的学情来调整项目的难度。若学生水平一般,可把项目程序以挖空的形式让学生补充完整,可在项目中提示得更详细一点;若学生水平比较高,程序可挖空多一点,提示可相对少一些,甚至可以让学生自行编写。项目主题确定好后,最重要的一步是备资源,要花大力气备资源,为学生的项目学习提供脚手架。首先要把项目范例备出来,把项目活动记录表设计出来,把可视化报告范例设计出来,把评价标准备好。接着要充分考虑学生在项目制作过程中会遇到哪些技术难点、会卡在哪里、需要怎样的知识储备才能顺利完成本项目,为此,教师可以提前制作相关的技术微课、相关的范例、清晰标注学生的操作步骤、给予学生更多提示。
2.范例讲解
这里要注意教学设计,程序设计是一门枯燥的学问,因此要注意兴趣导入,或联系生活学习实际引入,或游戏引入,或激趣引入,总之要吸引住学生的眼球。如讲斐波那契数列时,可以先讲斐波那契数列如何神奇,与生活息息相关,从而吸引学生的兴趣。范例讲解不能满堂灌,教师讲解时间要控制在10分钟以内,要把课堂的大部分时间留给学生自学探究。教师可以提前准备好资源,搭建好脚手架,如原理讲解可用网络视频,程序分析可制作微课,并根据学情设计好留白的不完整程序,让学生通过自学探究可以完成。教师堂上节省出来的时间可以对学困生进行一对一的个性化辅导,不让一个孩子掉队。
3.项目监控
教师首先要进行项目目标的引领,强调本项目的主要目的有两个:一是探究哪方面的问题,如“算法探究”项目重点探究什么是算法?有哪些常用的算法?这些算法的特征和区别在哪里?碰到一个新的问题应该使用什么算法?另一个是学习Python编程知识,这个项目涉及到了哪些Python语法?用到了哪些Python重点语句和结构?接着教师要进行小组分工引导,强调分工合作。接下来教师重点辅导各小组完成项目程序作品的制作,指导学生利用教师提供的资源,包括微课和技术提示,完成作品制作,同时及时发现学生的难点和卡点,及时进行集中讲解或者个别辅导。最后是进度监控,监督每个小组项目活动记录表、可视化报告、演讲PPT的制作。可以借助Moodle教学平台等技术手段进行监控,比如,要求这节课这个时间点要上交作品程序到平台,另一个时间点要提交小组活动记录表,教师登录平台即可查看。
4.评价总结
这一步主要的目标是通过分享对项目主题进行深化、提升、巩固。教师要求各小组利用Moodle教学平台进行共享作品程序及项目活动记录表、可视化报告、演讲PPT,让学生依据教师设计的评价标准进行评分,同时组织好各小组的演讲,最后教师综合各小组探究成果,对知识点进行总结提升。
该教学模式要顺利实施,关键在于两个方面。一是支撑资源的丰富度和适切性。教师要给学生足够的支撑,让学生能解决项目制作过程的难点和卡点,教师提供的微课、技术提示、操作指导要到位、有针对性、短小精悍,并让学生容易获取。二是项目制作过程引导监控要到位。教师要一步步监督引导学生的制作,要求学生按时按点提交过程性资料,教师要及时巡查了解各个小组的进度,并给予及时的督促与帮助。
算法是信息技术学科最重要的学科大概念之一,所以“算法探究”项目是非常重要的一个Python项目。必修课本涉及以下四个算法:解析法、穷举法、迭代法和递归法。由于学生对于算法基本是零基础,所以教师要在范例讲解时,把这四个算法讲得清楚透彻,学生在后面的项目制作、小组探究时才能举一反三,才能深入探究。但是范例讲解时间不宜过长,否则学生没有时间进行后续的项目制作、分享评价的活动。
因此,笔者用一节课的时间来讲解“鸡兔同笼”范例,并用解析法和穷举法两种方法来求解。讲解解析法时,先引导学生用抬脚法和解方程的人工方式来进行求解,然后指出解析法其实就是使用数学的解析式来求解问题。接着讲解穷举法,借助电子表格列举出鸡兔的所有头数和脚数的方法来类比穷举法,指出穷举法就是把所有的情况列举出来,符合条件的就是答案。讲解完后,分别给出解析法和穷举法的不完整代码程序,让学生补充完成,并调试运行得到结果。最后教师再进行评讲,公布正确答案,并总结解析法和穷举法算法的含义、特征、适合范围。
在项目的第二课时,笔者讲解了兔子问题“斐波那契数列”范例,分别用迭代法和递归法来求解。由于迭代法和递归法非常难懂,在有限的课堂时间,教师不一定能讲解到位,学生听一遍也难以听懂。因此,笔者把知识点做成了三个微课(用迭代法求斐波那契数列、用递归法求斐波那契数列、迭代法与递归法的比较),时长都在5分钟之内。上课时把微课放在Moodle平台上,并分别给出迭代法和递归法的不完整代码程序,让学生补充完成,并以作业的形式提交。最后由教师对容易出错的地方进行问题点评,并对这两种算法进行总结、归纳和比较,加强学生对这两种算法的理解。
在项目的第三、第四课时(如果进度慢,可以增加一个课时),进入项目选题和制作环节。学生四人为一小组,要求至少选择课本的两个案例进行探究制作,把程序作品编制出来,并绘制好流程图、作好项目活动记录、写好研究报告,分析算法特征并做成演讲报告。最后把成果资料提交到南海中学Moodle平台,全班共享,教师每种算法抽取两个小组上台进行演讲,每组3分钟左右。通过分享算法探究过程,加深学生对算法的理解,最后教师再进行总结提升,至此,算法项目目标可以基本达成。
项目学习一定程度上解决了编程教学枯燥无味的困境,提高了课堂教学效果。传统的讲练结合、按部就班的程序教学,学生学习兴趣不高,有畏难情绪,最后到了学不会、不想学的境地。教师依照本模式精心备课后进行项目实施,学生普遍比较感兴趣,小组合作学习热烈,有助于激发学生的学习兴趣。
课题组教师在项目学习前后对学生进行了计算思维量表的调查,调查问卷采用的是华东师范大学顾小清教授及其研究生白雪梅翻译改进的测量K12阶段学生计算思维量表的22-CT测试。该量表采用李克特5级量表,包括5个部分:创造力、算法思维能力、合作能力、批判性思维、问题解决能力共22项指标[2]。本调查分发了1218份问卷,由于大部分学生后测没有时间做,所以有效问卷为288份。笔者对前后测数据进行配对样本T检验[3],从下表结果中可以看出,这5个维度在均值上均有提升,sig(双侧)值为.000,存在显著差异。在课程结束前,随机抽取了6个学生进行访谈,重点考查学生利用Python编程解决问题的能力,大部分学生表示Python编程不再神秘,已经知道Python是如何解决生活学习中的问题。通过访谈,可以看到学生计算思维能力是有提升的。
计算思维配对样本T检验
在学期末,对Python的编程知识及算法知识进行了集中测试,测试的形式为选择题、判断题和程序补充填空题,总分为100分。全级平均分为75.5,合格率达81%,验证了学生在课程学习后计算思维得到了发展。同时,对学生以小组的形式自行编写并提交的Python编程作品进行分析,优秀作品约占20%,合格作品占90%,可以看出学生基本可以做到举一反三、灵活运用已学的知识去解决生活和学习中遇到的问题。
本研究尝试提出了基于计算思维培养的项目式教学模式,通过实践检验,该教学模式有助于提高学生学习兴趣,提升学生计算思维能力和学生信息技术成绩。但是,本研究存在诸多不足,第一,由于疫情影响,进行了近一个学期的线上学习,影响了项目的开展。第二,问卷的发放不到位,也影响了调查结果的广度。信息技术时代,如何通过Python教学培养学生的计算思维仍然是重点关注的问题。基于计算思维培养的项目式教学模式是否可以进一步应用推广到同类水平学校,效果如何,还需要进一步研究。