APP下载

从积木到代码:对编程学习经验的迁移研究

2019-06-25姚炯

中国信息技术教育 2019年11期
关键词:代码积木编程

姚炯

积木编程软件简单易学,成为低龄学生编程学习的主要手段。但是在更深入的编程学习中,算法和程序设计教学的主要载体还是代码编程。从积木到代码,尽管有基础知识的共通点,但其编程方式和风格存在着巨大差异。那么,学生之前积木编程的知识经验能否进行迁移,从而促进以后代码编程的学习呢?同时,这些知识经验的迁移效果又是怎样?能够多大程度化解学生代码学习的困难呢?

● 编程教学现状

就目前而言,积木式编程软件采用的游戏化教学手段,推崇趣学、趣玩、趣创造的教育理念,风靡了整个少儿编程教育领域,成为低年龄段编程教学的主要手段。目前广泛使用的积木式编程软件有Scratch、App inventor、Swift Playgrounds、IRobot虚拟机器人、Micro:bit等。随着时间的推移、技术的发展,积木式编程软件的游戏性和创造性越来越突出,产品种类越来越丰富,例如,网易卡搭、极客战记、编程猫等产品的出现,使得少儿编程在积木软件选择上有了更大的空间。积木式编程在三至七年级非常普及,算法的很多概念都是通过这种方式教给学生,对低年龄段学生算法学习和计算思维的发展有很大帮助。而且,在积木编程环境中,学生能够通过简单的模块拼接,代替专业的代码编写,从而迅速创作出属于自己的作品。更多的孩子因此获得了成功的体验,喜欢上了积木编程的学习。但到了更高的学习阶段,八九年级、高中、大学甚至专业领域,代码编程仍然是目前算法学习和程序设计的主要教学载体。与积木编程的趣学趣玩不同,不少学生在代码编程学习过程中遇到的困难要大得多。

那么,预先进行积木式编程教学,之后再紧接着进行代码编程教学,学生积木编程的经验能否进行迁移,从而化解他们代码编程学习的困境呢?在风靡小学的积木式编程和面向较高学习阶段的代码编程之间,编程的知识技能和问题解决经验有多大程度可以相互贯通、转化迁移呢?对此我进行了研究,希望能为编程学习的“迁移而教”提供参考。

● 经验迁移实验

1.编程的经验类型

“为迁移而教”是当今教育界流行的一个很有吸引力的口号。根据教育心理学资料研究,迁移是一种学习对另一种学习的影响。具体地说,迁移就是一种学习获得的知识、技能、学习方法与态度对另一种学习的影响。学生在积木式编程中学到的知识基本可归纳为以下三种类型:第一种是陈述性知识,是指编程的一些概念和专有名词的理解,如变量、列表、事件、函数等。第二种是自动化基本技能,主要是能按照语法规则写出代码,并根据提示调试程序的操作性技能。第三种是认知策略,主要是对问题进行分析建模,然后利用计算机特性设计出问题解决的步骤。那么,在更高学习阶段的代码编程中,这些知识的迁移效果又如何呢?

2.实验过程

调查摸底:

七年级第二学期开学,我对任教的6个班级学生进行了调查摸底:约三分之一的学生在小学四年级或五年级有且仅有Scratch编程学习经历,距今两年左右,对Scratch的印象主要停留在让角色动起来。

教学过程:

第一阶段:设立实验班级和对比班级,进行一个学期的Scratch教学。以我任教的8、9、10三个班级作为对比班级,教学内容为浙教版七年级下册(PS、PPT和多媒体素材处理)。以我任教的另外三个班级5、6、7班作为实验班,教学内容为校本教材Scratch。尽管Scratch教材版本较多,教学范例有差别,但知识和技能的细目是大致相同的。附表1为我进行Scratch教学所用的双向细目表,其中黑色加粗部分共17处,是我预想应该可以迁移到VB编程学习中去的知识。

在第一阶段教学结束时,我进行了操作考试,实验组整体通过率达97.8%。

第二阶段:我对任教的六个班级进行VB编程教学,此时学生处于八年级第一学期,所用的教材为浙教版初中信息技术。附表2为浙教版VB编程教学内容的双向细目表,其中黑色加粗部分共8处。在这些知识内容的教学中,我发现实验班在师生互动中优于对比班级,对课堂问题的响应较好。

从课堂观察来看,这8处知识内容大多分布在学生VB编程的概念学习阶段,较少涉及认知策略。学生在积木编程中训练较多、运用较熟练的条件分支语句、循环语句以及运用这些语句解决问题的能力,却没能在代码编程的练习中较为明显地体现出优势来。简言之,积木式编程的经验迁移还仅限于概念、记忆等陈述性知识类型上,迁移达成的能力层次相对不高。对于编程教学中普遍看重的结构语句的运用能力、问题解决能力以及熟练程度,在代码编程学习上没有发现显著关联。经过21次课,我将18次平时作业和3次测试情况(含期末考试)进行了归结,如上图所示。

通过图表可以发现,流程图测试和顺序结构环节,实验组和对比组存在不太显著的差异。在循环结构环节两组分化较为明显。推测实验组学生先前学习的积木编程经验对VB循环结构章节的掌握起到了积极的推动作用。在越过循环结构,进入枚举算法学习和解题训练阶段,两组差距缩小,最后在期末考试时通过率几乎一样。(两组平均分有所区别,分数区间分布和先前积木编程是否有关系,需要进一步研究)

从本次实验结果推测:学生所掌握的积木编程经验,对VB学习能够产生一定的积极影响,其影响范围较为有限。在学生对新知的理解上有促进作用;在代码编写、算法设计等内容上,没有发现与之相关的明显促进作用。相比积木编程时97.8%的高通过率,实验组在代码编程上通过率下降了33%。尽管是入门级的代码学习,但对于不少学生而言仍旧比较困难。

● 分析和结论

(1)积木编程经验迁移的局限性,显示出编程学习中的不同知识类型转化和迁移的区别。识记及概念等陈述性知识迁移效果较好,提升了学生吸收消化新知识的速度。而作为一门实践学科,编程中大量用到的自动化基本技能和认知策略却难以顺利迁移。不少学习过积木编程的学生,在代码编程中仍遇到较多的学习困难。

(2)任何算法的实现都需要借助语言表述,而代码和积木在其语言表述上存在巨大差异,使其成为两种不同的自动化基本技能。学生在积木编程学习中习得的拼图表述方式,无法迁移到以单词表述为主的代码学习过程中。学生对代码编程的困难在于单词难记,语法难学,语句难写。同时,积木式编程和代码编程所解决的问题类型不同,认知策略也不一样。积木编程解决的问题类型通常为编写游戏或故事,是面向对象的编程,以小猫(Scratch)为主角进行的包括移动、对话、控制、触碰等一系列面向对象的编程行为,与学生的日常认知习惯相近。而代码编程是以数学问题为研究领域,是面向过程的编程,解决包括数值比较、累加累乘、穷举、排序查找等问题,同时在设计算法的过程中,学生还受到数学学科思维的干扰。因此,无论学生之前是否學习过积木编程,他们在代码编程中遇到的许多问题都是新问题。

综上所述,以Scratch游戏化编程进行的教学,对学生VB代码编程的影响较为有限。积木编程最吸引学生的角色扮演和游戏编程,对学生今后数学问题建模及编程的能力塑造影响甚微。如果要更多地为迁移而教,也许应该在积木编程中多些算法训练,但这些内容是枯燥的,远不如游戏编程那么趣学、趣玩、趣创造。

猜你喜欢

代码积木编程
堆积木
玩游戏学编程,Blockly Games上手玩
纺织机上诞生的编程
编程屋完成数百元万天使轮融资
学编程,先画画
神秘的代码
一周机构净增(减)仓股前20名
重要股东二级市场增、减持明细
有趣的积木
近期连续上涨7天以上的股