APP下载

医学院校程序设计课程教学探索与实践

2018-05-19李秀敏雷国华王希杰

卫生职业教育 2018年9期
关键词:编程语言程序设计医学院校

李秀敏,雷国华,王希杰

(滨州医学院公共卫生与管理学院,山东 烟台 264003)

党的十九大报告的“实施健康中国战略”提出了与时俱进的全民大健康观念。随着人工智能技术的发展及医疗服务需求的不断增长,“人工智能+医疗”将成为解决医疗资源不足问题的重要手段。同时,面对医学大数据的发展,医药专业学生应掌握基本编程技能,把计算机技术应用到医药领域,以适应当前大数据分析需要。因此,如何改进医学院校程序设计课程教学方法,提高医学工作者程序设计能力,是医学院校教师广泛关注的问题[1]。我校对程序设计课程教学进行改革,以培养学生基本程序设计能力为主,以完成任务为目标,将分组讨论、实例教学等方法融入课堂教学,丰富教学内容,提高学生计算机应用能力和数据处理能力。

1 医学生学习程序设计课程的必要性

目前,在临床诊断和治疗中主要应用数字处理技术、生物电信号处理技术、图形图像处理技术等,基于现代信息技术的远程医疗、计算机辅助诊断、仿真医疗等新的医疗模式正在形成[2]。例如Java、Python等面向对象的编程语言被广泛应用于医学领域和生物信息学领域,众多基于Java、Python平台开发的医学以及生物信息相关科研系统被运用于科研与试验。掌握一种语言,有利于医学生今后的发展,使其更好地掌握专业前沿知识和技术[3]。

2 医学专业程序设计课程教学改革

2.1 变革教学目标

大数据时代,医学生在学习程序设计课程时,除了要掌握基本的程序开发方法外,还要熟练应用通用的数据分析模块,培养进行大数据分析所需的技能、素养和思维方式[4]。实践证明,通过实例教学和分组讨论,不仅可以激发学生学习兴趣,还有助于培养复合型人才。

2.2 调整课程结构

程序设计课程和医学教育类课程教学要求学生具有较好的理论知识结构及较强的实践能力。而大多数医学院校学生在学习程序设计课程时存在基础薄弱、对课程认识不足、缺乏兴趣、实践能力较差等问题。为此,我们对C、C++、Java和Python 4种语言进行了比较。

早期的C是面向过程的编程语言,通过对指针、内存、字符等操作实现代码的高效运行。C++、Java和Python是面向对象的编程语言。其中C++和Java是强类型语言,而Python是一种弱类型语言。C++更接近于底层,方便直接操作内存。Java在C++的基础上做了更高级的封装,具有良好的平台间的可移植性。Java的语法比较规则,有很多大型的开发框架,比较适合企业级应用。C++可一次编写到处编译,而Java可一次编译到处运行。Java中的功能C++都能实现,只是在编程方面更复杂。关于常用的集成开发环境,C++常用VS,Java常用MyEclipse,Python则是PyCharm。这4种典型语言特点分析见表1。

表1 典型编程语言特点分析

C++的内容非常复杂,开发效率较低,学生学习难度大;Java的学习曲线较长;Python比较容易入门,语法很简单,融入了很多现代编程语言的特性。

Python的代码比Java简洁,难易度和开发速度远远优于Java,容易入门和使用。例如求两个数的最大公约数,Java、C需要采用较为复杂的算法,而Python只需要应用math模块的gcd()方法调用即可。又如对于有限数的排序,Java、C需要采用冒泡等算法,而Python只需要应用sort()方法即可。在Python中,使用“a,b=b,a”语句方式,可以实现两个变量的值的交换。Python语言简便的语法表示,有利于学生把精力集中在对问题的算法分析上,培养应用计算机处理问题的思维。

当前,Python已经成为流行的编程语言和科学计算的重要平台,主要用于Web数据分析、科学计算、金融分析、信号分析、图像算法、数学计算、统计分析、算法建模等方面,直接的语义和清晰的语法使其成为一种容易获得的第一语言。相比其他语言,Python教学价值更大,我校已在2016级、2017级医学生中开设了Python程序设计选修课程。

2.3 教学方法改革

在医学院校程序设计课程教学中主要采用问题教学法和任务教学法。教学过程中,教师尽量选择与生活密切相关的医学研究问题,同时根据教学进度、学生所关心的问题,针对某一阶段的教学内容,设计一个包含相关知识点的综合性任务,让学生以讨论方式完成。此外,可以利用小程序来活跃课堂气氛。例如课堂随机提问,就可以用Python编写程序,授课过程中运行程序进行提问;采用类似抽大奖的方式进行随机提问,中奖学生回答问题。实践证明,这不仅能活跃课堂气氛,还能调动学生学习积极性和主动性,提高教学效果。

3 医学院校程序设计课程教学探索

3.1 Python语法特点分析

(1)Python是弱类型、动态类型语言,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量[5]。变量名必须以字母或下划线开头,变量名对英文字母的大小写敏感,例如student和Student是不同的变量。Python变量存储的不是值,而是引用。

(2)充分利用关系运算符以及逻辑运算符and和or的惰性求值特点,合理组织条件表达式中多个条件的先后顺序,减少不必要的计算。C语言中容易出错的++和--运算符在Python中不支持,一定程度上降低了编程难度。

(3)Python程序是依靠代码块的缩进来体现代码之间的逻辑关系。Python中必要的空格与空行对提高程序的可读性起着非常大的作用。例如运算符两侧、等号两侧、逗号后面建议增加一个空格,不同功能的代码块之间、不同的函数定义之间建议增加一个空行,以增强可读性。

(4)每个import语句只导入一个模块,最好按标准库、扩展库、自定义库的顺序依次导入。在开发速度和运行速度之间尽量取得最佳平衡。在开发项目时,应优先使用Python内置对象,其次考虑使用Python标准库提供的对象,最后考虑使用第三方扩展库。

3.2 Python典型模块的应用分析

如果能通过生动的实例把Python语言的功能展示给学生,让学生意识到该课程是一门与未来工作及职业生涯密切相关的工具,则学生的学习心态就会调整,从而化被动学习为主动学习,激发学习兴趣。同时,深入分析编写代码所涉及的算法思想,可加深学生对科学问题的理解。

图像的探索和处理在临床中具有重要意义,以Python显示和处理图像为例进行讨论。例如scipy库中的模块ndimage提供了大量用于N维图像处理的方法。高斯滤波程序代码如图1所示,程序运行结果如图2、3所示(示例中安装软件为Python3.6,所有程序在IDLE中进行)。

图1 高斯滤波程序

图2 原始图像

图3 高斯滤波后图像

Python语言中的图像处理库scikit-image支持多种文件格式并兼容2D和3D图像。该工具包提供图像恢复、分割和测量等功能。scikit-image中基本图像是一个标准的NumPy数组,用户可通过磁盘加载图像,用一个或多个图像过滤器处理该图像,并快速显示结果[6]。例如显示脑部CT图像(程序见图4,运行结果见图5),用sobel算子来检测图像边缘(程序见图6,运行结果见图7)。

图4 显示脑部CT图像程序

图6 检测图像边缘程序

图5 显示脑部CT图像

图7 检测图像边缘

医学数字成像和通信(DICOM)是医学图像与相关信息的国际标准,被广泛应用于放射医疗、心血管成像以及放射诊疗诊断设备(X射线、CT、核磁共振、超声等)。所有患者的医疗图像都以DICOM文件格式进行保存,DICOM是部署最为广泛的医疗信息标准之一,可以使用Python语言下支持的DICOM模块来处理DICOM医学图像。Python的Scoria模块可用于处理三维分子数据收集和建模,NLTK自然语言处理工具包将医院的病案大数据格式化、标准化。

针对不同学生学习目标,可分专业培养,因材施教,在激发学生学习兴趣的同时,将专业知识教学与信息技术培养相结合,不断提高学生信息处理能力。例如影像学专业学生学习图像处理工具包,便于处理CT和FMRI的医学影像,更好地为临床服务;公共卫生专业学生学习数据分析与科学计算可视化包,便于以后进行统计分析;临床医学专业学生学习SQLite数据库,为了解医院管理信息系统的运行机理打下基础;护理专业学生学习 Word、Excel、PDF、PPT、GIF 等常见类型的文件操作,便于以后撰写电子病历等。

4 结语

教学实践证明,Python程序设计课程是培养医学生数据分析及处理能力的较好途径。通过对医学院校程序设计课程教学进行改革,对教学内容、教学方法、考核方式等进行创新,激发学生学习兴趣,使学生扎实掌握基础知识,提高知识应用能力,培养优质的医学信息化人才。

参考文献:

[1]徐娟,李永生,李霞,等.关于医学院校程序设计课程教学的探讨[J].科技创新导报,2017,14(29):220,222.

[2]刘方,倪飞舟,左翔.高等医学院校计算机程序设计课程教学探索与实践[J].电脑知识与技术,2009,5(5):1277-1278.

[3]张俊妍.面向医学生的JAVA程序设计课程教学探讨[J].福建电脑,2011,27(2):186,193.

[4]张乐平,李东方.医科院校Python程序设计课程教学研究[J].计算机教育,2017(8):28-31.

[5]董付国.Python程序设计[M].2版.北京:清华大学出版社,2016.

[6]Van D W S,Schonberger J L,Nunez-Iglesias J.scikit-image:image processing in Python[J].Peerj,2014,2(2):453.

猜你喜欢

编程语言程序设计医学院校
基于JavaScript编程语言之 闭包技术在焦点轮播上的应用
基于Visual Studio Code的C语言程序设计实践教学探索
Java编程语言的特点与应用
从细节入手,谈PLC程序设计技巧
关于医学院校医用英语教学的几点思考
浅谈不同编程语言对计算机软件开发的影响
高职高专院校C语言程序设计教学改革探索
面向对象Web开发编程语言的的评估方法
PLC梯形图程序设计技巧及应用
医学院校中小组教学模式的建立和实践