义务教育阶段编程教学的思考与实践
刘志超 张杨
教育部办公厅印发的《2019年教育信息化和网络安全工作要点》中提出,要“推动在中小学阶段设置人工智能相关课程,逐步推广编程教育”。随着国家相关文件的出台,编程教育跃然纸上,作为义务教育阶段的信息技术教学研究人员,笔者感受到时代在召唤,那么义务教育阶段的编程教学路在何方?
君子务本,本立而道生
追本溯源,编程教育的育人价值在哪?我们不妨从编程的本源来理解。编程就是编定程序,是让计算机代为解决某个问题,对某个计算体系规定一定的运算方式,使计算体系按照该计算方式运行,并最终得到相应结果的过程。
学习编程可以让学生更透彻地理解计算机是如何工作的,继而学生可以利用计算机科学技术思想和方法分析问题,这为学生适应信息社会的学习、工作和生活奠定了坚实的基础。学习编程能够很好地落实“提升智育水平,促进思维发展”和“信息技术核心素养”。一定的运算方式可以理解为算法,解决问题的算法呈现多样性的特点,多样性表现为“一题多解”,这就为学生思维能力的发展提供了适宜的土壤。爱因斯坦曾说过:“教育的价值,不在于学习很多事实,而在于训练大脑会思考。知识当然重要,但知识不是教育的全部内容,超越知识的另一个维度就是思维能力。”我们一定要认识到学习编程就是训练大脑会思考,就是促进思维能力发展这个方向,只有方向对了,我们的努力和付出才有价值和意义。
“四有”并举,促进思维发展
1.有情境
教育是什么?教育不是灌输,而是点燃与唤醒:点燃学生的学习热情,唤醒学生潜在的自我。在编程教学中,问题情境能够很好地实现“点燃与唤醒”,而且凸显了编程解决问题的独特价值。学生在解决问题过程中选择工具与资源,落实信息技术核心素养中的“信息意识、数字化学习与创新”,并在解決问题过程中投入思考,发展思维,在情境中学习,感受学习编程就是学习生活。
2.有体验
情境中的问题是具体的、形象的,解决问题需要对问题进行抽象与建模,体验就是具体形象与抽象建模之间的桥梁与纽带。在体验中深入理解问题,为问题的解决奠定坚实基础,为实现抽象与建模提供强有力的支撑,让抽象与建模不再高不可攀、遥不可及,让信息技术核心素养中的计算思维的培养自然而然、水到渠成。
3.有空间
学生的潜能是无限的,只要给予学生思考的空间,学生会给我们带来别样的精彩,这点在编程教学中体现得尤为突出。教师把学生的思维点燃,学生在理解问题的基础上,在抽象与建模的模糊状态下,迫不及待地想求解问题,这时候学生需要的就是思维的空间、试错的空间、静静地思考的空间。
4.有对话
对话是启发,是碰撞,是升华,是编程教学将思维引向深入的手段与方式。作为启发的师生对话,是鼓励,是发现,是潜移默化的引领;作为碰撞的生生对话,是鞭策,是借鉴,是互通有无的启迪;作为升华的与思维的对话,是审视,是成长,是醍醐灌顶的通透。
“四有”并举,促进思维发展的实践
笔者所在地区2015年将Scratch纳入信息技术教材,信息技术教师对Scratch编程教学已有一定的思考与实践,但受传统软件教学方式的禁锢,还没有把握编程教学的核心与实质。下面,笔者以《棋盘麦粒》为例对“四有”进行教学实践,这是对“四有”的具象化,以此希望更多的教师能够投入更多的思考与实践,为编程教育的全面发展、编程教学的稳步推进以及学生信息素养的不断提升贡献力量。
1.呈现故事,提出问题
同学们,你们听说过《棋盘麦粒》的故事吗?故事的情节是这样的:
古时候,印度有个国王很爱玩。一天,他对大臣们说,希望得到一种玩不腻的玩意儿,谁能贡献给他,将有重赏。
不久,有个聪明的大臣向他献上一种棋子,棋盘上有64个格子,棋子上刻着“皇帝”“皇后”“车”“马”“炮”等字。下这种棋子,是玩一种变化无穷的游戏,确实让人百玩不厌。国王就对那个聪明的大臣说:“我要重赏你。说吧,你要什么,我都能满足你。”
那个大臣说:“我只要些麦粒。”
“麦粒?哈,你要多少呢?”
“国王陛下,你在第一格棋盘上放1粒,第二格上放2粒,第三格上放4粒,第四格上放8粒……照这样放下去,把64格棋盘都放满就行了。”
国王想:“这能要多少呢?最多几百斤吧,小意思。”于是就对管粮食的大臣说:“你去拿几麻袋的麦子赏给他吧。”
故事讲到这,你想提出什么问题?
学生不约而同地问道:“到底要给多少粒麦子呢?”
在此环节,教师为学生创设问题情境,激发学生学习的积极性,问题驱动学生投入思考。
2.走进故事,分析问题
其实,这个游戏就是国际象棋(如下图),国际象棋有64个格子,那么,我们只要在第一格棋盘上放1粒,第二格棋盘上放2粒,第三格棋盘上放4粒,第四格棋盘上放8粒……以此类推,64格棋盘放满,棋盘上所有的麦粒就是应该赏给大臣的。
首先,我们思考,一共放多少次?
其次,我们思考,后一个格子放的麦粒数和前一个格子放的麦粒数的关系?
3.尝试解决,抽象建模
好,我们共同尝试解决,老师手中的这个盒子用来放麦粒,老师叫到哪位同学,哪位同学就往盒子里扔麦粒(只要说出扔的麦粒数即可),其他同学判断这位同学扔的麦粒数是否正确,如果正确,算出盒子里的麦粒数。第一位同学,扔1粒,那么盒子里有1粒麦子。第二位同学,扔2粒,对不对?那么盒子里有几粒麦子?……扔的同学很容易把握规律,就是前一位同学麦粒数的2倍,当扔到一定数量时,计算的同学发现没法计算了,因为数量太大了,那么怎么办呢?
有的学生说可以用纸笔计算,有的学生说可以用计算器计算,教师让学生尝试用想到的方法计算,最终大家都说数量太大,用这些方式都不好计算。
同学们,回顾刚刚扔麦子的过程,不难发现,我们重复地往盒子里扔麦子,只是每次扔的数量在发生变化,而且数量变化是有规律的,我们想一想解决这种简单重复的问题,什么工具最擅长?对了,Scratch啊,计算机的计算速度是我们人类无法企及的,我们可以通过程序让计算机帮助我们解决这个问题啊!
在此过程中,学生在体验中深入思考,理解问题的本质,学生被引向对具体问题的抽象,对问题进行初步、模糊的建模。
4.算法运用,求解问题
教师请学生启动Scratch,开动脑筋,尝试解决问题,学生全神贯注地投入思考,尝试运用合理算法解决问题,同时,教师引导学生进行讨论,交换思想。渐渐地,有学生举手示意问题解决了,教师引导学生通过读程序的方式检验自己的程序:第一次循环,麦粒数是多少?麦子总数是多少?第二次循环……读着读着,学生就发现自己程序的问题了。教师为学生提供一个检验自己程序的思路,同时也将学生的思维引向深入,在读程序过程中,学生一次又一次发现问题、解决问题,进而发展了思维。
再次举手示意的学生,一定是已经解决问题的学生,他们在运用合理算法求解问题的过程中建模,发展计算思维。
在此环节,学生开动脑筋,倾情投入,大胆尝试,在对话中,深入思考,运用各种算法解决问题,收获成功的喜悦。
5.价值体认,情感升华
当学生发现应该给的麦粒数如此庞大时,教师提问:“如果你是国王,你给不给?”学生的回答五花八门、千奇百怪,但总体上学生认为不给,因为给不起。教师引导学生齐背“社会主义核心价值观”,同时强调社会主义核心价值观对个人层面有哪些要求,指向“诚信”的个人层面核心价值为学生提供正向的思考,践行社会主义核心价值观是我们每个公民的义务。师生达成共识:必须给!
6.智慧碰撞,思维发展
教师追问:“那怎么给呢?”
有的学生说“分期付款”,有的学生说“给种子”,有的学生说“让大臣自己制作棋盘,装多少,给多少”……
教师呈现故事的结局。
管粮食的大臣说:“请您下令打开粮仓,然后请献棋的大臣自己一粒一粒地数出那些麦子就行了。”
“那么要数多长时间呢?”
管粮食的大臣计算了一下说:“假设每秒钟能数2粒麦子的话,他每天数上12小时,就是43200秒,数上10年才能数出20立方米,要数完那个数目将需要2900亿年呢。他能活多少年呢?再说,枯燥的生活能折磨人,他这样下去岂不要短寿?因此我想,他的本意并不是想要得到那些不可能得到的麦粒,他只是试试有没有比他更聪明的人罢了。”
国王大喜,夸奖道:“看来,至少你比他还要聪明呢!智慧人物治理国家,国家才能兴旺发达。我决定提拔你俩当我的左右宰相!”
这是一次智慧与智慧的对话,这是一次思维与思维的碰撞,在这样的过程中,学生收获思维的发展、品格的形成、能力的提高。
结束语
随着人工智能时代的到来,编程教育与编程教学迎來了前所未有的发展机遇,也给我们信息技术人带来了的前所未有的挑战,大浪淘沙沉者为金,编程教育的回归彰显其育人价值,促进学生思维发展,为学生的人生奠基。