APP下载

医科院校Python程序设计课程教学研究

2017-09-01张乐平李东方

计算机教育 2017年8期
关键词:数据素养程序设计

张乐平+李东方

摘 要:培养具有数据素养的生命科学复合型人才是生物医学大数据时代的要求。文章在对C、Java、VB等传统程序设计语言教学的反思基础上,通过总结以Python为教学语言的医科学生程序设计课程教学改革,提出基于计算思维关注点分离原则的Python數据分析程序设计教学策略,旨在让数据素养成为医科学生大数据时代的一种基础能力。

关键词: Python;程序设计;关注点分离;数据素养

0 引 言

作为21世纪最活跃的科学研究领域之一,生命科学迎来了大数据时代。无论是基础研究还是临床研究,近年来随着高通量实验设备的广泛应用和医院诊疗手段的推陈出新,生物医学数据呈现几何级数的增长。海量的生物医学数据蕴含的生物学规律将极大地促进人类对于生命、疾病的深刻理解[1]。借助于大数据的分析挖掘技术,从基础研究、药物开发、临床诊疗到健康管理,生物医学大数据正在引发生命科学研究和医学诊疗模式的巨大变革。

数据素养是一种通过数据分析、数据挖掘发现数据价值的重要技能素养,数据素养培养现已成为大数据时代的教育研究热点[2],但是医科学生接受人工智能、机器学习等数据挖掘技术的学习训练机会很少,造成生物医学学科人才的数据挖掘技能相对比较弱,无法满足生物大数据发展对数据素养的要求。对医科院校计算机程序设计教学来说,如何将数据素养培养嵌入课程中开展信息科学和生命科学的交叉学科教育既是挑战又是机遇。

1 大数据时代背景下医科学生程序设计课程教学的反思

1.1 医科院校程序设计课程的现状和重定位

目前,非计算机专业程序设计课程主要参照理工科院校程序设计语言教学——从20年前的C语言、后来的Java以及最近的视窗语言Visual Basic和C#。近年来,围绕医科学生的计算思维能力的培养,我校成功开展了程序设计课程的翻转课堂教学改革[3]。然而,由于生物医学专业背景,医科学生学习这些语言后,在算法设计和数据挖掘方面难以深入,尤其生命科学进入大数据时代后,更难直接在大数据中应用,因此,现有的程序设计课程教学与医科学生未来的大数据分析能力之间存在巨大鸿沟(如图1中的GAP)。

这种尴尬处境源于掌握程序语言并不是研发计算算法的充分必要条件。C、Java、VB等高级语言仅从各自角度抽象了程序设计:早期的C语言将程序抽象为数据结构和算法,这种面向过程的程序设计通过对指针、内存、字符等操作实现代码的高效运行;Java语言将问题抽象为主客体对象关系,通过面向对象技术实现代码的高效复用;而视窗语言Visual Basic和C#抽象了对象的交互逻辑和响应关系,其可视化的编程模式适合非计算机专业学生掌握。通过这些语言可以实现复杂的数据挖掘算法,但是数据挖掘算法所基于的数理推演不是程序语言所能解决的,而数据挖掘算法中数理推演已远远超越了医科学生的专业要求。

对于医科学生来说,利用C语言、Java语言以及视窗语言Visual Basic和C#从头实现数据挖掘算法是不可取的,而应掌握在问题求解过程中如何调用第三方开发的算法程序,并应超越对程序执行性能、代码高复用性或特定系统中视窗设计的关注。大数据时代背景下医科学生程序设计课程的定位应该是通过某一编程语言的教学,学生除了掌握通用程序开发技术外,还能在程序开发过程中熟练调用通用的数据分析挖掘程序模块,培养医科学生未来大数据分析所需的数据素养能力。

1.2 Python是医科学生程序设计课程的理想教学语言

据报道,云计算与大数据产业对专业岗位技术要求呈现“金字塔形”分布,而处于人才需求“金字塔”底部的是大量的操作应用技能型人才(>70%)[4]。医科院校的学生应属于大数据分析的应用人员,因此,程序设计课程除了培养医科学生的通用程序设计技能外,更应侧重讲授数据分析挖掘的基本思想以及如何应用。绝大部分医科学生可能大学期间只修一门程序设计课程,因而编程语言的选择是关键。

Python语言是目前最接近自然语言的通用编程语言[5],其“胶水语言”特性带来了全新的程序设计体验。和Java、C#等通用高级编程语言一样,教学内容主要是顺序、分支、循环等基本的流程控制以及面向对象程序设计,但是Python可以轻松将C、Java等开发的程序模块结合起来协同工作。Python语言抽象了问题及解决方案,相比其他程序语言可以在更高的层面更直观地分析问题和描述方案,便于非计算机专业学生开发复杂的信息处理系统。Python可以完成Java的所有功能,例如窗口程序、网站开发和黑客攻防等,而且在人工智能、数据挖掘以及数据可视化等方面Python有不断优化的库,使其成为能替代MATLAB和R等进行数据处理的方式。因此,使用Python语言可以简洁、优雅地构建以数据分析为中心的应用程序原型。

Python语言将是培养医科学生数据素养的理想教学语言。Python可用来实现整个数据分析流程的框架,然后通过框架接口无缝集成其他语言编写的各种计算模块和数据可视化模块。例如,在Python程序中调用Matplotlib库中的plot语句可以直接绘制出如图2所示的极坐标图形,而C语言、Java等语言实现同样功能则需要几十条语句。Python语言的这种轻量级的语法和高层次的语言表示使得学生把精力集中在对问题的分析和思考上,符合应用计算机解决问题的计算思维理念。以Python语言教学为载体,将有助于推动医科学生数据素养向深度和广度发展。鉴于Python相比其他语言在培养医科学生数据素养方面具有更高的教学价值,我校进行了以Python语言为程序设计教学语言的课程教改。

2 Python程序设计课程教学改革

2.1 教改目标:让数据素养成为医科学生大数据时代的一种基础能力

随着生物医学大数据时代的到来,数据素养必将是医科学生信息素养的延伸与补充。国内外学者从不同的角度对数据素养概念进行了表述,而目前一般认为数据素养教育包含3个模块的内容:培养数据意识、培育数据能力、树立数据伦理[6]。数据素养教育涉及的学科面非常广,其中的数据能力主要是指数据分析技能。生物大数据分析必然借助于计算机程序设计,因此,程序设计能力是医科学生数据素养培养的重要内容。

将数据素养融合到Python程序设计课程中,重点提高医科学生在程序设计过程中对数据挖掘算法的应用能力,同时学生在教师的熏陶下培养数据意识和树立数据伦理。较之信息素养是信息社会普通大众应具备的能力素养,数据素养则趋向于大数据时代科研人员的专业技能素养。医科学生是未来的生命科学研究的主力军,让数据素养成为医科学生的一种基础能力是顺应大数据时代要求的。

2.2 教学策略:基于计算思维关注点分离原则的 Python数据分析程序设计

在之前计算思维教改中,我校提出了在“让思维具有计算特征”的教学中培养医科学生的计算思维能力,引导学生按照计算思维的关注点分离原则思考如何解决复杂问题[7]。一个具体的数据分析流程可以分为数据清洗、数据集成、数据预处理、数据挖掘和知识呈现等基本模块(如图3所示),而模块化是关注点分离的最有代表性的具体设计原则之一,因此在数据分析项目的模块化过程中,计算思维关注点分离原则的应用将是自然而然的。

Python语言拥有大量优秀的第三方数据挖掘算法程序包,可以被数据分析程序的各模块无缝调用。在Python语言数据处理过程中,首先将获取的数据转换成适合Python分析的数据结构,然后用Python提供的工具模块进行数据分析和处理,最后提取数据特征并用合适的图形图表呈现出来。在数据预处理、分析和特征提取等模块的教学过程中,教师讲授如何调用Python数据分析模块以实现相应的功能,而学生体验在将数据分析模块整合成分析流程过程中数据处理的艺术性。

采用关注点分离进行Python数据分析程序设计时,学生可以超越对抽象的数据挖掘理论与繁冗的算法实现的关注,从而集中注意力在更高层面上分析问题和处理问题,并在解释结果时感受将学科专业知识融入其中的快乐,在潜移默化中数据素养也得到了提升。

2.3 教学内容:兼顾通用编程技术和数据分析技术

为了循序渐进培育医科学生的数据处理能力,Python教学内容分成基础和高级两大模块。基础模块围绕通用编程技术设置教学内容,包括基本语法(数据类型、表达式和系统函数等)、基本流程控制(顺序、选择、循环)、函数的定义和调用以及面向对象程序设计。高级模块按照图3所示的数据分析流程的基本模块设置教学内容,重点讲授Python科学计算的基础包NumPy、多维结构化数据集分析包pandas和绘制数据图表的数据可视化库Matplotlib等。我校程序设计课程共60学时,基础模块和高级模块的教学各30学时,并要求在高级模块学习阶段继续深化程序设计基本技能,例如数据的预处理中会介绍文件处理和序列化,在应用数据挖掘算法进行分析时会讲授程序异常处理。

2.4 教学实施:所见即所得的翻转课堂教学

在Python程序设计课程教学中,继续推行教改实践检验过的翻转课堂教学模式。课下,为基础模块和高级模块分别推荐了中国大学MOOC课程[8],如北京理工大学的“Python语言程序设计”和南京大学的“用Python玩转数据”,学生根据编程任务有针对性学习MOOC课程中的相关教学内容。课堂上,师生互动,答疑解惑:基础模块阶段探究如何用Python语言描述通用算法,分享各种程序设计技巧,学生在协作交流中提升程序设计能力;高级模块阶段教师讲授实现的思维而非实现的细节,也就是说,教师主要讲授Python数据分析库中所涉及的机器学习算法的基本思想、机器学习程序模块的调用以及结合问题对计算结果的解释。

机器学习算法讲授是翻转课堂教学的难点,为此采用所见即所得的动态交互模式。传统的板书和PPT课件只能静态展示机器学习的概念和原理,难以调动医科学生对算法中深奥的数理知识的学习兴趣和思考积极性。动态交互模式是Python语言的重要特点,翻转课堂采用实时动态代码操作,其所见即所得的演示效果使抽象的机器学习算法思想简单明了。面对众多的机器学习算法,合适的算法的选择最终归结为模型选择和超参数调节。Python语言的交互模式适合反复试验不同参数下的每一个算法模型,便于学生通过直接比较结果的方式快速把握某种机器学习算法的优势和局限性。

3 结 语

我校以必修课的形式面向生物技术专业进行了“Python程序设计”教改试点。通过课程学习,90%以上学生能够掌握Python语言构建数据分析应用程序的一般方法,而同学们的反映是“Python的数据挖掘功能强大且易用”“围绕生物数据分析的程序设计拉近了程序设计与生物医学的距离”,但是,由于生命系统自身的复杂性,生物医学大数据分析需要在生物学假说驱动下选择并应用各种数据挖掘技术,程序设计课程教师因而倍感压力和挑战,因此提升程序设计课程教师的生物医学素养是当务之急。

基于Python的医科学生数据素养的教学改革在医科院校尚处于探索阶段,我们的教学实践表明,Python语言程序设计课程是培养医科学生数据素养的较理想的课程载体,可以为医科学生后续的“生物信息学”大数据分析打下良好的基础。用Python语言替代传统语言是程序设计课程发展中的一个重要契机,这种教学内容的变化将在十年甚至更长的时间尺度上对医科学生计算思维和数据素养的培养产生重要影响。

参考文献:

[1] 宁康, 陈挺. 生物医学大数据的现状与展望[J]. 科学通报, 2015, 60(5/6): 534-546.

[2] 高淑莲. 大数据背景下国外数据素养教育及启示[J]. 图书馆研究, 2015, 45(6): 108-111.

[3] 张乐平, 张劲柏, 张伟信, 等. 借鉴翻转课堂的医科院校程序设计课程教改[J]. 計算机教育, 2015(4): 19-22.

[4] 谢志明,王鹏, 李俊杰, 等. 基于CDIO的云计算与大数据课程体系建设[J]. 计算机教育, 2017(1): 47-52.

[5] 嵩天, 黄天羽, 礼欣. Python语言: 程序设计课程教学改革的理想选择[J]. 中国大学教学, 2016(2): 42-47.

[6] 黄如花, 李白杨. 数据素养教育: 大数据时代信息素养教育的拓展[J]. 图书情报知识, 2016(1): 21-29.

[7] 张乐平, 冯红玲, 宋茂海, 等. 生物信息学教学与医科学生计算思维培养[J]. 计算机教育, 2012(19): 12-16.

[8] 中国大学精品开放MOOC课程[EB/OL]. [2017-03-20]. http://www.icourses.cn.

(见习编辑:景贵英)

猜你喜欢

数据素养程序设计
基于OBE的Java程序设计个性化教学研究
项目化教学在Python程序设计课程中的应用
C++程序设计课程教学改革研究
医学专业“Python程序设计”课程教学改革总结与思考
大数据环境下高校图书馆的数据素养教育
大数据环境下高校图书馆的数据素养教育
基于文献计量的数据素养及其教育领域研究态势分析
大数据时代高校图书馆数据素养教育研究