新医科背景下医学生的Python 课程教学设计与实践
2024-04-24高园园王丹丹
高园园,曹 蕾,王丹丹,阳 维
南方医科大学生物医学工程学院,广东 广州 510515
新一轮科技革命和产业变革迅猛发展,在此形势下,2019年4月29日,教育部启动“六卓越、一拔尖”计划2.0,全面推进“四新”建设,为当前的高等教育指明了方向[1]。四新之一的新医科,是指在全球工业革命4.0背景下,打造中国特色的“新医科”教育新体系,实现医学从“生物医学科学为主要支撑的医学教育模式”向以“医文、医工、医理、医X交叉学科支撑的医学教育新模式”转变,更符合健康中国战略建设需求[2]。
如何在新医科教育改革背景下,以高质量教育培育高水平、高素质、高融合医科人才,值得医学院校计算机类课程教师思考。
1 Python课程对医学生的重要意义
Python是一门面向对象的解释型高级程序设计语言。在众多计算机语言中,Python 因为其简单易用、语法简洁、功能强大而广受欢迎。Python免费开源,同时拥有强大的第三方库,将图像处理、数学分析、数据计算、深度学习等功能集于一身,是人工智能时代的主力语言,是培养医学生计算思维能力的首选语言[3]。
新医科背景下,Python课程对医学生的教育具有更加深远的影响和意义。作为一门程序设计语言,Python可以帮助学生更好地理解和应用现代医学中的数据,提高科学研究质量,同时也为学生的职业发展提供了更广泛的机会[4]。
新医科教育强调跨学科合作和创新,要求医学生具备更广泛的技能,包括计算机编程能力。Python课程提供了医学教育中解决复杂问题的工具,教会医学生使用程序设计思想解决医学实际问题,并将程序设计方法和工具融入具体医学应用中,是当今新医科背景下的有力抓手,对医学生的培养具有重要意义。
2 Python课程对医学生的挑战
尽管Python 编程对医学生具有重要意义,但同时也面临诸多挑战[5-6]。在每次开课前,课程组都会设计问卷对上课学生进行摸底调查。问卷中我们会设计诸如:“请问你听说过Python程序设计语言吗?”“请列举一下你知道或者学过的计算机程序设计语言。”“你对学习Python语言的兴趣度有多少?”“你对本门课程的期待”等问题。了解开课学生的学情,掌握他们的前置课程学习情况及计算机编程知识储备等。
从这几年的学生问卷结果统计来看,学生们通常是听说过Python语言,虽然没有其他的计算机程序设计基础,但对学好Python课程还是充满期待的。在医学生中开设Python 课程主要存在如下两个挑战:一是,医学生通常没有计算机编程的背景知识,因此Python课程的设计需要深入浅出,课程要从基础的编程概念开始,避免干涩的知识点讲解,通过结合具体的医学案例鼓励和激发医学生学习编程的兴趣。二是,医学生学习时间长,课程较多,如何将本门课程融入他们的课程体系。课题组考虑将Python编程知识点与医学应用相结合,介绍Python编程语言及其在医学领域的应用。帮助学生掌握Python编程技能,以便他们可以借助Python这个编程工具处理医学生本学科的医学数据、医学问题过程中。在设计课程时要避免单纯Python课程知识点的讲解,要将Python的代码实现与医学知识相融合,启发学生通过实际医学项目应用他们所学的知识,培养学生的问题解决和数据分析能力。为他们在医学研究、生物信息学、医学工程等领域的职业发展提供基础。
3 Python课程设计与实施
“新医科”背景下,医学生开设Python 课程主要目标是培养学生的编程技能和跨学科合作能力[7-9]。从医学生自身编程基础来看,这是一项具有挑战性的工作,但同时意义重大。确保医学生能够通过Python编程掌握与医学实践、研究相关的技能,以达到新医科背景下的人才培养需求[10-12]。课程组分析了医学生对本门课程的需求后,明确了Python课程的目标,从以下几个方面对Python课程重新进行了设计。
对医学生的Python教材我们选用由Allegra Via等编写,卢宏超等翻译的《Python生物信息学数据管理》[8]。该教材从生物数据管理分析实践出发,由浅入深地介绍编程的基础知识,非常适合初学者,书中围绕生物信息处理案例,旨在用编程的方式来解决生物信息问题。学生通过这本教材,不仅能够学习到如何编程,还能够学习如何管理生物信息数据,包括从文件中读取数据,分析和处理它们,最后把处理结果写到文件中或者输出在计算机屏幕上。通过一个个例子反复实践,不断强化学生的IPO,即输入、处理、输出的编程思想,并将这种思想用来解决具体的实际问题。书中涉及的具体案例,更接近于医学生知识领域,既让医学生更容易理解题意,又使其更直观地理解Python在本专业应用的可行性、便利性,极大地提高了学生的学习兴趣。
3.1 以医学信息数据处理案例为中心组织课堂
课题组采用问题驱动的学习和项目导向的教学方法,重新设计Python课程方案。医学研究和临床实践中涉及大量数据,包括患者记录、医学影像、基因数据等[9]。Python编程提供了强大的工具和库,可以用于数据的收集、清洗、分析和可视化。通过教授医学生Python编程,使得他们能更好地处理和理解医疗数据,从中提取有价值的信息。
例如在“胰岛素蛋白质序列”数据处理案例中,我们采用循序渐进,由浅入深的方式进行设计。如在第1节课里,我们只需要统计胰岛素蛋白质序列中含有的单个氨基酸的数量,通过本案例,学生可以掌握字符串变量及其count方法;在第2节课中,我们需要统计胰岛素蛋白质序列中多个氨基酸的数量,要求学生掌握for循环语句结构及语法规则使用等;在第3节课中,通过FASTA 文件或JASON 文件读取相应的胰岛素蛋白质序列并进行统计,显示输出统计结果,此案例将会涉及文本文件的读写,雷达图的绘制及前两个案例知识点的应用等。案例安排循序渐进,激发了学生的学习兴趣,有利于学生掌握知识。
又如在“整合质谱数据,转化到代谢通路”案例中,该案例主要解决的医学问题是给定某特定代谢或调节通路中的蛋白质,判断其在特定癌症细胞中是否表达。通过本案例,希望学生能够理解列表收集数据的方法,同时掌握从文本文件中提取信息的方法。本案例涉及的Python基础知识主要包括列表数据结构及其创建方法,选择结构(if/elif/else语句)的使用。
在课程结束的小组汇报项目里的“医学影像组学特征提取”,要求学生利用Python的第三方库,对给出的MR 影像进行组学特征提取。该项目主要涵盖如何使用Python库(例如Pyradiomics,NumPy,Pandas等)进行数据处理和分析。学生需要学会导入、预处理和分析医学影像数据,以便对临床关注的组学指标进行计算和分析。同时医学生还需要学习如何使用Python 的数据可视化库(例如Matplotlib,Seaborn),通过图表和图形的形式直观地呈现影像组学特征数据和研究结果。
又如在小组项目里面的“基于深度学习网络进行临床决策”项目,学生利用当前的深度学习框架,利用临床诊治前后的影像数据和结果训练网络,帮助医生做出更准确的诊断和治疗建议,为临床决策提供支持。在新医科背景下,机器学习和深度学习在医学研究和临床实践中发挥越来越重要的作用。学生通过小组项目的形式掌握必要的深度学习框架(Pytorch,TensorFlow等)和深度学习网络(Unet,CNN,Transformer等),有利于他们更深入地理解Python的临床应用,也为他们将来更好地参与科研工作打下坚实的基础[13-15]。
3.2 提供实践机会
医学生学好Python课程需要结合实际需求和不断地练习。我们为学生提供充分的实践动手机会,包括编程练习、项目作业和编程挑战赛。这有助于医学生建立自信心,掌握Python编程技能,并将其应用于医学领域的实际问题。将Python与医学领域的实际问题联系起来,可以更好地理解和应用所学知识。
无论是课上还是课后,教师都要给学生提供大量自己动手编写代码的机会。每次课程结束后,给学生具体的编程任务,鼓励他们编写Python代码来解决问题。这可以包括小型编程项目、练习题和编程挑战。例如编写一个医学数据分析程序或解决医学领域的问题的小型编程项目,激励学生参与并激发学生的学习兴趣和创造力。学生可以通过参与项目和解决医学挑战来巩固他们的Python编程技能。
鼓励学生参与Kaggle等竞赛中的医学数据分析项目,这种挑战类项目能够激发学习动力,使学生收获能力和经验。同时为学生建立学习支持体系,除了授课教师进行答疑以外,我们还招募了助教、组建学习小组在线为学生答疑,课程组录制电子资源放在学校爱课教学平台供学生学习。
由课题组阳维老师指导的学生包揽了MICCAI 2023竞赛Synthrad2023双赛道冠军;由曹蕾老师、高园园老师指导的学生均获得了2023届生物医学工程大赛国赛、省赛二、三等奖的好成绩。
3.3 互动式教学设计
设计Python课程的互动式教学方法可以帮助学生更好地理解和应用编程知识。在教学实践中,课题组设计了如下两种互动式教学方案,以提高医学生的学习积极性。
第一种是小组项目,鼓励学生合作,让他们在小组中一起完成Python项目。这样既增加了团队成员互动,同时培养他们的合作能力。在小组项目演示环节,教师可以邀请学生在课堂上展示他们的编程作品,同时让他们分享经验。教师听完项目汇报后,提供具体的反馈和建议,帮助他们改进。
比如在疫情期间,学生们用Python 设计模拟了COVID-19病毒在人群中传播的计算机仿真模型,并使用matplotlib 绘图。人群分布使用简单的正态分布,人员活动也使用简单的正态分布。当认为传染者和正常人的距离小到一定范围后,正常人就被感染,感染后有病毒潜伏期和发病期。在经过潜伏期和发病期后,病人才被隔离,隔离之后则不会再被感染,也不会传播病毒。图1展示了COVID-19在人群中传播的一个画面,其中绿点为正常人,蓝点为病毒携带者,红点为传染者。
图1 病毒在人群的传播画面
第二种是在学校爱课平台开辟在线讨论板块,鼓励学生提出问题、分享知识和互相帮助。教授学生使用在线编程工具,如Jupyter Notebook,使他们可以即时编写和运行代码,同时又可以分享代码和笔记。这样既可以增加同学和教师间的互动,又可以用于课堂演示和实验。
我们组织学生进行了互动式词云生成的项目学习,学生可以通过汇总自己感兴趣的医学文献,输入词云生成器,可以产生相应文献的词云,如图2展示了CT血管造影方面文献的词云。
图2 CT 血管造影文献词云图
这些互动式教学方法可以帮助学生更深入地理解Python编程,特别是在医学背景下的应用,提高他们的编程技能和兴趣。此外,教师可以根据学生的反馈和需求进行调整和完善,获得更加有效的教学方案。
3.4 课程实施效果
自2018 学年春季学期伊始,分期分批在基础医学、医学实验技术、中药制药、医学影像等医学生专业开设了计算机Python课程,我们通过设计调查问卷和形成性评价的形式对课程实施效果进行评价。分别在开课前和开课后期设计了有关Python学习情况的调查问卷,并且通过数据结果对教学质量进行分析,适时调整教学方法和策略,改善和提高课程教学质量。
开课时由于学生为大二学生,计算机类课程只学习过计算机基础,学生前置课程基础较差,从课前问卷也可以看到,虽然有些学生掌握了部分计算机编程语言,但是对Python语言大部分都没有接触,熟练掌握Python语言的只占总学生人数的2%,只有5%对编程感兴趣,有15%的学生认为自己在一定帮助下可以完成程序设计,只有1%的学生认为可以将Python语言应用到自己的专业中(如图3所示)。在经历整个学期Python 课程学习之后,从学生的开课后调查问卷,我们可以看到有77%的学生认为自己已经可以熟练掌握了Python语法,并且有71%的学生认为可以将Python应用到自己的专业工作当中。更值得注意的是,有90%的学生认为已经对Python产生了兴趣,说明大部分学生在课程内已经掌握了基础语法和编程的简单框架,并对Python编程产生了浓厚的兴趣,觉得可以将它应用到医学领域。
图3 开课前后问卷结果对比图
在教学过程中,我们采用形成性评价,定期评估学习效果,确保学生学习的有效性。
课程组提供多样性的任务和小组项目,随着课程的推进,逐渐增加任务难度,以确保学生循序渐进发展他们的编程技能。定期进行小测验(通常两次课为一个节点,共设置4次阶段性小测试),以确保学生理解课程内容,这些小测验可以作为形成性评价的一部分,同时也有助于学生巩固知识。总的来说形成性考核形式主要包括:任务考核、小组项目考核和阶段性测试。这部分考核成绩作为平时成绩和期末考试成绩各占50%作为学生最后的成绩。平时成绩里面,任务考核占比为40%,小组项目和阶段性测试各占30%。小组项目作业,采取学生自愿组队、团结合作的完成方式。任课教师一般会提供几个固定题目,同时也鼓励学生带数据自主命题,题目形式相对开放,以鼓励学生充分发挥出自己的专业背景和编程技能。项目完成以后会开放给其他小组,进行项目互评。小组项目作业的最终分数由项目互评分数和教师评分,各占50%得到。同时我们也会在爱课平台定期收集整理学生的反馈,以了解他们对课程的看法,以便对本门课程进行适时的调整和改进。
4 结语
本文从新医科背景下Python课程对医学生的重要意义、教学面临的挑战、课程方案改革、教学设计等方面,展开讨论新医科背景下课程组对Python课程的教学思考。将医学数据管理与Python课程深度融合,在生物信息学、医学数据处理和分析、影像组学等多个方面找到结合点。以医学数据处理案例为中心组织课堂,以互动式教学方法充分调动学生学习编程的积极性和主动性,让学生紧跟人工智能、深度学习等新技术,培养高水平、高素质、高融合新医科人才,服务“健康中国”大目标。