面向Python应用的大学教学改革初探_第1页
面向Python应用的大学教学改革初探_第2页
面向Python应用的大学教学改革初探_第3页
面向Python应用的大学教学改革初探_第4页
面向Python应用的大学教学改革初探_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向Python应用的大学教学改革初探面向Python应用的大学教学改革初探

0引言

随着时代的开展,构建在互联网生态模式之上的云计算、大数据、人工智能等新技术,正渗透到每一个行业,引发产业生产、效劳模式的变革,并且已经取得一系列重要成果。在此背景下,大学教学如何跟上时代步伐,是值得每一个高校教师深入思考的问题。程序设计作为计算机专业大学生的必修课程和必须掌握的根本技能,其教学改革在新时代下尤显必要。

传统的大学教学中,一直都以C/C++或Java作为教学语言。诚然,C/C++和Java是当今使用人数最多的语言,但在“互联网+〞时代,面对大数据分析时,特别是面对数据采集、仿真建模、结果验证与数据可视化时,他们就不再是最正确选择。

Python作为一种解释型超高级语言,具备交互式、可移植、面向对象的特点。它功能强大,适用于多种操作系统,有完善丰盛的工具包,正在得到越来越多的应用,而且越来越被重视。2022年4月,北京理工大学计算机学院和高等教育出版社联合承办了“第一届高等学校Python语言及计算生态教学研讨会〞,提出了计算生态的概念[1],大力推动了Python教学。在此背景下,根据我们在Python教学和科研中的应用经验,对如何进行基于Python计算生态的教学改革进行探讨。

1Python语言的兴起与优势

从20世纪中期到今天,短短的70年间,电子计算机经历了飞速的开展,出现了许多不同的程序设计语言,示例Pascal、Fortran、C、C++、Java、PHP、C#等,这些不同的语言,都体现了不同的设计哲学,也反映了不同的时代特点。

然而,每种程序设计语言都有其局限性。Python的设计者GuidovonRossum希望有一种语言,既具有C方便地调用计算机功能接口的能力,又可以像一些脚本语言一样轻松地编程。Python正是在这种背景下被发明出来。

同C/C++和Java等语言相比,Python有下列优势:

〔1〕简单易学。Python是一种代表简单主义思想的语言,语法简单,学习起来容易上手。这使学生能够专注于解决问题而不是学习语言本身。

〔2〕解释性。Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序。这使得Python更加简单,更易于移植。

〔3〕面向对象。Python既支持面向过程的编程,也支持面向对象的编程。

〔4〕可扩展性。为了提升运行效率,可以采用C/C++来编写关键代码,然后在Python程序中使用它们。

〔5〕混合编程。Python被称为胶水语言,是由于可以很容易地将Python与其他语言进行混合编程。这样方便地利用已有的各种工具包,提高开发效率。

〔6〕丰盛的库。Python有强大的规范库,并且Python的生态系统开始拓展到第三方包,示例用于Web框架的web.py,用于科学计算的numpy,以及用于数据可视化的matplotlib等。

Python作为一种跨平台编程语言,已经被移植在以Linux、Windows、Mac、Android为代表的许多平台上。由于Python的开放性,有丰盛的来自开源社区的成熟库支持,从而可以基于Python完成各种工作,示例数据采集〔如网络爬虫〕、图像处理、机器学习、科学计算等。

2针对Python的应用支持与国内外课程建设情况

正由于Python具有上述优点,它获得了业界的广泛支持。示例在Google公司,Python是继C++和Java之后,使用率排名第三的编程语言,使用Python的开发团队也是Google的第三大研发部门。

〔1〕Tensorflow:TensorFlow是由GoogleBrain小组开发的用于机器学习和深度神经网络的工具。据统计,Tensorflow是目前使用人数最多的开源深度学习框架[2]。TensorFlow本身是使用C++实现的,然后用Python封装。Tensorflow可以根据用户给出的所有指令创立一个计算图,该图被内部优化和编译成可执行的C++代码。这样Tensorflow就可以利用Python带来的开发速度和C++带来的执行速度。

〔2〕GoogleAppEngine:GoogleAppEngine〔GAE〕,是谷歌推出的云平台,它完全把CPU、内存等硬件根底设施抽象化,这样只需要关注代码的编写,不需要关注硬件、操作系统或者物理位置。Python是GAE最早支持编程的语言之一,任何使用Python编写的程序,都可以配合GooglePythonAPI,很方便地在GAE上创立、部署、运行Python程序。

〔3〕Caffe〔ConvolutionalArchitectureforFastFeatureEmbedding〕:Caffe是由BerkeleyAIResearch〔BAIR〕和BerkeleyVisionandLearningCenter〔BVLC〕社《^奉献者开发的另一个深度学习框架。同Tensorflow一样,Caffe也是采用C++进行编写,然后提供Python封装,从而既可以利用C++的高执行效率,也可享受Python的高开发效率。

〔4〕在好莱坞,工业光魔公司〔IndustrialLight〕采用Python制作商业动画,在“阿贝斯〔Abyss〕〞“星球之旅〔StarTrek〕〞“IndianaJones〞等超级大片中惊艳登场。〔5〕ERP和CRM软件的开发也开始基于Python完成;RedHat曾用Python和Tk一起成功开发配置和管理操作系统的可视界面,整个系统可以全面控制Linux操作系统,并根据用户选择对配置文件作自动更新。

正由于Python是受到业界的欢迎,国外很多高校〔如麻省理工学院、斯坦福大学、加州大学洛杉矶分校等〕已经用Python作为程序设计语言的教学对象。在Coursera等在线教育平台上,可以发现有来自密歇根大学、莱斯大学、约翰霍普金斯大学等众多高校的Python课程;国内南京大学张莉老师的课程也在其中。然而国内这方面的工作做得还远远不够。截至2022年,我国开设Python语言教学的高校不超过10所[3]。目前在国内大力推动Python教学改革的主要有北京理工大学嵩天老师等人,已编着并出版相应的大学教材[4],受到广泛欢迎。哈尔滨工业大学车万翔老师等人分析了C语言作为入门语言的缺乏和Python作为入门语言的优势,阐述了计算机专业高级语言程序设计课程的改革计划和实施效果[5]。南京大学张莉老师发表了?基于MOOC的“用Python玩转数据〞翻转课堂实践与研究》,研究证明:采用Python教学可以较好地提高学生的主动学习能力、学习兴趣和热情以及问题求解能力[6]。

3基于Python的教学科研应用改革案例

3.1输入输出

输入输出〔I/O〕是每个程序都必须具备的重要功能。常见的I/O可以分为3类:规范I/O〔终端打印等〕、文件I/O和网络I/O。以《K端I/O为例:

#include

intmain〔〕

{

charname[20];

scanf〔"%s",name〕;

printf〔"Hello%s\n",name〕;

return0;

}

以上用C语言编写的有效代码共计8行,输入输出都采用规范库函数。由于C语言本身设计方面的缺陷〔如果第一行输入超出char数组大小〕,可能导致严重的缓冲区溢出问题。针对这一问题,C++对数组越界进行了爱护,从而提高系统平安性。

如果采用Java实现,那么有效代码共10行。由于Java的面向对象编程思想,下面这个例如程序中多了很多对象构造的流程,引用的库看起来也相对较多,如下所示。我们只需要对这段代码进行稍微修改,就可以实现网络I/O和文件I/O。示例,替换“System.in〞,就能够实现对文件或者网络流读取。将“Reader〞和“InputStream〞替换,就能够实现写入。

/*BasicI/OinJava*/

importjava.io.BufferedReader;

importjava.io.IOException;

importjava.io.InputStreamReader;

publicclassHelloWorld{

publicstaticvoidmain〔String[]args〕throwsException{

BufferedReaderreader=newBufferedReader〔newInputStreamReader〔System.in〕〕;

Stringname=reader.readLine〔〕;

System.out.printf〔"Hello%s\n",name〕;

}

}

相比之下,基于Python的代码那么非常短小简洁:

importsys

name=sys.stdin.readline〔〕

print〔"Hello"+name〕

有效代码仅仅只有3行!同样,替换其中的“sys.stdin〞可以实现对文件读取。对于动态类型的Python来说,所有的变量都不需要繁复的声明,直接用就可以,再加上解释执行的特点,无需定义入口函数即可运行。

以上是对C/C++、Java、Python在根本终端I/O操作上的比拟,当推广到文件I/O和网络I/O后,Python的优势会更突出,详见表1。

3.2数据操作

数据处理是大数据时代我们面临的首要问题。然而,由于信息化系统建设过程中,数据可能以不同的结构存在,可能是纯文本文件、CSV格式,也可能是Excel格式,或者是各种不同厂商的数据库格式。

当然,可以采用C++或Java来读取各种异构数据源,但过程相当繁琐,需要利用各种底层驱动,甚至是一些商业化组件。以Excel文件读取为例,为了处理Excel数据,C/C++代码需要用到libxl商业库,而Java也需要用到ApachePOI开源库。而利用Python对Excel文件进行读取那么需要利用Pandas开源数据处理分析库,例如代码如下:

importpandas

df=pandas.read_excel〔'sample.xls'〕printdf.columns

values=df['列名'].values

FORMAT=['列名1','列名2','列名3']

df_selected=df[FORMAT]

总的来说,在数据库操作方面,C++、Java和Python的支持都非常好。C++和Java都为SQL提供了规范的连接、驱动管理类,不同的数据库只需要加载不同的驱动就可以。Java对数据库有比拟好的语言级别支持,相应的驱动也比拟丰盛。Python也提供语言级别的支持,同时第三方库十分丰盛,甚至一种数据库有多个不同的连接库。另外值得一提的是,尽管当前很多流行的分布式大数据平台及分布式数据库使用Java编写,但利用Python同样能够方便地基于第三方库实现操作Hbase、Hive以及其他非关系数据库,如Mongodb、Redis等,这种特点是C/C++不能比较的。表2为Python与C++、Java在数据库操作上的比拟。

由于Python对各种文件和数据库的支持都非常好,它十分适合编写数据库之间,数据库与文件之间相互导入导出数据的脚本,是大数据处理的首选语言。

3.3数据可视化

丰盛的可视化数据图形能够更好地对数据进行展示。利用数据可视化,可方便分析人员从宏观上了解数据的形态和分布,或者进行最后的结果展示。

Python提供了丰盛的数据可视化工具,如pandas、Seaborn、Bokeh、matplotlib等。下面以matplotlib为例表明如何利用Python完成数据绘图与可视化。

假定我们要展现的数据用CSV格式保留,内容见表3。目标是基于matplotlib进行直观的数据总体分布展示,示例利用直方图统计年龄分布、利用箱体图展示薪资水平、利用散点图绘制年龄与收入的相关关系。完整代码如下:

importmatplotlib.pyplotasplt

importpandasaspd

df=pd.read_csv〔"example.csv"〕

fig=plt.figure〔〕

ax1=fig.add_subplot〔1,4,1〕

ax1.hist〔df["Age"],bins=5〕

plt.axis〔[20,45,0,5]〕

plt.title〔"Agedistribution"〕

plt.xlabel〔"Age"〕

plt.ylabel〔"Employee"〕

plt.show〔〕

ax2=fig.add_subplot〔1,4,2〕

ax2.boxplot〔df["Age"]〕

ax3=fig.add_subplot〔1,4,3〕

ax3.bar〔df["Age"],df["Income"]〕

ax3.set_title〔"Incomedistribution"〕

ax3.set_xlabel〔"Age"〕

ax3.set_ylabel〔"Income"〕

ax4=fig.add_subplot〔1,4,4〕

ax4.scatter〔df["Age"],df["Income"]〕

ax4.set_title〔"Incomedistribution"〕

ax4.set_xlabel〔"Age"〕

ax4.set_ylabel〔"Income"〕

plt.show〔〕

得到的可视化效果如图1所示。

Python的开放性还表现为利用支持库,实现如图1所示的各类统计效果和复杂的展示〔如地图、热力图以及复杂网络等〕。此外,除了构建在Python之上的原生库,还有大量其他的数据可视化工具包〔如基于Javascript的Plot.ly、百度的Echart等〕,这些工具包同时也提供Python的调用封装,丰盛了基于Python的可视化效果,体现了强大的Python计算生态。

3.4图像处理与深度神经网络

深度学习的出现点燃了研究者对神经网络和机器学习的研究热情,特别是基于GoogleTensorflow的AlphaGo接连击败世界围棋冠军,更加吸引了人们对深度学习的关注。在深度学习领域,很多优秀的开源平台与框架〔如Tensorflow、Caffe、Theano、MXNet等〕都提供Python接口。这也从侧面反映出Python计算生态已经建立。下面以Tensorflow提供的Python接口为例,介绍Python在图像处理与深度神经网络

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论