点击[中小学数字化教学],关注我们!
数老师说
创新能力的发展不是某一学科或课程形态的专属责任,而是学习者在正式与非正式学习场景中多样化学习经历积累的结果。在这一认识的前提之下,无论是创客教育、STEM教 育,还是编程教育,无论是校外活动,还是学校课程,都应该从自身的特点出发,思考该课程在发展学生创新能力方面能作出哪些独特的贡献。
伴随着STEM 教育、创客教育的广泛开展,以及信息技术课程内容的更新,对编程的学 习“再次”受到中小学教育领域的关注。今天的中小学生编程教育有了哪些新特点?今天的编程教什么?以及如何教?对这些问题的分析与思考,或许有助于避免教育工作者走上“形实相悖”的歧路。
今天的编程学什么?——内容与目标要匹配
今天的信息技术所带来的无限可能性,使我们对于作为信息时代生产力工具的编程寄予厚望,特别是对于发展创新能力的空前关注,促使我们急切地寻求一种教育内容载体,编程教育能担此重任吗?
来自心理学与学习科学的研究发现告诉我们,创新能力作为一种高阶认知形态,在结构上表现为相关知识、技能与个性特质的高度融合,在运作机制上呈现出与真实问题情境及特定社会文化境脉的深度依存。单纯掌握某种方法与技能(如编程方法与技能)并不能达成发展创新能力的目标。因此,创新能力的发展不是某一学科或课程形态的专属责任,而是学习者在正式与非正式学习场景中多样化学习经历积累的结果。在这一认识的前提之下,无论是创客教育、STEM教育还是编程教育,无论是校外活动还是学校课程,均不应自诩为发展创新能力的灵丹妙药,而是应该从自身的特点出发,思考自己在发展学生创新能力方面能作出哪些独特的贡献。
就编程教育而言,其独特优势表现为两个方面:一是理解计算机工作方式的实质——算法逻辑;二是为运用信息技术解决现实问题提供最为直接的工具。
2017年底公布的《普通高中信息技术课程标准(2017年版)》所建立的以数据、算法、信息系统和信息社会四个“大概念”为基础的内容结构,以及在选修模块中对编程思想与技能的强化,可以视为对编程教育上述特点的支持。为了达成内容与目标的适配,在思考“今天编程学什么”这一问题的时候,要充分体现学习内容的层次性。
第一层次,作为编程语言基础的语法规则及编程工具的使用方法是学习上手”编程的前提,是不可忽略的。拜今天的技术进步所赐,这一入门层次的门槛空前降低,这是我们应当充分利用的优势。
第二层次,在对编程基本概念(变量、循环、分支等)与程序运行过程建立理解的基础上掌握代码编写与调试的技能。这一层次发挥承上启下的重要作用,在概念理解的基础上建立计算思维方式,在技能学习的基础上提升编程工具运用的流畅性。
第三层次,提供充分的运用编程工具创造性地解决现实问题的实践机会,在变化的境脉中建构知识与发展技能。
上述三个层次可以概括为从“学编程”(learn to code)到“通过编程学习”((code to learn)所涉及的内容谱系,它所对应的是从掌握工具本身到运用工具解决问题的认知发展过程,这与作为编程教育目标的创新能力的发展过程是相适配的。
今天编程怎么学——聚焦学习的有效发生
作为一种信息技术形态的编程技术,在教育场景中扮演着双重角色——既是学习对象又是学习工具。因此,从学习路径的角度来看,“学编程”与“通过编程学习”是可以互为过程与结果的:既可以采取“做中学”的方式,通过编程过程来掌握编程技能、理解编程概念和发展计算思维;又可以采取“学以致用”的方式,运用习得的编程技能开展针对其他学科主题的探究学习,或针对现实问题的问题解决。事实上,如果从整体性学习体验这样一个更加宏观的层次来看,“做中所学”与“学以致用”之间是往复迭代的连续过程,它可以视为文明史上人类创造并运用工具的同时,也被工具塑造这一基本发展模式的缩影。
在充分认识编程技术的双重角色及编程教育目标与内容层次性的基础上,我们可以识别出实践中的一些误区。比如,有些编程教学表面上呈现出“做中学”的式,似乎比机械地训练语法规则和编程操作先进得多,但实则是“有做无学”,从学习的有效发生角度来看,两者都是低效乃至无效的。学习内容不应该被视为有待学生直接“吸入”的对象,学习内容本质上是学生在学习过程中与之“打交道”的对象,学习的有效发生离不开这一“打交道”的过程——学生在特定的境脉中与学习内容互动并更新自己认知结构的过程。越是高阶认知目标的达成越依赖于有效的学习过程。将学习内容直接“教”给学生的做法,由于人为“短路”了必要的学习过程,其结果只能停留在语法规则的记忆与编码工具的操练这种水平上。
将教学设计的重心转移到学习过程上来,摆脱一味追求“外显成功”的思维定式,转而关注学习的有效发生,有助于教师拓展教学设计思路,从而为学生创造更多的学习机会。
例如,像“循环结构”这种很多教师认为“只能直接教”的内容,如果从生活中常见的周期现象入手,引导学生经历一个从现实问题中识别、归纳并抽象出循环体、循环条件、循环变量等循环结构的基本特征,然后再进入具体编程环境中“对号入座”的过程,则能够在“学编程”的同时提供发展数学建模等高阶能力的机会。以此为基础,进一步引导学生运用所掌握的循环结构程序设计技能去探究数学中的数列、排列组合及物理中的加速度等概念,则可以实现由“学编程”到“通过编程学习”的无縫衔接。
面向未来的编程教育应充分彰显“工具为人所用”的人本意识,理解计算机的工作原理不是把人的思维“计算机化”,而是为了更好地让人运用手中的工具并创造出新的工具。在人工智能时代的帷幕已然开启的今天,帮助下一代树立这样的意识,显得尤为重要。
(作者刘新阳系山东师范大学教育学部副教授;徐光涛系杭州师范大学教育学院副教授)
文章来源:《上海教育》,原标题为《中小学生编程:学什么?怎么学?》
微信编辑:李中华
监 制:朱哲
往期荐读
领取专属 10元无门槛券
私享最新 技术干货