APP下载

Python程序设计课程中计算思维的应用

2016-09-30郑戟明

大学教育 2016年8期
关键词:计算思维程序设计课堂教学

郑戟明

[摘 要]计算思维是国内外各界重点关注的一种较先进的教育理念。计算思维也为高校程序设计课程的教学提供了一条新途径。可以根据程序设计课程的特点,将程序设计的理论与计算思维的原理有机结合起来,并把计算思维中各种功能有效地运用到课堂教学的各个环节中。把计算思维融入课堂教学对培养学生的计算思维能力和创新能力有着积极的作用。

[关键词]计算思维;Python;程序设计;课堂教学

[中图分类号] G642 [文献标识码] A [文章编号] 2095-3437(2016)08-0127-03

一、引言

2006年,美国CMU大学周以真(Jeannette M.Wing)教授在美国计算机权威期刊《Communications of the ACM》上发表并定义了计算思维(Computational Thinking)。[1]周以真教授认为:计算思维是运用计算机科学的基础概念去求解问题、设计系统以及理解人类行为,它包括了涵盖计算机科学之广度的一系列思维活动。计算思维就是通过约简、嵌入、转化和仿真等方法,把一个看起来困难的问题重新阐释成一个我们知道如何求解的问题;计算思维采用抽象和分解的方法来控制庞杂的任务或设计巨型复杂系统。它是基于关注点分离的方法,它是选择一种合适的方式陈述一个问题,或者是选择合适的方式对一个问题的相关方面建模使其易于处理。计算思维利用启发式推理寻求解答,就是在不确定情况下的规划、学习和调度。计算思维将成为每一个人的技能组合成分,而不仅仅限于科学家。[4]

计算思维能力是多种学科人才必须具备的基本素质,其概念一经提出就引起了国内外科学界和教育界的广泛关注。近年来,国内外学者从不同的角度对计算思维的含义、特点和培养方法进行了探索和研究。中国科学院院士、中国科学技术大学陈国良教授指出:在大学中,计算思维不仅能振兴大学计算教育,而且会令科学与工程领域创造出革命性的研究成果。[2]朱亚宗教授将计算思维、实验思维和理论思维归结为人类三大科学思维方式。[3]

二、Python语言

Python语言是一种面向对象、直译式计算机程序设计语言,Python语法简捷、清晰和易读。Python是开源的语言,具有丰富和强大的类库,同时具有优良的可扩展性和平台可移植性,它能够很轻松的把用其他语言制作的各种模块轻松地联结在一起。

Python语言的主要特点:

(一)简单易学

Python有极其简单的语法,容易上手,易于学习,非常适合初学者,也特别适合专家使用。一个好的Python程序专注于解决问题本身,而并不是沉迷于语言语法。

(二)免费、开源

Python的使用者可以自由地发布这个软件的拷贝,阅读它的源代码,对它做改动,把它的一部分用于新的自由软件中。

(三)可移植性、可扩展性、可嵌入性

Python可以被移植到各种不同的平台上,如Linux、Windows、Macintosh等等,以及Google基于linux开发的android平台。Python可以将部分程序用C或C++编写,然后在Python程序中使用它们。使用者也可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

(四)面向对象

Python支持面向过程和面向对象的编程。

(五)丰富的库

Python除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

目前我国高校主要把C语言和VB语言作为程序设计课程所用语言。这些程序设计语言历史较久,功能强大,特点突出。但是这些程序语言进行程序开发工作量较大,难度相对较高,特别是对于非计算机专业和文科院校专业的学生更是如此。

Python语言是一种简洁、易读的程序语言,具有可扩展性和可移植性的特点。同时Python是开源的语言,拥有丰富的库,为开发提供了极大的便利。目前国内外采用Python语言作为程序设计课程语言的高等院校日益增多。

三、Python程序设计课程的计算思维

程序设计课程是很多非计算机专业学生的一门必修课,同时也是一个训练学生计算思维很好的平台。[5]本文尝试在Python程序设计课程的教学过程中,引入计算思维的先进理念,把程序设计知识以一种新的方式教授给学生,通过把计算思维融入Python程序设计课程教学中,实现逐步引入计算思维的基本概念和方法,使学生理解计算思维的理念,学会运用计算思维的方法,去发现问题,然后寻找解决问题的途径,最终解决问题。这样通过本课程的学习,达到培养学生计算思维的能力,提高学生解决问题的能力和创新能力的目的,为程序设计课程探索一条新的教学途径。

在实际工作中,当需要解决一个大型问题时,往往都会首先考虑怎么对问题进行分解化简。如现代制造业中的离散制造,就融合了计算思维的本质,把一个庞大的生产问题,按照产品的功能进行层层分解,使一个庞大的问题分解成一个个子问题,更便于人们在生产过程中进行处理和控制。计算思维就是通过约简、分离、嵌入、启发等方法,把复杂的问题分解并解释成若干简单问题,从而降低难度,便于分析和解决问题。

在Python程序设计教学过程中,运用这种分解或分层的方法,以程序设计理论为出发点,把人的思维融入程序设计解决问题。学生不再只是面对抽象的程序设计的理论与算法,更多的是将注意力集中在分解问题和解决问题的过程中,同时还可以将各自专业和学科知识融入其中。

四、Python程序设计课程中计算思维应用

在计算思维解决问题的方法中,关键是把问题化简和分离,也就是将复杂而庞大的问题按照较为合理的方法进行分解简化,问题最终将被分解成多个模块,或者多个阶段,然后再针对这些模块或阶段去逐个找出解决方法,最终解决整个系统的问题。

事实上这种把问题化简和分离的方法,非常适合在Python程序设计课程中应用。教师在教学中把各个问题分解简化,学生面对的不再是整个完整的问题,而是一个个相对容易解决的小问题和小模块,所以学生只需要把每个小问题解决好了,那么也就掌握了Python程序设计的方法和过程。下面以Python程序设计课程中的一个问题为例,来说明Python程序设计课程中的计算思维应用。

现在需要用Python程序设计中的列表来处理数据。教师首先把列表问题分解成创建列表、添加数据、显示数据等几个问题,然后逐步解决这些问题,最终实现运用列表处理数据的目的。

(一)创建列表

现有一些关于汽车基本信息的数据,需要根据这些数据先去创建关于汽车品牌的一个列表。在创建列表过程中,教师会让学生重点关注一下几个问题:列表的结构、列表的存储方式、列表中数据项的处理方法。

创建一个名为“cars”,关于汽车品牌的列表。

cars=[“大众”,“通用”,“丰田”,“福特”]

通过创建列表这一问题,使得学生掌握创建列表的基本方法,了解列表中数据项的数据类型问题,同时也让学生知道列表中数据项存储方式是类似于数组的。在解决创建列表问题的基础上,教师可以进一步把问题加以扩展,如列表中数据项的显示、列表中数据项的添加、列表中数据项的删除等等,这样又让学生掌握了列表中数据项的处理方法。

(二)添加数据

在创建了关于汽车品牌的列表后,现在需要为它增加一个生产年份的数据,而且要求数据要添加在每一个汽车品牌后面。在这一问题中,教师提示学生要关注解决问题的不同方法。

方法一:运用“insert”和“append”命令,向“cars”列表中直接添加所需要的数据。

cars.insert(1,“2012”)

cars.insert(3,“2010”)

cars.insert(5,“2000”)

cars.append(“2014”)

这种方法需要用到“insert”和“append”命令,而且还要分别计算每个生产年份在整个列表中的位置。

方法二:从头重新创建“cars”列表。

cars=[“大众”,“2012”,“通用”,“2010”,“丰田”,“2000”,“福特”,“2014”]

这种方法相对比较简单,只需重建列表。

添加数据问题解决后,让学生进行总结讨论,这两种方法的优缺点,使学生了解对应不同的需要和不同的列表,可以采用不同方法来解决问题。

(三)显示数据

进入显示数据阶段,教师首先要求学生把上述所建的“cars”列表中的数据,按品牌和年份分别显示出来,用“print”命令显示出来,这一任务学生很容易完成。

print(cars[0],cars[1])

print(cars[2],cars[3])

print(cars[4],cars[5])

print(cars[6],cars[7])

然后教师再提出一个问题,如果“cars”列表中添加了新的数据项,也需要显示出来,怎么解决?学生解决的方法往往是增加“print”语句,接着我们再问学生:如果列表中增加的数据项有很多项,那怎么解决?是不是要添加很多条“print”语句呢?

上面这个问题往往会难住学生,教师就可以适时的提出用迭代方法来处理列表中的数据,引入“for循环”语句可以非常方便解决这一问题。

for each_item in cars:

print(each_item)

用迭代方法方便解决问题后,我们还可以让学生考虑用“while循环”语句编写迭代代码。

cars=[“大众”,2012,“通用”,2010,“丰田”,2000,“福特”,2014]

number=0

while number

print(cars[number])

number=number+1

显示数据问题解决后,学生在此过程中掌握了通过迭代来实现显示列表中数据的方法,同时初步了解了循环语句的用法。

(四)思维启发

经过前面三个阶段的学习,学生已经基本掌握了列表处理数据的方法,同时也从中了解了与计算思维相关的一些知识。为了让学生更好的理解计算思维的本质,教师需要把计算思维方法中的思维启发引入教学过程中,让学生多思考,多寻求解决问题的方法,从而达到培养学生应用计算思维能力的目的。

具体实施方法是,以前面三个阶段的学习为基础,再给学生提出一系列与列表相关的问题,如运用列表知识来解决企业销售的问题、超市商品价格查询问题等。学生要解决这些问题,光靠前三个阶段的知识是远远不够的,由于课堂时间有限,所以教师应鼓励学生课后去思考,去寻找解决问题的方法。经过一阶段后,教师再去检查学生完成任务的情况,当然学生完成的情况可能不是很理想,存在很多问题,这都是很正常的。教师提出一系列与列表相关问题,其目的主要是关注学生思考探索问题的过程,而不是解决问题的结果。在学生经过自己思考探索之后,教师在学生结果中挑选一些典型例子,进行讲解分析,最后引出正确的解决问题的方法和思路。通过这些训练,学生思考问题、解决问题的能力会有很大提高,学生也慢慢学会使用计算思维的各种方法来思考和解决问题。

学生计算思维的基本技能的培养,不可能单单通过课堂教学就能完成,实际的锻炼是最好的方法。所以教师应当多鼓励学生参加一些创新项目和应用能力大赛,通过项目和大赛磨炼和挑战自己,参与的学生都受益匪浅,感到自己各方面的能力都得到了锻炼。学生的这些收获往往是在课堂上老师所不能给予的。计算思维能力的培养最终要靠学生自己在学习、实践活动过程中逐步掌握和形成。

五、结束语

要让学生掌握好计算思维的基本技能,必须把计算思维的培养融入整个教学过程中。从Python程序设计课程教学尝试来看,计算思维方法能很好的培养和训练学生思考和解决问题的能力,使学生较好的掌握教学内容,使教学效果良好,这表明了把计算思维融入程序设计课堂教学的可行性和有效性。所以,教师都有必要从计算思维的理念出发,积极主动地参与到教学过程中,把计算思维的各种方法和自己的课程有机的结合起来,从而达到培养学生计算思维的能力的目的。

[ 注 释 ]

[1] Wing J M.Computational Thinking[J].Communication of the ACM,2006(3):33-35.

[2] 陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-11,32.

[3] 朱亚宗.论计算思维——计算思维的科学定位、基本原理及创新路径[J].计算机科学,2009(4):53-55.

[4] 周以真.计算思维[J].中国计算机学会通讯,2007(11):83-85.

[5] 孙家广.计算机科学的变革[J].中国计算机学会通讯,2009(2):6-9.

[责任编辑:钟 岚]

猜你喜欢

计算思维程序设计课堂教学
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
简约化初中化学课堂教学实践探索
自然拼读法在小学英语课堂教学中的有效融入
数学开放题在初中课堂教学的探索
程序设计课程中计算思维和应用能力培养问题研究
民族高校C语言程序设计课程教学改革的研究
算法的案例教学探析