基于计算思维的Scratch项目式教学策略研究

2019-04-04 01:06陶双双王戈
中小学信息技术教育 2019年3期
关键词:项目式教学计算思维

陶双双 王戈

【摘 要】“计算思维”与读写算一样,是学生需要掌握的必备技能之一。为了能培养这种思维能力,本研究选用Scratch作为编程工具,运用项目式教学策略,让学生体验“需求分析—总体设计—编程实现—分享拓展”的项目开发全过程。通过反复经历“分解、抽象、概括、算法、评估”,最终提升其计算思维能力。

【关键词】计算思维;Scratch;项目式教学

【中图分类号】G434  【文献标识码】A

【论文编号】1671-7384(2019)02、03-077-04

从2006年3月美籍华人周以真教授提出“计算思维”概念以来,学者们便开始对其内涵及落实的策略进行研究。周以真教授对计算思维进行了概念性和操作性两个维度的专业界定,由于本研究着眼于基础教育教学,因此,主要从计算思维的操作性维度来理解其内涵。

笔者通過文献追踪了国内外K-12教育中相关成果,从操作维度看,计算思维的组成元素包含如下5个方面[1]:算法(Algorithmic thinking)、评估(Evaluation)、分解(Decomposition)、抽象(Abstraction)、概括(Generalization)。

谷歌中国教育合作项目推出了《面向教育者的计算思维课程》[2],把计算思维划分为如下4个组成要素:分解(解构)、模式识别、抽象(模式归纳)、算法开发。

为理解和研究的方便,笔者按照项目开发流程把计算思维的组成要素重新排列为:抽象(理解任务)、分解(分解任务)、概括(运用已有知识)、算法(设计步骤)、评估(检验算法)。当然,在实际问题解决过程中,这五个要素并不是遵循严格的线性关系,可能很多时候是互相叠加的。

Scratch项目式教学策略设计

Scratch教学中的项目可以是游戏、动画或者应用软件。按照软件项目开发过程,本研究中将项目教学分为四个环节,分别是需求分析、总体设计、编程实现和分享拓展。我们以“迷宫寻宝游戏”为例来说明。

1.需求分析

需求分析是项目开发的首要环节,其目的是能明确用户需求,真正理解项目的功能。

(1)理解需求。在实际软件开发过程中,项目多是来源于客户需求,作为开发者,需要多与客户交流,了解客户对于项目的要求有哪些,争取尽可能多地理解用户需求。对于学习者来说,除了有来自老师的要求外,也有很多自我创意的部分,无论项目来源于哪里,都需要能明确项目到底要做什么,包括哪些具体功能。

(2)描述需求。在理解了项目需求后,可以用“六要素”法将需求描述出来,有利于提升学生的抽象能力。“六要素”是指:时间、地点、人物、起因、经过、结果。比如:游戏何时开始、何时结束、有无限定时间、游戏发生的地点、人物有哪些、起因、经过和结果是什么,等等。如表1所示。

(3)分析需求。根据功能描述,将所有的名词和动词找出来,将他们互相匹配,即为动词找到主语(名词),最终在匹配成功的名词里确定哪些适合作为角色,如表2所示。接着,再找到和数据有关的词语去确定变量,找到“如果……那么”和重复,确定程序的逻辑和流程。

经过这种逐层抽象后,接下来,可以再用思维导图把分析结果表示出来,对项目由上到下、由粗到细做了大致分解,形成了几个功能模块,该环节有利于提升学生的分解能力。篇幅所限,这里仅展示“小猫”的行为设计,如图1所示。

2.总体设计

该阶段包括两个环节,一是划分功能模块,二是总体流程设计。

(1)划分功能模块。画好角色行为设计图后,项目包含的模块基本清晰可见。该项目包括“背景设计、小猫移动、宝贝出现(将计分合并)、障碍物旋转”四个模块。划分出功能模块后,就会对项目有总体上的把握。

(2)总体流程设计。该环节主要是从用户的角度,根据程序运行过程,设计出模块之间的逻辑关系,形成总体流程设计图,如图2所示。该环节的设计有助于提升学生的系统设计能力。

图2 总体流程设计

3.编程实现

完成项目设计后,就开始对每个模块进行编程实现,而编程之前先要进行算法设计,即先要明确解决某个功能或问题的步骤,然后据此编写程序。

(1)算法设计。这一环节属于编程的核心,也是难点,设计工具是绘制流程图,用以表达程序中的顺序、选择以及循环等逻辑结构。图3所示是“迷宫寻宝游戏”中小猫移动过程中的各种情况处理对应的算法流程图。

(2)编写程序。编程时,首先需要考虑选用何种编程语言,这里选用的是Scratch。在学习Scratch的基本语法和指令后,就可以依据该算法编写出相应的程序。通过运行程序,观察结果,检测和评估算法的准确性,反复修改,如图4所示。

图3 算法设计

图4 编程实现

(3)调试程序。准确地说,调试是伴随编程的全过程,“出错”是编程的常态。甚至说程序出错是好事,因为出错了,我们才能发现自己到底哪里理解得不够,是语法错误,还是整个逻辑上的错误。所以,调试程序的过程其实是在检验自己的思维过程,帮助我们提升问题分析和解决的能力。

同时,在该过程中,学生会经历从起初的兴奋到遇到问题后的沮丧,从急躁到耐心,从自负到欣赏他人,从单纯的竞争到共同协作,能体会到编程过程中的互帮互助,这些都在潜移默化地培养学生良好的学习习惯。

4.分享拓展

为了让学生敢于正视不足并学会欣赏他人,设置“分享”环节,开展互玩程序活动。在体验别人程序的同时,学习他人的创意与思路,提出改进建议,同时展示说明自己程序的亮点及不足,提升总结与概括能力。

教学实践中发现,学生体验多次的展示分享后,更加地开放,会主动与同伴交流,会吸取更多的创意和更优化的思路及算法。比如:在实现迷宫寻宝游戏后,很多学生会考虑为游戏增加暂停、倒计时、设置不同难度级别等功能。

项目教学实施建议

1.花时间引导学生分析和设计

实际教学中,课时少,项目本身容量大,前期的分析和设计也要花大量的时间。教师们为了赶教学进度,经常把教学重点放在了“编程实现”环节,“分析和设计”环节很多时候浮于表面,甚至是教师代替学生去分解项目模块。这样的话,学生其实并没有体验到面对陌生问题时的无从下手,也体验不到从模糊到清晰的思维分析过程,計算思维培养其实并没有真正落地。因此,教学中需要为“需求分析”和“总体设计”两个环节花费时间,这两个环节做好了,学生后期编程时会有更多的积极性和目标性。

2.小步调地设计与编程

“需求分析—总体设计—编程实现—分享拓展”是一个纵向环环相扣的过程,但具体在教学实施过程中,并不建议严格地按照这样的环节来实施教学。因为做需求分析和设计不是一两节课能完成的,如果集中把这些工作做完再去编程,很容易让学生失去学习兴趣。所以建议采用“小步调设计与编程”策略,即设计一点儿实现一点儿展示一点,这样学生会始终带着目标和兴趣去学习。

3.开展小组合作学习

为有效开展小组合作学习,需要有共同的任务让大家参与,否则很多合作流于形式。在对项目做分析和设计时,可以让学生两人一组或多人一起描述和讨论游戏功能,一起在纸上绘制角色行为设计图。笔者运用了在线实时协作作图网站,在网站上建立小组,组长邀请成员,一起在线分工绘制思维导图,并实时显示结果,这种方法可以让每个学生真正体会到合作的力量。

4.线上线下混合式学习

在项目学习过程中,每位同学的任务完成进度不一样,遇到的问题也是五花八门,这时需要教师作为指导者,在学生出现问题时能及时参与并引导。为此,在教学中尝试搭建了Moodle自主学习平台,开发了项目课程,包括有关知识点和模块实现的微视频和课件,方便学生自主选用学习资源,这种线上线下混合式学习模式为项目教学的实施提供了资源支持。

参考文献

Computing at SchoolWorking Group. Developing computational thinking in the classroom:a framework[DB/OL].(2014).https://eprints.soton.ac.uk/369594/1/DevelopingComputationalThinkingInTheClassroomaFramework.pdf. [2018-12-01].

毛澄洁等.Google中国教育合作项目——Google计算思维课程(中文版)[DB/OL].http://gur.zucc.edu.cn/curriculum/resource/5a0ba2c899dc9f2478aa35a8.(2016).[2018-12-01].

猜你喜欢
项目式教学计算思维
民办本科高校新闻专业项目教学的实践与思考
论项目教学在高职计算机网络技术专业课程教学中的应用
初中生物项目式学习活动的探索
程序设计课程中计算思维和应用能力培养问题研究
算法的案例教学探析
浅谈艺术专业学生计算思维能力的培养
高职《液压技术》课程教学改革探索