基于“编程一小时”与Scratch培养中小学生编程能力
2020-10-09张琦旋刘扬徐瑞祺
张琦旋 刘扬 徐瑞祺
摘 要: 在人工智能时代的背后,驱动这个美好社会的底层是编程,其搭建的底层架构为人工智能的实现打下良好的基础,因此,编程已成为未来发展中不可或缺的一项基本技能。中小学生作为信息时代的“数字土著”,更需要具备基本的编程能力以应对未来信息时代中的各种挑战。但目前国内的编程教育还存在教学内容单一,教学方法不到位,编程教育相对其他课程孤立等问题。因此,论文通过Scratch 和“编程一小时”图形化和具有趣味性的特点,将程序流程化,引导学生入门并自主完成程序设计,以该平台为工具进行编程教学,更有利于培养中小学生的编程能力。
关键词: 编程能力;编程一小时;Scratch;中小学生
中图分类号: G434 文献标识码: A DOI:10.3969/j.issn.1003-6970.2020.08.063
本文著录格式:张琦旋,刘扬,徐瑞祺,等. 基于“编程一小时”与Scratch培养中小学生编程能力[J]. 软件,2020,41(08):229-232
【Abstract】: Behind the era of artificial intelligence, the bottom layer that drives this beautiful society is programming, and the underlying architecture it builds lays a good foundation for the realization of artificial intelligence. Therefore, programming has become an indispensable basic skill in future development. As a “digital native” in the information age, elementary and middle school students need to have basic programming skills to meet the challenges of the future information age. Through the graphical and interesting features of Scratch and “One-hour Programming”, the thesis streamlines the program, guides students to get started and completes the program design independently, and uses the platform as a tool for programming teaching, which is conducive to cultivating the programming ability of primary and middle school students.
【Key words】: Programming ability; Programming for one hour; Scratch; Primary and middle school students
0 引言
随着互联网的不断发展与成熟,人工智能也得到了迅猛的发展,编程是互联网与人工智能等各种高新技术的基础和核心。据美国新媒体联盟(New Media Consortium,NMC)的《2017年地平线报告(基础教育版)》,在未来1-2年内,编程作为一项专业素养,将逐渐成为驱动基础教育发展的关键要素[1]。
近年来,编程教育已逐渐进入中小学阶段,很多发达国家都在基础教育中设立了编程课程大纲。作为互联网大国,我国在少儿编程教育上也开始普及,国务院发布的《新一代人工智能发展规划》提出要“广泛开展人工智能科普活动,在中小学设置人工智能相关课程,逐步推广编程教育”[2]。中小学阶段是学生增长知识和智慧的关键时期,也是思维从具体形象逐步向抽象逻辑过渡的阶段,但抽象的逻辑思维在很大的程度上仍以感性经验为主,具有很大的直观性[3]。因此将编程可视化的“编程一小时”网站和Scratch在中小学生的编程教育中发挥着重要的作用,将中小学生 的编程教学与该平台相结合可以达到寓教于乐的学习效果。
1 国内外中小学编程教育的现状
在人工智能时代,编程已逐渐成为一项必不可缺的技能,因而国际产业界和教育界都开始重视编程能力的培养,各个国家也开始将编程能力的培养作为创新性人才培养战略的实施重点。国外有关编程教学的研究较早,从20世纪80年代起,编程教育研究就已从单纯的编程教学转向编程与其它学科的融合,并将编程作为一种表达思维的工具[4]。欧美等发达国家和地区已经将中小学编程教育纳入到国家层面的战略规划或行动计划中。
相比之下,我国中小学编程教育的实践与研究总体还处于初级发展阶段,主要以行业、企业的推广和实践为主,中小学阶段编程教育的课程标准尚未建立,正规的编程教育师资队伍极为短缺,规范的教材体系和成熟的教学模式尚在摸索之中[5]。但是近年来,随着中小学编程教育逐渐受到重视,我国已将青少年编程纳入到国务院发展规划中,作为国家级战略推进,部分学校已经将编程教育融于信息技术教学中。中小学生的逻辑思维能力处于不断发展的过程,相对而言并不成熟,如果直接使用高级程序设计语言進行编程会有一定的难度,尤其是国内的孩子,更是受到英语、数学、自然语言以及逻辑思维等多重因素的限制[6] ,因此一些青少年编程平台逐渐受到青睐,比如在国内应用较多的编程平台有Scratch、“编程一小时”等。
2 中小学生编程教育存在的问题
从“计算机教育时代”到“信息技术时代”,信息技术教育已超越了单纯的计算机技术的训练阶段,发展成为与信息社会人才需要相适应的信息素养教育[7]。中小学的编程教育也越来越受到重视,但由于编程教育正处于起步阶段,所以在教学内容和方法等方面还存在一些问题。
2.1 编程教育的教学内容单一
在目前的编程教育中,以Scratch为工具展开教学的较多,因为它拖拉式的图形界面能够激发中小学生学习编程的兴趣,方便进行教学,但是Scratch相对于其他编程平台和工具而言更适合编程入门,随着学生掌握编程知识的增加和编程能力的提高,Scratch就不再能很好地满足学生提高编程能力的需求,因此单一的教学内容不利于培养中小学生的编程能力。
2.2 编程教育的教学方法和工具不到位
近年来计算机相关技术的大热,使得编程进入到人们的视野中,编程教育也随之兴起。但校内的编程教育所需的软硬件设施配套不全,教育方法不足,在编程教学中没有做好因材施教,没有充分的结合学生的年龄段和知识掌握水平采取合适的教育,没有恰当的利用编程平台和工具开展教学,导致中小学生的编程教育没有达到目标。
2.3 编程教育相对其他课程孤立
美国,澳大利亚,欧盟等国家已经将编程与其他学科融合,作为必修课程加入到中小学课程中,如:澳大利亚的《数字技术》课程,英国的《计算》和《设计与技术》等。而国内的编程教育目前还没有与其他学科和课程相结合,使得中小学生对编程没有充分的了解,学习编程的热情不高,不利于编程教育的进行。
2.4 编程教育中没有充分培养学生的创造力
很多教师只是结合编程平台中的一些基础课程进行教学,当学生编程入门并具有一定的编程能力后没有进一步培养其自主設计和创作的能力,没有为编程能力较强的学生提出进一步提高的建议。
3 基于“编程一小时”与Scratch的教学建议
3.1 结合Scratch的课程教学,引领学生编程入门
3.1.1 选取恰当范例,引领学生入门
中小学生的信息技术基础薄弱,在刚接触编程教学时会感到生疏,因此教师在进行教学时应该综合考虑学生当前的学习水平与能力,并根据学生对知识的接受状况选取适合的Scratch范例,比如可以选取有背景音乐的范例进行教学,更能激发学生的学习兴趣。在入门教学时,教师可以先向学生展示范例的运行结果,使学生对程序有个初步直观的感受,并对其产生兴趣,充满好奇心。接着,教师可以用提问的形式来了解学生的感受和疑惑点,并结合学生的问题进行编程原理的讲解,向学生介绍Scratch的界面构成部分以及如何进行脚本的编写和查看运行效果,从而引领学生编程入门。
3.1.2 将程序流程化,帮助学生理解程序设计的思路
在进行编教程教学时,教师应结合范例带领学生梳理程序的设计思路,理解程序中每个结构模块的意义与作用,在此过程中,可以借助流程图,使程序流程化,更加清晰直观的向学生展示程序的设计思路与流程,并更加准确的理解和掌握各个程序结构的功能,会学以致用。例如在Scratch的入门范例《捉迷藏》中,教师可以带着学生一起梳理脚本(见图1)的流程并理解脚本的含义,在此基础上进一步理解程序设计思路,并画出对应的流程图(见图2),从而使学生能更好的理解程序的执行步骤。
利用流程图将算法图形化,不仅能直观清晰的表述问题,还能培养学生独立思考问题,分析问题的能力,锻炼学生的创造性思维。
3.2 结合“编程一小时”的课程教学,引导学生自主完成设计
3.2.1 基于“编程一小时”的课程教学
教师在进行编程教学时,可根据学生的年龄和理解问题的能力选择合适的“编程一小时”课程,并引导学生按照课程教学内容自主完成程序设计。例如课程2里面第8节蜜蜂:循环(见图3),学生可以按照说明里的提示以及左边画面的显示窗口,在左边操作窗口内进行积木的拖拉来实现程序要求,从而理解和掌握循环模块的含义和使用。当完成模块搭建后,学生可以查看当前模块的代码,(见图4)从而逐步了解和学习该模块代码的编写,有助于后期培养学生的代码编写能力。
3.2.2 基于“编程一小时”的教学课程设计
(1)将“编程一小时”与中小学的学科相结合
在编程教学后期,教师可将编程和其他课程相结合,正如米切尔·雷斯尼克所说,儿童不是在学习编程(Learn to Code),而是“用编程学(Code to Learn)”,将编程视为一种新的表达方式,同时编程也可以作为学习其他学科的媒介[8]。可视化编程语言的出现重新唤醒了教育界对编码的兴趣,编程不再是作为一种工具,而是一种发展其他技能的媒介,以改善学生的学习动机和结果[9]。“编程一小时”相比其他高级程序设计语言更适合中小学阶段学生的学习,且能够锻炼学生的逻辑思维和创新意识,与所学的其他学科相结合也给更能帮助学生理解课程的逻辑和思想。例如早期的编程教育内容适合以中小学数学知识和数学常识为基准,在此之上引入编程的相关知识,在提升数学素养的同时,使学生初步的了解编程方面的知识。在有了一定的编程知识和数学素养的条件下,可以将编程作为学习数学的辅助工具,从问题入手,利用编程来解决数学问题,进一步将编程实践与数学相结合。编程教育在保持与数学相关联的同时,还可以增加与物理,化学,生物等课程的关系。物化生等学科的抽象性较强且与数学也有着紧密的联系,在使用编程解决问题时会经历识别问题类型,建立数学模型,寻找合适算法,代码实现解决等几个过程,可以很好的培养学生的编程思维与能力。当学生理解和掌握编程知识后,编程教育的内容可以在保持与其他学科的联系下,增加计算机领域的其他相关课程,如人工智能,数据库等。论文以中学数学为例,选取其中的一个知识点进行教学设计,为中小学编程能力培养的教学设计提供一定的说明与借鉴。
(2)教学内容分析
循环、分支、顺序等基本的程序结构同样也普遍存在于数学学科中。利用“编程一小时”来进行创作,将数学问题形象化,可以加深学生对数学概念的理解,同时,在程序设计的过程中也锻炼了学生的计算思维。教学设计选择分段函数这一知识点,目标是使学生掌握分段函数的定义,理解并会计算分段函数的定义域和函数值,学会用分段函数的知识解决实际问题,体现了程序设计中的分支结构,只有进行正确的条件判断和分段,才能使程序输出预设的结果,让学生懂得完成一个作品需要先明确作品的概念,接着进行设计,最后用代码实现设计。学生可以结合题目背景,在“编程一小时”中设计相应的动画角色和动作,并思考如何设计动画的分支,不断调整直至最终作品能够符合题目背景的要求。中学生已具备一定的探究能力、逻辑思考和设计建构的技能,能够动手创作出较为复杂的游戏、动画等个性化项目,为教学的展开提供了前提条件。
(3)教学设计
教学进程遵循教学模式展开,教师和学生在每个阶段的每一步骤中都有与之相对应的实践活动。教师根据题目要求引入相应的问题情境,即探究问题背景中各变量之间的关系和定义域的确定,使学生能够理解程序项目创建的背景,在问题呈现步骤中教师需要引导学生明确基于“编程一小时”项目创建所需的角色、背景等并完成导入。此后,阐述项目任务,可以通过创建游戏和动画故事合理表示各变量之间的关系和分支的界定,使学生对任务表征有大致的了解。当学生自主完成程序设计后可以开展分享交流的活动,同学间互相评价并提出建议,学生可通过查看代码的方式来了解和学习基本的程序结构和框架,具体教学设计见表1。
3.3 引导学生自由创作,培养学生的创造力
在编程教学的后期,教師可以引导学生在前期学习的基础上发散思维,利用所学习的各个程序模块结合自己的想法,自由创作,也可以分小组进行,组内成员间共同设计并编写出自己的程序,从而培养学生的创造性思维,提高学生解决问题的能力。同时鼓励编程基础好的学生在现有的计算机技术上进行改进创新,提出新的问题,或参加青少年编程比赛,通过实战经验的积累锻炼学生的编程能力和创造力,以达到对于编程的完全掌握和使用。与此同时,编程教育的教师,也要与时俱进,不断学习新的知识,培养自身的创新意识与理念[10],这样才能更好地培养学生的创造力。
4 结语
互联网技术深刻的影响着社会生产和生活,随着人工智能时代的到来,编程也越来越重要,并逐渐受到人们的重视,中小学生作为时代未来的缔造者,其编程能力的培养也备受关注,“编程一小时”和Scratch以一种形象直观的编程方式帮助学生在创作的过程中学习编程、发散思维、表达自己的想法,教师借助“编程一小时”和Scratch进行编程教学可以极大地激发学生的学习兴趣,通过引导学生从编程入门到自主学习和创作,培养其独立思考和解决问题的能力,有利于更好的培养学生的编程能力。
参考文献
[1] NMC Horizon Report [EB/OL]. [2018-10-05]. http://www. nmc.org/nmc-horizon-news/nmc-and-cosn-release-the-horizon-report-2017-青少年-edition.
[2] 国务院新闻办公室. 新一代人工智能发展规划[EB/OL]. [2018-09-10]. http://www.scio.gov.cn/34473/34515/Docu-ment/ 1559231/1559231.htm.
[3] 凌秋虹. Scratch在小学信息技术课堂中的应用与实践[J]. 中国电化教育, 2012(11): 113-116+129.
[4] 张子仪, 刘文静, 焦宝聪, 董黎明. 面向逻辑能力培养的编程课程教学设计研究——以Scratch为例[J]. 软件导刊, 2019, 18(06): 216-220.
[5] 孙丹, 李艳. 国内外青少年编程教育的发展现状、研究热点及启示——兼论智能时代我国编程教育的实施策略[J]. 远程教育杂志, 2019, 37(03): 47-60.
[6] Joan Youngquist, Jann Pataray-Ching. Revisiting “Play”: Analyzing and Articulating Acts of Inquiry[J]. Early Childhood Education Journal. 2004 (3).
[7] 刘慧. 与课改共成长——浅谈信息技术新课改的教学实践及反思[J]. 软件, 2012, 33(10): 134-135.
[8] Resnick M. Learn to code, code to learn [EB/OL]. (2018-12- 03)[2019-11-15]. https://www.robofun.org/blog-1/2018/12/3/ samplekidstechnology-and-the-internet.
[9] 孙立会, 周丹华. 基于Scratch的儿童编程教育教学模式的设计与构建——以小学科学为例[J]. 电化教育研究, 2020, 41(06): 75-82.
[10] 兰春霞. 浅析在计算机教学中学生创新能力的培养[J]. 软件, 2012, 33(09): 129-130+137.