赖军
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真教授在美国计算机权威期刊《Communications of the ACM》杂志上定义了什么是计算思维,她认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。这是高度抽象的概念定义,对于普通中学生而言,这个定义就有点不太“接地气”。
那么什么才是中学生的计算思维呢?根据中学生思维发展处于形式化运算阶段,并具有抽象性和逻辑性的发展特点进行分析,笔者认为:中学生的计算思维是指中学生在现有知识水平和社会认知的基础上,利用计算机科学知识或程序设计思想,来分析现实生活中的问题,并运用计算机或程序设计来解决问题的合理方案的思维能力。本文着重探讨的是依托App Inventor,启蒙中学生运用程序设计思想来分析问题、解决问题的计算思维能力。
启蒙中学生的计算思维并不是要把学生培养成计算机专家或专业程序员,而是要培养生活在数字时代的青少年从小具备运用计算思维分析问题、解决问题的思维方式和思维能力。
1.信息技术教学需要重视计算思维的引导与培养。很多教师在开展信息技术教学过程中往往注重计算机知识与技能的培养,而忽视了学生思维方式和思维迁移的培养,没有引导学生养成按计算机的方式认识问题、分析问题和解决问题。在这样的教学理念下,学生对所学计算机知识只能了解而不能理解,对操作技能只会模仿而没有探究,运用信息技术的思维方式只是刻板还不能迁移。因此,教师必须树立培养学生思维方式的教学理念,转变知识传授为思维启发,培养学生一定的计算思维能力。
2.计算思维是信息社会最基本的思维方式,是数字时代每个人都要具备的基本思维能力。我们所处的时代直至未来,计算思维都将是我们分析问题和解决问题最好的思维方式之一,是我们从小就要具备的基本技能,这样才能更好地认识和适应这个时代,更好地在这个社会立足。浙江大学博士生导师何钦铭教授一直在呼吁:计算思维能力的培养是计算机基础教育的重中之重,任重道远,我们要为之坚持不懈、努力探索。
3.计算思维是中学生将所学计算机知识技能与实际应用相结合的重要基础。具备了一定计算思维的学生,在面对实际问题的时候,很自然就会想到使用计算机来解决。计算思维可以培养学生从复杂的实际问题中抽象出事物的主要特征,再联系所学计算机知识,运用计算机解决问题的方式快速形成合理高效的解决方案。使学生学以致用,以用促学,让学生体会到学习和应用信息技术的成就感,激发学习兴趣和学习动力。
4.计算思维是培养学生抽象思维和严谨的逻辑思维能力的重要载体。计算思维通过分析事物,识别和明确定义计算问题,运用抽象并形成解决问题的方案,验证并反馈方案的有效性和可操作性,完善并改进解决方案。整个过程都体现了严谨的抽象思维和逻辑思维能力,因此,根据中学生思维发展的特点,培养计算思维就是培养严谨的抽象思维和逻辑思维能力,对学生形成良好的思维方式具有重要作用。
本文之所以选择依托App Inventor来培养中学生的计算思维,是因为App Inventor是专门为青少年学生设计的移动应用编程入门开发环境。它不再采用传统的“文本代码”编程模式而改为“积木搭建”模式,既有趣又能减少代码错误;开发环境中提供了丰富的功能组件和内置编程模块,让开发者不用为记忆枯燥的代码而苦恼;开发过程中可以在安卓终端和模拟器上实时运行,运行结果可以实时把控,让调试更简便、更高效。
如何依托App Inventor来启蒙学生的计算思维?笔者在实践中不断探索,认为需要从以下几个方面,借助实践,循序渐进,举一反三,让学生逐步形成连贯性、习惯性的计算思维能力。
1.将实际问题转化为类程序化语言描述,培养学生的抽象思维能力。类程序化语言,是指按计算机程序执行的方式来描述问题解决思路的类似于日常用语的语言,描述的格式一般为“当……则……”,“如果……那么……否则……”,“满足……(条件)则重复……直到……(条件)”。启蒙学生计算思维的第一步,就是要训练学生使用类程序化语言来描述实际问题。举个密码验证的例子,可以用类程序语言描述为:当输入的用户名和密码等于保存的用户名和密码时,提示验证通过,否则提示用户名或密码错误。
用类程序语言描述实际问题不用要求学生说出问题的详细解决方案,只要求能说出大概的解决思路。教师可以提供一些实际生活中的例子让学生用类程序语言来描述,比如:电饭煲、电冰箱、空调等家电的工作方式,同学们对学校铃声的响应等。引导学生形成习惯性的类程序语言描述方法,培养学生的抽象思维能力,垫定计算思维的基础。
2.将类程序化语言描述转化为程序流程图,培养学生的逻辑思维能力。当学生能够用简单的类程序化语言来描述实际问题时,就要培养学生找准问题的关键点,并将这种描述转化为简单的程序流程图,使逻辑更清晰。在密码验证的例子中,会出现很多种情况:没有输入用户名和密码、没有输入用户名、没有输入密码、用户名错误、密码错误、用户名和密码都错误、用户名和密码都正确。但在程序设计时只需要考虑两种情况:一是用户名和密码都正确,二是其他的所有情况。所以简单的流程图如下图所示:
对于初中学生,绘制流程图无需太严谨、太完整,只要求能通过简单流程图清晰地表达问题关键点的处理过程。绘制流程图的目的是培养学生将抽象化的事物用逻辑上的图形来表达的基本能力,使学生培养成用流程图来描述问题关键点的习惯性思维方式。
3.将程序流程图转化为程序模型,培养学生的计算思维能力。这一步是培养学生计算思维的最关键最重要的环节,也是最难的环节。这个环节是培养学生将现实问题转化为易于计算机处理的数学问题,建立数学模型,再将数学模型转化为程序模型。通过绘制验证密码流程图后发现,验证密码的数学模型非常简单,就是“输入的账号=已设账号”并且“输入的密码=已设密码”则验证通过,否则验证不通过。再转化为分支结构的程序模型:
如果 账号输入框内容=已设账号 且 密码输入框内容=已设密码 那么
密码验证通过
否则
密码验证失败
结束分支
金从军老师提供了一个关于农夫运送狼羊菜过河的例子:一位农夫带着一只狼、一只羊和一个卷心菜过河,因为船小,农夫一次只能运送一样东西过河。但狼会吃羊,羊会吃菜,不能在农夫不在的情况下把狼和羊或者羊和菜留在同一处。农夫应该如何运送呢?
金老师用自然数来表示三样东西:狼=1,羊=2,菜=3。为了不让狼吃羊、羊吃菜,就可将问题转化为求差值的减法问题,当它们之间差值的绝对值等于1时,会发生“危险”,必须加以避免。
现实生活中的所有问题都可以转化为数学模型,对于初中学生,可以选取一些既简单又有趣的例子,让学生思考并找出能用数学模型来解决的方案,在同学中讨论、分享,再确定最优方案,最后编写程序代码,调试程序,解决实际问题。
4.编写调试程序,培养学生的编程和操作思维能力。建立了程序模型后,就可以在App Inventor环境下编写代码,用程序来实现模型,解决问题。密码验证的关键代码如下:
农夫运送狼羊菜过河的关键代码如下:
依托App Inventor培养学生的计算思维能力,前提是学生必须掌握App Inventor开发环境及其应用,本文不作详述。学生通过在App Invent-or中动手编程,让学生在操作中思考,在思考中提升计算思维能力。
计算思维是以计算机应用与操作为基础的方法论概念,启蒙学生的计算思维不能脱离了计算机应用与操作,应该把计算思维能力的培养整合到课堂教学中,由抽象到逻辑,再到操作,最后形成计算思维。笔者在App Inventor兴趣小组教学实践中,通过以上步骤的反复练习,学生的计算思维能力提升明显,逐步养成了用计算思维方式分析事物的习惯,同时也提高了App Inventor编程操作能力和技巧。初中学生的这种知识和技能基础,让他们能突破常规思维方式,将事物数字化、信息化。计算思维必将影响他们今后的学习和生活,使他们的思维方式在数字化时代能够与时俱进、永不落伍。
具备一定计算思维能力的人,会更有勇气、毅力和自信去面对生活的挑战,无论你面对的是什么,计算思维都能让你更迅速、更容易地达成,人生又怎么会不精彩呢?
参考文献:
[1]马秀麟,邬彤,刘立超.思维能力培养与信息技术基础课教学的融合[J].中国教育信息化,2015(2):22-25.
[2]宋云生.计算机基础教学中计算思维能力培养的探讨[J].教学与教育信息化,2015(14):187-188.
[3]刘焱青.App Inventor2在中学生计算思维培养中的应用研究[D].中国湖南长沙:湖南师范大学,2016:9-20.
[4]金从军.农夫过河——狼羊菜问题[J].(2018-2-25)
[5]文雅善良.What?计算思维居然是未来儿童最重要的能力模型![J].(2014-03)
[6]Derek Walter,Mark Sherman.MIT App Inventor完全上手[M],靳晓辉.中国北京:清华大学出版社,2015.69-71.
[7]蔡艳桃.Android App Inventor项目开发教程[M].北京:人民邮电出版社.2014.1-4.