中小学编程教育的计算思维导向与实践训练探索
2021-01-02董玥
董 玥
(北京师范大学附属实验中学 北京 100032)
一、概述
信息技术的迅猛发展,对教育带来重大挑战,发展学生核心素养的内容成为课程改革的课程目标。依据新课标的要求,信息技术学科的核心素养主要包括信息意识、计算思维、数字化学习与创新、信息社会责任四个方面,这无疑对信息技术教育教学提出了很高的要求,需要对课内外学习内容做出很大程度的改变。特别是要将各类青少年编程、机器人编程课程走进中小学课程和课外实践课程,来推进信息技术教学改革。
计算思维由美国卡内基·梅隆大学周以真教授提出,认为计算思维是利用计算机科学的基础概念进行为题求解、系统设计以及人类行为理解的思维活动[1-3]。从教学目标来看,中小学的信息技术和编程教育,需要以思维训练提升核心素养为指导思想,重点培养学生运用计算机解决实际问题的能力[4-5]。这样计算机编程为学生带来的提高不仅仅是技术层面的模拟,而是上升到思维训练层面,在中小学信息技术课程中极为重要。
二、计算思维编程语言课程设置
从中小学信息技术教育的目标来看,计算机编程课程重点培养编程思想和解决实际问题的能力。掌握程序设计的基本常识和主要思想,形成运用计算思维方法解决问题的能力,为进一步学习其他知识和未来发展打下坚实的基础。
编程教育无论是针对小学生,还是中学生,其实都是有很好的实施途径和手段的,适合各个年龄段学生的学习。学生对于编程的兴趣比很多纯机器人硬件的搭建更浓厚,这是由编程语言的严谨性和可纠错性以及硬件连接的不确定性共同决定的。无论对于小学生还是中学生,当面临硬件的搭建再结合编程一起实现效果的时候,往往会出现很大困难,学生会不知所措,不知道是硬件出了问题还是软件的编写出了问题。这种时候,教师想帮助学生纠错其实也是很困难的,往往解决一个或者一组学生的问题,就会花费很多时间,以至于无暇管理其他同学,这在信息技术课堂上是经常会遇到的难题。因此在开展中小学编程教育的时候,对于初学者,我们还是建议以最简单且单一化的程序语言编程作为入门课程,尽量减少学生的课堂负载。让学生通过基本的结构化模块语句或者代码编写,先把程序的语言的基本方法和算法思路学会学懂,把基础打好后,再结合实际的生活场景,配合各种开源硬件或者机器人套装教具,来实现软硬件的结合。这样学生起步较快,基础牢靠,教师在课堂实施上,也便于把编程语言全面细致的给学生进行讲解。
结合中小学生的认知水平和课时设置,编程课程建议可以结合Scratch 编程、Python 编程、C/C++编程进行系列设置。核心部分,以流行的、通用的开源脚本语言——Python 作为编程语言来讲授“高级程序设计语言”,让学生学会如何利用Python 和计算思维来解决典型的实际问题[6]。
三、Python语言教学方法
结合Python 语言特点,在教学进度的安排上,课程可以采取“问题驱动,急用先学”的施教策略,在培养解决具体实际问题的意识和能力基础上,强调学生的操作训练[4]。
(1)授课教师需要将计算思维贯穿到课程过程,做到授课内容与大纲相符。学生要求认真听课、积极思考、完成作业和实验。
(2)学好Python 程序设计重在实践。讲授和学习过程都将贯穿实践环节,要求学生积极参与课堂的学习讨论,独立思考,认真完成课后作业。
(3)必要的知识记忆,是学好一门语言的有效途径,学生需要通过对典型代码的记忆,对成熟代码的阅读分析,培养编程实践和解决问题的能力。
另外,Python 综合了多种高级程序设计语言的特性,在熟练使用的基础上应进行其原理的探究和理解,然而这些内容与后续中小学编程语言课程(C/C++)有一定交叉,教学时注意避重,做好铺垫,点到即可。
四、课程教学内容及要求
课程内容设置,根据学生的实际信息技术水平和计算机应用水平,实现模块化组织,课程内容通过程序设计的基本思想和一般方法的讲授。实现四个层次的单元化教学。
第一个层次课程内容,初步认识Python 程序设计,基本编程环境。
介绍计算思维理论,鼓励学生多思考,培养解决问题的能力。介绍基本的Python编程环境安装和语言基础,了解编程基础知识。
计算思维理论的介绍,主要内容包括介绍计算机解决问题的能力,计算思维理论;程序设计的硬件基础,语言必要性及要解决的问题,Python 可以解决哪些实际问题,培养兴趣和好奇心。讲解语言基础,介绍开发环境配置与安装过程,开发自己的第一个Python 程序,简单了解编程基础知识。目前很多Python 的编程环境供学生选择和使用,学生可以通过个人电脑直接安装程序,但可能会面临下载更新各种库函数和工具包的困难,这需要教师做有针对性的专门指导。当然,学生也可以通过互联网,利用在线平台,以解决版本更新、模块库添加,参数配置等问题。
第二个层次,培养利用Python 解决基本问题的能力,计算思维的初步应用和培养。
从计算机能处理的数据类型入手,解决Python 编程的适配范围。从程序设计的基本逻辑和流程控制入手,提高学生利用计算思维和编程解决复杂问题的能力。
数值类型等方面,以实际计算问题案例需要,介绍Python的各种数值类型,演示如何通过运算符解决数学计算问题;Python 简单文件读写、图片、数值等趣味文件读取显示;程序的流程控制方面,引出并讲授Python 程序的三种流程结构,学习控制结构的综合应用,以实际应用需求为背景引出,重点讲授关系和逻辑运算、分支结构、for 循环、whⅰle 循环的知识,着重培养面向问题的决策流程及控制能力。当然,Python 语言的语法结构比较自由,不像C 语言那样格式特别的严谨和规范。对于初学者而言,很多规则容易忽略,反而增大了程序出错的几率和纠错的难度。在这个问题上,教师一定要特别的注意,在学生一开始学习编写程序的时候,就一定要把Python 语言的规则给学生讲解清楚,包括缩进、中文字符和英文字符的区分等等,让学生打好基础,尽量避免因程序书写不规范甚至错误给学生带来的畏难情绪和挫败感。
第三个层次,培养Python 的数据结构和函数模块复用概念,提升计算思维解决复杂问题的处理能力。
从计算机如何处理稍微大型的任务,从函数与模块的代码服用与管理入手,从复杂数据的结构化管理入手,介绍主要的数据结构及其应用能力。
函数与模块部分,介绍怎么编写大型Python 程序文件;函数的声明、定义和调用;数据结构方面,针对中小学的认知水平,从如何管理复杂数据入手;介绍什么是Python 的数据结构;列表、元组、字典及字符串数据结构及操作。
由于Python 语言的功能非常强大,可以导入非常多的工具库,因此在使用的时候,可以完成很多任务,包括可视化,机器学习等。教师可以通过一些具体的实例,让学生去逐一接触和掌握这些工具库的使用方法和功能。由于现在中小学人工智能课程的兴起,利用Python 语言进行人工智能的教学非常普遍,因此教师也可以将人工智能课程中的一些非常经典的实例作为Python 教学的资源展示介绍给学生,让学生体会到Python 语言在人工智能方面的强大应用。
第四个层次,培养Python 的处理文件和Python 类的基本思想。
主要从计算机程序运行输入输出的角度,介绍文件的必要性和使用方法,为完成相关任务提供数据保存手段。通过对繁杂数据的进一步归类,教会学生用抽象方法进行不同信息的归类、分层次组织。
本层次对学生的要求其实是很高的,多数学生对于软件的使用和编程语言的编写掌握起来并不是非常的困难,但是一旦要涉及到各种文件的输入输出,完成文件的关联与保存,就会出现不知所措,找不到方法或者不明白彼此的逻辑关系的问题。在介绍这些方面知识的时候,教师又很难将整节课都只单一的讲解这方面的知识,因为无论从课时安排还是课程内容设计方面,这部分内容都不是属于重点章节。因此,教师就很有必要在平时的学习中,尽量将这些知识渗透到每一次的编程教学中,让学生多练多理解,遇到具体问题具体操作,随时学习,随时记忆,提高学生学习的效果和效率。
文件编程实践主要内容为介绍文件的主要作用及基本读写;类和对象通过案例,向学生介绍体验面向对象管理;什么是Python 面向对象,有何特点;类的属性和方法定义,对象的创建和使用,举例解决实际问题,深入浅出了解面向对象的概念、各类属性以及各类方法的定义和使用、继承。
五、课程实验与综合实践
编程课程,需要通过动手实验,进行编程互动,强化和应用计算思维,同学自己动手安装Python 开发环境,编写第一个程序。学会使用函数和模块迭代解决原有程序问题,实验包括各类数据结构定义、存取、访问等使用操作,尝试解决实际数据问题,进行趣味性的Python 编写,培养学生兴趣。课程实验主要还是面向全体学生的信息技术教学,因此在难度的设置上,尽量要保证让大多数学生都能够接受。在课堂教学的设计上,尽量强调趣味性与知识性相结合,实操性与原理性相结合,过程性评价和考试性评价相结合,让学生能够以一种比较轻松愉快的情绪来完成对Python 语言的学习。毕竟无论是初中还是高中的学生,在信息技术课程的学习时间都是相对比较少的,除了课上的学习时间,一般情况是没有额外时间来完成信息技术的家庭作业的。这就要求教师要尽量把课堂教学和需要完成的作业,都安排在课内进行,必须将讲授,练习,考核做合理的设计和安排。
根据学习的程度,可以更进一步,层次化教学,培养学生利用Python 解决实际问题的能力,促进计算思维与实际问题的结合,做到简单解决实际应用的目标。对学有余力的同学,使用Python 编写GUI 实战,利用Python 中文信息处理基础实战编程,利用Python 图像处理基础实战编程,Python数据库编程实战。对于高中阶段的学生,随着高中新课标的发布和新课改的进行,在人工智能,开源硬件和数据处理等选修模块,Python 语言都有很强的应用性和实践价值,可以通过课外小组和分类分层走班制的途径,让对编程有浓厚兴趣并且能力较强的学生,或者是选修过人工智能,开源硬件或者数据处理的学生,进一步利用Python 语言,来完成这些模块的实践和创新,将Python 语言的功能做到跨领域跨平台的最大化应用。
六、结束语
总体上看,程序设计的方法是信息学科的重要基础工具和思维方法。通常的编程教育,缺乏对编程过程中本身固有的逻辑思维和计算思维训练,对于无编程基础的基础教育学生,纯粹的简单训练容易造成学生学习兴趣下降热情不高。通过计算思维目标下的信息技术课程,对计算机编程课程内容和讲授方法的梳理,对综合信息素养的提升非常重要,后续需要更多思考和实践探讨[7]。