摘要:发展计算思维是当前高中信息技术学科的核心素养之一。随着思维教学的深入,越来越多的学术工作者和教育工作者开始重视思维教育在信息技术教学中的关键性。这此基础上,下面首先阐述什么是计算思维以及计算思维教学的现状。然后,根据普通高中《算法与程序设计》的教学特点,探索了基于计算思维培养的教学模式,希望能与一线教学同行探讨如何在教学中更有效地实施计算思维的培养。
关键词:计算思维;教学方法;思维教学
随着新课程标准的颁布,“计算思维”一词近年来被越来越多的人提及。2017版《普通高中信息技术课程标准》明确提到,计算思维、信息意识、数字学习、创新和信息社会责任是当前高中信息技术学科核心素养的四个核心要素。一线教师的教学重点应从基础知识教学转向培养学生的核心素养。
但是计算思维到底是什么呢?卡内基梅隆大学在21世纪初发表了一篇文章,指出“计算思维是解决计算机科学应用中的问题的思维活动”。目前,国内外计算思维正在逐步深化。国际教育技术协会(International Association of Educational Technology)在2011年定义了计算思维,即“计算思维特指问题解决过程的思维,是一种通过组织逻辑、抽象表示和算法来解决的思维”。计算思维在国内信息技术教学中的整合始于2010年。西安交通大学和清华大学在中国举办的“计算机基础课程研讨会”标志着“计算思维”在国内信息技术教学领域的广泛实施。
到目前为止,计算思维的教学理念已经在我国实施了十多年。提出这一概念是为了解决教学课堂中“教学与技术发展脱节的实际问题”。要解决这个问题,及时创新教学内容当然是一个解决方案,但新教材的实施需要一些时间,教师也需要一些时间来改变教学方法。常言道“授之以鱼不如授之以渔”,只有让学生真正树立起符合“信息技术发展”的思维模式,才能够让其信息技术水平得到有效提升。从信息技术教学中计算思维培养的现状来看,仍然缺乏规范统一的教学模式。作为一线信息技术教师,一直困惑于“在实际教学中如何培养学生的计算思维?在教学过程中,仍然不可避免地要采用传统的“灌输”教学方法,注重知识内容的记忆、技能和方法的模仿以及课程内容的体现,而忽视教学方法的深化、学生计算思维和问题解决能力的培养。[1]
二、普通高中《算法与程序设计》教学的内容与特征
在高中信息技术教学系统中,《算法与程序设计》教学模块是培养学生计算思维的最有利模块。其主线是“程序设计”,核心是“算法”。其内容大致可分为三个部分。一个是计算机解决问题的基本过程。二是算法,三是编程语言,内容从浅到深,紧密相连,逐层递进。《普通高中信息技术课程标准》也强调“算法与程序设计”的教学应注重与生活中实际问题的联系,培养学生“发现问题”、“分析问题”、“解决问题”的实践能力。这与“计算思维”的核心概念不谋而合。
《算法与编程》涵盖了相对广泛的知识内容,内容作为一个整体表现出很强的开放性和灵活性。除了掌握类型、变量、常数、表达式、函数等基础知识,学生还应该学习经典算法思想,如枚举算法、气泡排序、选择排序、二等分搜索,以及程序结构,如序列结构、选择结构和循环结构。然后,将算法转换成特定的编程语言进行反映,从而实现计算机驱动,完成问题解决的过程。在我们的教学中,要注意让学生学习基础知识,同时,要特别注意让学生学会提炼关键问题和思考问题的解决方案,并在过程中不断调试和纠正错误,寻找更合适和有效的方法来解决问题,逐步实现学习的深化,培养学生的计算思维,更有效地理解算法,真正提高学生的信息素养。根据这一思想,作者在《算法与程序设计》的实际教学中进行了实践。本文以《排序算法》为例,探讨了在教学中实施计算思维的培养与发展的策略。
三、基于计算思维培养的教学模式探索
(一)创设任务情境, 构建思维模型
课堂教学的内容必须激发学生的学习热情,“任务”可以作为指导学生学习的核心要素。教师应根据教学和思维的特点设计任务情境。最好使用贴近生活、充满兴趣的程序示例来激发学生的学习兴趣,并恰当地提问,以便学生能够与他们讨论。以《排序算法》教学为例,我做了如下工作:
老师:同学们,你知道中国有很多家族名字,历史悠久。“赵钱孙李,周吴郑王……”《百家姓》读本可谓家喻户晓。那么,你们知道自己的姓氏在全国的最新排名情况如何吗?
学生:面带兴趣,低声讨论。
老师:老师已经制定了一个家庭姓氏分级程序,希望邀请两个同学去查一下家庭姓氏的排列顺序。同时大家想一想,这个程序到底是如何将姓氏进行排名的?
学生:跃跃欲试,纷纷举手。
被邀请的学生在台上通过姓氏排名程序找到自己姓氏在全国最新的排名,台下学生热烈讨论。
在教学实践中,我明显觉得有趣而贴近生活的任务情境能让学生更快地进入到学习状态。教师可以帮助学生理清思路,了解需要解决的基本问题,建立初步的思维模式,为后续教学铺平道路。
(二)有效引导,让思维从无形到有形
“指导”是教师在教学过程中的主要任务,也是培养学生计算思维的重中之重。教师在教学过程中应注意在指导过程中嵌入“计算思维”,使学生的计算思维能够通过微妙的方式形成。有些算法如果只用语言描述可能会很抽象,很难理解,但动画不仅可以提高学生的兴趣,还可以通过演示过程更直观地表达算法的中心思想。让学生感受计算机解决问题的方法和过程,引导学生思考问题,学会提取问题的基本特征,明确解决问题的关键点,从而培养和发展学生的计算思维。在“排序算法”教学中,我的做法如下:
老师:根据姓氏表,最新的姓氏人口数据用于排序前9个中国姓氏(使用自然语言逐步解决),并通过动画演示这些数据的选择排序过程。
学生:认真观看动画,感受选择排序的算法思想。
老师:在我们的生活中,我们经常需要这种安排,如队形安排、结果排序等。现在我有一组混乱的数据,需要学生按照刚才的排序方法,按照升序快速排序。请首先试着用自然语言来描述这个过程,然后用流程图来表达这些数据的排序过程。
学生:短暂讨论后,完成流程图的绘制。
在教学实践中,我觉得引导学生用自然语言和流程图一个接一个地表达算法,可以通过说和画把抽象的算法思想转化为具体的解决步骤,这是澄清学生思维、具体化抽象问题的非常有效的方法。教师也可以对个别学生的流程图做简单的评论,总结排序的算法思想是在一组数据中找到最小的数并与第一个数交换,然后找到最小的数并与剩余数据中的第二个数交换,直到所有数据都排列整齐。并将选择处理时间、比较时间、交换时间的种类来解释。让学生在观察和思考中更好地理解选择排序算法思想的具体方法。
(三)算法优化,拓展计算思维
一个问题通常有不止一个解决方案。在教学过程中,应该引导学生采用各种方法解决问题,完成任务。为了培养学生分析问题、发现规律的能力,激发学生的学习热情。最后,应适当引导学生比较不同算法的优缺点,学会选择更合理有效的算法来解决具体问题,通过不同算法拓展学生的计算思维,形成良好的思维和积极的思维学习习惯。例如,在排序问题上,除了选择排序方法之外,我们还有其他排序方法,这些方法可以通过气泡算法、插入算法等方法来解决。在我的《排序算法》教学实践中,我做了以下工作:
老师:选择排序可以很快地将我们的这组数据排列好,同学们,有人还能想到其他方法吗?
学生:热烈讨论,踊跃举手。
老师挑选了几个学生的建议进行总结:我们也可以一个一个地比较两个相邻的数据,并把小的数字向前推。学生们提到的方法是经典的气泡排序算法。
老师:利用动画演示冒泡排序算法排列数据的过程。
学生:在观察中总结冒泡排序算法的特点,并用流程图画表达排序过程。
老师:同学们比较一下两种排序算法在加工遍数、比较次数、交换次数方面有什么不同?当前这组数据更适合哪种算法?
生:分组讨论,比较总结。
师:复习学生的总结,比较两种算法的优缺点,总结出更适合这组数据的算法。然后引入一种更优化的插入排序算法,减少了比较和交换的次数,使学生感受到更有效的算法思想,扩展了学生的计算思维。
(四)点评纠错,巩固思维
教学过程中的“评改”可以引导学生的思维朝着正确的方向发展,保证计算思维训练的有效性。笔者认为,在教学过程中,教师应该恰当地“留有空白和错误”,让学生自主操作,然后提示出现的问题,引导学生独立解决和分析问题。[2]比如说,作者在《排序算法》的练习巩固中,有一道题目的设置如图1:
图1
在这个问题中,我要求学生使用选择性排序算法对数据进行排序,考虑处理次数和交换次数。事实上,这组数据可以安排在四个处理时间内。制作表格时,我特意多留了一行,正是这样的设置,有些对算法理解还不够透彻的学生会在第五行继续写上错误的第五次排序过程。在评论的时候,我会特别拿出典型的错误案例和错误的答案,让学生判断自己是否错了,让他们讨论错误在哪里,然后逐一总结和解释。这种设计让学生突然明白了问题,深刻理解了在选择算法的排序过程中n个数只需要被排序n-1次,并对这一知识点印象深刻。只有让学生以这种方式直观地理解学习过程中存在的问题,他们才能更有效地培养和巩固他们的“计算思维”。
四、结束语:
面对计算思维的培养,作者和大多数一线教师一样,仍在教学中实践和探索,希望能找到一种更有效的教学模式。让我们在实践中摒弃传统的“灌输式”教学方法,通过积极的干预和引导,调动学生的思维活动,让学生用计算机解题思维提炼问题,解决问题,优化解决方案,让学生的计算思维以《算法与程序设计》为载体,在学习中绽发光芒!
参考文献:
[1]刘敏娜, 张倩苇. 国外计算思维教育研究进展[J]. 开放教育研究, 2018, v.24;No.131(01):43-55.
[2]陈明选, 张宁. 基于高中信息技术学科核心素养的学习活动设计[J]. 中国电化教育, 2019, 384(01):92-98.
[3]钱松岭. 数字时代的学习变革——美国国际教育技术协会2017年会暨教育展览会综述[J]. 中国电化教育, 2017(10).
[4]解月光, 杨鑫, 付海东. 高中学生信息技术学科核心素养的描述与分级[J]. 中国电化教育, 2017(5).
[5]张玉宁. 基于计算思维的程序设计类课程教学实践研究[J]. 现代电子技术, 2017(23):170-173+178.