董申 冷晓莉

摘要:学生发展核心素养是能够适应终身发展和社会发展需要的必备品格和关键能力,信息意识、计算思维、数字化学习与创新、信息社会责任是信息技术学科的核心素养。文章阐述了编程教学与提升学生信息技术学科核心素养的关系,并就中学如何在编程教学中提升学生信息技术核心素养提出具体策略。

关键词:核心素养;编程教学;教学策略

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2021)S2-0093-04

研究表明,编程可以积极正向地促进儿童的个体发展,能够显著地积极促进学生的认知发展、行为发展以及情感发展,且对学前儿童、小学生及中学生的个体发展均具有显著的促进作用。[1]编程教育要站在学生发展核心素养的角度,从学生适应社会生活、接受高等教育和未来职业发展的角度开展编程教学。在以高度数字化、智能化为代表的新一代工业技术革命兴起之时,提升学生的信息技术学科核心素养显得尤为重要。

信息技术学科的核心素养

学生发展核心素养是能够适应终身发展和社会发展需要的必备品格和关键能力。《普通高中信息技术课程标准(2017年版)》中提出高中信息技术学科核心素养的四个核心要素,即信息意识、计算思维、数字化学习与创新和信息社会责任。全面提升学生信息技术学科核心素养是信息技术课程的主要目标。学科核心素养包括寻求问题解决的学科思维方式、指向问题解决的中间层及处于最底层的双基层。[2]这意味着信息技术学科,不仅仅要传授学生基础信息技术的知识与技能,更要培养学生的社会适应能力和生存能力。

编程教学对信息素养的促进作用

编程教学与信息技术学科核心素养的培养有着密切的联系,是培养学生核心素养的可行途径之一。编程的过程本身就蕴含着计算思维的思想;在编程的学习过程中,学生可以有效开展数字化学习,同时提升学生的创新能力;在编程解决实际问题的过程中,学生能充分感受到信息的价值,主动地寻求恰当的方式处理信息,意识到使用信息技术时承担的社会责任。在核心素养的视角下,编程教学可以培养学生学会使用信息社会的思维方式和工具来解决问题,帮助学生理解当今数字化世界的运转方式,使其成为合格的数字公民。

编程教学中提升学生信息素养的实施策略

1.基于真实情境设计开放式问题,给予学生探究空间

学科核心素养的提升并不能通过简单的知识传授来实现,而需要学生不断在真实情境中通过对问题的解决逐步培养。在编程教学中可以设计基于真实情境的开放式编程问题,让学生围绕真实问题,搜集信息,寻找问题解决的方案。开放式问题给学生更多的探究空间,真实情境帮助学生建立学习与生活的关联,两者都能激发学生的学习动力。学生在寻找问题解决方案的过程中,需要自觉、主动地寻求恰当的方式来获取信息,并采用有效策略对信息来源的可靠性、内容的准确性、指向的目的性做出合理判断。这有助于提升学生对信息的敏感度和对信息价值的判断力,并培养学生的创新能力。

探究性编程问题举例:在日常生活中,很多人都会在晚饭后散步,其实简单的走路是一种很不错的运动减肥方式。(1)你能否设计一个程序将步数转换成卡路里?(2)如果利用智能手机实现上述功能,可以怎样设计?

在问题(1)中,学生要分析出步数与卡路里存在怎样的关联,这需要查询相关信息,建立模型,才能进行算法设计、解决问题。在问题(2)中,学生在了解手机中传感器的基础上,思考如何借助手机传感器获取数据,实现通过记录步数进而解决计算卡路里消耗的问题。在此过程中,学生要从真实世界中发现数据,并对数据的价值做出判断,有助于提升学生的信息意识,培养学生作为未来的从业者对数据的敏感度和创造性解决问题的能力。

2.用程序设计IPO模式确定问题,理清基本工作过程

程序设计方法中最常见、最基本的模式就是IPO模式。在编程教学中可以通过该模式明确问题的输入和输出,理清程序的基本工作过程。其中I是Input程序输入,P是Process处理,O是Output程序输出(如图1)。

IPO确定问题举例:ATM自动取款机可以实现金融交易的自助服务,代替银行柜面人员的工作。(1)请列举ATM自动取款机通常会提供哪些服务?(2)你能够设计一个程序模拟ATM自动取款机密码验证的功能吗?(3)你还能模拟ATM自动取款机其他的功能吗?

用IPO模式对第二问进行确定——

I输入:测试密码(程序的开始)。

P处理:对密码进行验证匹配(算法)

O输出:验证结果(程序展示处理成果)。

在编程教学中,教师可以通过不断地引导学生用“输入—处理—输出”IPO模式确定问题、分析问题,帮助学生提升问题界定、任务分解、特征抽象的能力,培养学生的计算思维。

在信息社会中,我们身边有形形色色的信息系统。信息系统的基本工作过程就是输入数据、处理数据和输出数据。针对解决问题的不同,输入数据和输出数据的方法也有很多:常见的输入有用户手工输入、文件输入、网络输入、随机数据输入等;常见的输出有屏幕显示输出、文件输出、网络输出等。借助IPO模式,学生可以理清身边信息系统的基本工作过程:系统的输入是什么?系统的输出是什么?系统在输入与输出之间进行了怎样的处理?

计算思维是个体运用计算机科学领域的思想方法,在形成问题解决方案的过程中产生的一系列思维活动。站在学生未来发展的角度,即使学生未来不从事程序设计的工作,从使用者角度也可以借助计算思维清晰地理解身边信息系统的基本工作过程。

3.“问题链”支持下的自主学习,助推学生数字化学习与创新

在编程教学中,因为学生的基础或学习能力不同,容易出现教学进度难以把握、学习效果差异大、学生失去学习动力等问题。基于“问题链”支持的自主学习,有助于在解决上述问题,同时能够实现学生个性化学习和隐性的分层。

在教学过程中,教师提前设计好一系列的学习问题和单元任务,通过在线平台给出学生学习的路径和必要的学习资源,如程序示例、动态原理图片、测试问题、作业任务等;学生像闯关一样,依据教师设计的“问题链”,不断运行或修改示例程序,自主探究、分析、解决问题,在实践过程中掌握相关知识;解决当前问题后完成评测,进入下一个问题,最终解决所有问题,完成单元任务。这种数字化学习实践过程不仅帮助学生深化学习知识,还培养了学生理性思维、批判质疑和勇于探究的科学精神,有效提升学生数字化学习与创新的能力。

不同阶段学习内容的特点不同,“问题链”的设计依据也有所不同。学习初期,教师围绕基本的语句、语法、知识点,给出“问题链”及示例程序,学生运行程序后观察运行结果。学生在教师提出的“问题链”的引导下,对程序的语句以及输出结果进行分析,理解语句含义,并通过不断思考与尝试解决“问题链”中的问题,来检测知识的掌握情况。

例如,在进行循环结构的教学时,首先给出正四边形和五角星的程序,让学生尝试运行后观察代码,分析for语句、right()、forward()与绘制结果的关系(问题填空),并迁移到绘制其他多边形(测试任务);然后给出螺旋线,让学生分析与绘制多边形的不同(选择题),进而引入循环变量在循环体中的影响(动态原理图片),修改程序绘制新的螺旋线(测试任务);最后给出多样的螺旋纹程序示例,让学生对比分析思考循环的意义,完成最终作品《创意螺旋纹》(如图2)。

在学习中后期,问题复杂程度加大,“问题链”的设计可以围绕计算思维的四个过程进行。计算机思维是一种使用工具高效解决问题的思路方法,它分为四个步骤:分解、模式识别、抽象化、算法。分解是将一个大问题拆解成许多小的部分,这些小部分更容易理解,让问题更加容易解决;模式识别是识别不同问题中的模式和趋势(共同点)的过程;抽象化是看待问题要抓住主要的本质的东西,忽略其他的,去繁求简,从以往的经验中得到规律并且举一反三将它运用到其他的问题中;算法是一步步解决问题的具体过程。围绕计算机思维的四个步骤作设计教学中的“问题链”,旨在让学生充分感受计算机解决问题的过程与方法,并能迁移到相关问题的解决中。

例如,世界上有多种货币,你能不能为银行设计一个货币兑换的程序?

货币兑换其实包含不同币种之间的相互转换,如人民币换美元、美元换人民币,人民币换日元、日元换人民币,美元换日元、日元换美元等。是现钞兑换,还是现汇兑换?过程相对复杂。面对这样的问题,将问题分解就显得尤为重要。

分解:在这个问题中,我们需要将问题进行分解,可将其分为现汇买入、现钞买入、现汇卖出、现钞卖出四个相对独立的问题。

模式识别:整个程序分为四个子模块,每个模块输入顾客手里货币的种类和数量,输出兑换后货币的数量。

抽象化:输出=输入*汇率。

算法:用户输入需要的业务类型,手里拥有的货币的种类和数量,需要兑换的货币的种类,最后程序输出兑换后的金额。

4.编写程序注重用户视角,提升学生信息社会责任

信息社会责任是指信息社会中的个体在文化修养、道德规范和行为自律等方面应尽的责任。要践行一种责任,首先需要了解这种责任的内涵,其次需要从内心对其认同并内化。[3]在编程教学中,教师要引导学生建立用户视角,考虑程序如何设计才能在解决实际问题的同时提升用户体验,并强调要安全并负责任地使用信息技术,如减少程序导致的安全隐患、保护用户的数据和信息、避免侵犯他人的数据和隐私。

例如,在ATM取款机密码验证的程序中,引导学生思考设置密码输入次数的重要意义,既要考虑到用户操作失误的可能性,不能只设一次,也不能不限制次数,造成密码被暴力破解的安全隐患。在设计编写程序解决实际问题的过程中,学生可以更好地理解社会责任的内涵,并不断内化认同信息社会责任感。

结语

编程教学要想摆脱传统“程序员式”代码编写和语法学习的枯燥教学方式,就需要调整原有的教学策略并更加关注学生核心素养的发展。经过教学实践可以得出,通过在编程教学中设置基于真实情境的开放式问题、利用程序设计的IPO模式理清问题解决的过程、实现“问题链”支持下的学生自主学习和注重用户的视角,可以有效助推学生计算思维、数字化学习与创新能力的发展,提升信息意识和信息社会责任。希望借助编程教学,为学生适应未来社会生活、接受高等教育和未来职业发展奠定坚实的基础,这也是我们信息技术教育工作者肩负的使命。

参考文献:

[1]孙立会,胡琳琳.编程真的能促进儿童的个体发展吗?——基于28项实验和准实验研究的元分析[J].华东师范大学学报(教育科学版),2021,39(11):45-58.

[2]姚丽娟.基于学科核心素养的高中信息技术课堂教学设计与实践研究[D].徐州:江苏师范大学,2017.

[3]邱振华.核心素养视角下的初中编程教学研究[J].中国信息技术教育,2021(10):109-112.