您好, 访客   登录/注册

计算思维培养的递进式活动设计研究

来源:用户上传      作者:

  高中信息技术新教材的编程和算法教学注重培养学生的计算思维,体现了新课标发展学生核心素养和学科能力的理念。本文旨在探究如何在课堂教学中设计丰富的学习活动,培养学生的计算思维,并引导学生产生思维迁移以解决实际问题。
  ● 递进式培养策略概述
  信息技术学科与时俱进,不再局限于知识技能和工具操作,而是注重培养学生数字化环境下的思维方式,使学生能够合理运用信息技术解决实际问题。为了培养学生的计算思维,新教材的编程和算法教学采用项目式学习方式,让学生在做中学,在学中做。在项目式学习中,应用和实践是学习的载体,活动过程就是获得知识和培养能力的过程。
  高一学生以前没有接触过Python编程,面对具体的情境,学生能用自己的话说出解决问题的方法,但不知如何用计算机程序来实现。例如,判断一个数的奇偶性,通常看它能否被2整除,转换成编程计算,则采用对2取模的方法,判断余数是否为0。学生的计算思维需要慢慢形成,可以从解决简单的问题开始培养,让学生在学习活动中一边熟悉基本语法,一边提升思维能力。
  教师在教学中要不断摸索,体会“用教材教”而不是“教教材”。教材中的资源一般具有普适性,是优质资源,但是不一定满足所有学生的需求,教师可以根据学情补充相关资源。因此,依据教材资源并结合信息学竞赛辅导资源,设计一系列学习活动,作为教材的补充,可以让活动内容由浅入深,在活动开展过程中递进式地培养学生的计算思维。
  ● 学习活动一脉相承
  依据项目式学习因“需”定“学”的特点,基于课程标准,结合学生的学情,我们对教科版必修1《数据与计算》第2单元“编程计算”的教学内容进行了整体规划,设计了一系列递进式学习活动。
  活动1:求一个三位正整数每位上的数字。
  设计意图:理解通过整除和取模等运算拆分数字的方法;学会定义变量、使用赋值语句。拆分数字的方法也将用于后面的问题解决中。
  算法分析:利用“//”和“%”等算术运算符拆分一个三位数,分别得到每位上的数字。
  小结:程序设计采用顺序结构。学生需要区分数学与Python中算术运算符的表示方法与运算功能。
  活动2:输入一个三位正整数,判断它是不是回文数。若一个数字从左向右读与从右向左读都一样,我们就将其称之为回文数。
  设计意图:结合前面拆分数字的算法提取出百位数和个位数,判断它们是否相等;熟练使用if分支语句进行条件判断。
  算法分析:如果数字n的百位数字h和个位数字u相等,则n是回文数,否则不是。
  小结:程序设计采用分支结构。学生已经掌握拆分数字的方法,在此基础上,设计判断回文数的算法变得容易一些。
  活动3:反转任意位数的正整数,如输入123,输出321。
  设计意图:理解反转数字的算法思想;了解while语句一般用于循环次数未知的情况。
  算法分析:①将x除以10取余,求得个位数,并将它添加到y中;②将x除以10取整,去掉个位数;③重复步骤①②直到x为0;④输出y。
  小结:程序设计采用循环结构。算法中不仅包含拆分数字的方法,还包含组合数字的方法,具有一定的难度。活动中教师和学生一起将流程图补充完整,然后学生独自将程序补充完整。
  活动4:输出所有的“水仙花”数。所谓的“水仙花数”,是指一个三位数其各位数字的立方和等于该数本身。
  设计意图:枚举所有的三位数,使用拆分数字的方法,得到各位数字,然后通过计算进行判断;综合运用for循环和分支语句解決问题。
  小结:解决这个问题采用了循环+分支的程序结构。学生学习的难点是for语句的循环过程和if语句条件的设置。学生需要注意,range()函数设置两个参数时,会生成一个左闭右开的数字区间,在if语句的条件中两个等号一起使用才能判断相等。
  活动5:火柴棒摆数字问题。有任意数量的火柴棒,列出这些火柴棒所能摆出的自然数,要求火柴棒正好用完。
  设计意图:在解决问题的过程中,学会使用自定义函数进行程序设计。通过对算法进行优化,学生加深对算法设计的理解。
  算法分析:首先确定任意根火柴棒所能摆出的最大数字,火柴棒数量分为奇偶两种情况,偶数根能摆出的最大数字由“snum//2”个1组成,奇数根火柴棒则先取出三根摆放数字7,然后用剩余的火柴棒摆放“snum//2-1”个1。参考程序如图1所示。
  算法优化:上述程序中使用“*”运算符返回一个重复若干次的字符串,在Python语言中适用,在VB和C++等语言中都不适用。运用for循环计算任意根火柴棒所能摆出的最大数字,会使算法更加通用,而且不会增加算法的时间复杂度。相应代码修改如下页图2所示。
  小结:在程序设计中使用了自定义函数。理解自定义函数的难点是函数的调用过程:程序执行从主程序开始,在主程序中遇到自定义函数的调用语句时,才会转到自定义函数执行,自定义函数执行完成将返回值带回给主程序。
  拓展活动:十进制转换R进制。
  算法分析:把十进制非负整数转换为R进制,可使用短除法,即“除R取余,逆序排列”。前面拆分十进制数字重复执行对10取余、再整除10的操作;而十进制转换R进制则重复执行对R取余、再整除R的操作。
  小结:十进制转换二进制本来是一个难点,学生不易理解,但是在前面解决了一系列数字问题之后,将解决问题的思维迁移过来,这个问题就迎刃而解了。
  在以上活动中所涉及的程序从顺序结构到分支结构、循环结构,再到分支+循环结构,程序结构不断升级。简单的拆分数字方法在后面的活动中不断使用,探究内容保持在学生的最近发展区内。在课堂上,学生积极思考,寻找解决问题的方法。学生在编写代码、调试程序、纠正错误的过程中,感受到了编程的乐趣,激发了学生的学习兴趣。
  ● 教学反思贯穿始终
  学生在学习编程与算法之前,可能存在畏难情绪,认为程序代码晦涩难懂,算法设计比较复杂,而通过整体规划学习活动,能够引导学生步步为营,在算法学习中找到乐趣。算法教学是一项连续性工程,学生计算思维的形成也不是短期能实现的,这就需要教师不断反思、不断摸索,梳理教学思路,形成系统的知识框架,引领学生踏上算法学习之路,递进式地培养学生的计算思维。
  苍山点题
  课程研究日渐深化到一线教学具体的策略内容,这是很重要的发展环节,是值得各地大力推进的课程发展措施。
  第一篇文章,介绍了如何通过中小学编程教育的贯通培养进行编程教育的行动研究,本项目的研究可有效弥补课堂教学培养目标单一和深度不足的问题,能够针对创新人才进行可持续培养,并具有一定的社会意义,具有较强的推广应用价值,主要包括以下几个方面:本研究的成果可以为本地甚至全国提供编程贯通教育的培养模式,改善编程教育起步晚、学习效果不明显等现状;本研究开发的编程课程体系、校本教材等可以丰富已有的编程课程资源,为编程教育领域提供参考资源;通过本研究可以在本地推广编程教育,可以在很大程度上提高学生的计算思维和数字化学习与创新能力,提高信息技术核心素养和解决实际问题的能力;另外,本研究还可以用来探索建立“双脑”培育发展的新模式,建设中小学创新人才免费培养的教育基地等。
  第二篇文章,介绍了在高中信息技术新教材的编程和算法教学中,如何结合教材资源和信息学竞赛辅导资源,围绕有趣的数字问题,设计一系列递进式学习活动,来破解教材难点。在项目式学习中,从解决一个简单的问题出发,学生产生用计算机解决问题的兴趣,随着活动的持续进行,学生逐渐找到编程解决问题的“感觉”,最终能够利用合理的算法解决问题,在活动过程中递进式地培养了计算思维。
  实际上,很多一线教师在奥赛辅导、科技社团、公益科普等活动中都有突出贡献和显著成果,期待大家总结、挖掘可推广的成果与大家分享。
转载注明来源:https://www.xzbu.com/9/view-15161298.htm