郑世秀 刘晓洁
摘要:大学通识教育中程序设计课程的设置要适应计算机技术的发展的不同阶段。随着计算机技术发展,青岛大学目前的通识教育程序设计课程设置已经不能完全适应新工科背景下的应用需求。本文从培养计算思维的视角,提出Python语言是通识教育中最合适的计算机入门以及进阶编程语言的观点,并提出了将Python语言作为入门级课程的可行的教学方案。
关键词:计算思维;教学改革;程序设计;计算机语言
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2019)03-0265-03
一、程序设计与计算思维
在教育部提出建设新工科[1]的背景之下,培养具有工程实践能力、创新能力的高素质、复合型人才成为本科教育的重要目标。计算思维[2]从思维层面阐述了运用计算机科学的基础概念求解问题、设计系统和理解人类行为的过程。理论思维、实验思维再加上计算思维构成科学思维的三种方式。其中理论思维以数学学科为代表,以推理和演绎为特征;实验思维又称实证思维,以物理学科为代表,以观察和总结自然规律我特征;计算思维以计算机学科为代表,以设计和构造为特征。思维决定了一个人解决问题的方式,计算思维与计算机技术的普及和发展密切相关,运用计算思维进行问题求解是每个专业的大学生都应当具备的基本技能。
程序设计课程是训练计算思维能力的最直接、最有效的工具。非计算机专业学生学习程序设计大多不是为了学习一技之长用来就业或谋生,而是在程序设计的训练过程中,学会将问题抽象、模块化、分层次等方法,形成逻辑、理性思考问题的习惯,从而提高自己的信息素养和计算思维的能力。在把问题抽象过程中学会问题与数据的定义,并学会将复杂的问题转化分解为若干简单的子问题的分解方法。程序设计教学将计算思维融入教学过程,将极大地提高学生解决实际问题的能力。在2016年,教育部高等学校大学计算机课程教学指导委员会发布了《大学计算机基础课程教学基本要求》[3],按照基本要求国内各高校可结合本校的教学情况开设包括Python语言在内的程序设计课程教学语言,目前国内已有几百所高校开始开设了Python语言。
二、程序设计语言比较
笔者对所在高校青岛大学和多所其他高校进行了程序设计课程教学情况的系统调研。目前各高校为非计算机专业开设的程序设计语言多为以下几种之一:
(一)C/C++
《C语言程序设计》是我国大多数高校普遍为本科生开设的课程,但同时也是期末考试中不及格率较高的一门课程,学生普遍反映即使通过了考试,仍然不知道如何去解决实际问题。而C++以对象、类、封装、继承、多态等为教学内容,适合编写较大规模的程序,对非计算机专业的学生来说,学习难度更大。因此,C语言和C++更适合计算机相关专业以及部分信息类专业学生,非计算机专业在运用所学知识解决解决某些问题方面难度较大。
(二)数据库开发工具Visual Foxpro
《Visual FoxPro程序设计》这门课也有很多高校开设。Visual Foxpro由Microsoft公司从Fox公司的FoxBase数据库软件经过数次改良,并且移植到Windows平台之上,主要用于開发数据管理与运算等方面,是目前快捷、实用的数据库管理系统软件之一。使用VFP可以有效管理数据,但其应用有很大局限性,不能更好的分析数据,无法处理数据管理之外的计算等应用问题。尤其无法满足网络环境下的数据库应用问题。
(三)Visual Basic语言
VB语言用于开发Windows系统中的视窗应用,由早期的Basic语言发展而来。VB开发的程序简单、直观,在办公自动化软件中的VBA与其一脉相承,最适合需要编写视窗应用的群体,但这种语言应用范围比较小,仅限于Windows系统。目前在程序设计语言中几乎仅用于教学,在开发应用领域几乎处于可有可无的状态。
(四)Java语言
Java语言是面向对象的语言,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点,可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序。和C语言一样,由于非计算机专业的学生的目标是面向应用而不是成为专业的程序员,因此并不需要关注代码复用性和可移植性等复杂问题,Java主要适合计算机专业学生进行软件开发。
(五)MATLAB
MATLAB严格来讲是一个工具包软件而不是编程语言,以矩阵运算见长,大量的工具箱简化了数据处理的难度,MATLAB主要专注于工程和科学计算是工程领域的重要计算软件,并不适合作为入门级的编程语言。
(六)Python语言[4]
Python是纯粹的自由软件,源代码和解释器遵循GPL(GNU General Public License)协议。Python语法简洁清晰,强制缩进,可读性好,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起,众多开源的科学计算库都提供了Python语言的调用接口。用户可以在多种操作系统上免费安装Python语言及其绝大多数扩展库。相对于其他编程语言,Python更易学、更严谨,它能让用户编写出更易读、易维护的代码,且Python有着丰富的扩展库,是一门学的懂、用的上的语言。
计算机从1946年诞生到今天,硬件的发展过程经历了电子管、晶体管、集成电路、大规模及超大规模集成电路四个阶段,计算机技术的发展则经历了四个时代[5],每一个时代几乎都有一种称雄于这个时代的硬件、软件环境的编程语言。Python语言则是计算机技术发展到“复杂信息系统时代”的“后起之秀”。在计算机系统结构时代,C语言可以很好地对计算机体系结构进行抽象和自动化。在计算机网络时代,Java可以体现网络对跨平台的支持。在计算机视窗时代,VB体现了基于视窗的语法设计体系,VFP体现了数据管理的有效性。但每一种语言都有它产生、发展的生存期,随着社会需求的变化与互联网+时代的来临,有一些语言会呈现出它的局限性。在复杂的信息系统时代,这些语言已经不能适应当前的应用需求,而Python语言有着良好的计算生态[5],其开源、开放的理念是推动计算机技术发展的动力。几种语言的比较见表1。
三、两个层次的Python语言程序设计教学方案
Python语言的教学内容大致可以归结为两部分:Python语言基础和Python语言生态圈。针对这两部分内容,可以设计两个层次的教学方案。Python语言基础部分突出程序设计方法,需要讲清楚基本语言知识和基本算法,重视从问题描述到问题抽象再到算法程序的思维过程,帮助学生构建问题求解的方法。Python语言生态圈指的是第三方函数库的应用,为各个不同专业提供支持,提供解决本领域问题的工具和方法。
(一)作为第一门程序设计语言
Python的基础知识为重点内容,适合所有非计算机专业。适当根据具体专业特点介绍相关模块库,如语言类专业介绍自然语言处理模块库,工程类专业介绍科学计算模块库。共32学时(理论16学时+实践16学时)。教学内容如表2所示。
(二)作为专业应用课
各专业都需要有一个得力的工具满足计算需求,专业应用课程建立在一层次教学内容基础之上,重在第三方库的应用,学会利用Python解决本学科领域中的计算问题。表3中列出了Python能够为个专业提供支持的第三方库。
1.网络数据获取。网络数据获取主要有三种方式:一是利用Requests库抓取网页,然后再利用BeautifulSoup库进行解析;二是利用Web API或基于Web API的第三方模块直接获取数据;三是根据HTTP协议直接从网页下载数据或利用已有的语料库。
2.文本分析。通过分词jieba库和自然语言处理NLTK库处理中文、英文等文本并进行分析。如词频统计等应用。
3.数据处理和可视化。数据处理和可视化主要使用Python开源生态系统SciPy。利用SciPy中包含三个核心模块:Numpy、Matplotlib、pandas来表示数据、绘制数据展示图、开展深入数据运算。
4.机器学习。利用数据处理pandas库和机器学习算法集scikit-learn库,清洗数据并进行机器学习分类、聚类和回归分析。
5.图形绘制。利用图形绘制的Turtle库和GUI设計中的qt5库,实现基本的GUI和图形创意设计。
青岛大学从2017开始对全校所有专业开设了Python选修课程,学生来自不同专业。采用第一层次教学方案,同时利用中国大学MOOC平台[6]上北京理工大学的“Python语言程序设计”作为源课程,实施了MOOC+SPOC+翻转课堂的混合教学,取得了较好的教学体验,在后续学期会继续开设Python程序设计选修课并增加课程容量,实现两个层次的教学实践,让Python真正成为学得会、用的上的编程语言。
四、结语
通过教学探索与实践效果来看,Python语言可以满足不同专业的教学需求,是一门能够实现“专业定制”的语言,可以很容易实现多样化教学,在共同的课程核心模块上加上与专业需要结合紧密的第三方库和案例就可以形成个性化的教学体系。且由于Python简单易入门,有很多公开的案例和代码可以使用学习,学生对这门语言保持较高的学习兴趣和热情,这是过去的程序设计课程难以达到的效果。相信在未来的计算机教学领域,Python会有更大的发展应用空间。
参考文献:
[1]中国工程教育专业认证标准(2015版)[S].北京:中国工程教育专业认证协会,2015.
[2]Wing J M.Computational thinking[J].Communications of the ACM,2006,49(3):33-35.
[3]教育部高等学校大学计算机课程教学指导委员会.大学计算机基础课程教学基本要求[J].北京:高等教育出版社,2017.
[4]嵩天,黄天羽,礼欣.Python程序设计基础(第2版)[M].北京:高等教育出版社,2017.
[5]嵩天,黄天羽,礼欣.Python语言:程序设计课程教学改革的理想选择[J].中国大学教学,2016,(2).
[6]中国大学MOOC[EB/OL].
http://www.icourses.cn.