算法教学过程中的计算思维培养策略

发表时间:2021/3/26   来源:《中国教育信息化》2021年1月   作者:袁荣乐
[导读] 计算思维应当跟3R(阅读、写作和算术Reading,wRiting,and aRithmetic—3R)能力一样,成为一种基础的、普遍的、适用的基本能力。将计算思维引入中小学信息技术课程体系格外重要,通过计算思维的教育,让每个中小学生都能够“像计算机科学家一样思考”。因此,培养学生的计算思维,是中小学信息技术课程的责任和义务。

浙江省诸暨中学 袁荣乐    311800

[摘要] 计算思维应当跟3R(阅读、写作和算术Reading,wRiting,and aRithmetic—3R)能力一样,成为一种基础的、普遍的、适用的基本能力。将计算思维引入中小学信息技术课程体系格外重要,通过计算思维的教育,让每个中小学生都能够“像计算机科学家一样思考”。因此,培养学生的计算思维,是中小学信息技术课程的责任和义务。
[关键词] 计算思维  一题多编  算法教学 
        周以真教授提出的计算思维[1]的定义是运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为。计算思维的本质是抽象和自动化。如同所有人都具备是非判断、文字读写和进行算术运算一样,计算思维也是一种本质的、所有人都必须具备的思维能力。计算思维具有下面的特点:
        ①计算思维不等于计算机编程,它要求从多个抽象层面进行思考。
        ②计算思维是一种基于技能而非机械技能,不是一种简单地,机械式的重复。
        ③计算思维是人的思维方式,不是计算机的。
        所以提出了培养计算思维的策略如下三点:
        一、重抽象建模过程,轻代码实现结果
        以选择排序教学过程作为对比。
        教学过程(1)基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
        For I:=1 To N-1 Do                                
        K:=I;
        For J:= I+1 To N Do                          
        If R[J]<R[K] Then K:=J
        交换R[I]和R[K]                                                     
        教学过程(2) 基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
        演示排序过程【示例】:
        初始关键字 [49 38 65 97 76 13 27 49]
        第一趟排序后 13[38 65 97 76 49 27 49]
        第二趟排序后 13 27[65 97 76 49 38 49]
        第三趟排序后 13 27 38 [97 76 49 65 49]
        第四趟排序后 13 27 38 49 [49 97 65 76]
        第五趟排序后 13 27 38 49 49 [97 97 76]
        第六趟排序后 13 27 38 49 49 76 [76 97]
        第七趟排序后 13 27 38 49 49 76 76 [97]
        最后排序结果 13 27 38 49 49 76 76  97
        For I:=1 To N-1 Do      //i枚举一共需要走几趟                          
        K:=I;
        For J:= I+1 To N Do                          
        If R[J]<R[K] Then K:=J
        交换R[I]和R[K]
        教学过程(3)
        初始关键字 [49 38 65 97 76 13 27 49]
        最后排序结果 13 27 38 49 49 76 76  97
        从初始和最后结果做对比我们发现,结果中13是初始的数中最小的数。那么我们就有了一个想法,是否可以找到最小值和第1个位置交换,然后在剩下的数中再找一个最小数和第2个位置交换,以此类推;那么我们先应该求最小值的方法。



         K:=1;
         For J:= 2 To N Do     //待排序的区间找最小值                     
         If R[J]<R[K] Then K := J
         交换R[1]和R[K]
        这样的找最小值需要几次呢?N次?N-1次?只剩下一个数时,不用找最小的数了。得到应该是N-1次。所以得到了下面的程序框架:
        For  I:=1 To N-1 Do      //i枚举一共需要走几趟                          
        K:=I;
        For J:= I+1 To N Do    //待排序的区间找最小值                     
        If R[J] < R[K] Then K := J
        交换R[I]和R[K]
        总结:这就是选择排序的基本思想:每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
        对以上三种教学过程的分析,显然过程(1)只注重结果,直接关注的是算法的定义和对应的程序。而过程(2)增加了每一趟的变化结果,显然增加了学习的可视度,让问题更直观,但是我们也能发现,这个分析的过程并不是这个算法从有到无的获得过程,而只是把定义做了一个实例而已。过程(3)则是从问题本身出发,从对比数据结果中分析出了问题解决方案,最后得到算法,并用程序实现。过程(3)才是真正的计算思维的培养流程。实际是用已知的打擂台算法,引导出了选择排序的解决方案,同样当有不同的找最小数的方法时,就能引导出不同的排序算法,如冒泡排序,用相邻的比较大小得到最小值;堆排序,用效率更高的堆的方式求最小值,那么这几个算法的学习变得融汇贯通了。
        计算思维的培养不是一蹴而就的,单靠机械重复的训练也不可能达成,它需要教师精心设计教学,需要在每节课中点滴渗透。因此教师在教学设计时要以学生为中心,以培养学生在学习活动中使用计算思维分析处理问题为出发点,通过情景创设、任务驱动激发学生对计算思维的兴趣;
        二、深度思维分析,揭示问题本质。
        学习的过程应该是思考的过程,而不是死记硬背,机械重复的过程。下面我们从2018年绍兴市少儿信息学竞赛第一题《拳王争霸》来阐述思维培养的重要性。题面如下:
        泽泽的爱好非常广泛,拳击比赛是他的爱好之一。电视里正在播放拳王争霸赛,n个人排成一排,他们进行拳击比赛,先让最前面两个人进行比赛,赢的人再和下面一个人比赛,输的人排到队伍的末尾。每一次比赛的结果是由比赛的两个人的能量确定,能量大的人胜(注:保证所有人的能量都不同,假设所有人的能量能瞬间恢复,精力一直是旺盛的)。大赛规定:只要能连续获胜?k?场的人将成为“拳王”。
        从考试结果看,一个500多人参赛,一半学生得了0分,50分以上125人,只有39人拿到了满分,这肯定出乎出题人的意料。从题目看,问题很难吗?并没有,只是考察了求最大值的算法。问题应该出在学生的计算思维上,学生没有找到解决问题的方法,没有分析出题目的本质。从题目看,给学生的干扰是输的人排到队伍末尾,对于这样的处理学习没有掌握,但是分析之后根本就不需要这样的处理,两个人比赛,大的留下,不就是我们所说的打擂台求最大值吗?万一赢的次数没有达到k次,怎么办呢?数列的最大数就是问题的解。所以分析之后我们得出问题求解就是求数列中当前的最大值,增加一个统计打赢的次数,数据走一遍后,还没有找到解,那么最大值就是问题的解。代码如下:
        read(max);t:=0;
        for i:=2 to n do
        begin
        read(j);
        if max>j then inc(t)
        else begin  max:=j;t:=0;end;
        if t=k then break;
        end;
        writeln(max);
        随着信息学竞赛的普及开展,其考察的思维和题型也逐年变化,由单纯的算法题目考察转向加入情景的综合性题目,由单纯的逻辑思维的考察转向开放的创造性思维的考察,特别是近年大量的国际译题(如usaco)的出现,题目越来越灵活。依然延续以前的教学方式、教学思路很难适应当前的变化。所以,必须转变思路由单纯的算法教学向培养学生创造性思维、提高学生的思维深度、广度以及灵活性努力。
        三、引用一题多编,让算法融会贯通。
        “一题多编”是指对于同一道题目,可以用多种不同的思路进行分析,提出多种算法,并对比各种算法的优缺点,进而选择出最合适的算法过程。
        在算法教学中应用“一题多编”,可以使学生加深对各种算法的理解,找到简捷的思考方法和解题途径,促使学生多方面、多角度地思考问题,提高综合运用的能力。此外,在实践教学中应用“一题多编”,有利于开拓学生解题思路和锻炼思维灵活性,对今后的一题多变、举一反三有极大的帮助。通过“一题多编”的训练,能找到问题的本质,让学生对经典算法融会贯通。
        结束语:
        创新型人才是当今世界的核心竞争力[2]。计算思维是创新性人才的基本素质和要求之一,新思想、新方法以及新研究成果的出现,会促进人们思维模式朝着“计算思维”转变,同时也会带来自然科学与工程、社会经济与技术等领域的飞速发展。要想在自然科学与工程等领域处于世界领先地位,对计算思维的研究和培养必不可少。近十年来,计算思维的理念已在我国高校得到了大力推广。作为提升学生信息素养的中小学信息技术课程,也应承担起培养学生计算思维能力的重任。这就要求我们中小学信息技术学科教师在开展教学的活动中,要重视学生计算思维的有效培养,同时还要在教学经验中不断探索挖掘学科教学内容对应的计算思维并设计相应的教学课程,为培养“像计算机科学家一样思维”的创新型人才奉献一份力量。
参考文献:
[1]朱亚宗.论计算思维--计算思维的科学定位, 基本原理及创新路径[J].计算机科学, 2009, 36 (4) :53-55+93.
[2]於建华,凌云.基于计算思维的大学《计算机基础》课程教学改革[J].计算机教育,2014(17):5-7.

投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: