人工智能时代下中小学推广编程教育的困境与出路
2021-12-02史钋镭
史钋镭
(南京外国语学校,江苏南京 210008)
一、我国中小学推广编程教育的必要性
(一)培养学生的思维能力
乔布斯曾说,每个人都应该会编程,因为它教会你如何思考。研究表明,编程能够培养学生解决复杂问题的思维能力。我国已意识到思维对个人终身发展的重要性,因此,《普通高中信息技术课程标准(2017 年版)》中提出,通过信息技术课程全面提升学生信息素养,增强个体在信息社会的适应力与创造力。其中,计算思维被视作信息技术学科核心素养之一。
面对时代带来的挑战与难题,我们需要像计算机科学家一样用计算思维来思考问题、解决问题。换言之,计算思维是伴随人终生的思维能力,是一项基本生存能力。
(二)转变学生的应对身份
在信息技术高度发达的今天,我们每个人都离不开技术。当代学生在享受技术带来的便利时,也要思考技术从何而来、如何创造,摆脱纯粹的技术消费者身份。
二、我国中小学推广编程教育的困境
我国编程教育虽萌芽较早,但发展速度较缓。推广编程教育还有很长的一段路要走,需要突破一路上的困境。
(一)教师量少质低
教师是编程教育推广过程中的重要因素之一。中小学编程教师数量不足、供不应求、编程能力较弱、编程课程教学经验不足等,都是当前存在的问题。
(二)地区差异较大
基于我国传统应试教育理念,推广编程教育的重要举措之一是将编程纳入中高考范畴。但是,如要实施这一举措,最大的阻碍便是公平性问题。城乡差异虽然在逐渐缩小,但不可避免的是城市的“数字土著”有着先天的独特优势。
(三)意识偏差
1.重软件应用。一直以来,编程作为中小学信息技术课程体系中的一门课程,其开设形式以选修课为主。然而,该课程的选修率远远不如传统的软件操作课。在课时极少的情况下,教师往往更关注信息技术工具的操作,而编程这一教学内容则被边缘化。此外,编程课程所依托的中小学信息技术学科一直以来也被视作边缘学科,不受重视。
2.编程难且枯燥。“编程难”是许多家长和学生固守的观念之一。他们认为,编程是大学阶段的课程,对中小学生而言,学起来会很吃力。对大多数人来说,编程是枯燥且耗时的。解决编程问题会耗费大量的时间,最后却不一定有一个好的结果,这是程序员的常态。
3.编程是少部分人的“游戏”。很多人认为,编程不是每个人都必须学习的课程,而是专为少部分对编程感兴趣、参与编程竞赛的学生而开设的课程。他们认为,只要将来的学业或职业生涯与计算机尤其是编程无关,不成为程序员、计算机科学家,就不需要学习编程。
4.传统应试教育理念。传统应试教育以升学考试为最终目的,而当今所倡导的素质教育以提升学生综合素质为最终目的。虽然,当前教育趋势已逐渐向素质教育转变,但在现行的国内考试选拔体制下,教师始终不能完全脱离应试教育。学校、教师、家长乃至学生个人,不会过多地重视缺少考试导向的课程。
三、我国中小学推广编程教育的出路
当下,我国应结合实际教育现状,借鉴国际编程教育的成功经验,探索适应国内实际情况的编程教育模式。
(一)意识转变
信息技术教学内容需要与时俱进。不可否认,软件的基本操作是应用计算机的前提,但教师仍需意识到,随着时代的进步,计算机等基础设施不断完善,被称作“数字土著”的当代中小学生的信息素养不同以往。他们对计算机科学有着更高的接受度,并且有机会、有能力学习编程。因此,信息技术课程的重心应从“关注软件操作”转变为“提升解决问题的能力”和“培养计算思维”,而编程正是这样一门课程。
编程具有多样性的特点。任何学习都是从易到难的过程,编程也不例外。编程课程中既有低门槛的趣味编程,也有竞赛级别的高级编程。例如,在小学阶段,学生可以学习简单的模块化编程(Scratch),通过图形化界面,拖拉积木块,搭建小程序或小游戏等,让学生体验编程学习带来的乐趣。
编程不只局限于高等教育。纵观国际,美国提倡编程课程从幼儿园开始,强调少儿的编程教育。英国政府规定5岁以上的学生都要学习编程。日本将编程教育纳入学科教学,要求2020 年以后,所有小学生必须学习编程,旨在切实培养学生的“编程思维”。
推广编程教育,让每个孩子都接触编程,不是为了培养精通编程技术的程序员,而是为了让孩子拥有像计算机科学家一样的思维方式,在面对今后生活中的难题时,懂得用计算思维分析问题、解决问题。
(二)行动落实
1.教育部门层面。第一,编程教育的政策支持与引导。首先,制定将编程纳入中小学课程的实施方案。其次,将编程引入中高考,从选考科目逐渐向必考科目过渡。2016 年,美国发布《K-12 计算机科学框架》,给出了完整的K-12 阶段计算机科学课程学习体系。第二,竞赛引导。举办具有影响力的编程或思维类竞赛,鼓励中小学生参与。2017 年,英国举办了首届TCS 牛津计算挑战赛,要求参赛者理解代码并用编程解决实际问题,涵盖块式和文本两种编程语言。第三,教师培训。国家出资培养编程教师,为教师提供编程方面的培训。
2.中小学校层面。学校作为编程教育的主阵地,应该充分利用其硬件资源和师资力量,开展编程教学。在具备硬件资源和引进编程师资的基础上,以编程课程为主,普及编程教育;以程序设计竞赛为辅,培养编程人才。一方面,将信息技术课作为编程教育实施和推广的载体。小学阶段一般以Scratch、App Inventor等模块化编程为主,中学阶段一般以Python、C++等文本编程为主。根据不同阶段学生的特点,选择合适的编程学习内容,开设校内编程必修课。另一方面,提供竞赛训练场地,营造校内竞赛环境,鼓励学生积极参与市级、省级、国家级乃至国际级程序设计竞赛。
3.教师和家长层面。教师和家长对编程教育的支持与热情,既是学生学习编程的动力,又是编程教育推广的源泉。教师应努力提升编程教学能力与自我思维能力,探索适合中小学生的编程教学模式。
4.社会企业、教育机构、高校科研团队是编程教育推广的重要辅助力量。2013年诞生的Code.org是一个美国的非营利组织,它提倡“每所学校的每位学生都应该有机会学习计算机科学”,每年组织“编程一小时”活动。该活动已经吸引了全世界10%的中小学生参与,在一定程度上推广了美国的编程教育。此外,由计算机科学教师协会(CSTA)与美国公共图书馆合作开展的美国“图书馆准备好编程”项目,允许教师在图书馆内进行编程教育项目实践,对K-12教师进行有针对性的编程教育培训与认证,为美国培养编程教育人才奠定了基础。2016年,广州图书馆携手微软成功举办了中国首个图书馆“编程一小时”活动。
总之,高校编程教育的研究团队需要与一线教师携手推动编程教育事业的发展。研究内容可以是如何推广、落实并解决编程课程推广过程中遇到的难题,或中小学编程教学内容与大学的衔接性等。