张亮++张文辉++邓丽敏
摘 要 通过对认知发展理论的学习和总结,认为在小学高年级进行学生计算思维培养是必要且可行的。并在此基础上利用App Inventor为教学工具,设计一套实验课程来探索学生的学习情况。反馈结果表明,学生较为喜爱这类实操类课程,学习收获也比较大。
关键词 App Inventor;计算思维;小学高年级学生
中图分类号:G642.0 文献标识码:B
文章编号:1671-489X(2016)24-0054-05
Teaching Exploration of Developing High Level Primary School Students Computational Thinking by App Inventor//ZHANG Liang, ZHANG Wenhui, DENG Limin
Abstract Author consider that it is necessary and feasible to develop
the high level primary school students Computational Thinking by
learning Cognitive-developmental theory. On this basis author de-signs an experimental course by using App Inventor to gain their learning situation .The result reveals that they like such operator class and the advance is obvious.
Key words App Inventor; computational thinking; high level pri-mary school student
1 引言
从1946年第一台计算机ENIAC诞生到现在的半个多世纪以来,计算机性能的发展速度非常之快,其应用领域也从最初的科学计算到后来的数据处理、过程控制,再到辅助工程乃至现在热门的人工智能,每一个领域的拓展都会给社会带来巨大的改变。但在计算机信息技术快速发展并改变人们生活的时候,许多人依然把它当作一种工具和职业技能来进行学习,而忽视了计算机科学带给人们思维方式上的拓展和转变。在他们眼里,计算机科学就是计算机编程,而诸多家长之所以让孩子主修计算机学科,其目的也大多是让其学会编程,能在以后找一份好工作。正是在这种情况下,卡内基·梅隆大学的周以真教授提出计算思维的概念,以期改变人们的误识。
2 计算思维及其重要性
何为计算思维 2006年3月,曾担任卡内基·梅隆大学计算机科学系主任的周以真在计算机权威刊物Communi-cations of the ACM上发表了文章Computational Thinking,提出:计算思维代表着一种普遍的认识和一类普遍的技能,它涉及运用计算机科学的基础概念去求解问题、设计系统和理解人类的行为,涵盖了反应计算机科学广泛性的一系列思维活动,应该是每一个人都应该学习和运用的一种思维方式,是每个人都应该掌握的基本技能,就如同阅读、写作和算数一样[1]。
计算思维的特征 在Computational Thinking一文中提出计算思维的几大特点[1]:1)它应该是概念化而非程序化的;2)它应该是基础的而不是机械的技能;3)它应该是人的而非计算机的思维;4)它应该是数学和工程思维的融合;5)它是思想而不是人造品;6)它是面向所有人、所有地方的。
计算思维的重要性 随着计算机科学的不断发展,信息技术已经极大地改变了人们的生活习惯和方式,并渗透到社会的各个方面。计算思维就如同现在的信息技术一样,和人们的日常生活有着密切的联系。例如:在银行等待服务时,在诸多均排有顾客的窗口中选择一个窗口排队等待,这就涉及最优化和运筹学中都有的“随机服务系统”理论模型;当决定如何把学习时间分配到各门课程中去,进而取得最好总成绩的时候,就涉及“线性规划”模型。计算思维作为建立在计算机科学理论基础上的一种认识问题、分析理解问题并解决问题的思维方式,也必将会在未来作为一种常见的思维模式影响人们的行为。
从国外来看,很多在计算机科学技术方面有所建树的,无一不是从小就接触了计算机乃至编程,在长时间的接触里爱上了计算机,并把研究计算机当作生活中的一部分。而国内,很多学生在进入大学之后才开始学习诸如C之类的编程语言,开始正式学习计算机科学及其思想,这导致很多学生的学习动力不足,同时学习目的也太功利。因此,真正喜欢学习和研究计算机科学的学生并不多,这有碍于我国计算机科学领域的长期发展,也不利于其能力的提升。故有必要在進入大学之前对学生进行计算机科学知识特别是计算思维的培养,既让学生能探索自己的兴趣所在,也为其以后的发展打下良好的基础。
我国目前的教育体系下,要在学生的日常课程中培养计算思维并非易事。首先,要兼顾学生的学业负担情况,特别是初中和高中学生面临升学,学业负担较重;其次,要注意学生的认知接受情况,作为一种比较系统的思维方式,对其的培养并不是越早越好;最后,要选择优秀的教学工具和教学方法,同样一节课和相同的知识点,教学工具不同、师生交互情况不同、教学流程和方法不同,则学生的喜好和接受程度显然也会有所不同。因此,笔者在综合分析学生学业负担、认知水平等方面的因素后,认为在小学高年级阶段进行计算思维的初步培养是比较具有实际操作意义的。
3 小学高年级学生思维认知的特点
认知,也可以称为认识,是指人认识外界事物的过程。小学阶段是一个人的重要成长阶段,小学生的感性和理性认识都处于快速发展时期,他们有着丰富的直观形象思维能力,也具有一定的抽象概括能力,其观察力、记忆力和注意力均处于快速发展时期。
皮亚杰的认知发展理论认为:十来岁的儿童处在具体运算阶段末期和形式运算初期,这个阶段正是脱离具体形象思维,培养逻辑思维能力的重要阶段,他们已经能够进行基本的假设检验和推理论证。他同时认为儿童只有处于特定的时期,才能掌握某些特定的概念,即认为儿童的认知发展必须要先于教学的展开[2-3]。
而维果茨基认为,儿童的心理机能的发展来自于三点:一是社会文化的发展;二是儿童与成人交往的过程对语言、符号等高级心理机能工具的掌握;三是高级心理机能不断内化。他提出两种发展水平:第一种是儿童现有心理机能的发展水平,也就是儿童发展的实际水平;第二种是在成人的指导和帮助下所能达到的解决问题的水平,也就是儿童发展的潜在水平,即教学所要达到的水平。因此,他认为发展和教学是相互影响的,甚至教学要先于发展,并且提出,在儿童要解决超过他们当前认知水平的问题时,教师应该提供必要的指导和帮助,即提供支架,辅助他们解决问题,并在此基础上进一步提出就近发展区的概念[3]。
综合以上两个理论可以看出,在小学高年级阶段开展计算思维的培养具有必要性以及现实可能性。必要性是指在这个从具体运算转向形式运算的关键时期,有必要培养他们基本的计算思维方式,让他们在面临问题时有一定的主动性,运用计算思维的方式来分析和解决所面临的问题;现实可能性是指即使他们现有的心理机能比较难以自然接受和理解某些概念,但是通过教师提供支架,给予必要的指导和帮助,他们也能够掌握相应的概念,达到发展的目的。
故此,有必要在小学阶段就逐步开展计算机科学的相关教学,让学生慢慢接触和学习知识与思想,并在长时间的接触中逐渐内化所学,形成一种有效的计算思考方式,为其后续的发展打下扎实的基础。信息技术课作为中小学生接触计算机知识的关键性课程,则显得尤为重要,如何在课程教学中蕴含计算思维,培养和提高学生敏锐分析问题的能力以及动手解决实际问题的能力,则是当前中小学教学中需要思考和探索的问题。
4 教学工具的选择和分析
针对目前的小学高年级信息技术课,笔者大致统计了其教材内容,多为文字编辑、图片设计、生活科普以及机器人的基本知识等,倾向于进行基本知识的普及教学,而针对具有工程性质的计算思维培养却有一定不足。于是,在很多中小学的信息技术教学中,国内的很多学校参考国外的方式,引入Scratch教学,以此来培养学生的计算思维,并编制很多校本教材和课程,取得不错的效果。
笔者通过试用以及调查后认为,作为一种教学工具,Scratch更适合在小学低年级中进行引入,让学生发挥自己的想象力完成各种丰富多彩的作品,即“在玩耍中学习”,因此也就有一个弊端:学生知道并可以利用这款软件设计很多有趣的作品,但為什么使用或者学习这个软件却不是很明白。而作为小学高年级的学生,其学习环境和过程正处于逐渐向正式化演变的过程中,因此,笔者认为学生应该明确地知道学习目标,并在达到目标过程中取得成就感,增强学习兴趣和自信,以期达到“在学习中玩耍”的效果。于是,笔者更倾向于选择App Inventor作为教学工具,在小学高年级的教学中替代Scratch进行教学。
App Inventor是Google公司在2010年设计开发的用于开发移动手机端APP的一个在线Android编程环境,它用简单堆积可视化代码代替了复杂的程式化代码,能设计出十分丰富的移动端APP,因此受到诸多初级用户的喜爱。App Inventor于2012年1月1日移交给麻省理工学院行动学习中心,其版本经过不断地改变,各项功能已变得越来越完善。
总体来讲,其特点包括:1)环境搭建简单;支持在线和离线两种编辑模式;2)开发简单,上手容易;3)组件丰
富,可自动打包项目为apk文件;4)开发过程短,且可以及时调试。
5 针对计算思维的App Inventor课程教学实践
教学流程模型的构建 计算思维比较抽象,教师在教学过程中如何把计算思维融入教学过程中,让学生可以在学习过程中较为容易地掌握相应知识并逐步构建起计算思维模式,便是教学前首要思考的问题。
笔者通过对比多种教学方法后认为,通过教师提出比较丰富有趣的问题,然后逐步搭建支架引导学生用App Inventor完成的教学形式,比较适合中小学生的具体情况,其课堂教学模型如图1所示。
在该模型下,教师应该采用任务驱动式教学和思维支架式策略教学。在具体创设情境之后,应该适当向学生抛出最终任务和问题,之后扮演流程的控制者、支架搭建者和引导者的角色,仅在学生解决问题的方式或观点不现实或遇阻时,予以引导并搭建支架,让学生逐步跨过障碍继续探究,逐步解决每一子模块并实现简单的基本功能,之后逐渐迭代,完成初步作品。在此基础上,教师引导学生思考如何对作品进行代码模块乃至流程优化,直到最终以较高质量完成作品为止。在整个教学过程中,教师应该起主导控制作用,学生应该是主体地位,教师所做的均是为学生的学习服务的。如此可以培养学生的计算思维和工程能力,让他们在面临实际问题时自觉运用计算思维的方式进行思考和解决。
教学主题和目标 本次系列课面向的是小学六年级的学生,因此,在课程主题的选择上不宜太难,但也需要有一定的挑战性,以便了解学生接受能力的上下限,好进一步制定具体课程。鉴于学生在之前已经接触过Scratch,并且在课程教学的时候有学生反馈父母已经在课余时间让他们学习过了,更有甚者甚至接触了单片机,因此,在试验课程的选择上,笔者选择有一定难度的九宫格拼图游戏作为教学内容。作为传统经典的益智类游戏,其本身具有一定的趣味性和挑战性,而其背后的计算逻辑思维在程序设计领域更具有代表性,因此用它来了解学生的学习能力比较适合。
让学生了解如何对作品功能进行初步分析、步骤分解,在整个实现过程中了解基本的面向对象编程思想,加强基本编程语句的熟练使用,能够初步进行简单新作品的完整分析和创作,增强学习兴趣,便是本次课程的主要教学目标。
情境创设和具体教学 教师首先让学生试玩九宫格拼图游戏成品APP,然后抛出问题:同学们能够对游戏的界面和游戏的流程进行简单分析吗?简单讨论之后进入正式教学。教师引导学生把作品拆分成界面布局分析和实现、游戏流程分析、随机化碎片、碎片移动和拼图成功与否的判定等5个模块。
在界面布局分析和实现部分,学生会探索图片、图片精灵、画布、表格组件以及水平和垂直布局组件的使用,逐步了解如何利用画布和表格组件等进行整体布局,接着试着按照手机界面的大小进行各组件大小的基本设置,同时在教师的引导下,基本知道手机APP设计时会遇到界面各不一致的情况,即设计时的“碎片化”问题。
在游戏流程分析部分,游戲者触碰空白格相邻的碎片之后可与空白格对调,如果和原图一致,则提示拼图成功,显示得分情况。教师引导学生在逻辑上分析整个游戏的运行流程[5](如图2所示),让他们对整个作品框架有一个大致把握。
在如何把图片碎片打乱的随机化碎片部分,学生首先要试着定义原始正确的状态,然后教师提示随机的概念并举例介绍,学生需用随机函数把顺序随机化,在此基础上初步绘制出“图片碎片化”的基本流程。而学生此时绘制出的流程图基本上是比较模糊和概括的,教师就应该针对其中不尽合理的地方进行点评和补充,并针对模糊的部分搭建支架,引导他们对此部分进行细化,最后形成完整的流程图。
在碎片移动部分,学生首先需要判断出空格周围的碎片有哪些并在程序中进行存储,接着判断玩家所点击的碎片是否与空格相邻,据此决定碎片和空格是否对换位置,接着判断拼图是否成功。玩家每点击一次就判断一次,直到拼图成功[4]。在整个完成作品过程中,学生既可以向教师询问,也可以和同学讨论,交流观点和方法,共同进步。在教师指导下,学生利用App Inventor拼接的部分代码块如图3所示,游戏界面如图4所示。
在学生实现基本的游戏功能之后,教师进一步提出下列问题。
1)如何对现有的但冗余度比较高的代码块进行简化?这对学习面向对象编程的思想,熟悉使用“过程”这一编程模块,加深对程序流程跳转的理解有很大的促进作用。
2)如何优化游戏得分的计算公式?如何使得计分公式能够比较契合玩家的认识,获得他们的认可?这对学生来讲也是一个探索点,让他们体会设计作品时如何让作品符合多数人的现实经验,也是一项具有挑战的任务。
3)已经实现拼图游戏的作品,但是在体验作品的时候,是否有遇到无论怎么拼,都不能把其拼好的问题?这进一步涉及在进行作品设计抽象的时候,如何使得所抽象的模型与实际模型保持高度一致的问题。教师在课堂上提出这个问题之前,几乎没有学生意识到这个问题。
实际生活中的拼图是玩家自己把拼好的作品一步一步随机打乱顺序之后再进行恢复的过程,而这个过程保证了最终能够完成拼图,也就是最终是有解的。但是在进行模型抽象和实现时,设计的打乱过程是随机把一个图片碎片和空格对换,如此随机执行若干次之后,就完成碎片的乱序过程。这里就有一个潜在的问题:并没有保证和空格对换的图片碎片是和空格原本相邻的!于是导致作品可能最终无法拼图成功,而这对于加深学生体会如何对现实模型进行高保真抽象具有很大的意义。
6 教学实践效果
在课程教学开始部分,学生就对App Inventor表现出浓厚的兴趣,都想知道传说中的安卓APP开发真的会这么简单么?进而有很大的学习欲望。在课堂上,大部分学生能够在教师的指导下顺利完成作品的基本功能,并表现出较大的成就满足感。教师对课堂的效果设计了调查问卷,设计的问题涉及学习者对所学课程的感兴趣程度、课程的难易程度以及上课后的收获程度等几个方面,全班上课人数为39人,部分反馈统计结果如下。
从学习收获上来看(如图5所示),几乎所有的学生在课程学习过程中,在教师的指导下完成作品的绝大部分功能,获得较大的满足感,因此基本认为学习的收获比较大。
在课程讲授方式上(如图6所示),学习者对任务驱动式教学和支架式教学相结合的教学方式比较满意,认可度高达90%。这说明采用该种教学方式,对于App Inventor
以及Scratch这类图形化编程软件的教学比较实用。任务目标式驱动教学能引起学习者的探索欲望,而搭建相应的支架又能让他们觉得任务虽难,且有一定的挑战性,但跳一跳就能摘桃子,并获得不错的成就感。
就课程难度来看(如图7所示),绝大部分学生认为课程较难,仅有10%左右的学生认为比较简单易接受。而由于教学对象为小学六年级,因此,这一反馈结果在预料之内。
本次为实验性课程,主要为了获取学习者学习水平的上下限,以便制定适合小学高年级学生的App Inventor课程。因此,在课程结束后,设计10门具有阶梯性的课程,从入门的“App Inventor初体验”“App Inventor开发环境介绍”,到比较简单的“制作第一个APP”,到稍难的“音乐播放器”“健康指数测试APP”,以及具有一定挑战性的“计算器”“钢琴大师”和“拼图游戏”等,以满足学生阶梯式学习的需求。
7 教学问题反馈及展望
在教师的指导下,学习者大部分实现作品的基本功能,可以用成品进行游戏。但是在教学过程中,有的学生在实现时把图片作为元素直接存储在列表中,并在后面移动碎片模块实现时,所有的列表中元素均是图片。他们实现了碎片的初始化以及移动,但是在判断拼图是否成功的时候出现问题,在试验自己的作品时,发现即使拼图完成了,也并不提示拼图成功并显示得分。而这一问题就引出如何比较列表中的图片是否一致的问题。
而在进行图片精灵坐标位置的存储时,由于已经声明一个列表用于存储图片精灵的序号,而每一个序号的图片精灵又有横纵两个坐标信息,因此,这就遇到如何提取列表中的列表的信息问题,在编程里就是多维数组这类的概念,在App Inventor中比较难实现这一概念。因此,教师在讲解这类基本概念之后,采用分解的方式,用两个列表来分别存储横、纵坐标的信息。在教学过程中还有很多细小的问题,不再列出。
通过本系列课的教学反馈表明,学生对于App Inventor
的学习热情要高于Scratch,不少学生在课后自己进行了APP的设计,有向教师展示作品的,也有向教师询问问题的。笔者认为,这一方面是因为App Inventor所能设计的作品更加贴近学生的实际生活,他们都有手机,很多也在玩手机APP游戏,而设计一款自己的APP,无疑是很具有现实吸引力的;另一方面就是App Inventor的学习对学生来讲更加具有挑战性,因此,他们也就有了更大的挑战欲望。可见,利用App Inventor并采用作品开发的方式来培养学生的计算思维,进而提高兴趣,培养其抽象分析所遇到的实际问题并加以解决的能力,无疑是一种有效的方式。
参考文献
[1]Wing J M. Computational Thinking[J].Communications of the ACM,2006(3):33-35.
[2]郭佳伟.皮亚杰发生认识论研究[D].河北:河北大学,
2011.
[3]林崇德.发展心理学[M].杭州:浙江教育出版社,2002:
94-106.
[4]老巫婆(金从军).App Inventor开发集锦[EB/OL].http://yuedu.baidu.com/ebook/41925771f90f76c661371acf.