伴随着STEM教育、创客教育的广泛开展,以及信息技术课程内容的更新,对编程的学 习“再次”受到中小学教育领域的关注。今天的中小学生编程教育有了哪些新特点?今天的编程教什么?以及如何教?
1、今天的编程怎么学?
编程,在教育场景中扮演着双重角色——既是学习对象又是学习工具。我们既可以采取“做中学”的方式,通过编程过程来掌握编程技能、理解编程概念和发展计算思维;又可以采取“学以致用”的方式,运用习得的编程技能,针对其他学科主题进行探究学习,或针对现实问题的问题解决。
不过,编程教学实践中,有一些误区需要注意。比如,有些编程教学表面上呈现出“做中学”的式,似乎比机械地训练语法规则和编程操作先进得多,但实则是“有做无学”,从学习的有效发生角度来看,两者都是低效乃至无效的。学习内容不应该被视为有待学生直接“吸入”的对象,学习内容本质上是学生在学习过程中与之“打交道”的对象,学习的有效发生离不开这一“打交道”的过程。
例如,像“循环结构”这种很多教师认为“只能直接教”的内容,如果从生活中常见的周期现象入手,引导学生经历一个从现实问题中识别、归纳并抽象出循环体、循环条件、循环变量等循环结构的基本特征,然后再进入具体编程环境中“对号入座”的过程,则能够在“学编程”的同时提供发展数学建模等高阶能力的机会。以此为基础,进一步引导学生运用所掌握的循环结构程序设计技能去探究数学中的数列、排列组合及物理中的加速度等概念,则可以实现由“学编程”到“通过编程学习”的无缝衔接。
面向未来的编程教育应充分彰显“工具为人所用”的人本意识,理解计算机的工作原理,不是把人的思维“计算机化”,而是为了更好地让人运用手中的工具,并创造出新的工具。
1、今天的编程学什么?
科技的飞速发展,让社会对孩子的创新能力培养空前重视,促使我们急切地寻求一种教育内容载体,编程教育能担此重任吗?
如果,单纯掌握某种方法与技能(如编程方法与技能)并不能达成发展创新能力的目标。因此,创新能力的发展,不是某一学科或课程形态的专属责任,而是学习者在正式与非正式学习场景中,多样化学习经历积累的结果。在这一认识的前提之下,无论是创客教育、STEM教育还是编程教育,无论是校外活动还是学校课程,均不应自诩为发展创新能力的灵丹妙药,而是应该从自身的特点出发,思考自己在发展学生创新能力方面能作出哪些独特的贡献。
就编程教育而言,其独特优势表现为两个方面:一是理解计算机工作方式的实质——算法逻辑;二是为运用信息技术解决现实问题提供最为直接的工具。
根据2017年底公布的《普通高中信息技术课程标准(2017年版)》,欧美思人工智能认为,在思考“今天编程学什么”这一问题的时候,要充分体现学习内容的层次性。
第一层次,作为编程语言基础的语法规则及编程工具的使用方法是学习上手”编程的前提,是不可忽略的。拜今天的技术进步所赐,这一入门层次的门槛空前降低,这是我们应当充分利用的优势。
第二层次,在对编程基本概念(变量、循环、分支等)与程序运行过程建立理解的基础上掌握代码编写与调试的技能。这一层次发挥承上启下的重要作用,在概念理解的基础上建立计算思维方式,在技能学习的基础上提升编程工具运用的流畅性。
第三层次,提供充分的运用编程工具创造性地解决现实问题的实践机会,在变化的境脉中建构知识与发展技能。
上述三个层次可以概括为从“学编程”(learn to code)到“通过编程学习”((code to learn)所涉及的内容谱系,它所对应的是从掌握工具本身到运用工具解决问题的认知发展过程,这与作为编程教育目标的创新能力的发展过程是相适配的。