沈贤
摘要:算法思维是评价学生计算思维能力中最重要的一个维度。初中阶段是学生抽象思维形成的重要阶段,教师可通过在信息技术课堂采用合理的教学方法,发挥学生的主观能动性,以学生为中心来培养学生的算法思维,进而用算法思维的方式来优化学生的学习方式。文章通过对课堂实例的观察、分析,从而归纳出培养初中学生算法思维的基本策略,以期对初中阶段学生算法思维的养成提供一定的参考。
关键词:算法思维;课堂教学策略;有穷性思维;可行性思维
中图分类号:G434 文献标志码:A 文章编号:1673-8454(2020)06-0073-04
随着计算机技术深入人们的学习与生活,学校更加注重对学生计算思维的培养。江苏省2018年3月颁布的《江苏省义务教学信息技术课程纲要》中更是把“程序设计”从选修模块变为了必修模块,其根本目的就是要让学生在初中阶段就具备算法思维,不仅可以解决与计算机相关的问题,还可以解决现实生活中的各类问题。笔者将结合教学实例,通过对初中生信息技术课堂的观察和思考,以期找到进一步提升学生算法思维能力的方法。
一、算法思维的的概念与内容
1.算法思维的概念
“算法”的概念最早只使用在数学领域,指用来解决数学问题的方法,现在定义为通过有限步的确定的操作解决某一类问题的方法。其所指的内容一直未变,就是在有限的时间内给出有穷的操作,最终解决某种问题的结果。“思维”在心理学、哲学、逻辑等非学科都有不同的解释,而算法思维中的“思维”则是人类进行思考的过程。所以笔者认为算法思维可理解为人们为了解决问题而进行思考后给出的在有限时间内可行性的操作。算法思维与普通思维的最大区别在于其提高了解决问题的效率。
例如需要在1-10中找到某个随机的数字,如果按照顺序查找效率会很低,但是如果采用二分法的算法思维,每次将查找范围缩小一半,极大地提高了效率。如表1所示,通过二分法将7次查找简化为3次,假如数字规模更大,二分法解决问题的优势会更明显。如若学生能运用类似的思维方式来解决问题,无疑将事半功倍。
2.算法思维的内容
“算法思维”是一种通过明确定义的步骤来解决问题的方法,而不是计算出一个问题的答案,是让学生自主开发一组指令或规则。不论是人还是一台计算机,如果准确地遵循与执行这组指令或规则,就会得出问题答案的类似这种解决问题的方法。[1]
从上述对于“算法思维”内容的描述我们可以发现,首先算法思维应当是有穷性的思维,当使用算法思维来解决问题时,我们应当考虑它是有一定的运算次数,因为计算机不可以一直运算下去,必定有一个结束的结点,这样的点可以是一个明确的结束次数,也可以是一个明确的结束条件,无穷性的计算方式是不可以被使用的;其次算法思维应当是确切性的思维,也就是每一步都要有个确切的定义,这样的思维方式要求厘清思路,提出解决问题的步骤;最后算法思维应当是可行性思维,每一个计算的步骤都可以在有限的时间内完成,拥有这样的思维方式既可以完成对于一个复杂任务的分解与规划,又能保证最后思维结构的完整性。
二、算法思维养成与课堂教学
1.课堂教学提高算法思维能力
自课程改革以来,初中信息技术教材内容发生了巨大的变革,由技术传授型的课程变为了培养学生能力、拓展学生算法思维的课程。在课堂教学中我们可以设定有挑战性的任务来提升学生计算思维的能力,例如:我的杯子里是牛奶,你的杯子里是咖啡,如何用我的杯子喝到你杯子里的咖啡?这是算法思维中一个两数交换的问题,用一个空杯子作为传递就可以完成这个看似不可能的任务。课堂教学中如果这样的例子多了,久而久之學生对于算法思维的理解一定能得到提高。
2.算法思维能力改善课堂教学效率
以往的信息技术课堂被割裂为多个知识点,学生学到的内容往往都是孤立的,例如这周学习了文字编辑,下周学习了数据处理,这些相互间没有联系的知识点会导致学生学习兴趣的缺失,进而导致其学习能力的下降。算法思维能力的培养则不同,算法思维的知识点都是相互联系的,通过学习对应的知识会对学生各方面思维起到补充作用,使得学生想学、乐学,从而改善课堂教学的氛围,利于学生的思维发展。
3.算法思维培养和课堂教学互为补充、螺旋上升
算法思维是解决问题的方法和步骤的思维方式,它是有穷性、确切性、可行性的思维方式,是学生思维方式的补充,通过算法思维的训练可以让学生具备更多的解决问题的方法和能力,同时具有算法思维的学生将更加专注于课堂的学习。算法思维和课堂教学可以说是相得益彰的。
三、基于算法思维养成的课堂观察
1.课堂事件
此次以普通班级中的八年级(5)班为研究对象,以八年级第4章第二节中的《算法实例》为课例。以解析法和枚举法为探究基础,通过4个“探究活动”来组织课堂教学。为了方便研究,我们将课堂划分为6个“事件”来进行分析,如表2所示。
2.基于算法思维养成的课堂分析
课后,参与课堂观察的多位教师对于学生算法思维培养的部分展开了讨论。大多数教师认为本节课能够完成课堂的教学目标,学生对于两种基本的算法思维从了解→掌握→运用是有显著提升的,能培养学生的算法思维,对于以后算法思维的进一步培养打下基础。但是对于不同的课堂事件中,学生的算法思维提高程度还存在明显的不同。为了进一步探究原因,我们根据听课教师的课堂观察记录册及课堂录像进行了更深层次的分析。
(1)理解算法思维的有穷性
算法思维作为一种独特思维方式,首先它是具有有穷性的,通俗来说就是总是有结束的终点,它不是一个无限循环或者不循环的思维方式。在枚举法举例时就体现了算法思维的有穷性,课例中的水仙花数是指一个 3 位数,它的每位上的数字的 3次幂之和等于它本身,这样的水仙花数有很多,三位的水仙花数共有4个:153,370,371,407;四位的四叶玫瑰数共有3个:1634,8208,9474;五位的五角星数共有3个:54748,92727,93084。如果在运算初期就设定是求解三位数的水仙花数,就可以确定循环范围是100-999,这是一种有穷的算法。学生通过完成流程图,可以加深其对于有穷性的了解,也会进一步确立有穷性在解决问题时所必须考虑的问题,使得思维更加的全面、缜密。
(2)分析算法思维的确切性
鸡兔同笼是古代传统的计算问题,头有35个,脚有94只,问有兔子和鸡各几只。算法思维是有确切性的,它是对于已知条件的充分理解与分析,最后得到准确的求解的过程。
对于问题已知条件的分析进一步得知隐藏条件,这是学生思维方式培养的一种惯用方法。学生在研读题意的基础上才能展开思维。充分的思维是学生算法思维完善的关键一步,使学生更为准确地分析题目含义,确切地找到解决问题的方法也是算法思维所能带给学生能力提升的一个方面。
(3)明确算法思维的可行性
算法思维必须是可行的,它必须有准确的解决问题的方法与手段。例如我们经常说的“从前有个山,山上有个庙,庙里有个老和尚给小和尚讲故事,讲的是……”像这样的问题的解决是不具有可行性的。但如果结尾改成“讲的是老和尚让小和尚泡一杯茶”,这样的问题就是一个有终结的算法,我们通常把这样的算法叫做递归,一直向前进是“递”,到达某个返回点是“归”。拿到问题、分析问题后给出合理的解决方法是培养学生的算法思维的重要方面,如果学生在处理问题前都能认真思考,查阅文献资料后论证处理问题方式的可行性,那么可以减少很多不必要的错误尝试。
四、改进课堂,促使算法思维能力提高的策略
通过对于课堂事件的分析,对于初中生算法思维的养成,笔者认为应抓住以下三点:
1.与生活中的实例相结合,了解算法思维[2]
算法思维本身就来源于生活但是高于生活,它是对生活实例的一种抽象、归纳、总结,能更好地指导我们的学习、生活。算法思维的养成必须从生活实例出发,才能逐步培养学生的思维能力。例如常见的泡茶问题:
方法一:准备泡茶的材料;往茶杯中放入茶叶;将水壶中的水烧开;泡茶。
方法二:将水壶中的水烧开;在烧水的时候取茶杯、茶叶等;水烧开后泡茶。
虽然两个方法都可以得到一杯茶,但是明显后一种方法会节约很多时间,成为一种优秀的算法,以实例出发,学生就可以很容易理解各类不同的算法,在潜移默化中理解算法思维,明白解决问题的方法往往有很多,优秀的算法思维方法可以帮助我们提高解决问题的效率,只有真正了解算法思维的魅力,学生才能有兴趣去分析、掌握并使用它来解决问题。
2.分析问题,认真思考,形成算法思维
普通在校学习的学生之间的智力差异并不明显,决定成绩差异的就是其分析问题、思考问题的能力,例如找出10人中身高最高的人,这个问题看起来很容易,一眼就能看出来,但是如果让你在100或1000人中找到身高最高的就不那么容易了,这时需要从10人的数据模型出发来推导出百人或者千人的。算法是这样的:每次输入一个人的身高,如果他的身高比最大值要大,那就把最大值变成这个人的身高。这样的算法就具有普遍性了,可以扩展到任意多的人。一个优秀的算法,可以解决复杂的问题,但是优秀算法需要在仔细研读题目的基础上,经过深入的思考得来。古人说“读书千遍其义自见”,反复研究问题直到找到规律和方法,这是算法思维形成的必经之路。
3.不断探究,提升算法思维的能力
在对算法思维理解的基础上可以逐渐形成初步的算法思维,但提升学生使用算法思维的能力还需要依靠合理的探究。探究式学习面临着“扶”与“放”的问题[3],两者之间的尺度把握得当才可以最大程度帮助学生提高算法思维的能力。例如在解决斐波那契数列问题时,学生往往会在推导公式时迷失方向,这时教师可以做适当的“扶”,帮助学生理清思路,明白第三个数其实就是前两数之和,可以用数组轻松实现赋值过程,只要学生懂得这样的规律,就可以“放”手让学生进行推导,得出a[n]=a[n-1]+a[n-2]的公式。笔者相信把握好“扶”“放”的尺度,学生的算法思维在自主学习与探究的基础上一定会有从量变到质变的提升。
4.合作学习,帮助学生应用算法思维
培养算法思维的目的是希望学生能应用算法思维来解决一些复杂的问题,而复杂问题的解决需要依靠协作配合完成。教师给出需要解决的问题,学生通过讨论得到解决问题的最优算法,通过分工协作来解决相关的问题。这样学生可以在讨论最优算法时理解不同算法的优劣,在分工协作时理解算法执行的具体方法,同时在最后解决问题时体会到优秀算法带来的快乐。学生将更加能够理解优秀算法对于学习生活的帮助,从而形成在平时使用算法思维解决问题的习惯。
参考文献:
[1]谢忠新,曹杨璐.中小学信息技术学科学生计算思维培养的策略与方法[J].中国电化教育,2015(11):116-120.
[2]陈晓红.普通高中信息技术教育中的算法思維培养策略研究[D].南京:南京师范大学,2007.
[3]岳欣云,董宏建.探究式教学的“扶”、“放”之度与层次性——由一则小学数学教学案例引发的思考[J].课程·教材·教法,2013,33(7):84-89.(编辑:鲁利瑞)