APP下载

多样化可扩展的Python教学体系探索与实践

2017-09-01张莉金莹张洁

计算机教育 2017年8期
关键词:教学体系多样化

张莉+金莹+张洁

摘 要:以“用Python玩转数据”若干次公选课的学生为基础,提出多样化可扩展的Python教学体系,即基于学生特征将学生分成人文社科类、理工类和商学类3种模式,具体阐述如何通过内容和方式两个不同维度对3类学生的3种模式进行Python多样化教学,最后建议将这3种模式便捷地扩展到单独的人文社科类院系、理工类院系和需要进行专业定制的院系。

关键词: Python;多样化;可扩展;教学体系;问题求解

0 引 言

当今时代计算机、网络、移动互联、人工智能等飞速发展,人们的思维方式发生了翻天覆地的变化,各行各业对计算机的需求也越来越多,计算机基础教学面向非专业学生,致力于培养计算机应用人才,将计算的理论、技术、方法、思想应用于各领域中,推动行业发展的同时带动科技的进步和社会的发展,同时也成为创新创业的原动力和主战场,是未来新兴产业诞生的摇篮。程序设计是培养学生理解计算思维并用计算机求解问题的重要方式,而Python[1]因为其简洁、易用和强大特别是拥有十分丰富、功能完备的第三方库,近几年在全球引起极大的关注,在计算机和其他相关领域大放异彩,其易用性甚至在人文领域都有很大的市场,这是以往计算机程序设计语言无法实现的。

除了在Coursera平台和中国大学MOOC在线平台开设的“用Python玩转数据”MOOC课程吸引了大量各个学科的学习者外,2015年秋季南京大学开设了“用Python玩转数据”公选课,同样受到了很大的关注。选课学生分布在全校各个院系,有计算机、电子和软件学院这样的专业院系,也有数学、天文、大气、生科等理工科院系,还有部分中文、历史、哲学等人文社科类院系,而文理兼收的商学院学生占了较多的比例。能否借鉴MOOC平台上众多学习者的经验和公选课上不同类学生的特征设计课程体系,将Python课程由公选课顺利纳入新一轮大类/院系计算机基础课程的教学计划中,是我们一直在思考的问题,目前通过几轮探索和实践形成了多样化可扩展的Python教学体系。

1 多样化可扩展的Python教学体系

基于学生的特点,可将“用Python玩转数据”选修课学生分成3类,分别是人文社科类、理工类(将专业学生归到理工类)和商学类,图1所示是4次课程具体的学生分布。基于不同的学生群体特征,可将3类学生对应分成3种培养模式,如图2所示,从计算机基础教学核心培养目标计算思维和问题求解[2]的角度考虑,对人文社科类学生着重基础问题的求解,对理工类学生着重高级问题的求解,对商学类学生进行专业定制的培养,主要在内容和方式这两个维度实施不同方案,形成多样化可扩展的Python教学体系,如图3所示,将人文社科类模式和理工类模式直接扩展到人文社科类和理工类院系,将商学类模式扩展到各类需要进行专业定制的院系。

2 不同维度的教学体系实施

2.1 不同的内容维度

2.1.1 课程内容

“用Python玩转数据”课程主要内容是用Python处理、分析和展示数据,从Python基本语法开始,到在Python中如何从本地和网络上获取数据,再到表示数据、对数据进行处理和分析及可视化,最后设计GUI界面用来表示和处理数据及用Python进行实践开发,共分为6个模块8个章节,如图4所示,其中教学体系的3种不同模式在内容上的区别主要体现在数据获取与表示、Python高级数据处理与可视化、面向对象和图形用户界面、项目实践这4个部分。

2.1.2 不同内容维度实施方案

我们以网络数据獲取、数据处理与可视化、项目开发这3个部分为例说明人文社科类、理工类和商学类这3种模式在内容上的不同,基本设计原则是尽可能贴近不同类学生的特征和各自用Python进行应用开发的特点,并能培养他们的创新思维和发挥其潜能,以更快更好地在各自领域中求解问题。

1)网络数据获取。

网络数据获取主要通过3种方式:一是利用Requests库抓取网页,再利用BeautifulSoup库和re(正则表达式)模块进行网页内容解析获取数据;二是利用Web API或基于Web API的第三方模块直接获取数据;三是利用现成的语料库或从网页上直接下载数据,同时学生还需要了解http协议的一些知识。表1为3类学生在网络数据获取上需要掌握的知识、工具、模块等内容的大致比较。

人文社科类学生只要掌握基本的网络知识,数据主要利用第三方API和现成的语料;商学类学生需要掌握数据抓取和解析的基本内容;而理工类学生则需要掌握更多的内容甚至是中大型爬虫框架Scrapy的基本知识。

2)数据处理与可视化。

“用Python玩转数据”课程数据处理和可视化主要使用著名的Python开源生态系统SciPy,重点介绍SciPy中包含的NumPy、Matplotlib和pandas这3个核心模块,数据处理主要使用NumPy和pandas模块,可视化主要使用Matplotlib和pandas模块,3类学生3种模式在这部分也有不同内容的要求,主要体现在表2。

人文类学生主要掌握几个模块的基础部分并能完成基本的统计工作和绘制基础的二维图;商学类学生则还需要更多了解模块与专业相关的函数,绘制适合专业数据的二维图如蜡烛图等;理工类学生则需要掌握各模块在理工领域的应用,如NumPy库中线性代数库、矩阵库和通用函数的性能测试,还需要掌握更高级的数据处理和分析方法如机器学习工具包scikit-learn中的分类和聚类的常见应用。

3)项目开发。

由于3类学生在各自基础、专业方向等方面存在较大的差异,因此在项目开发上可以采用弹性要求,不在数据获取和使用算法难度上额外增加要求,重点考查学生是否能够揭示所用数据隐藏的特征以及较好地处理、分析挖掘这些数据,也鼓励3类学生混合编组进行功能项目的开发。根据以往完成项目的统计,3类学生体现出较明显的项目特点。

(1)人文社科类学生,较多地使用自然语言处理NLTK工具包中现成的语料库如古腾堡项目中各类小说、美国总统就职演说稿等进行分析。

(2)理工类学生,较多地在网络上抓取数据并进行各类统计分析,项目涉及领域很多,如谷歌学术文献爬取器、地区空气污染数据分析、百度贴吧表情分析、房价数据挖掘、就职网站职业需求统计、微博舆情控制等。

(3)商学类学生,主要集中在股票数据分析特别是对A股数据的各类分析统计如投资组合推荐、股票涨跌分析等方面。

图5、图6和图7所示是3类学生开发的项目示例,有的是同类学生成组开发的,也有的混合成组开发但核心成员都明显属于某一类,项目特点鲜明。

2.2 不同的方式维度

面对基础不同的学生,要进行多样化教学难度较大,如何将不同的学习任务布置给不同的学生并能及时检验其学习效果和进行调整是应该着重研究的主题。经过几轮探索,目前已初步形成一个较为成熟的多种教学方式组合的方案,除了利用课堂和部分课外时间进行多样化特征突出的重要项目开发外,主要借助以下3个平台帮助和平衡3类学生不同内容的学习、训练和检验。

1)MOOC[3]平台。

MOOC平台上“用Python玩转数据”课程学习者遍布各个年龄层和领域,其课程学习过程和结果的统计分析数据以及各类问题的提出可以给课程迭代提供很好的依据,拓宽Python基础教学的广度,提升内涵,给本校学生的Python学习提供很好的基础支撑。学生可以在Coursera和中国大学MOOC在线平台上使用本课程的视频、作业和测试题,主要的使用分为两种情况。

(1)人文社科类学生的知识补充。大部分人文社科类学生没有学过程序设计课程,没有什么编程经验,对于基础的知识如条件结构、循环结构、函数等没有太多的概念,但是教师在课堂上无法细讲,因此对于这类学生有额外的要求,即在规定时间内完成规定的内容学习、测试等。

(2)商学类和理工类学生的知识提升。大部分商学类和理工类学生对于学习有更高的要求且基础好、自学能力强,如用Python进行GUI开发部分由于课堂时间有限、学生差异太大等问题不在课堂上重点讲解和讨论,建议此类学生在MOOC平台上自学并明确完成图8所示的结合数据获取、表示和处理的GUI任务开发。

2)“课立方”辅助教学平台。

过程性评价在教学中十分有必要,除了可以及时了解学生的课程内容掌握情况,还可以提前了解学生对于某些内容的掌握和熟悉程度。“用Python玩转数据”课程使用“课立方”辅助教学平台,如图9所示,可以设置课前小测对学生已学或待学知识进行考查和调查,并且系统有即时的数据分析能够让教师及时了解学生的反馈,如提前调查学生对于某个知识点的认知状态有利于把握某些问题的深度,可以更好地照顾到基础薄弱的学生如大多数人文社科类学生,为多样化教学提供依据。

3)Python OJ平台。

图10所示的OJ平台是日常学生进行编程训练的一种很好的方式,OJ平台问题难度设置从低到高,3类学生均能进行共同和专属内容的训练,也是检验和辅助多样化内容设置的一种手段;同时由于OJ平台的成绩是实时获知的且还可以进行各类竞赛,因此能够很大地提高学生的学习兴趣,让学生也可以及时了解自己的情况,从而主动进行基础训练或提升训练。

通过课堂学习、项目开发及其与这3类平台的结合,可以照顾到不同学生的多样化教学,辅助完成不同的学习任务及检测不同学习任务的合理性。

3 结 语

目前通过几轮探索和实践已初步形成了多样化可扩展的Python教学体系。通过内容和方式两个不同维度对3类学生3种模式进行Python多样化教学,从过程性评价、学生开发的项目等来看效果较好,由于体系中任务明确、可操作性好,因此可以较容易地将课程共同核心模块和模式适用的模块切割出来,并扩展到单独的人文社科类、理工类,也可以满足院系定制的需求,只要在共同的课程核心模块上加上专业需要的若干第三方库和案例即可。由于Python的开放性,这些库一般都有自己的官方网站,有很多公开的案例和代码,对教师的专业要求不高。在新一輪教学计划中,已有商学院、生科院和医学院确定开设Python定制课程,有一些理工类院系也已经开设Python课程,相信未来Python在计算机基础教学领域还将有更大的空间。

德国教育家斯多惠说过:“教学的艺术不在于传授本领,而在于激励、唤醒、鼓舞。”Python是一种适合激励、唤醒和鼓舞各类学习者学习、应用计算机热情的程序设计语言,愿更多的人能加入到Python教学和学习的行列中,这不仅很有意思,也很有意义。

参考文献:

[1] Python[EB/OL]. [2017-05-30]. https://www.python.org/about/gettingstarted/.

[2] Wing J M. Computational thinking[J]. Communications of the ACM, 2006, 49(3): 33-35.

[3] Masters K. A brief guide to understanding MOOCs[J]. The Internet Journal of Medical Education, 2011(2): 1.

(编辑:宋文婷)

猜你喜欢

教学体系多样化
物理复习课堂中复习内容的设计*
美国化学课堂多样化学习评价方式带来的新思路
基于CDIO模式的机械电子工程专业教学体系改革
虚实结合和科教融合的计算机实验教学体系
数字媒体技术课程体系及实践教学环节设计
地方高校城乡规划专业实践教学的特色化探索
数学问题解答方法多样化探讨