香港编程课程建设的经验与启示
2020-11-16骆奇肖龙海
骆奇 肖龙海
摘 要:伴随着人工智能技术的不断发展,编程教育逐渐受到研究者的广泛关注。我国香港地区在编程课程改革方面富有特色,并在近十年内取得了明显的成效。基于此,文章围绕现行的香港编程课程标准,采用案例分析与比较研究等方法,分析了香港编程课程的目标定位、内容结构、教学评估等具体内容,强调其工具性、多元化、紧扣共通能力、注重学会学习等特点。借鉴其经验,我国内地应深化编程课程建构研究、加大对编程课程本体研究以及关注编程教学有效性问题,从而推动编程教育的发展。
关键词:香港 编程教育 课程改革
一、引言
伴随着信息通信技术(Information and Communication Technology,ICT)的不断发展,世界各国纷纷将人工智能技术研发作为未来社会可持续发展的新引擎,迫切要求未来人才具备必要的编程素养。2001年,日本文部科学省明确将编程教育纳入《小学学习指导纲要》,出台了相应的实施方案;2019年,日本发布了《小学编程教育教案集》,助力编程课程实践[1]。2013年11月4日,英国《每日电讯报》报道,当时的英国将成为世界上首个在中小学实行计算机项目的国家:儿童从5岁进入小学开始学习如何编写程序,一直到16岁中学毕业[2]。2016年,美国发布《K-12计算机科学框架》(K-12 Computer Science Framework),指导美国K-12阶段学生的计算机科学教育实践,其中包括了编程教育内容及相应的教学建议。
尽管我国的编程教育起步较晚,但发展规模与速度却令人瞩目。2017年,国务院发布《新一代人工智能发展规划》,提出要“广泛开展人工智能科普活动,在中小学阶段设置人工智能相关课程,逐步推广编程教育”[3]。这是我国首次将编程教育写入政府决策。国内各中小学也纷纷将编程教育作为学校特色课程予以建设与实施。艾瑞咨询发布的《2018年中国少儿编程行业研究报告》显示,截至2018年10月,我国少儿编程行业的市场规模已达约30亿至40亿元,用户约1550万,行业规模5年内将达到300亿元[4]。但是,总体而言我国内地编程教育整体上仍处于起步阶段,在课程建设、教材研发、评估实施等方面还较为薄弱。[5]
我国香港地区在编程教育方面富有特色。2000年以来,香港已经开发了八个计算机认知单元课程(CAP),2015年,通过开发新的编程语言工具以及新教材,提升编程教育的教学水平。2016年12月,发布了《推动STEM教育—发挥创意潜能》报告,明确从小学阶段开始引入编程教育,学习计算思维和编程技巧,并取得了明显的成效。据统计,2013-2019年,香港青少年在国际电脑奥林匹克竞赛中,共取得了21块奖牌。
二、香港编程课程改革经验
香港编程课程改革经历了不断优化的过程。2013年,科技教育学习领域课程在初中全面实施,香港教育局建议在初中ICT的知识范围内拨出不少于30%的课时,用于教学程序编写。2015年,高中阶段的ICT作为高中20个选修科目之一,增加了编程课程内容,让选修编程课程的学生加深對编程的认识。现行的香港青少年编程课程标准于2017年由香港课程发展议会编订,经香港特别行政区政府教育局审定,建议学校采用。该标准由六个章节组成,包括引言、目标、学习元素、实施、学与教、评估和附录。[6]
(一)编程课程定位:凸显工具性
从广义而言,编程是将一个计算问题经过一系列计算过程来引出一个可执行的程序。它强调通过任务驱动来引导学生掌握编程技巧,并应用于生活情境,从而提高学生的批判思维和解决问题能力。如果将其内涵作进一步界定,编程教育应包括两个维度:一是培养计算思维;二是培养计算实践,其中计算思维是编程教育的核心。2006年,周以真提出了计算思维的概念,认为计算思维是运用计算机科学的基础概念去解决问题、设计系统、理解人类的行为[7]。计算思维包括三个层面:一是抽象化(Abstraction),二是算法(Algorithm),三是自动化(Abstraction)。因此,学生应该了解计算思维的基本概念,包括抽象化、算法和自动化等核心概念。
香港编程教育将编程定位于工具,其开发落脚点放在训练计算思维来提升逻辑能力,这在其提供的Scratch学习程序编写中得到了充分体现。Scratch是一款编程工具,由麻省理工学院媒体实验室设计研发,主要使用对象是8~16岁儿童,其特点是摆脱文本编程方式,利用鼠标拖动不同功能的程序来编写互动故事、游戏和动画[8]。香港编程课程将其引入教学,目的在于发展学生的想象力与创造力,通过编写程序帮助学生获得创意乐趣。不难发现,编程作为工具的再创造,不仅要求学生学习编程技术,更重要的是引导学生通过编程学习将其运用于具体情境之中,能将问题解决与创新创造联系起来。
(二)编程课程结构:多元化架构
编程学习可以发生在不同的学习阶段。香港小学低段(一至三年级)开展的游戏、体育与音乐等实践性活动能够启蒙学生计算思维的进一步培养。例如,生活中的跳棋、飞行棋等棋类项目以及剪刀石头布等游戏活动,其本身蕴含着一定的项目学习规则与步骤,它们是计算思维原始概念形成的基础。香港小学高段(四至六年级)推行的编程教育,旨在帮助学生在团队协作中获得丰富的编程技术,在问题解决中产生创新的灵感。为此,香港编程课程确立了编程学习的三大元素,并围绕这些元素设计了七大活动单元,从而实现学习元素与课程单元内容的一致性。
1.设计明确清晰的学习元素
香港编程课程涵盖计算的联系、计算思维的实践、应用与影响这三大元素。解读这三大元素,会发现它们彼此之间有着内在的逻辑联系。例如,计算数据需要借助有效的计算思维识别与应用才能获取。在计算思维实践应用中,要认真考虑安全以及隐私的保护,这也是信息伦理的要求。如果将三大元素作进一步细分,又可以分成若干个二级元素。例如,计算思维的实践元素包括了“识别数据及计算使用的信息、如何使用数据”以及“制作计算制品”两个二级元素。再以“制作计算制品”二级元素为例,又可进一步细分为六个三级要素:一是储存程序的概念;二是使用变量以便存储及修改数据;三是基本程序编写的结构;四是抽象的概念;五是开发程序、进行编码;六是与实物进行互动。这种将学习元素不断细分的设计架构,充分借鉴了美国《K-12计算机科学框架》中关于计算机科学课程的五大核心学习模块设计,既便于学生无障碍地学习掌握,也利于教师清晰掌握学习内容,设计相应的学习方案。
2.构建任务式的活动单元
香港编程课程设计了七大认知学习单元,分别是开开心心用计算机、计算机绘图、计算机书写、使用互联网、文字处理、电子表格计算及图表制作、使用电子邮件。这七大学习单元涵盖了三个主题,包括硬件与系统管理、信息与加工表达、网络与信息交流三个版块。从学习内容角度看,这些单元学习内容符合学生的年龄特点和认知规律,且各单元之间相互衔接、各有侧重,将要求学生掌握的编程技能分布在不同的单元活动中,通过任务驱动来指导学生开展任务式的编写进阶学习。
以小学为例,各内容在年段分布上存在着一定的梯度。小学低段与小学高段各自设计了不同的内容标准,以下是香港小学编程课程前三个单元内容(见表1)。比较小学低段与小学高段这两个学段内容,可以发现如下共同点:都是引导学生了解编程的应用环境以及一些常见的表现形式,形成运用编程处理信息的基本能力。不同点在于,小学低段更多是从感性出发,如编排的“使用键盘及鼠标控制计算机”“利用手画及橡皮擦工具绘图”“在图片中输入文字”等学习内容,都旨在基于形象直观的活动,引发学生“玩中学”,内容上主要以观察、识别和熟悉简单操作为主,便于培养学生掌握常用软件工具的应用技能。小学高段是对小学低段的拓展提升,包括“明白输入、输出及储存装置的基本功能”“利用一般绘图工具编辑、储存及打印图像档案”等学习内容。通过比较不难发现,小学低段强调简单识别,认识不同计算机元素的基本功能;小学高段要求初步理性地熟悉操作常用输入与输出设备,鼓励学生将学到的编程技术应用到更深层次的领域层面。综上所述,小学阶段的编程课程体现了由简单的从直接经验出发的活动学习向复杂的间接经验的程序学习的转变。
就同一专题内容编排而言,每个专题都有若干个单元与之相对应。以“网络与信息交流”专题为例,小学高段对应的是“使用互联网”以及“使用电子邮件”这两个单元(见表2)。比较小学高段不同单元间的内容标准,可以發现单元内容既关注学生学习生活经验,体验编程技术在生活学习中的应用,也关注学生情感态度价值观的培养,从而引导学生初步形成理性认识与价值判断,在今后社会生活中养成正确的法律道德修养,从而承担未来社会的公民责任。这与上文提到的三大学习元素强调信息素养密切联系,使不同学段的编程课程成为一个有机共同体,充分体现了学习内容与学习元素内容之间的一致性。
(三)编程课程目标:紧扣共通能力
近年来,核心素养成为学界探讨的热点。香港地区将核心素养称之为“共通能力”,指帮助学生在不同情境中掌握、建构和应用知识的基本能力。2001年,香港以“学会学习:课程发展路向”为主题开展了课程改革,改革的主导原则是“教导学生学会学习”,强调“透过各种学习内容发展学生的共通能力”[9]。依据能力分析框架,共通能力可以整合为三类能力(见表3)。
根据上表可以发现,九大能力共同指向人的整体能力,具体表现在:一是有关跨学科的、社会性、情境性的通用能力;二是与学科本质相关的思维方式与行为表征模式;三是与学科性质相关的知识能力与价值观知识。香港编程课程设计充分落实了这九大共通能力,三大学习元素在共通能力上都有相对应的体现。
具体而言,“计算联系”强调学生“能够根据解决问题的需要,自觉主动地寻求恰当的方式获取与处理信息,敏锐感觉到信息的变化,分析数据中所承载的信息,采用有效策略对信息来源的可靠性、内容的准确性、指向的目的性作出合理判断”;“计算思维”要求学生“能够在信息活动中,采用计算机科学领域的思想方法界定问题、抽象特征、建立结构模型、合理组织数据”[10]。香港编程教育课程标准还明确了学习元素及相应的学习目标,对每个学习目标进行了具体的描述。如“制造计算制品”这一学习目标下提出了六个子目标:一是储存程序计算机的概念;二是使用变量以便储存及修改数据;三是基本程序编写的结构;四是抽象的概念;五是开发程序编码;六是与实物进行互动。同时,在这些子目标中又进一步提出了具体的学习成果以及应用领域,如“基本程序编写的结构”概念提出了如下学习目标以及应用领域(见表4)。
结合上述目标表述与应用领域,香港编程教育课程通过具体的学习任务驱动,培养学生利用编程技术进行学习与探讨的能力,注重知识的综合运用与创新,具有更丰富的教育内涵:一是强调利用编程技术解决问题能力的培养;二是将利用编程技术解决问题的能力迁移到生活领域,形成创新与创造能力,具有“形式化、模型化、自动化和系统化”的特征。编程教育可为学生提供充分参与日益数字化的世界所必需的技能、知识和思维方式。
(四)编程教学与评价:注重学会学习
2001年,香港地区开始推行题为“学会学习”的课程改革,提倡以学生为本的学习模式,注重提升学习素质和效能,并提供不同的学习经历。同时,还积极推广“作为学习的评估”,即教师基于学情使用评分标准,引导学生开展自我评估与同伴互评,帮助学生评估自己的学习情况,推动课程与教学的转变,从而实现终身学习。
1.提倡以学生为中心的自主学习
编程学习是一个复杂、多元化、生动而互动的过程。香港编程教育教学推行以建构主义理论为基础,以学生为中心的教学范式,其中列举了一些教学的注意事项,例如,投入时间培养分解问题的技巧;在学习程序编写技巧前先学习识别数据和信息以作计算的用途;投入时间通过“不插电活动”来发展抽象化技能。
上文提及的“不插电活动”即不利用计算机,通过一些生动有趣的活动游戏,采用开放和自主学习方式把培养编程素养融入课程学习中,从而开发学生的计算思维。其实,“不插电活动”与计算思维有着密切的联系,它能够构建算法多样化的途径,将在忽略与问题无关的内容基础上,积极抽象化并建立格局图样。同时,“不插电活动”还可以与不同学科进行整合,如数学教师可以利用运算符AND来强化学生了解公因数和公倍数;常识教师可以利用月相引入循环概念。这些“不插电活动”让学生认识到编程不再神秘难懂,而是为了解决问题而提出。学生在活动中由于去除了计算机干扰,就更能集中注意力参与到活动中,并且通过自主认知活动掌握编程计算思维的核心概念,培养了独立思考与自主学习能力。
2.灵活运用评估工具
评估是教学的重要环节,有效评估旨在收集学生的学习成果,让学生、教师、家长都能了解编程的学习进度。为此,香港编程课程设计了相应的评估工具,并参照评估工具得出相应的评估结果。例如,围绕“抽象”这一编程指标,从低、中、高三个角度提供了相应的评估依据,这样可以帮助教师在开展教学研讨时做出具体的反馈(见表5)。一般而言,评估目标应与上述三大学习元素(计算的联系、计算思维的实践、应用与影响)密切配合,具体要求包括:一是把一个简单问题抽象化以便设计一个解决方案;二是了解基本的程序编写结构,并能在日常生活中看到相关结构;三是预测更改程序语言,改变程序的操作;四是熟悉重用和混合程序编码,并能够测试和修复程序中的错误;五是找出程序中的格局图样,并能够在新的情况下应用它们;六是利用程序编写语言表达一个简单的算法。
三、对内地小学编程课程建设的启示
面对当今知识经济的浪潮,提升学生编程素养可以使学生尽快适应社会发展,具备必要的创新精神与实践能力。但是,编程素养的培养是一个系统化的过程,需要各个学段有机衔接与有序递进,才能发挥合力并体现实效,香港编程课程改革的经验可以给内地编程课程建设带来以下借鉴。
(一)深化编程课程建构研究
在编程课程改革设计中,课程体系的整体架构是实现编程课程上下有机衔接与整体优化的关键。首先要对编程课程进行整体架构,具体包括编程课程的目标定位、学科内容、各学段要求。当前,编程教育随着STEM教育和创客教育普及而逐渐受到重视,编程不仅是在信息技术课堂加入编程内容,也不只是编写代码,而应讓编程课程与多学科实现整合。借鉴香港编程课程改革经验,可以在如下方面进行深入思考——整体上如何确定编程课程的总目标;依据总目标应设计哪些课程学习元素;在各个学习元素领域可以编制哪些具体目标以及安排哪些具体内容;如何体现不同领域的内容并在不同年龄段实现有序提升等。
(二)加大对编程课程的本体研究
编程课程与信息技术课程、STEM课程有着天然的联系,从培养目标来看三者具有许多相似之处。《义务教育信息技术课程标准》指出,信息技术课程的总体目标是培养学生积极学习和探究信息技术的兴趣,养成良好的信息意识和健康负责的信息技术使用习惯,强化学生使用信息技术支持各种学习和解决各类问题的意识和能力。而STEM课程目标,旨在培养学生成为科学、科技和数学的终身学习者,提升创造协作和解决问题的能力。但是从学科本体而言,编程与信息技术、STEM也有一定区别。因此,如果将信息技术课程与STEM课程等同于编程,显然过于草率,也会在编程课程设计的系统性与有效性方面存在问题。因此编程目标的一体化设计可以适当借鉴香港编程课程设计的理论研究和实践成果,界定与编程课程相关的知识、能力与价值观,并将其体现在各个学段的课程目标中。
(三)关注编程教学有效性问题
综观香港编程课程标准文本,不仅关注课程目标、课程内容的厘定,尊重学生的认知水平与接受能力的差异,而且重视教学评估、教学策略等的设计。例如,教学原则上强调要有效互动、独立学习、善用发展性评估、有效运用资源、增强学习动机、鼓励学生积极参与。这些教学原则大多是从编程课堂教学研究成果中提炼出来的,对教师如何开展编程教学提出了明确要求。如何让编程课程真正被学生所喜欢,如何让编程理念真正被教师所接受,这些都需要认真思考与扎实行动。
参考文献:
[1]陈晓婷.日本文部科学省公布《小学编程教育教案集》[J].世界教育信息,2019(22):77.
[2]陶媛.英国儿童将从小学开始学习编程[J].世界教育信息,2013(23):79.
[3]国务院.国务院关于印发新一代人工智能发展规划的通知[EB/OL].(2017-07-20)[2020-02-24].http://www.gov.cn/zhengce/content/2017-07/20/content_5211996.htm.
[4]艾瑞咨询.2018年中国少儿编程行业研究报告[EB/OL].(2018-10-11)[2020-03-30].http://www.199it.com/archives/781622.html.
[5][6]孙丹,李艳.我国青少年编程教育课程标准探讨[J].开放教育研究,2019(5):99-109.
[7]WING J. M. Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[8]孙立会,周丹华.国际儿童编程教育研究现状与行动路径[J].开放教育研究,2019(2):23-35.
[9]霍秉坤.香港面对“世界改变”的挑战:共通能力的培养[J].全球教育展望,2019(7):97-110.
[10]李锋,柳瑞雪,任友群.确立核心素养、培养关键能力——高中信息技术学科课程标准修改的再思考[J].全球教育展望,2018(1):46-55.
编辑 徐玲玲 校对 吕伊雯