高中编程教育中学生数字化学习与创新能力的培养*
于晓雅
摘? ?要:数字化学习与创新是信息社会公民的基本素养,是信息技术学科的核心素养及价值追求。编程教育作为信息技术学科的核心内容,教师更多地关注了计算思维的培养,而忽视了编程教育能很好地体验和培养学生数字化学习与创新能力。文章以编程语言Python和数字化环境Jupyter Notebook的选择和应用为例,详细解析了从评估和选择数字化工具、帮助学生实现自主和协同创新、培养实践创新能力三个维度来践行学生数字化学习与创新能力的培养,探索和引导信息技术学科教师通过编程教育培养学生的数字化学习与创新能力。
关键词:编程教育;数字化学习与创新;Python语言;Jupyter Notebook数字化环境
中图分类号:G434 文献标志码:A 文章编号:1673-8454(2021)10-0080-04
一、引言
数字化学习与创新是信息社会公民核心素养的基本组成部分,是世界各国课程标准的重要取向之一。在欧盟“数字素养框架”[1]和美国“21世纪技能框架”中,把“建构数字化学习环境”并获得“学习和创新技能”作为学习成果的关键组成部分。在我国,数字化学习与创新和信息意识、计算思维、信息社会责任同为信息技术学科的核心素养,释义为“个体通过评估和选择常见的数字化资源与工具,有效地管理学习过程与学习资源,创造性地解决问题,从而完成学习任务,形成创新作品的能力”[2]。数字化学习与创新素养作为发展其他三项核心素养的实践经验来源和具体体现,是我国信息技术学科的核心价值追求[3]。
自从《普通高中信息技術课程标准(2017版)》(以下简称《课程标准》)将计算思维作为核心素养以来,提起信息技术课程的核心内容编程教育,信息技术学科教师首先想到的是学生计算思维的培养。编程教育的确是培养计算思维的有效途径,但是在计算思维的基础之上,编程教育更能很好地体现信息时代的数字化学习与创新能力,这是信息技术学科教师教学中很容易忽略的地方。《课程标准》对“数字化学习与创新”的内涵表述为“能够认识数字化学习环境的优势与局限性,适应数字化学习环境,养成数字化学习与创新的习惯;掌握数字化学习系统、学习资源与工具的操作技能,用于开展自主学习、协同工作、知识分享与创新创造,助力终身学习能力的提高。”据此,本文从评估和选择数字化工具、实现自主和协同的教与学、培养学会学习和实践创新三个维度来解析如何在编程教育中培养学生的数字化学习与创新能力。[4][5]
二、利用编程教育培养评估和选择数字化工具的能力
数字化学习与创新能力首先是能够认识数字化学习环境的优势和局限,评估和选择数字化资源和工具。编程教育中学生的数字化学习与创新能力培养首先是认识所选语言的优势和选择适当的编程环境。在高中阶段,首先要引导学生认识Python编程语言与其他语言的优势和局限,在此基础上选择最适合Python语言的数字化编程环境。这不仅是学生数字化学习与创新能力培养的关键步骤,也是教师信息素养提升的重要环节。
1.Python编程语言的优势
Python是现代编程思想的产物,开发环境支持包括Windows、OS X、Linux在内的主流操作系统和平台,是典型的开源平台;同时具备解释型、编译型和脚本型语言的共同特点,执行效率高;与C/C++、JavaSript等重要编程语言有很好的应用库共享机制,不仅支持模块化编程,还支持面向对象编程,方便协同工作;拥有众多功能强大的应用扩展库,可扩展性强;其开源硬件接口库种类繁多、功能完善,有利于创造真实产品;语法简单精炼,格式要求低,是最接近自然语言的程序语言;Python语言提供大量的库/框架,各种各样的插件,使得开发者仅写相对较少的代码就可以完成令人印象深刻的准专业级应用。Python的诸多优点使其逐渐成为企业级中小型软件开发领域的主流语言。对于中小学生来说,自然语言让没有编程基础的学生也能体会到编程的乐趣,获得成就感,从而爱上编程。对于中小学教师而言,Python代码在书写格式上的严格(如强制要求缩进),让教师不必花费大量时间去处理学生代码格式的错误问题。Python语言不需要编译即可直接执行的特点,也有利于程序调试、代码检测等,方便教学和指导。综上,Python语言不仅是企业开发的首选语言之一,也是一种非常适合用于教学的语言。学生在中学阶段系统地学习Python语言,也可以为今后进入大学继续研究和进入社会就业打下良好基础,因此高中信息技术新课标也把Python语言作为核心编程语言。[6]
2.Python开发环境(IDE)的优势与局限
每一种编程语言都有自己的集成开发环境(Integrated Development Environment,IDE)。如C、C++等语言的Visual Studio,Java语言的Eclipse,适用于php语言开发的PhpStorm等。Python语言也有自己的开发环境,如PythonWin、MacPython、PyCharm等。好的IDE开发环境不仅包括代码编辑、编译、调试等功能,还包括自动建立工具、除错器、语法高亮、智能提示、格式自动调整、快捷键自动完成、项目管理、版本控制等辅助功能。作为系统化的编程环境,Python的IDE开发环境(如PyCharm)基本具备了上述IDE的优势,在大型软件开发中依然是主流选择。这种系统化对于传统程序设计来说是优点,而对于数据分析和机器学习等人工智能编程人员来说,却是极大的不便。大数据和机器学习编程的突出特点是分析和建模碎片化,也就是每一块代码都是强独立性的,可以说除了数据本身,代码块之间并没有很强的关联性,下一模块和上一模块之间经常只有输入输出参数的联系。但是数据分析和处理的过程又需要不断地反复调试和修改,如改变预处理的方式、尝试不同的特征处理、调整模型参数等。使用传统的IDE环境(如Visual Studio)每次都需要编译运行整个程序,而不能单独运行每一行代码,限制了Python解释性程序的优势;编辑环境和运行环境分离,不能直接查看运行效果,降低了参数调试的可视化;注释文字不能直接输出,使得教师在编程教学中经常要在编程环境和运行环境、教学PPT之间来回切换。传统IDE环境不仅降低了程序开发的效率,也极大地限制了师生学习过程中的自主、协作和创新。特别是需要小组协作,共同完成一个任务时,IDE环境就非常麻烦。
3.Jupyter Notebook的特色和优势
Jupyter源于2014年的ipython项目,是一个非盈利的开源产品,名字源自数据科学的三种开源语言Julia、Python和R,如今已经逐渐发展成为支持跨所有编程语言的开源软件、开放标准和交互式数据科学计算工具。Jupyter Notebook具有智能時代数字化学习环境所需要的开放性、预设性、生成性、交互性以及虚拟性等特点,让编程调试更方便快捷,更适合新课标运用计算思维实现问题解决和数字化创新能力培养的目标。不仅在课堂教学中深受信息技术学科教师的喜爱,也非常有利于在线教学场景,目前已成为MOOC平台的首选环境。
(1)Jupyter Notebook的模块化适应了人工智能编程的特点
Jupyter Notebook是基于浏览器的交互式编程环境。Jupyter Notebook作为一种模块化的Python编辑器(现在也支持R等多种语言),可以把大段的Python代码碎片化处理,并分开每一段来运行。该工具不仅为数据处理、分析、建模、观察结果提供更好的视觉体验,更能大大缩小运行代码及调试代码的时间,同时还会让整个处理和建模过程变得异常清晰。因此,Jupyter Notebook逐渐成为互联网和人工智能企业中小程序开发环境的主流选择。
(2)Jupyter Notebook适合Python编程教学
Jupyter Notebook通过可重复交替设置的代码单元、标注单元和输出单元,将实时运行的代码、叙事性的注释文本及图片、可视化运行输出结果整合在同一平台内,使得其不仅具有如PPT一般的展示工作成果功能,还可以在同一窗口进行程序调试和观察效果。通过添加代码单元,可以单独运行每一行代码,能很好地契合Python解释性语言的特色,大大增加了程序调试的效率。输出单元让程序运行和运行结果在一个环境内的不同代码块中,可视化效果好。标注单元可以输出注释文字、兼容的HTML和LaTex等网页效果和公式。一体化平台让教学不再头疼于运行、结果和讲义之间的往复切换。同时,该工具允许在一个文档中使用任意多个编程单元,让课程的组织呈现非线性化。以上特色让Jupyter Notebook成为最适合Python的教学平台。
Jupyter Notebook允许在浏览器上运行交互式python代码,支持编写和调试几乎同时进行,又有众多的插件和命令,大大增强了Python的编程体验。同时让编程过程不像专业IDE环境那样复杂,有利于学生将注意力集中在问题解决本身上,而不是环境的使用上,从而激发学生的学习兴趣。北美顶尖的计算机课程几乎都放弃了命令行Python的形式,转而选择Jupyter Notebook作为授课和作业实践的基本工具。
三、利用互动创生的教与学应用培养学生自主学习能力
在信息技术学科教学中,学生在数字化环境中的自主性、创造性和问题解决能力是“数字化学习与创新”的三个主要评价指标。创设适合学生发展的数字化学习环境,促进其自主学习和创新能力形成,是信息技术学科教师教学设计的一个重要基础。学生在数字化环境中接触信息技术、掌握信息技术,并充分应用信息技术探索解决现实世界的问题,逐渐形成自己的“数字化学习与创新”素养。选择适当的数字化编程环境后,还需要在实践中充分认识和利用该环境,以及它提供的学习资源与工具,用于开展自主学习、协同工作、知识分享与创新创造,助力终身学习能力的提高,更加有效地达到数字化学习和创新的内涵要求。
1.支持同行数字化协同和协作
和同行使用相同的协作工具交流,是数字化学习与创新能力的主要外在特征。Markdown是Jupyter Notebook标记单元内书写文本内容的格式,每个Markdown单元都可以看作一个小的文本编辑器,不仅兼容多种编程语言,还支持HTML语言格式的引用。原则上任何HTML网页效果都可以直接放置在Markdown单元中。文档标记单元内还支持嵌入国际主流科学类杂志的标准格式LaTex语言标签,从而能产生任意复杂的印刷质量数学符号和方程。
Markdown已经成为开源社区一种新的文档标准,赋予Jupyter Notebook强大的兼容性,极大地方便了Python语言的功能和使用者在开源社区与同行的交流协作。教师可以利用Jupyter中Markdown语句的操作,将输出结果嵌套在Notebook中,使得在Jupyter中输入任何内容都会以一种有组织、有层次的形式排列展示出来,也非常有利于教案的设计排版和教学讲义的生成。
2.支持互动创生的教与学过程
在编程教学中,最让教师头疼的是在PPT讲义和编程环境之间来回切换,代码放在PPT中,既没办法呈现调试过程,也无法观察编程效果,而IDE环境又无法直接做成讲义。Jupyter是一个集代码编写、文本显示和运行结果为一体的数字化整合环境,当被应用于教学时,教师可以利用这个特点设置相应的题目以及部分讲解内容,而学生则负责填满教师所预留的空白以达到作业的要求,师生互动完成编程任务。也可以组织学生小组协作、合作完成一个任务。通常在一个Jupyter Nootebook文件中,标注单元、代码单元交替重复出现,运行单元紧随其后,学生可以一边学习,一边验证,一边拓展,通过执行代码来理解问题,迭代式地修改代码来改进解决方法。这种交互创生的教与学方式有利于极大地发挥学生学习的自主性和创造的兴趣。丰富的库、框架及插件为学生提供了支架帮助,扫清学生创新创造的技术障碍。这种在IDE环境中做不到、想不到的事情,在Jupyter Notebook数字化环境中不仅能想到,而且可以做到,并能方便地引入课堂,这才是数字化学习与创新的价值所在。
3.支持生成可运行程序的网页演示文档
Jupyter Notebook可以通过安装插件的方式扩展其功能。例如,可以使用一个称为RISE的扩展,将Notebook文档转换为基于网页的演示文稿,而演示文稿中的代码单元仍然可以实时运行和调试,还可以用隐藏命令隐去不需要演示的部分,非常方便教师撰写教学文档,并直接开展教学。
4.支持快速生成并输出PDF版文档作品
若想分享在Jupyter Notebook中处理好的数据流程和创建的绘图,或者将文字、图片、代码和注释快速生成文档,只要安装“notebook-as-pdf”包并通過相应的命令,就可以快速实现。利用该功能,学生可以快速生成学习成果汇报作业,教师可以生成教学讲义以及教材的原型稿,进而形成论文和著作等。
四、利用问题解决过程培养实践创新能力
数字化学习与创新是学会学习和实践创新的综合体现。根据建构主义的观点,学习更多是一种“向内”的自我建构,而创新则是一种“向外”的践行。信息技术学科教师首先要熟悉学科核心素养的语境,理解数字化学习和创新的概念,但更重要的是在课堂教学中,创设合适的数字化学习与创新的环境和活动,引导学生利用数字化资源创造性地解决问题。例如,在“神奇的π”项目学习中,教师设计了借助Python和Jupyter的编程语言和环境,探索π值计算的算法,不仅能深刻理解我国魏晋时期数学家刘徽首创的割圆术“以直代曲、无限趋近、内外夹逼”的极限思想,而且可以用完整的程序重现计算过程,来验证中国古籍中记载的π值计算的准确性,进而拓展到现存的各种π值计算方法。该方法不仅突破了数学学科教学的难点,还通过编程实现,让学生体验了算法解决问题的奥妙,最终让学生认识到数字化工具在解决问题过程中的重要作用。在“AI文学鉴赏”项目中,基于已有的文学诗词文库,利用分词技术、正则匹配、实体抽取等技术,可以提取唐代诗人关系图、苏轼诗词特点、李白不同诗歌类型的写作数量甚至诗词的创作地点分布图等,给学生提供一个利用数字化工具认识和鉴赏中国文化的新视角。诸如此类的实践创新项目,是运用信息技术学科编程技术独有的问题解决过程,但不是简单的技术辅助学科学习,而是信息技术学科思维和学科思维的深度融合,不仅强化了学生对于学科内容的深刻理解,还极大地促进了学生的学习兴趣,提升创新性解决问题的能力。
五、结语
数字化学习环境不仅改变了人们的学习方式、交往方式,也深深影响了人们的思维方式。因此,数字化学习与创新中的学习是运用数字化环境自主学习和协同协作的相结合,创新是数字化环境下问题解决过程中的创造。
中小学信息技术学科教师应当具有比学科教师更高的数字化环境创设及信息技术应用能力。但据实际调研可知,信息技术学科教师授课时,往往直奔主题,而忽视了教育技术与教学内容的深度融合,注重技术掌握目标的达成,而忽视了核心素养的培养。编程教育要摆脱传统“程序员式”代码编写和语法学习的枯燥教学方式,就必须提升信息技术学科教师的信息素养。信息技术学科教师不仅能认识编程语言的优势与局限,还要能选择适当的数字化环境,开展项目式的问题解决过程实践,最终培养学生“创造性地解决问题,完成学习任务,形成创新作品”的能力。
参考文献:
[1]任友群,随晓筱,刘新阳.欧盟数字素养框架研究[J].现代远程教育研究,2014(5):3-4.
[2]潘家琪,刘俊强.“数字化学习与创新”素养解读与教学建议[J].中国教育信息化,2019(6):1-4.
[3]刘向永.面向核心素养的高中信息技术课程标准修订——访教育部高中信息技术课程标准修订组组长任友群教授[J].中国信息技术教育,2017(12):4-8.
[4]杨晓哲,任友群.高中信息技术学科的价值追求:数字化学习与创新[J].中国电化教育,2017(1):21-26.
[5]解月光,杨鑫,付海东.高中学生信息技术学科核心素养的描述与分级[J].中国电化教育,2017(5):8-14.
[6]樊磊.面向中小学教师的Python编程入门[M].上海:上海科技教育出版社,2020.8.
(编辑:王晓明)