从行为习惯、编程意识到创新思维的进步观察
2021-08-28杨伟
杨伟
图形化编程借助将复杂编程知识易读化的有效策略,使其更倾向于青少年的认知,从而降低学习初期的理解难度。图形化编程在确保学习结果的前提下,大大缩短了学习者的学习路径,尤其对于入门者而言,在维系其学习期待和学习兴趣层面上,图形化编程起到了关键作用。随着图形化编程在青少年编程教育领域中的快速发展,值得教师思考的问题也越来越多。其中较为迫切的问题是,如何研究和利用图形化编程的优势来构建课程、推进课堂进程和学生思维活动,从而最大限度地彰显其在青少年编程能力培养过程中的内涵和外延。
● 行为习惯和时代潮流无痕对接
将零散的、各自独立的个体模块堆积起来,形成个性化的整体表达,是人类行为习惯系统的一部分。在堆积过程中,我们既承认了个体模块的独立性,又善于将每一个模块按照自己的设计策略叠加起来,创造个性化的整体方案,这其实就是图形化编程的核心意义所在。
图形化编程使用过程简易化、结果可视化的编程模式开展工作。全新的编程模式和编程方法打破了技术壁垒,让编程过程可视化、游戏化,使计算机编程真正成为青少年的主流学习领域。同时,图形化编程将计算机编程文化大众化、普适化,也推动了青少年在计算思维领域的核心素养教育的开展。
● 编程意识和深度学习的内涵递进
图形化编程可以让学习者快速地进入编程学习轨道,但这种学习模式并不是仅仅使学习者对编程学习浅尝辄止。它不但在培养学习者编程学习意识上优势明显,也能循序渐进地帮助学习者完成更深层次的学习体验。笔者在组织和参与青少年公益编程营的活动中,见证了在利用图形化编程工具(以Scratch3.0为例)进行学习的过程中,学生学习意识和知识探索能力的递进式变化。在教学实施过程中,学生学习思维的发展过程一般会随着若干问题的形成和解决划分为几个不同的阶段。
问题一:为什么会有一只“小猫”?通过学习大家会发现几乎所有的代码块都是针对小猫的,在引入其他“角色”之后,又会发现其他角色甚至包括“舞台”也可以写代码。渐渐地学生形成一个学习共识:“代码要写在某一个‘对象身上,只有被写入了代码的‘对象才能活灵活现地在舞台上‘演出”。
问题二:为什么要点“绿旗”?学习初期,学生认识到“绿旗”是作为程序开关存在的。随着更多实际需求的出现,不但有“当绿旗被点击”,还出现了“当舞台被点击”“当对象被点击”等多种程序启动形式。此时,学生会深入认识到“绿旗”并不是一切代码启动的开关,“启动开关”是随着实际需求而设置的,并且每段代码都需要一个“启动开关”。
问题三:重复代码块是不是太麻烦了?在利用“画笔”模块生成正方形的过程中,学生首先会感受到大量重复代码给编程过程带来的不适。但这样的情况不会保持很久,因为总会有“聪明”的学生会首先发现其中的诀窍,利用“控制”模块中的“重复执行”代码块来解决问题。但如果在程序中需要多次用到“画正方形”功能,类似的问题又一次呈现在我们的眼前。此时,教师需要在课堂中适时地引导学生了解和学习“自制积木”功能模块,尝试利用“自制积木”模块将画正方形功能代码形成一个自制积木“画正方形”(如下图),这样既提高了编程效率,又能让学生进一步理解“模块”的含义。
学习问题的递进防止了学生编程知识的浅层化和编程思维的表层化,使深度学习效果得以产生。深度学习效果首先表现在学生对编程知识的学习和理解上,从图形化编程的基本方法到思维方式和价值倾向的掌握,学生的学习过程由表及里,逐次加深;其次表现在学生对编程思维的认识和升华上,从实现基本需求到最优化编程策略,从“代码复用”到“模块化”思想,学生经历了思维能力提升、思维品质提升和思维态度养成的深化过程。这个过程有效地契合了深度学习的基本理念,使学生编程思维阶梯式发展,这个过程也反映了图形化编程在青少年编程教育中的基本思想内涵。
● 创新思维和创新能力的外延拓展
图形化编程模块化的特征缩小了学习者在技术实现上的思考空间,从而使细节设计让位于宏观设计,技术手段让位于实现策略。学习者可以有更多的精力去思考创新性设计,进而提升自身的创新思维和创新能力。接下来,通过学习项目“手机守护猫的诞生”的实施过程来审视学习者如何利用图形化编程工具(以App Inventor为例)在解决问题的同时培养和提升创新思维和创新能力。
学习项目:制作手机防盗APP。
学习活动一:采用触碰屏幕报警方案。活动思路:采用“按钮”模块充满屏幕的方式,手机屏幕被触碰即为按钮被触碰,触发报警音频运行。活动反馈:屏幕触碰引发报警的设计在效果实现上存在一定的偶然性,未必会产生真正的防盗作用。
学习活动二:采用“加速度传感器”报警方案。活动思路:采用“加速度传感器”模块被触发方式,当手机被移动并产生运动加速度时触发报警音频运行。活动反馈:在移动手机时加速度如果未达到“加速度传感器”触发阈值,则无法触发,说明该设计依然存在一定的防盗漏洞。
学习活动三:采用“方向传感器”报警方案。活动思路:采用触发“方向传感器”模块报警方式,当手机被移动时,“方向传感器”的“方向角”“倾斜角”“翻转角”等数值发生改变时触发手机报警音频运行。活动反馈:在该方案中“方向传感器”三个参数可以人为设置,增强傳感器的灵敏度,进而使防盗效果最佳化。
在上述的三个学习活动中,学习者通过不同设计思路进行效果检验,对产生的过程性问题进行创新解决,最终得到最佳解决方案。
利用图形化编程进行编程作品的功能设计,是编程者针对实现具体要求的思维设计和逻辑实现。在设计和实现过程中,面对实际问题进行创新性解决,也促使编程者的创新思维和创新能力得以形成和提升,这也构成了图形化编程在青少年编程教育中的教育外延。
总之,图形化编程有简单、易于掌握的优势,同时也有着难以表达深刻含义和复杂思维的劣势。但其作为青少年编程教育中的一个基础工具,可以准确地契合学习者的行为习惯,深化学习者的学习意识和培养学习者的创新思维和创新能力,在未来的教育实践中,我们有信心让它的优势在青少年编程教育领域中得到最大化的发挥。
苍山点题
中小学编程如何成为一种文化?包括编程教育的文化,编程学习、应用与创新的文化等,都是编程应该凝聚出来的新文化的发展脉络。本期解码,我们先尝试从信息学奥赛、图形化编程等方面来探索编程学习的文化内涵。文脉之一的信息学奥赛,无疑是中小学编程教育中最高层次的科学与人文双重奋斗的战场。辅导学生超过五年的,肯定有实力理解其中的编程技术,超过十年的肯定会有深刻的算法、技巧、思维、成功等多方面的文化滋味与文化沉淀。的确是,这漫漫征途上包含了多少劳与累、苦与甜的生命体验,这就包含了编程文化。文脉之二的图形化编程,在“积木”式的操作诱惑之中,在“小猫咪”的直观表现精彩之中,不论产生了多少平台,都是在推崇一种什么样的文化内涵,又有哪些精彩的文化外延,这看似简单的“小儿科”编程,一方面的确对儿童编程善莫大焉,另一方面对大人登上“创造”之巅帮助甚大。当然,也存有一些浮华与鼓吹的风险,需要我们正视。
第一篇文章,通过“微观察”的策略,观察学生在编程学习过程中的一些细微表现,恰当分析并判断学生的思维特征,用实例揭示出如何观察、促进学生的编程思维的逻辑性、慎密性、灵活性、维韧性与耐久性等;通过“微观察”学生思考过程,助推思维形成,通过“微观察”学生程序设计思路,发现思维创新力。这是更深度的教与学的编程文化的凝结。
第二篇文章,通过对图形化编程中学生的行为习惯、编程意识、创新思维的观察,从“行为习惯和时代潮流无痕对接”“编程意识和深度学习的内涵递进”“创新思维和创新能力的外延拓展”等角度进行深度探讨,尽力总结图形化编程对学生编程学习、对中小学开展编程教育应有的立场、定位、内涵与外延,尽力发现编程教育中图形化编程应避免的问题与缺陷,从而逐步在看似浅显的编程活动中获得深度的学习与深刻的思维。
让我们从编程学习、编程教育的新文化角度,继续探索中小学编程的美好未来吧!