在高中信息技术课中培养学生计算思维的有效方法探讨

2017-12-21 00:00林伟樊磊
新课程研究·教师教育 2017年10期
关键词:Python语言计算思维信息技术教学

林伟+樊磊

【摘 要】文章从追溯计算思维概念产生的历史背景出发,分析了国内外相关的研究现状及趋势,提出了一种以Python语言编程教学为基础、基于计算思维的信息技术问题求解模型的高中信息技术课程实施策略。该策略的核心是通过研究学生现实生活中的问题,培养、发展学生的计算思维,解决信息技术教学的工具化、碎片化问题,深化信息技术与其他学科的融合。

【关键词】信息技术教学;计算思维;Python语言;问题求解;信息技术问题;求解模型

中图分类号:G632 文献标识码:A 文章编号:1671-0568(2017)30-0010-04

在信息社会中,学生的信息技术素养,特别是计算思维的能力,已经成为未来职业生涯的核心竞争力之一。近年来,国际上很多发达国家都在K12教育中加强了计算机科学及编程的教学,目标在于培养与发展学生的计算思维,以应对21世纪的信息化挑战。我国正在修订的《高中信息技术课程标准》也将计算思维作为学科核心素养之一加以强调。计算思维的发展和提高是一个长期学习、实践和体验的累积,不可能仅仅依靠一门或几门课程来完成。高中信息技术课程是系统化培养学生计算思维的重要途径之一,探讨在高中信息技术教学实践中如何适应这个重大改变、贯彻培养目标,成为摆在信息技术教学的研究者和广大信息技术教师面前的重要课题。

一、研究背景及现状

计算思维概念源自20世纪80年代的算法思维概念。计算思维这个术语是S.Papert在1996年发表的一篇数学教育论文中首次使用的。2006年,美国卡内基·梅隆大学的周以真教授在Communications of the ACM的观点专栏上发表了题为“计算思维”的文章,并在2008年的文章中对计算思维做了进一步解读。此后几年里,观点专栏还陆续发表了其他学者关于计算思维的论述,其中比较有代表性的包括P.Denning的文章。

根据周以真等人的观点,计算思维是在叙述问题及求解问题过程中的一种思维过程,其目标在于将问题表示为可通过信息处理手段有效求解的形式。美国国家科学基金会在2009年将计算思维解释为“计算概念、方法、技术和工具方面的素养”。此外,学者普遍认为,计算思维应该是每个人都应具备的基本技能,而不仅仅属于计算机科学领域专家或主修计算机专业的学生,这一观念也得到了教育界的广泛认同。

从2006年开始,计算思维的观念开始在大学计算机通识教育中产生影响。在2010年首届计算机基础课程研讨会上,九校联盟确定了将培养计算思维能力作为计算机基础教学的核心任务,大学的计算机教育全面启动了从计算机文化导向到计算思维导向的新一轮改革。从2012年开始,召开每年一届的“计算思维与大学计算机课程教学改革研讨会”,并出版了大量以计算思维导向的大学计算机改革教材。世界各国也充分重视计算思维在K12教育中的价值,纷纷做出响应和指导性的规划,目的在于使学生能更好地应对21世纪的信息化挑战。例如,2008年,美国国家计算机科学技术教师协会发布了名为Computational thinking: a problem solving tool for every classroom的报告,对计算思维在课堂教学中的价值和应用进行了详细的阐述。

在我国,许多学者对计算思维在信息技术教育中的价值和作用做了积极的理论探讨和实践研究。

尽管已经有为数不少的理论研究和实践尝试,但有关计算思维的概念界定及适用范围(与设计思维、创新思维的关系)等方面仍存在争议,其自身也尚无形式完整的理论体系和方法论。同时,计算思维是伴随整个计算学科高速演化着的一个动态概念,需要不断地从计算学科中汲取、补充创新观念和方法,丰富计算思维的内涵和应用范例。

与大学的计算机通识教育相比,在基础教育中计算思维的观念还远未得到认同和普及,即使是对信息技术课程的教学也还没有产生本质的影响,与计算思维相关的教学活动呈现概念化(究竟什么是计算思维的争论)、工具化(计算思维与编程教学等同)、碎片化(以片面的形式出现在创新教育、创客及STEM课程中)等问题。正在修订的《高中信息技术课程标准》(草稿)中,将计算思维列为信息技术学科核心素养之一,同时明确了将“发展计算思维”作为信息技术课程的目标之一。修订标准的实施为高中信息技术教育的未来提供了全新的机会与挑战。

二、Python语言特点与教学价值

在当前的信息技术教学中,与信息技术核心概念相关的理论部分主要通過课堂讲授或编程教学来体现,而注重应用的内容则通过一些具体的软件工具和实操教学来完成。两者并无紧密关联,但又共同构成信息技术课程的主体。这种结构造成了信息技术理论与应用的割裂,所带来的弊端非常明显,同时也是造成信息技术教学工具化的主要原因之一。多年信息技术教学实践表明:信息技术课程中的编程教学与训练在培养学生计算思维能力方面无可替代。

在中学编程教学中普遍采用的语言包括C语言、Java和VB等,其中尤以采纳VB的居多,使信息技术教学出现了“工具是最新的、语言是最老的”之奇特现象。无论从学科整合的需要还是从实际应用方面看,这些语言都不适合作为中学的教学语言,与社会发展及学生成长的要求脱节。因此,信息技术教学中迫切需要引入一种(或多种)既迎合技术应用趋势,又能满足中学课堂教学需要的编程语言。

作为一种现代编程思想的产物,Python语言具有语法简单、开源、跨平台、扩展性强等诸多特点,且拥有众多功能强大的应用扩展库,是名副其实的“胶水语言”,被众多领域的主流应用(如可视化、生物信息学、大数据分析等等)采纳为开发首选语言。具体地讲,在高中信息技术课程中使用Python语言,具有以下几个方面的优势:

第一,从计算机科学观点看,Python是一种较中性的语言,既吸纳了近二十年来编程语言领域中的重要研究成果和新概念(如Lambda机制),同时也不冒进,在语言的最基本内核层面上极少采用不成熟的或未经考验的新编程机制,使用Python语言实践学科核心概念、思想和方法(数据与计算、算法、计算思维等)值得期待。endprint

第二,从运行机制方面看,Python同时具备解释型、编译型和脚本型语言的共同特点;Python支持类、模块化及多重继承等面向对象核心概念,可以看作是一种面向对象的编程语言;Python还是一种函数式编程语言,其语言结构和使用方法与数学语言很类似,非常方便与数理学科融合。

第三,从开发环境看,Python的开发环境支持所有主流操作系统和平台,不但包括Windows,OS X,Linux等三大PC操作系统,也可以通过扩展库支持Web应用及安卓、iOS移动应用开发;使用Python编写的应用几乎不用做任何改变就可以跨平台运行。

第四,从扩展硬件方面看,Python的开源硬件接口库种类繁多、功能完善,基本覆盖了当前基础教育领域中用到的扩展硬件,其中Python对3D打印,Arduino和Raspberry Pi的支持和资源尤为完善。基于Python发展各类创客活动或STEAM课程既简单易行又丰富多彩,以便在信息技术课程中实现。

第五,从语言支持服务方面看,Python是典型的开源平台,与C/C++,JavaSript等重要编程语言有很好的应用库共享机制,同时在全球范围内还有众多的Python爱好者/志愿者、编程社区和资源网站(包括中文资源)作为坚强的支持后盾。

第六,从应用层面看,Python有大量各种各样的库/框架,使得开发者仅写相对较少的代码就可以完成令人印象深刻的准专业级应用。例如,Pygame框架可用于写2D游戏,GTK库可用于创建窗口应用,Django框架可以用于设计Web应用,Kivy可以用于创建Android程序,NumPy和Matplotlib可以用于数学和任何理科类计算,Pandas和D3库可以用于数据可视化,OpenCV(SimpleCV)可用于创建机器视觉高级应用,scikit-learn可以开发专业机器学习应用,ArcGIS可用于建立GIS程序……众多的专业库/框架以及对移动设备的支持,让学生有机会利用信息技术手段发现、分析、解决生活学习中遇到的真实问题,而这是达成计算思维培养目标的必经之路。

第七,从教学实施情况看,Python特别适合做数据处理(数据管理、数据可视化、大数据分析等)相关的应用,与新课标的理念非常吻合。同时,Python也是最易学易用的现代编程语言之一(其设计初衷之一就是让非专业人员容易读懂程序代码),已经成为国内外众多高校计算机通识课程中所使用的首选编程语言,这个特点非常有利于高中-大学学科学习的衔接和持续。此外,Python还支持风靡欧美教育界的“神器”-Minecraft(我的世界),学生在Minecraft可以使用Python直接为自己的化身发送指令、与他人合作或对抗。

三、基于Python的高中信息技术教学重构

基于以上背景,在高中信息技术课程教学中运用Python语言似乎顺理成章。但是,采用一种全新的编程语言教学就意味着要对整个教学内容、教学环境、教学资源和评价方法进行重构,还要对信息技术教师进行重新培训,涉及的问题相当复杂。

笔者及合作者很早就开始尝试在各个层面上的信息技术课堂及课外活动中使用Python语言进行编程教学,研究了在广义信息技术教育中,利用编程教学发展学生计算思维的各种途径,包括支持创客课程开发、学科整合(如与数学和物理的整合)等方面。基于先前的实践经验和理论研究,笔者认为:Python语言的内在逻辑与现代信息技术基础架构高度协调,基于Python重构高中信息技术教学,有望将信息技术及相关课程、活动、项目连接为一个整体,通过为学生提供充分的、由浅入深的问题求解体验,逐项落实计算思维培养的目标,从而实现课标所倡导的信息技术学科的核心价值。

图1说明了Python作为“胶水语言”,在连接课堂教学、课外活动与学生实践(与其他学科的整合)中的桥梁作用。

基于这种理解,我们建议图2所示的信息技术教学的重构模型。

其中,Python语言的部分需结合课程标准必须掌握的模块的要求,能完成对学科概念、基本算法、数据输入输出和基本计算与处理工作,这包括了Python的环境配置、基本语句、数据类型、控制结构、函数和基本库等内容。

对非专业人员而言,Python的版本选择和环境配置是一个相对复杂的问题。我们采用开源的Anaconda发行包及Python 3.x版本。Anaconda发行包同时支持Python 3.x和Python 2.x版本,自带安装程序,包含了多种流行开发环境(我们测试过的环境包括是Spyder和IPython),以及在高中教学中可能用到的所有Python扩展库或框架。

四、编程教学、问题求解与计算思维

如前所述,计算思维聚焦在叙述问题和解决问题过程中的信息处理,从这个观点上看,计算思维可以理解为求解信息处理问题时的思维方式,编程语言可以看成描述信息处理过程的形式语言,而编程则是基于信息的推理活动(计算也是一种推理)。编程语言/编程在表示/求解信息处理问题中的作用类似于抽象/逻辑在求解数学问题的表示和推理。

著名数学家G.Polya在其专著“怎样解题”中提出过一个(数学)问题求解的模型,图3显示了这个模型的核心内容:

基于Polya的模型,我们提出下列基于計算思维的问题叙述与求解模型(如图4),在这个模型中,我们特别强调问题的叙述(正确地提出问题、表示问题)、基于信息的问题求解过程(设计算法与编程实现)及求解方案评估(效率、时间和精度等)这几个重要的方法论特点,这既体现了与一般问题求解过程的显著不同,同时也表明计算思维的培养是一个逐渐积累和不断优化的迭代过程。笔者认为,只有将问题理解(包括叙述和表示)和求解(算法设计、实现、评估、优化)看成一个整体,才能真正体现出计算思维的真正价值,同时也较好地解决了编程教学中的碎片化等问题。endprint

基于以上模型,笔者将高中信息技术课程标准所涉及的学科知识、基础算法和数据处理等方面的知识和典型应用场景等,以各种项目的形式由浅入深地融入Python编程教学中,还精选了若干应用计算思维的典型案例供学习分析,这些案例涉及个人隐私、信息安全、网上购物、在线交流、共享经济等应用情境,既与学生的生活息息相关,增强他们的信息意识,也能体现社会信息化的发展,以及计算思维和Python编程在信息技术教育中的独特作用。

五、总结与展望

初步实践表明,基于Python环境及计算思维的观念对高中信息技术教育进行重构,不仅必要,而且可行。同时,在“K12教育”中系统地使用计算思维指导教学还是新生事物,无论是理念上、实践上还是资源上,都还存在很多问题,比较突出的问题包括:领导信息意识不够,对信息技术教学的整体关注不足;信息技术教师知识体系的重建;适合高中课堂教学的资源匮乏;缺乏本地化全中文Python平臺等,至今没有一种经过教学检验的计算思维及信息技术核心素养的评估体系是最大的问题。

在信息时代,传统思维方式仍然具有重要的教育价值,计算思维既不是传统思维的替代,也非学生创新思维培养的全部,计算思维必须融入更宏观的思维框架中(如系统化思维、设计思维),才能更有效地发挥其应有的作用。随着新课程标准的颁布,以及面向立德树人、核心素养的各项教育改革措施的陆续实施,计算思维与编程教学一定会超越信息技术学科本身,在培养未来创新型人才方面发挥更大作用。

参考文献:

[1] S.Papert,An exploration in the space of mathematics educations [J].International Journal of Computers for Mathematical Learning,1(1),1996.

[2] J.Wing,Computational Thinking[J].Communications of the ACM,Vol.49(3),2006.

[3] J.Wing,Computational thinking and thinking about computing[J].Philosophical Transactions of the Royal Society A,2008.

[4] P. Denning,Beyond Computational Thinking[J].Communications of the ACM,Vol.52(6),2009.

[5] A.Tucker(ed),Computing Handbook (2nd Ed)[M].CRC Press,2014.

[6] 王万良,樊磊,信息素质有助于抽象概念理解[J].黑龙江高教研究,2005,(12).

[7] 李廉.计算思维—概念与挑战[J].中国大学教学,2007,(1).

[8] 范红.计算思维的培养国际研究综述[J].中国信息技术教育,2013,(6).

[9] 董荣胜.计算思维与计算机导论[J].计算机科学,2009,36,(4).

[10] 牟琴,谭良.计算思维的研究及其进展[J].计算机科学,2011,(3).

[11] 牟琴,谭良,周雄峻.基于计算思维的任务驱动式教学模式的研究[J].现代教育技术,2011,(6).

[12] 九校联盟.九校联盟(C9)计算机基础教学发展战略联合声明[J].中国大学教学,2010,(9).

[13] 第一届“计算思维与大学计算机课程教学改革研讨会”在西安举办[J].中国大学教学,2012,(8).

[14] 陈国良,董荣胜,计算机思维与大学计算机基础教育[J].中国大学教学,2011,(1).

[15] 朱亚宗.论计算机思维——计算机思维的科学定位、基本原理及创新路径[J].计算机科学,2009(4).

[16] 冯博琴.对于计算思维能力培养“落地”问题的探讨[J].中国大学教学,2012(9).

[17] 陈杰华,程序设计课程中强化计算思维训练的实践探索[J].计算机教育,2009(20): 84-85.

[18] 张学军,郭梦婷,李华.高中信息技术课程蕴含的计算思维分析[J].电化教育研究,2015,(8).

[19] 杨健.高中信息技术基础教学中计算思维培养的案例研究[J].中小学信息技术教育,2016,(7).

[20] 倪俊杰.在信息技术课堂上提升学生的计算思维[J].教育研究与评论(技术教育),2015,(1).

[21] 陈玥,基于计算机思维的中学信息技术教育的研究[D].苏州:江苏扬州大学,2012.

[22] 李俊杰,高中信息技术课程教学中计算思维培养的策略探析[J].中国信息技术教育,2014,(12).

[23] G.波利亚.怎样解题——数学思维的新方法[M].涂泓,冯承天译,上海:上海科技教育出版社,2011.

(编辑:易继斌)endprint

猜你喜欢
Python语言计算思维信息技术教学
基于Python语言和支持向量机的字符验证码识别
论Python程序设计语言
基于Python语言的面向对象课程实践教学探讨
高职院校信息技术课程教学内容革新的探索与研究
程序设计课程中计算思维和应用能力培养问题研究
运用“分层教学”优化信息技术课堂教学设计
基于Android的Python语言英汉维电子词典设计与实现
民族高校C语言程序设计课程教学改革的研究
略谈中小学信息技术教学中微视频的应用
算法的案例教学探析