基于儿童生活经验的编程能力提升策略
来源:用户上传
作者:
在小学阶段的STEM课程中,编程是其中一个重要的组成部分。STEM教育倡导学习的真实性,关注学生的生活经验,将生活经验作为学习与创造的源泉。我国学者余胜泉和胡翔将STEM教育与跨学科理念相结合,提出了三种跨学科整合方式:学科知识整合取向采用基于问题的学习模式,生活经验整合取向采用基于项目的学习模式,学习者中心整合取向采用学生主导项目的方式[1]。学生的生活经验是项目式学习的重要资源,能够帮助学生建立学习自信,并在未知和已知间搭建桥梁。
建构主义理论认为,学习是学生在已有知识和经验的基础上进行的自主建构行为。所有的学习都涉及原有经验的迁移。只有通过广泛的迁移,原有的经验才得以改造,才能够概括化、系统化,原有的经验结构才更为完善、充实[2]。在小学阶段开展编程教学,调动学生的生活经验是一种重要的学习策略,要求不能片面追求程序的复杂性,应更着眼于学生的综合能力发展,遵循低起点、重普及、分层培养的原则,促进学生真正理解和掌握程序设计、算法思维,获得有效并广泛的能力提升,让更多学生享受优质的普惠教育。
一、依托生活经验,确立项目主题
项目式学习是依托生活实际、以学生为中心的学习方式,强调让学习发生在有意义、有趣味、有空间的问题情境中,由教师提供一定的学习支撑和向导,学生则通过自主探究、有效合作来完成学习。项目式学习非常适合小学的编程教学,因为程序设计通常有明确的任务和作品产出,完成程序设计的过程也是项目式学习的过程。学习项目的主题选择应考虑下列原则。
一是主题应基于学生年龄特点和生活经验,支持程序的故事情节设定。心理学研究表明:学生学习的内容和学生熟悉的生活背景越接近,他们自觉接纳知识的程度就越高。小学生的认知特点是倾向于通过直观体验感知事物规律。基于学生的生活经验选择项目能够帮助学生降低学习的门槛,让学习“活起来”,更快地形成学习联结,并学会从编程的角度来理解身边的问题。
二是项目“故事主线”和“知识点线”要能够“双绞成线”并贯穿于整个学习过程,与课堂导入、知识探究、拓展提高等环节有机结合。在教學过程中引导学生对项目的情节、角色以及行为进行分析,也就是在帮助学生检索已有学习经验并发现学习需求,进而激发学生主动而强大的学习动机。
二、再现生活场景,理解抽象概念
程序设计中的很多知识点比较抽象,如对于程序结构、递归思想、模块化设计等,学生容易感到困难,并产生一定的分化。但这些抽象的概念在生活中都有其原型,教师要善于将生活经验作为转化抽象知识的敲门砖,帮助学生建立学习的信心,使专业术语更生活化、人性化,使学生容易掌握并乐于使用。
1.将程序“演”出来
小学阶段的编程教学一般可按照“情节设计—流程规划—程序编写—作品评价”的步骤进行设计,让学生通过观察、模仿、探究的方式完成学习。这种方式教学时间短、成功率高,但很多学生的理解程度不够深,因为坐在电脑前的学生总是学习中的“第三方”。如果教师能引导学生代入程序中的角色,并为自己设计表演脚本,将有利于学生更深刻地领悟程序结构中的逻辑关系。
如Scratch编程教学的“水族箱”一课,任务是“让小金鱼在水族箱里随机的位置游来游去”,难点是“随机数”和“在多少秒内滑行到水平位置和垂直位置”两个命令的搭配使用。教师通过教室位置的类比,使学生理解了通过二维坐标能够确定平面上的点位,接着让几个学生扮演“小鱼”。每条“小鱼”左右手各有一个骰子,在出发前两手同时投掷一次,根据得到的两个数字到达教室内的指定位置。学生通过这一活动获得了直观的感受。接着,教师再告诉学生:在Scratch中也有一个骰子,就是“在几和几之间随机选一个数”,然后让学生在Scratch中再现刚刚表演的内容。虽然教师没有操作示范,但学生都能理解并完成了任务。又如在“森林运动会广播”一课,要求通过单击“开始”按钮,让所有“运动员”到指定位置并开始赛跑,比赛结束后切换舞台背景进行颁奖。在教学时,教师扮演发令员(发挥“按钮”和“广播”的功能),请学生扮演小动物,当学生收到“广播”后执行指令到达指定位置,这样就把程序表演出来了。在开始编程后,每个学生都能理解“广播”的逻辑意义,并能够举一反三,用“广播”完成了舞台背景的切换。
2.将语句“讲”出来
算法的设计是程序设计的关键,表示一个算法可以用很多形式,常用的有流程图、PAD图、自然语言等。回顾编程语言的历程:第一代程序员通过在纸带上打孔实现用0和1的编程,第二代汇编语言可以通过指令来操作内存。从机器语言到汇编语言是一次伟大的飞跃,它代表着软硬件的独立。之后便是过程式语言,并产生了一种新的编程思想,即面向过程的程序设计。可以设想,计算机语言的未来将越来越贴近自然语言,编译器可以将自然语言转化为机器可执行的语言。
在小学阶段的编程教学中,很多教师大量引入流程图,认为这样可以帮助学生分析程序设计,提高思维能力。而笔者认为,在进行算法教学时,可以结合“角色”通过自然语言的方式分析程序,这样更贴近初学者的认知特点。例如,在教学条件语句时,可以结合各个角色,让学生使用“如果……那么……”造句的方式将程序讲出来:如果小车碰到红色,那么小车停车;如果苍蝇拍碰到苍蝇,那么苍蝇消失并加一分……实践表明,使用自然语言描述能很好地帮助学生理解程序结构,能“讲出来”是学生能够理解和掌握的一种外在表现。
3.将概念“拿”出来
这里的“拿”指的是将抽象的概念具象化,让它可感知、可“触摸”。马克思指出,思维的逻辑运动中存在着两条方向相反的道路,第一条是“完整的表象蒸发为抽象的规定”,第二条是“抽象的规定在思维行程中导致具体的再现”。这两条道路首尾相接,构成“具体—抽象—具体”的否定之否定的过程,也就是人对事物本质的完整的认识过程[3]。学习是从具体到抽象,再从抽象到具体的过程,抽象概念的转化是教学设计中重要的一环。面对复杂概念的教学,教师可以引入生活中可参照的原型,将概念趣味化、生动化,使专业术语富有情感和活力,与可触摸的世界接轨,帮助学生更轻松地掌握复杂概念。 例如,“小猫出题”一课的主要任务是认识并学会使用变量,并搭配随机数完成计算小游戏。这是“变量”这一术语第一次出现在小学生的面前,如果理解不透彻会影响后期的学习。在教学时,一般步骤是先出示范例,通过演示两个“加数”的随机变化,引出“变量就是像加数这样没有固定的值,随时发生变化的量”“给变量赋于一个简短容易区分的名称就是变量名”。这样的设计虽然也使用了“加数”这一数学学习经验进行了类比,但是很多学生仍然感到比较抽象。这时,就可以参考下面的例子,从学生们熟悉的生活场景入手教学“变量”。
教师先在黑板的边缘贴上“光荣榜”“今日值日”的字样,并画好方框,然后开始提问。
教师:光荣榜里的学号会变吗?
学生:会变的,谁表现好,谁的学号就可以出现在里面。
教师:方框里的数字会变,但是方框代表的意义会变吗?
学生:方框代表的是“光荣榜”,意义不会变。
教师:我们可以把变化的数量称为变量,数字虽然在变,但是数字代表的意义不会变。
此外,笔者在参加教研活动听课时,还看到一位教师制作了一个纸盒子,盒子上面標注的是“变量名”,通过这种教具演示的方式也能较好地帮助学生理解“变量”。
三、丰富学生体验,应用创新提升
编程的目的本来就不是脱离生活实际的,而是用于解决工作和生活中的问题。小学阶段的编程学习除了制作小游戏外,也可以让程序更加生活化。教师可以引导学生将学过的知识用于生活,模拟一些生活场景,拓展学生的生活经验,培养学生学习、运用信息技术的兴趣和意识。
如在自主设计的“电子点单——链表”一课,学习目标是通过链表和变量设计一款餐馆的点单程序,要求能显示菜名并自动结算。在完成基本功能后,学生们积极参与了程序的升级。正因为是基于生活,学生们提出了很多点子,如:美化界面,能够支持在一体机上触摸点菜,营造温馨的消费环境;设置一个厨师角色,结合链表进行随机叫卖,并实时说出消费额;能将错点的菜品删除并在总价中一并扣除相应金额;能设置会员卡功能,创设会员卡号,使用会员卡自动打折消费……学生也遇到不少困难,但也正是这些难点的攻克给他们带来了快乐,最终呈现出功能多样、风格各异的点单程序。
又如“谁是幸运星——造型的切换”一课,教师和学生制作了一款抽取学号的程序。抽签是班级活动中经常用到的,学生们的作品活泼可爱,在班队活动中大放异彩。课堂上,教师有意识地激活学生的相关生活经验,培养学生从技术的角度观察生活,从生活的角度感悟编程设计,鼓励学生使用独特的个性化表达。
在人工智能时代,编程学习指向的是进一步丰富STEM教育的内涵,提升学生的综合能力,培养创新型、创业型人才。在教学中,让学生的生活经验与编程学习更好地“碰撞”,会让更多的学生爱上编程,体会到创新创造的乐趣。
参考文献
[1]余胜泉,胡翔.STEM教育理念与跨学科整合模式[J].开放教育研究,2015,21(4):13-22.
[2]顾援.迁移与课堂教学[J].教育理论与实践,2000(10):39-46.
[3]孔易人,汪岩桥.具体抽象律和内涵外延反变律及其比较[J].理论探讨,1989(3):89-93.
(责任编辑 郭向和)
转载注明来源:https://www.xzbu.com/9/view-14999406.htm