您好,欢迎来到六九路网。
搜索
您的当前位置:首页面向计算思维能力培养的Python课程

面向计算思维能力培养的Python课程

来源:六九路网
第 2 期

94

2021 年 2 月 10 日

计算机教育

Computer Education

中图分类号:G2

文章编号:1672-5913(2021)02-0094-05

面向计算思维能力培养的Python课程

杨 波,刘文彬,龚春红,刘胜宗

(湖南财政经济学院 信息技术与管理学院,湖南 长沙 410025)

摘 要:分析当前计算思维培养在大学通识教育中的状况,提出以Python课程为例的三阶段课程建设构架,从入门阶段、培育阶段和拓展阶段阐述面向计算思维培养的Python课程教学建设。关键词:计算思维;通识教育;Python;教学模式

0󰀁引󰀁言

计算思维与实验思维、理论思维被认为是现代三大科学思维方式。当前大数据与人工智能的快速发展及应用,使计算思维在信息素质培养上的重要性更是不言而喻,将其定为通识教育计算机课程的一个重要方向已成为教育界的共识,其中,编程实践又被普遍认为是培养计算思维的必由之路[1-2]。

传统编程语言如C、Java等在面对当前及未来应用(如数据处理、机器学习等)存在不足,不易为非计算机专业的人员掌握[3]。近年来Python语言由于简单易学及众多第三方支持而被极度关注,尤其适用于大数据、人工智能等未来应用开发,更符合学生对编程学习的预期。因此,国内高校在通识教育计算机课程中开始流行选用Python语言教学[4],但由于被接纳时间短,面向计算思维能力培养的Python课程建设仍处于初始阶段,对该方向的探索亟待进一步展开。

计算思维是运用计算机科学的基础概念进行问题求解的思维活动;还有部分人认为计算思维是一种递归思维,是一种并行处理[2, 5]。

本文对计算思维的解读为:指将人类生产中存在的问题转化为计算机可处理问题的思维模式,其目的是借助计算机来处理或加速问题的求解。图1描述计算思维的解读,具体地说,首先通过识别、抽象将问题转化为可计算化描述,然后执行问题建模并设计出系列解决方案与步骤,再进一步给出可自动化处理的计算系统与计算程序。从教学的角度来看,可将计算思维培育的目标定位为培养学生使用计算机工具及方法解决实践问题的能力与习惯。

1󰀁计算思维解读

学术界对计算思维的解读存在多样性。如美国国际教育技术协会认为,计算思维是一种借助计算机解决问题的过程,由算法设计步骤实现最优解决方案;卡耐基•梅隆大学的周以真认为,

图1 计算思维解读

2󰀁现状分析

国内学者围绕着计算思维的概念理论、教学模式与培养策略等多个方面开展了许多的研究,当前以探索与尝试性研究居多,研究层次

基金项目:湖南省教育厅科学研究重点项目(19A077),湖南省教育科学规划项目(XJK17CXX001),湖南省社科基金项目(16YBA050),湖南省普通高等学校教学改革研究项目(湘教通[2018]436号文, 865号)。

第一作者简介:杨波,男,讲师,研究方向为机器学习、云计算、智能信息处理,***************.cn。

第 2 期

课程案例

95

还处于理论认识与知识积累的初级阶段[2, 5]。

2.1 以编程教学为主导

通过编程实践可理解抽象概念,获得感性经验,被普遍认为是培养计算思维的必由之路。因此,许多高校在通识教育的计算机课程中强调编程技能的培养,将编程实践作为训练计算思维的唯一载体。但是编程语言就算在当前计算机学科专业中也已淡出核心角色,数据处理、算法以及系统分析等都蕴含计算思维。基于编程来训练计算思维是一种狭隘的方法,很容易由于强调编程技能而陷入繁杂语法掌握的困境中[1, 6]。以经典的C语言为例,输出输入函数printf()、scanf()的掌握往往需花费较多的学习时间与精力,事实上它们对计算思维能力培养所贡献的作用几乎可以忽略。此外,通识课程往往没有充裕的课时,哪怕是语法已大大简化的Python语言,在完成基础知识讲授之后课时也所剩不多,而采用传统编程语言教学要在有限的课时内再进一步融合计算思维的训练更是有心无力,在实际中,往往仅够部分编程语法的学习。2.2 以算法教学为主导

“计算思维就是算法思维”仍在一些高校占主导地位,跳过编程语言学习,直接学习算法理论来训练学生的计算思维;或者淡化编程语言学习,重点突出算法理论学习。算法学习固然可以训练计算思维,但算法更多地可归类为数学层次,算法研究甚至可抽象到脱离计算机展开,这与利用计算机来解决专业问题的计算思维逆向而行。从前面计算思维解读来看,“计算思维就是算法思维”是一种狭隘的观点,是对计算思维的片面理解,严格来说算法思维属于计算思维的一个子集,算法学习也不是训练计算思维的唯一途径。更现实的是,没有编程学习基础就直接学习程序算法,哪怕是计算机学科的学生也会因缺少感性认识而难以理解,更何况在通识教育中面对的多是非计算机学科的学生,能否被学生所接受都存在较大的挑战。

2.3 实际教学不能满足学习期待

信息技术在近些年来取得重大的突破,如基于深度学习的谷哥AlphaGo击败了人类棋手;人脸识别技术应用于高铁乘车、手机支付;无人驾驶技术越来越接近于生活;基于大数据精确预测

发展趋势等。这些科幻电影中的事情成为现实,深深地刺激无数人的好奇心,无论是信息类专业还是其他专业的学生都对人工智能、大数据与机器学习等表现出了极高的学习需求。通过本校的计算机通识课程学习相关技能更是众多非信息类专业学生所期盼的,然而许多高校通识教育中的计算机课程往往以基本程序结构、数列操作以及文件读写操作等作为主要内容,学生的学习期待与实际学习情况相差较大,客观上影响学生的学习动机,不利于教学质量的提升及计算思维的培育。

除以上述问题外,还有一些关键性问题有待进一步突破,如基于计算思维的课程体系与师资队伍建设、教学测评方法与策略研究以及计算思维评估等不再一一列出。

3󰀁面向计算思维培养的Python课程教学建设

课程教学的组成划分成3个阶段,如图2所示。第一阶段为入门阶段,主要学习程序结构及基本语法,以培养简单编程能力为目标;第二阶段为培育阶段,学习使用工具如流程图、盒图以及PAD图等描述问题过程的能力,学习面向对象的思想以功能划分系统,凝练将具体问题转为计算机可理解问题的能力;第三阶段为拓展阶段,主要学习如何借助三方工具解决问题,开拓借势思维及进一步深化计算思维能力培养为目标。

图2 课程三阶段组成

3.1 问题驱动混合教学弥补课时不足

编程实践主要对应着课程组成的第一阶段,不仅贯穿课程的各个阶段,也是检验学习计算思维、培养信息素养效果的最重要和最有效的手段。人类的认知规律是从实践到理论,从现象到本质,即从问题出发,通过解决问题总结出规律,再用总结出的规律解决新的问题。因此,没有编程实践而空谈计算思维是没有意义的。

一般在大学通识教育中,计算机课程给定的课时往往不会超过48个课时,从前面的现状分析中可知,如果要同时强调编程语言基础知

计算机教育

96

Computer Education

2021

识的学习与计算思维的培养,通常是不够的。因此,在课程的第一阶段即入门阶段,教师需要考虑翻转课堂、MOOC等新的教学模式或方法来弥补课时的不足,课堂上可适当缩减部分编程语言基础知识的教学,以答疑、讨论为主,基础理论学习可交给学生在课后通过网络在线教学视频及适量的练习来完成。由于Python语言的易学性,在我们的教学实践中发现,课后自主学习的难度对于多数学生来说是可以接受的。

图3 问题驱动混合教学过程

以问题驱动开展混合教学。如果混合教学中的自主学习纯由学生决定,其存在过程控制困难,往往效果并不理想。为了提高混合教学的效果,需要强调学练结合,以大量问题驱动学生主动寻求答案,引导学生自主学习,其基本流程由图3所示。在该阶段,需要教师根据学习内容设计足够的问题,并依据学习进度分阶段提供给学生在自主学习过程中完成,引导学生完成自主学习内容;此外,教师也可依据学生自主学习过程中的问题完成程度来评估学生的成绩,推动部分学习较被动的学生完成学习,最终在班级中形成浓厚的全员主动学习大氛围。由于学生带着问题在课后学习,其学习目标明确,在学习过程中可迅速抓住学习内容的重点与难点,在课堂上才能有针对性与老师和同学讨论学习过程中的“模糊点”,深化学习内容的理解与掌握,避免了以往混合教学课堂教学环节,教师重复自主学习内容的讲授或仅有少量学生互动的尴尬局面,使混合教学中的课堂环节成为师生之间真正讨论、答疑的环节。

3.2 突出将问题转化为计算机可理解问题的能力培养

计算思维培养的关键点就是将问题以计算机可理解的方法表述出来。课程教学第二阶段正好对应该点,侧重于培育学生以可计算化方式描述具体问题的能力,是整个课程的关键点。首先从

系统级执行问题可计算化描述训练,如引入面向对象设计的思想或结构化设计思想,在系统级识别出问题域中的对象及其功能,进而划分出系统子功能模块;然后进一步训练各子功能的详细描述,其中流程图、盒图、PAD图与判定表等都是非常有利的描述表达工具。

以五子棋程序设计为例来说明课程组成的第二阶段。基本思路是利用面向对象的思想识别、抽象问题,并最终以计算机可理解的方式描述问题。首先以“功能”分析来识别问题域中的对象,表1是执行系统分析后所确定的对象及其功能。

表1 识别问题域中的对象及其功能

序号

对象名

功能

1

玩家(Player)模拟执黑白棋的双方,接受玩家执子输入

2仲裁者(Arbiter)负责判定玩家输赢等3场景提供者

(Painter)负责绘制棋盘及玩家落子4

棋子集记录棋子在棋盘的分布信息,判(ChessSet)

断落子的合法性

在识别系统的对象后,可进一步分析系统业务流程:Player对象负责接受用户输入,并告知ChessSet对象其落子坐标,ChessSet对象负责判断落子坐标的合法性,提交落子变化给Painter对象,由其在屏幕上面绘制合法落子变化,同时通知Arbiter对象来对棋局进行判定。图4时序图描述了系统中4个对象的业务时序。基于业务时序识别完善对象的功能,然后利用工具详细描述各对象的功能模块,最终给出各功能模块的解决步骤如流程图、盒图等。

PlayerChessSetPainterArbiter图4 五子棋时序图

第 2 期

课程案例

97

需要特别注意的,由于通识教育面向的多是非计算机专业的学生,如果以纯理论教学会导致课程讲解枯燥,易使学生陷入理解困境,丧失进一步学习的信心,而案例教学可以减少理解难度,提升学习乐趣,加速计算思维的形成,是合适的可选教学方案之一。课程第二阶段建设需要教师准备多个类似上面的简单案例供学生模仿学习,相关的素材建设可以从软件工程课程借鉴。此外,由于面向的多为非计算机专业学生,要控制好选取案例的学习难度,以小规模、简单的问题为佳。

3.3 使用三方工具融合“趣味性与实用性”

设计教学案例

在许多非计算机学科的学生认知中,普遍存在程序应该完全是自己编写的误区。事实上,借助于各种库所提供的工具(函数)来开发项目可以大大提高工作效率,也是产业界常用的手段。因此,除了会自己编写程序,也需要学会借助语言自带的库函数、第三方库及工具,特别是面对一些比较复杂的问题,现有的、成熟的、稳定的第三方库比自己去编写显然是更优的选择。Python语言在广泛三方工具的支持下,使得很多传统语言很难实现的功能可以很容易实现。

有趣的、实用的案例天然可激发人类的学习兴趣,因此课程可以充分利用相关的三方库及工具开展趣味性教学,激发学生的学习动力,培育学生基于计算思维解决问题的能力。下面以两个案例来做说明。案例一,基于概率思想的蒙特卡罗方法求解圆周率,使学生理解以蒙特卡罗方法为代表利用计算机近似求解实际问题的计算思维,详情如图5所示。在该案例中借用了numpy库中的随机工具random.uniform()产生均匀分布的随机数,计算落在圆内的随机点数占总随机点数的比来近似求解圆周率。通过案例学习,令学生了解到在现实中,有许多的问题无法获得解析解,或者获取解析解的代价太高,而近似方法往往可以快速、低代价获得令问题满意的近似解,这也是现代借助计算机处理问题常用的思维之一。

案例二,统计中文新闻、文献中的关键词或主要信息,以可视化的方式展现结果。中文文本需要通过分词获得单个的词语,“jieba”是优秀的中文分词第三方库,利用“jieba”分词后提取词

汇,最后再用“wordcloud”库工具绘制词云,实现结果可视化。图6是对抗洪救援新闻执行词云分析可视化的结果,这种类型的案例不仅可以教会学生使用第三方工具,也能激发学生兴趣,并应用于自己的学习生活中。

图5 蒙特卡罗方法近似求解圆周率

图6 词云分析可视化

人类在学习时,都趋向于选择能够解决自己身边实际问题的知识。实用性的案例可以让学生明白所学课程能够服务于自己身边哪些问题,进而感性认识到课程的学习价值;趣味性的教学案例一般都来源于实用性的案例,但如果不对实用性的案例加以筛选及修饰、包装而直接应用于教学,则会使课程变得沉闷、枯燥而缺乏足够的吸引力。要实现这个目标,如果全部由自己完成,往往会需要复杂的逻辑设计来实现,引入第

三方工具,如上例中的分词功能(使用三方库的jieba”来实现),使得目标的实现变得简洁、容易。第三方工具的引用,不仅可以大大降低课程教与学的难度,同时也让学生明白计算机解决实际问题,并不需要自己去完成全部的功能,一些专业性的问题由专业人士去完成,只要懂得如何去强大的三方库来完成自己的问题即可,从而

““借势”计算机教育

98

Computer Education

2021

利于消除面对复杂问题设计程序时的恐惧心理。课程考试的题型设计可以分成2类:一是基础知识题,可以设计成多个小题,每题考核点仅包含单一的知识点或分析方法;二是综合题,以1~2道综合实践题为佳,综合考核编程能力与计算思维能力,例如给定问题,需要学生给出算法描述(如采用程序流程图、伪代码等工具描述)、系统功能划分、程序源码才能获得全部分数。同时,由于综合应用中需要调用各种库函数实现,在考试中可提供必要的库函数帮助文件和样例,将课程考核的重点集中在问题分析及技能的正确应用上。

3.4 课程考核与实践练习

除了通过兴趣爱好令学生主动注重计算思维能力的培养,也可以结合被动方式驱动学生对计算思维培养的重视。课程考核可以采用实践考核的方式,成绩评定将平时实践练习与考试相结合,突出计算思维能力所占的比重。如此设计的理由是,计算思维的培养及相关知识与技能的掌握,仅对知识点进行听与阅读是不可能完成的,必须配以大量的实践练习来体会和理解,再到实践应用。由于实践练习是总成绩的重要组成,将驱使学生积极主动完成学习。因此,依据课程建设的3个阶段可将实践练习设计为3个层次,见表2。

表2 实践练习的3个层次

层次

模仿级

4󰀁结󰀁语

计算思维的培养已成为当前教育界不可回避的问题,目前各高校在通识教育中对计算思维的培养还处于探索时期。基于Python课程,本文从3个课程阶段划分来讨论面向计算思维培育的通识课程建设,但仍然有许多方面需要深入研究,如面向专业特色的计算思维培育、计算思维教学的测评以及混合教学内容设计与划分等都是该方向未来有待解决的问题。

对应阶段

入门、培育阶段

设计说明

设计与教学案例、分析方法类似的问题,使学生在模仿中掌握基础知识、方法及技能设计新应用背景的问题案例,培育学生以计算机可理解的方式描述问题的能力

要求学生结合兴趣、专业背景等制定开放性问题,综合运用所学方法与技能

应用级培育阶段

开放级拓展阶段

参考文献:

[1] [2] [3] [4] [5] [6]

伊宝林. 编程实践是培养计算思维的必由之路[J]. 中国计算机学会通讯, 2019, 15(10): 55-57.史文崇, 刘茂华, 杨大志. 计算思维教育的困惑与博弈[J]. 中国远程教育(综合版), 2019(8): 59-67.

宋晖, 刘晓强, 杜明, 等. 大学计算机基础类数据科学课程的探索与实践[J]. 计算机教育, 2019(9): 88-91.魏冬梅, 王秀华, 王影, 等. 基于Python的程序设计通识课程建设与教学实践[J]. 计算机教育, 2019(2): 69-73.范文翔, 张一春, 李艺. 国内外计算思维研究与发展综述[J]. 远程教育杂志, 2018(2): 3-17.

黎晓芳, 郑小军, 朱育贤, 等. 计算思维培养中的编程技术探析[J]. 中国教育技术装备, 2019, 37(5): 38-40.

(见习编辑:安 然)

更正声明:

2020年第11期《计算机专业软件定义网络实验课程建设探索》一文,第一作者林为伟,“助理实验师”应为“实验师”,特此更正!

《计算机教育》杂志社

2021年2月

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务