本文主要针对少儿编程从业人员及正在学习编程的学生家长

大家好,我是C大叔,国内早期的少儿编程从业人员。一直以来都是在做scratch,JavaScript,python以及信息学奥赛C++的讲师,教研等工作,本文从少儿编程出发跟大家谈谈计算思维(Computational Thinking)。

计算思维(Computational Thinking),简称CT,主要培养学生的技能,态度以及途径。技能包括分解,模式识别,抽象,算法设计,评估等。态度包括自信,沟通,灵活等。途径包括修补,创造,调试,坚持不懈,合作等。

为什么计算思维对今天的学生来说非常重要,主要从下面几个方面分析:

  • 计算思维可以用于解决任何领域或者学科的问题。
  • 提升信息技术素养(将学生从技术的使用者变为技术的创造者)。
  • 更好地理解计算。
  • 为批判性地思考问题解决者提供一个跨所有职业领域的框架。
  • 将创造力和效率融入解决问题的过程中。
  • 发展工作技能(导致收入增加)。

需要告知大家的是我们从少儿编程中得以锻炼计算思维的各方面,但不仅限于少儿编程,也可以运用到生活各个方面,所以这里需要澄清的是:

  • 计算思维可以包含计算机,但是不一定非要包含计算机。
  • 是人的思维,而不是计算机的思维。
  • CT for all,而不仅仅是计算机科学家、程序员。
  • 应用于所有学科,而不是仅仅应用于计算机科学

现在我们简单地去解释计算思维的技能方面以及其在少儿编程领域的运用,从而通过少儿编程来培养学生计算思维方面的能力,希望这对于少儿编程讲师,少儿编程教研,甚至于其他学科的讲师教研们都有一定的用处:

分解:我们来理解下分解是什么意思。百度百科是这么解释的:分解,数学名词,即和差化积,其最后结果要分解到不能再分为止。对于一个大的问题,如果你解决不了,没关系,自己思考,这个大问题一定有它的子问题是你可以解决的。

举个简单的例子,对于一块大蛋糕,如果不切开,吃起来是非常困难的,所以你会想到把它分成一小块一小块来吃,一小块也不可能一次吃完,还要一口一口吃。

这就相当于,遇到一个复杂困难的问题,解决不了怎么办,分解它,然后再去解决分解的问题。就比如我们通过编程要去完成一个《合金弹头》的游戏制作,但面对这个庞然大物,我们无从下手,这时,我们就可以想到对这个游戏进行分解,怎么分解呢?

通过观察,我们会发现这个游戏有场景图(地图),主人公(人物),有敌方(炸弹,敌人,敌机),有子弹(包含主人公子弹及敌方子弹),分解完成之后才去解决问题,就会简单很多。注意分解不是步骤,不是解决问题的顺序。

模式识别:什么是模式?问题内或者子问题之间的模式、规律或者趋势。简单地来说,就是找规律。就比如天气预报,为何能够预报天气状况呢,便是通过以往的经验对未来进行预测。再比如一个不好好学习成绩很差的孩子,但是突然有一天开始奋发图强,成绩每次都会进步一点,我们可能会预测出下一次这个孩子还能再进一步。

当然这个归纳出来的模式也可能会出错,就看我们怎么去找这个模式了。比如我们知道一个苹果的价格是3元,3个苹果就是3*3等于9元,即单价乘上数量,那现在知道了一个梨子是4元,5个梨子多少钱?我们已经知道计算苹果总价的模式了,即单价乘上数量,我们通过归纳的这个模式来解决梨子价钱的问题就非常合适,4*5等于20元,也是梨子的单价乘上梨子的数量。

在少儿编程中培养这一技能就更显而易见了,很多编程问题都有一定模式可寻,比如我们要将《合金弹头》的地图,角色及敌机画在屏幕上,画画的方式基本一致,不一样的是图片名称及坐标。那我们学完地图绘制之后,再去解决类似的问题就可以想到用模式识别去思考。

抽象:在模式识别中其实就已经解释了抽象这一概念,通过以往的规律来预测未来,即归纳模式解决问题。要想解决此问题这其中既要处理过程,也要处理数据,即从具体实例概括出通用解决方案的技术,我们把它称作抽象。再模式识别中,关于去求各种水果总价这一问题,我们可以归纳出很多模式,比如这里都是去问总价,总价都是等于单价乘以数量, 水果的单价都是固定的,但买的水果的数量可变等,但是我们要去求水果总价,我们需要丢掉其他问题,只去找有用的信息即可,及总价等于单价乘以数量这一模式,即要概括出合适的模式,隐藏不必要的模式。

算法设计:之前说到分解是将复杂问题分成很多小块去解决,而不是解决问题的步骤,而算法设计恰恰是解决问题的步骤。其中步骤中又包含分解,抽象,及模式识别,它就像一条线,串起计算思维在各个领域的应用,这里再来说一下在少儿编程中的应用。

例如我们要做一款小鸟飞飞的游戏:

首先我们要将角色导入,即背景,小鸟,图标等,然后设定小鸟的初始位置,接着控制小鸟上下移动,背景移动,最后闯关开始结束等,按步骤解决问题,同时内部也涉及分解,抽象,模式识别,例如在控制小鸟上下移动这一步骤,分解成上移及下移,上移的模式与下移类似,学完其中一个,另外就可以让学生自己归纳,从而解决另一个问题。

今天就跟大家浅谈到这里啦,后期还会继续与大家讨论计算思维方面的知识,有什么问题可以关注微信公众号noip信奥网,或者直接访问我的网站www.noipedu.cn与我探讨儿童教育哦!

计算思维(Computational Thinking)在少儿编程中的体现的更多相关文章

  1. 脚本编程中的test、bash调试、变量计算、参数

    脚本编程中的test.bash调试.变量计算.参数 1.文件测试 -e FILE:测试文件是否存在 -f FILE:测试文件是否为普通文件 -d FILE:测试路径是否为目录 -r FILE:测试当前 ...

  2. 程序设计中的计算复用(Computational Reuse)

    从斐波那契数列说起 我想几乎每一个程序员对斐波那契(Fibonacci)数列都不会陌生,在很多教科书或文章中涉及到递归或计算复杂性的地方都会将计算斐波那契数列的程序作为经典示例.如果现在让你以最快的速 ...

  3. Scratch 少儿编程之旅(四)— Scratch入门动画《小猫捉蝴蝶》(中)

    本期内容概括: 了解Scratch的更多操作,用[无限循环]来更改“小猫”角色的代码: 添加[碰到边缘就反弹]积木块指令: 更改角色的旋转模式和造型,让”小猫”走路更生动: 两种[循环]语句的区别: ...

  4. 计算机思维的逻辑基础是什么? & 计算思维

    l  计算机思维的逻辑基础: 计算机思维是指人们操作计算机时,计算机行使特定功能的运作方式. 逻辑基础则是指支撑事物运作的基本法则. 因而,计算机思维的逻辑基础可以理解为,计算机在行使特定功能时,其运 ...

  5. 使用Scratch进行少儿编程

    在上一篇<初识少儿编程>曾提到过Scratch的脚本标签内包含10大模块,本文将围绕这10大模块展开,分为两部分:积木和编程概念,结合<动手玩转Scratch2.0编程―STEAM创 ...

  6. Java多线程学习(七)并发编程中一些问题

    本节思维导图: 关注微信公众号:"Java面试通关手册" 回复"Java多线程"获取思维导图源文件和思维导图软件. 多线程就一定好吗?快吗?? 并发编程的目的就 ...

  7. 少儿编程|Scratch编程教程系列合集,总有一款适合你

    如果觉得资源不错,友情转发,贵在分享!!! 少儿编程Scratch: 少儿编程Scratch第一讲:Scratch完美的初体验少儿编程Scratch第二讲:奇妙的接球小游戏少儿编程Scratch第三讲 ...

  8. 少儿编程 | 01.Scratch 3.0简介

    欢迎参加这套Scratch3.0少儿编程课程的学习.本系列课程将通过视频和图文的方式进行(视频制作中,后续会发布).如果喜欢本系列课程,欢迎点击订阅关注或者转发. 这是本系列课程的第一课,主要是给家长 ...

  9. 基于海龟编辑器python少儿编程

    Python 少儿教程 为什么要学习编程 扫地机器人.物流机器人.自动泊车系统.无人超市.3D打印.微信.支付宝等等,随着人工智能时代的到来,越来越多的岗位将被机器人所替代. 所以,学习编程的最终目的 ...

随机推荐

  1. 最通俗易懂的RSA加密解密指导

    前言 RSA加密算法是一种非对称加密算法,简单来说,就是加密时使用一个钥匙,解密时使用另一个钥匙. 因为加密的钥匙是公开的,所又称公钥,解密的钥匙是不公开的,所以称为私钥. 密钥 关于RSA加密有很多 ...

  2. Docker(三)Docker常用命令

    Docker常用命令 帮助命令 # 显示 Docker 版本信息 docker version # 显示系统信息,包括镜像和容器的数量 docker info # 查看帮助文档 帮助文档地址:http ...

  3. Halcon斑点分析官方示例讲解

    官方示例中有许多很好的例子可以帮助大家理解和学习Halcon,下面举几个经典的斑点分析例子讲解一下 Crystals 图中显示了在高层大气中采集到的晶体样本的图像.任务是分析对象以确定特定形状的频率. ...

  4. 如何去除List集合中重复的元素

    1.通过循环进行删除 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ...

  5. Python中的@staticmethod和@classmethod的区别

    一直搞不明白,类方法和静态方法的区别,特意研究了一下,跟大家分享一下. 为了方便大家了解两者的差别,以下的示例代码将有助于发现其中的差别: class A(object): def foo(self, ...

  6. QtableWidget用法流程

    QtableWidget用法流程 ​ 作者:流火 日期:2020/5/10 QTableWidget的基本构造函数 QTableWidget 是QTableview的子类.主要去呗是QTableVie ...

  7. SpringBoot下Druid连接池的使用配置

    Druid是一个JDBC组件,druid 是阿里开源在 github 上面的数据库连接池,它包括三部分: * DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体 ...

  8. Swoole 中 TCP、UDP 和长连接、短连接

    TCP 服务 swoole 文档 - TCP 服务 tcp 服务端 <?php // 1. 创建 swoole 默认创建的是一个同步的阻塞tcp服务 $host = "0.0.0.0& ...

  9. Linux CentOS 7 下dotnet core webpai + nginx 部署

    参考:https://www.jianshu.com/p/b1f573ca50c7 跟着做到,配置nginx访问dotnet core网站时,报错了. 错误如下所示—— 查看nginx的错误日志: c ...

  10. 如何白嫖微软Azure12个月及避坑指南

    Azure是微软提供的一个云服务平台.是全球除了AWS外最大的云服务提供商.Azure是微软除了windows之外另外一个王牌,微软错过了移动端,还好抓住了云服务.这里的Azure是Azure国际不是 ...