社区教育中开展编程思维培训项目的路径研究

2022-12-01 13:35苏绚
广东开放大学学报 2022年5期
关键词:编程社区思维

苏绚

(汕头开放大学,广东汕头,505041)

随着经济社会发展,我国社会结构日趋多样,进一步创新社区教育理念,改进教育内容与方式,提高社区居民的素质和文化水平,成为我国社区教育的重要任务。2016年教育部等九部门联合发布的《教育部等九部门关于进一步推进社区教育发展的意见》指出,社区教育发展的其中一个主要任务是积极开展青少年校外教育,要充分利用社区内的各类教育、科普资源,开展校外教育及社会实践活动,为青少年健康成长提供良好的社区教育环境[1]。而社区教育的现实发展情况表明,直至2020年社区教育依然着重于成人教育与老年人教育。与此同时,我国进入了信息化时代,信息技术学科得到大力发展,信息技术教育也日益受到重视,相关政策陆续出台。尽管信息技术教育已进入中小学课堂,但还处于起步阶段。由于信息学范围广、层次深,依靠学校与商业机构开展青少年信息学教育只能服务于小部分优秀学生的进阶学习或素养型的普及学习。社区教育具有普惠性原则,在社区教育中开展服务于青少年的信息学教育,可成为学校教育的有力补充。

一、社区教育中开展编程思维培训项目的必要性与现实意义

(一)编程学习能提升思维能力

信息学学科知识面广,学校教育中的信息课多数是培养青少年的信息素养,少数学习成绩优异者才有机会获得信息学科中编程类应用课程的学习,得到思维能力的训练。

在商业市场中,近几年编程教育也异军突起。编程教育的崛起把一个新的名词带进人们的视野——计算思维。计算思维这一概念最早是由麻省理工学院的Seymour Papert教授在1996年提出的[2]。2006年,周以真教授提出倡导计算思维的培养,“让学习者像计算机科学家一样思考”[3]59。虽然至今,对于计算思维学术界并没有一个统一的定义,但是被广泛认同的是:在这个计算机信息网络急速发展的时代,计算思维越来越不可或缺,它对我们认识当今世界,甚至改造当今世界都有着举足轻重的作用。计算思维的培养,可以使非计算机专业的人员也能更好地适应与融入这个时代。

美国麻省理工学院终身幼儿园研究小组在多年研究互动媒体设计者设计的编程活动基础上提出了计算思维三维框架:计算概念、计算实践和计算观念[4]。计算概念指的是程序中的顺序、条件、循环、事件、数据,乃至更高一层的数据结构等等的计算机编程中的概念。编程的教学中,教师一般会将概念的讲解设计融入实例当中,让学生通过模仿范例来理解计算概念。计算实践关注学生是否会利用编程工具解决处理问题。实际上这也是一种检测手段,检测学生是否可以将前面模仿中认知的计算概念加以应用,转换成解决问题的能力。经过一段时间的编程学习后,计算观念将会逐渐形成。这里的计算观念是指学生能够创作作品表达自己的想法,与他人合作形成想法的联系,及更高一层的提出对世界现有状态的质疑。

编程学习所培养的计算思维与数学思维具有共通性。李廉教授在《计算思维——概念与挑战》中指出科学思维分为物理的实证思维、数学的逻辑思维与计算思维。书中指出,在很长一段时间内,计算思维的研究是作为数学思维的一部分,而现在给予两者的区别是:计算思维更倾向有限性、程序性和机械性[5]。编程学习对计算思维进行训练的同时,也是对数学逻辑思维的一种训练。数学是一种将具体问题进行抽象化的过程,通过将具体问题抽象为模型,再用模型去解决实际问题。数学也训练以推理和演绎为特征的逻辑思维,且数学具有抽象性和应用性两重属性。计算机编程中涉及到很多数学中的应用性方向,强大的数学逻辑思维能力的训练需要学习对事物进行观察,类比、归纳、演绎、分析、综合、抽象、推理的思维方法,而这些也是编程学习中反复训练到的方法。数学的研究,重在于剥离具体,定义出统一适用的规则性的定理和公理。而与数学相关的计算机编程,它的重点在于映射具体。即计算机编程实际都是为了解决社会中、现实中的具体问题。学习者需要对社会关系、现实生活问题具有理解和学习的能力。从教学的角度来说,数学是一个偏向于学术型的学科,而计算机属于偏向于应用型的学科。因此,在编程学习中,虽然离不开数学,但它更具象,它是数学的一种社会应用,它让抽象的数学公理建立了与人类社会的联系。它需要更多维的能力来支撑应用的实用性以及对实际问题的解决。所以编程学习既培养计算思维,也训练了数学所需要的逻辑思维。

(二)学校与培训机构的编程培训多以选拔尖子为目标

在普通中小学校的信息技术学科中,通常会以选拔优秀学生参加信息技术学科竞赛为目标开展信息技术编程类的兴趣班。而这一类兴趣班的教学往往同时涉及很多信息技术通识类知识的学习,很少能专门通过编程学习,让普通的学生们得到思维的训练。而在校外现有的编程培训机构中,由于商业利益的驱动,以及部分家长的功利心理等诸多原因,很多编程机构的教学并非真正以思维训练为目标,如图1。

图1为某编程培训机构对少儿编程等级与能力的划分。如图所示,少儿学员在一、二年级使用scratch等图型化编程语言进行学习,三年级转为符号类编程语言python的学习,而在四至六年级的高年级阶段,又进入语法更难掌握的C++语言的学习。不能否认,有一小部分天资聪慧的学生可以完成这样大步子的编程学习,但对大部分中小学生而言,这样的步子迈得过大,不利于计算思维的形成。麻省理工学院MIT媒体实验室开发的scratch图型编程语言,目标在于创建一种“低门槛,高天花板”的语言,目的是为了让学习的学生真正地训练到思维。思维方式的形成,必须是在对语言、语法基础与计算概念逐渐熟悉之后,才能加以应用、转化,乃至成为一种思维与观念。这个过程需要掌握某种稳定的编程语言,并学会使用,哪怕这种语言不是那么严谨与完美。若如编程培训机构的等级设置一般,在小学六年的时间里,就要学习三至四种编程语言,里面甚至包括语法与结构较为复杂的语言,那么对大部分小学生来说,编程学习只是在不停地学习不同编程语言的语法、语句,思维谈何形成!

图1 某编程培训机构对少儿编程等级与能力的划分

在国内的编程学习环境中,功利主义充斥其中,机构与家长急于追求最热门最先进的编程学习方案,有时并未考虑编程学习真正的目标到底是什么。像图型化编程语言,通常使用到的是它的“低门槛”,即使学前儿童也可以通过模仿学会一些编程,然而却辜负了开发者“高天花板”的心愿。大部分参与机构编程学习的学生在中低年级时就会不停地跳转学习不同的编程语言。这样的培训目的更多的是为了选拔计算机学科的尖子生、领头羊,对普通学生的思维训练并无太大作用。然而,信息技术学科是一门高速发展、推陈出新、更新换代迅速的学科。这样的学科,思维的培养才是编程学习的核心。编程语言只是工具,在未来的世界中,工具可能会随时变换,而思维才是应对变化的底气。因此学习编程提升青少年思维水平,应以思维训练为核心目标,控制学习速度。

(三)编程思维培训项目融入社区教育可以实现普及性的思维训练

在我国,社区教育起步于80年代初期,它在总结原有学校教育、家庭教育、社会教育经验基础上,借鉴国外社区教育的经验,从国内不同地域的实际出发,通过试点逐步发展起来。《教育部等九部门关于进一步推进社区教育发展的意见》对社区教育发展的原则做了明确的指导:体现社区教育的普惠性原则,以此来促进教育公平[6]。社区教育应坚持以人为本,需求导向,即以学习者为中心,以学习需求为导向为社区居民提供多样化的教育服务。

在社区教育中开展编程思维培训项目应以思维训练为核心目标,真正发挥编程对思维训练的作用,也可以成为普通中小学校与校外机构信息技术学科教育不足的一个补充。作为家长,为孩子选择编程类课程的学习,大多数并非希望孩子成为信息技术学科的专业人才,更多的是一种长远的考虑,希望自己的孩子能提高信息素养,能得到思维的训练,得到一个长期的而非功利性的培训学习。在普通学校教育中,学生的学习是被动选择的。即学生无法选择学与不学,学什么,学习进度等等。有些重视信息技术学科的学校会挑选尖子生培训参加竞赛。但现在全国的普遍情况是学校学生人数较多,能够成为尖子生、得到培训机会的人数比例较低。不少对信息学技术或编程感兴趣的学生一旦一时未能掌握信息学学习方法,就会在挑选中落败,无法得到深入学习的机会。

另一方面,现阶段商业机构的编程学习也无法真正做到普及性的思维训练。商业机构由于运营、宣传的需要以及功利主义等因素,更需要培训优等生,去参加竞赛获得名次,从而达到提高机构知名度等目的。目前商业机构的编程课程还有另外一种形式,即全国范围内的网络编程课程。全国网络编程课程资源非常丰富,性价比高,从价格的角度可以做到普及的程度。但网络编程课程不足之处在于忽略了青少年学习的特殊性。在编程课中,老师面授对儿童编程的引导、程序的修改、程序的调试具有无法替代的重要性。由于编程课程的特殊性,单纯的网络课,教师在网络上指导,可能无法解决儿童在编程过程中遇到的实际困难。在网络课程中,教师对学生的情况难以跟踪沟通,容易出现学生照搬程序的情况,学生虽然能够完成任务,但在此过程中并非思维得到了训练;或者有可能学生用极不规范的方法完成了任务,而教师通过网络难以清楚了解其思考过程。所以,编程网络课无论是在训练儿童参与信息学科竞赛方面,还是在训练儿童编程的计算思维方面,都远远逊色于面授课程。这也就使得商业机构的编程课程依然只适用于服务学习能力强的优秀学生。

社区教育遵循的是普惠性原则,力求实现教育公平,正好弥补现有学校与市场上编程学习的不足。社区教育具有弹性学习的特点,无学制与硬达标等要求,无学习年限的限制,无因故中断学习则无法再获得学习机会的问题,什么时候开始学习都不晚,致力于打造终身学习平台。思维的训练实际是因人而异,有的学生思维敏捷,转换快;有的学生思维顽固,变换慢。所以思维能力训练最好的方式是个性化定制,而社区教育则有条件实现个性化定制,实现针对中小学生普及性的编程思维训练。

二、编程思维训练项目的课程教学路径

(一)项目难点分析与课程教学模式设计

社区教育以促进全民终身学习、构建学习型社会为目标,弥补基础教育的不足,是标准化的基础教育学习的一个有效的补充。这就意味着学习什么时候开始都不会太晚,学习进度跟不上也不要放弃,只要有坚持学习的态度,社区教育就可以给予引导与补充。这个学习宗旨要求办学需以人为本,具有弹性的学习制度,采取个性化的学习方式。这一宗旨正是开展编程思维培训项目的第一个难点。要达到这一办学目的,用传统的教学方式对现阶段人口众多的国情来说难以实现。第二个存在的难点是专业师资问题。由于编程的专业性强,成为一个稍微成熟一些的少儿编程老师,都需要一定时间与经验的积累。这也使得在编程教育中,师资短缺成为一个瓶颈问题。据笔者对所在地区各社区调查的情况,通常每个编程机构,一个编程方向的教师最多为1-2人,有些机构甚至一个编程教师身兼多个方向的教学。师资队伍的培训由于专业性较强,一直是一个较大的痛点与难点。

通过对课程与教学模式的设计,可以有效解决现存的难点与问题。采用“线上课+线下课”相结合的教学方式,可以实现上述普及性编程思维训练课程个性化定制的要求。以图形化编程课程scratch课程为例,将理论学习、案例学习、实例练习等都建设为一系统微课程,以线上课的方式进行教学,即教师讲解与实例课程由线上微课的“教师”代替。但由于学生年龄较低,自学自控能力较差,需允许学生即使采用线上微课程,也可以到校学习。而教师可以在学生完成第一次微课程学习后,根据学生掌握进度的不同进行分组。掌握进度快的学生可以进入下一阶段的学习,掌握进度较慢的学生可指导其再次观看微课,或稍加指点再进行下一阶段的学习。这个教学过程是以学习者为中心,以学习需求为导向的教育服务。在“线上课+线下课”相结合的过程中,应设置至少一位专业编程教师,并根据学生人数设置若干位助教。助教专业性无需太强,主要任务是引导学生听懂微课中的例子,指导学生完成微课中的实操任务。专业的编程教师主要负责训练学生思维,帮助学生自行编写程序,完成运行程序时的调试、修改,同时引导其举一反三再创作。在这样的教学模式下,学生可以根据自己的进度,利用微课程进行学习,教师也可以根据其学习情况实现编程学习的个性化定制。这种教学模式允许不同的学生在思维训练学习进度上存在差异,并使教师可根据学生学习进度的差异为每个学生调整教学进度,从而达到普及性的个性化思维训练的目的。线上线下相结合的方式既保证了课程讲解的专业性,也解决了成熟编程教师师资不足的问题。下页图2为社区教育编程思维训练项目教学路径的架构图。

图2 编程思维训练项目教学路径

(二)线上课程资源设计

社区教育编程培训项目以“线上课+线下课”相结合的方式开展,其重点在于线上课的微课程设计和线下课专业老师的指导理念。线上微课程是作为一个“线上教师”的身份存在,它应该具有专业、生动形象、授课深入浅出等特点。微课程需要解决学生知识点理解的问题,若能做好这一点,则线下指导教师和“线上教师”就能有更明确的分工,“线上教师”负责专业知识教授,则线下指导教师就有充足的时间对学生的思考加以引导,从而达到思维训练的目的。同时微课程的设计还要满足学生的个性化学习,适应学生学习进度的差异,这样才能更好地体现社区教育的宗旨。

要使“线上教师”更好地发挥专业知识教授的效果,满足学生个性化学习的要求,需遵循以下几个设计原则:第一,课程体系和课程内容完整。根据实际教学情况发现,小学高年级至初中阶段,学生编程学习,特别是以思维训练为目的的编程训练,学生掌握的情况有着巨大的差异。编程学习初期,程序逻辑简单,可模仿性比较强,学生们进度差距不大。这时候,教师尚无法分辨学生是真正通过自己的思维完成了编程,还是靠背诵记忆老师的程序完成任务。随着学习的深入,靠背诵记忆的方式已难以完成任务,这时学生们的进度差距就会拉开。思维敏捷、学习能力强的学生进度会非常快。这就要求微课程的课程体系和课程内容丰富完整,以满足部分优秀学生学习进度超越教学进度设计的需求,使学有余力的学生可以继续深入学习。第二,案例设计充足。编程学习训练思维,而不同学生思维的发展是不同步的。有的学生善于理性思维,逻辑思维发展得快,对知识点会自行迁移应用,善于举一反三。而一些逻辑思维发展较慢的学生,在编程过程中需要接受教师的思维方式,他们需要教师用知识点和不同的实例进行反复地训练来强化接纳新的思维方式,从而转化为自己的思维。这就要求微课程设计中,对同一个知识点要有大量的案例设计,以满足学习能力较弱学生强化训练的需求。第三、用动画或真人秀呈现抽象的知识点。编程训练的是计算思维和数学思维,计算机中有不少抽象的概念、知识点、逻辑都难以用纯语言表达。普通课堂中,教师通常通过画图、比划等方式来表达抽象的知识。在微课程设计中,遇到语言难以表达的知识点,需借用动画,将抽象转化为具象,或由教师真人演示、或以绘图的方式来表达抽象知识。

(三)线下课程教学设计

线下课的教学应把握两点。第一,专业编程教师应允许学生不同思维方式的存在。答案无法标准化,这对教师来说当然是一个挑战,不标准的程序会占用教师较多的课堂时间。但若一味否定学生思路,会对鼓励学生思考、形成自己的思维产生不利影响。写出优美的程序是所有编程员的追求。但在学生学习的过程中,有些学生面对同一个问题时,会给出不同思路的程序。有些程序并不完美,不高效,甚至有错误,但是它可以解决问题。这时,教师应允许这种程序的存在,给予肯定,再逐步引导其修改完善。这有利于学生信心的培养和多种思维方式的训练,更加符合编程思维训练的宗旨。这是以思维训练为宗旨的编程课的教学难点。这对线下的专业指导教师的水平、理念、耐心都有一定的要求。第二,引入“费曼学习法”①费曼学习法的灵感源于诺贝尔物理奖获得者理查德·费曼(Richard Feynman)。费曼学习法的主要四大步骤:(1)选择目标领域,并完全了解这个内容;(2)向别人复述这个内容;(3)纠错之后的再次学习;(4)回顾和精简。(王珏《“费曼学习法”教学原理分析及应用》<《广西职业技术学院学报》2020 年第4 期>),加入一定比例的学生演讲课。在传统的课堂中,学生更多的是被教授,学生一直在接受教师的思维,从而慢慢转化为自己的思维。学生表达的机会比被教授的机会要少得多。“费曼学习法”则是在先接受别人传授的知识或思维之后,通过表达复述,形成自己的思路,在复述过程中发现自己思路中的问题,再进行自我纠正,从而形成自己的思维。在训练思维的课程中,“费曼学习法”是一把好剑,可以使编程学习的思维训练达到事半功倍的效果。因此,在线下课中,可要求学生对自己的设计与程序进行演讲,从而在演讲中整理思路,形成思维。

(四)思维训练的评价标准

以思维训练为核心目标的编程培训项目,其评价标准应以思维的应用和表达为核心。检验一个学生通过课程学习是否达到训练思维的效果,可采用两种评价方式:第一,会用程序解决问题。课程可根据学生能力的不同,给予其不同的应用问题,要求其用编程解决。程序完成的过程,即是思维呈现的过程。第二,会用思维表达。编程完成后,学生不仅要会写程序,还要会讲程序。即解决了一个问题,还要能说出为什么用这样的程序。学生在准备讲解或讲解的过程中,就能进一步理清思维,将自己的思维方式展现给教师和同学,如此,思维训练的目标也就达到了[3]65。

当前社区教育多以面向成人及老年群体为主,青少年社区教育的发展还略显苍白。以普惠性为宗旨,以思维训练为目标,在社区教育中开展青少年编程教育,可使之成为普通学校信息学教育的一个有益补充。各地可依托开放大学设立社区教育指导机构,由各高等学校提供师资支持,如此可解决此项目对课程资源设计、师资力量要求较高的问题,同时国家开放大学及各地方开放大学也可成为发展此社区教育项目最好的品牌支持。

猜你喜欢
编程社区思维
思维跳跳糖
思维跳跳糖
思维跳跳糖
思维跳跳糖
社区大作战
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
3D打印社区
纺织机上诞生的编程