1. 研究背景与意义
在大数据时代的背景下,人工智能正在影响各行各业的发展。《教育强国建设规划纲要(2024~2035年)》指出,要建设学习型社会,实施国家教育数字化战略,推动人工智能助力教育变革。《卫生健康行业人工智能应用场景参考指引》明确提出了AI在多个医学场景中的应用。对于AI来说,最重要的是如何掌握这门编程技术。Python凭借其简洁易学、功能强大等特点,迅速成为非计算机专业学生学习编程的首选语言之一[1]。
数据素养是每一个新时代大学生都需要具备的能力。该能力是一种通过数据分析、数据挖掘发现数据价值的重要技能素养,数据素养培养现已成为大数据时代的教育研究热点,但是医科学生接受人工智能、机器学习等数据挖掘技术的学习训练机会很少[2]。对于医学院校来说,计算机课程并不是主流课程,整体对该课程的重视程度较低。当前的教学模式仍然停留在理论讲解、简单案例实操和传统的理论考试等阶段,学生往往难以理解这门课程的实际意义,导致学习热情较低。为了解决这一问题,我们积极引入OBE (成果导向教育)理念[3] [4],在教学过程中通过实际案例引导医学生学习,使课程内容更贴近医学实际需求,激发学生的学习兴趣和热情。
2. OBE理念概述
OBE (Outcome-Based Education)是成果导向教育的简称,它以成果作为教学风向标,要求学生接受专业学习后应该获得相关的专业能力和职业能力[5]。对于Python教学来说,以工程能力为导向,授课应围绕工业级项目展开设计。在OBE理念中,学生是整个教学活动的中心,由“以教师为中心”、“内容为本”的传统教学设计思路向“以学生为本”做出根本转变[6]。学生在实现特征可视化的过程中,学习Matplotlib/Seaborn等库,教师作为辅助,帮助学生解决在实践过程中产生的问题。OBE提倡学生根据自身情况安排学习过程,在不同时间和不同空间利用不同方法达成目标[7]。通过线上线下相结合的Python教学方式让学生具备更加灵活的学习方式和时间,大大提高学习效率。此外该理念提倡在第一课堂的基础上新增第二第三课堂,多段式的教育,积累实践经验,从社会需求的层次出发。OBE强调,所有的学生都能在学习上获得成功[8]。需要根据学生个体差异进行教学修正,教学评价侧重学生对内容的精熟,学校对学习成效应该要负更多的责任,在教育过程中应列出学生需要掌握的能力。
3. 医学生Python课程教学现状与问题分析
(1) 传统教学以教科书为中心。强调知识的起源和系统性,对知识的应用层面关注较少。
(2) Python的学习对于医学生来说具有一定难度,而且从传统思想来看该课程与他们的专业无关。从而产生消极情绪。
(3) 学生学习完这门课之后很难找到知识的落脚点,因此产生“水课”等消极评论。
(4) 对于医学生来说,计算机操作是他们认为的重点,但是对于“深度学习”,“机器学习”在他们专业领域的应用却知之甚少,然而现阶段医学类院校开设的Python课程仅仅停留在语法、计算机原理的讲授,忽略了学生最关注的点——“学习这门语言能解决医学领域的什么问题”。
(5) 此外教学方式也相对单一,以老师讲授,学生被动地去学习为主。缺少上机实操。考核主要集中在纸质试卷,对语法结构的考察。缺少对实际应用的考核。
4. 基于OBE理念的Python课程教学改革方案
4.1. 课程授课形式
采用“理论课 + 验证性实验 + 设计型实验”的方式进行授课,线上 + 线下的模式相结合,其中理论课程占40学时,验证型实验课程占20个学时,设计型实验课程占4个学时。上课通知、课件及实验报告的分发、收取作业、学生成绩分析均通过学习通来完成。
4.2. 明确教学目标
4.2.1. 知识目标
Python的学习主要帮助学生具备编程思维,从基础语法到医学领域的应用层次递进。语法是基础,要掌握对象与变量的联系与区别,数据类型(整型、浮点型、字符串、列表、元组、字典),运算符的使用规则,三个基本控制结构(顺序结构、分支结构、循环结构),函数的定义与调用,熟练使用顺序传递、关键字传递、默认值传递等参数传递方式。掌握列表、字典等数据结构的增删改查。并且能够熟练地将这些组合型数据应用到医学工程领域。具备文件读写能力,可以处理常见的医学数据的格式。最终学生应该深入理解Python语言的特性与设计方式,了解Python在医学数据分析,医学人工智能开发等领域的应用场景,从而培养医学生的计算机编程思维,让计算机能力成为医学生的基础能力。
4.2.2. 能力目标
医学生应当掌握独立编写Python程序的能力,可以复现常用的机器学习模型和深度学习模型。能够运用变量定义、函数封装、类的实例化等基础编程技术解决实际问题,并且具备基本的算法调优意识。学生需要具备系统化的医学问题分析能力与利用AI技术解决医学问题的能力。在逻辑思维方面,学生应当形成严谨的编程思维习惯,熟练使用分支及循环结构,利用break及continue辅助控制,精确的复现现实场景的逻辑。创新能力及自学能力也是必须掌握的能力,通过项目导向的方式,同学们能够自学相关的技术,并且能够提出比原有解决方案更好的方式。在使用Python进行医学AI项目的编写时,鼓励同学们团队合作,培养出沟通合作的能力。
4.2.3. 情感与价值目标
Python教学的情感与价值目标在于培养学生对于编程的热情,让学生们学会解放人力,将重复性的脑力活动交给计算机,将人在医学领域的判断能力赋值给计算机。让学生们在代码实现和智能赋能中获得成就感,从而产生对Python语言的主动探索精神。在Python实战过程中鼓励学生大胆创新,打破常规。敢用新思路来解决老问题,课程将引导学生认识编程技术的社会价值,通过分析人工智能、大数据等案例建立起科技为民的价值观,培养积极向上的社会责任感,使其成为具有人文素养的数字化医学人才。
4.3. 案例导向教学
表1呈现出了三种不同层次的医学案例,借助BMI指数等基础性的编程案例来展开教学,以此让同学们掌握input以及数据类型转换等基础语法知识,随后运用机器学习方法针对乳腺癌数据集展开分析,提高医学生对于数据分析的理解程度,第三个案例的难度相对较大,采用复杂的MEDSAM网络架构来对医学图像实施分割操作。如此层层递进的教学设计,保证了教学有系统性,还体现出了计算机技术在医学领域所有的应用价值。
Table 1. Medical case
表1. 医学案例
基础编程案例教学 |
通过BMI指数计算程序,帮助学生掌握input、数据类型转换、条件判断等基础语法,夯实编程基础。 |
巩固Python基础语法知识,建立编程思维框架,实现医学与计算机的初步结合。 |
机器学习案例教学 |
基于乳腺癌数据集,开展数据预处理、特征工程和分类模型构建,培养医学生的数据分析能力。 |
提升医学数据处理技能,增强对机器学习在医疗诊断中应用价值的认知。 |
深度学习案例教学 |
采用MEDSAM等网络架构进行医学图像分割实践,直观展示AI技术在影像诊断中的应用,激发学习兴趣。 |
培养医学AI应用能力,提高知识迁移水平,为智能医疗研究奠定实践基础。 |
4.3.1. 基础编程案例教学
图1展示了BMI指数的算法,通过这个简单的医学案例,学生可以掌握input函数、分支结构等基础语法。用户通过输入自己的身高和体重数据,程序将其转换为浮点型数据,进行数值计算。通过BMI公式,程序计算并输出BMI值,用于评估体型是否正常。BMI值经过格式化处理,保留两位小数。程序通过多分支结构对不同的BMI范围进行分类,并给出相应的体型建议。
对于医学生来说,该程序可以应用于专业领域,帮助医学生和临床医生判断个体是否存在体重异常。通过这个程序,医学生能够初步体会到编程在医学领域的辅助功能,并了解到如何将Python程序应用于医学数据的分析。这为进一步应用到其他领域(如血糖、血压等)的数据处理和分析奠定了基础。掌握这些基本编程技能对于医学研究和数据分析至关重要。通过这个案例,医学生不仅能更好地理解体重异常的医学意义,还能将编程知识扩展到更多医学应用中。
图2展示了血压数据的加载与清洗。学生需创建一个血压数据的字典,并且将其转换成DataFrame数据类型,使用填充的方式填充None值,并且过滤异常值,移除收缩压为负值的记录。通过该案例同学们需要掌握pandas库的知识,并且能够理解DataFrame数据类型。学会使用pandas库对数据进行清洗和填充。教师在教学过程主要负责解决学生碰到的问题。通过这种“学生为主”的方式,更加激发学生的学习兴趣。
Figure 1. BMI calculation chart
图1. BMI指数算法图
Figure 2. Blood pressure data loading and cleaning
图2. 血压数据加载与清洗
4.3.2. 机器学习案例教学
乳腺癌是女性中常见的癌症之一。通过机器学习模型建模,可以辅助医生在早期诊断阶段通过临床数据对肿瘤进行分类,对肿瘤的良性和恶行进行预测。该案例使用sklearn库中的load_breast_cancer数据集。该数据集包含乳腺癌诊断中三十多种特征和良性、恶性两种标签。
首先对程序所需的必要库pandas、numpy、matplotlib、seaborn、sklearn等库进行导入。接着对临床数据进行预处理,将数据加载成二维带标签的数据表格——DataFrame。将标签和特征分别存储在变量x和变量y中。使用train_test_split函数将数据集划分为训练集和测试集。使用StandardScaler模块对特征数据进行标准化。加速模型收敛速度并且提高性能。使用SVM模型进行训练,使用到的方法是fit。通过训练数据拟合模型,并且在测试数据集上面进行预测。输出精确度(precision)、召回率(recall)、F1得分(F1-score)等指标。
计算得出并绘制出混淆矩阵,以此来展示模型的预测效果究竟如何,混淆矩阵可清晰呈现出模型的正确预测情况以及错误预测情况,运用matplotlib把混淆矩阵进行可视化处理,呈现出来的结果如图3所示,计算并且绘制出ROC曲线,其目的在于评估分类模型的性能表现。ROC曲线呈现出假阳性与真正率之间的关系,而AUC面积则是用于衡量模型区分不同类别的能力大小,如图所呈现的那样,SVM在分析load_breast_cancer数据集的时候准确率比较高,可辅助医学生开展临床诊断工作,凭借提供这样一个医学场景,使得医学生的参与度得到提升,提高授课的效率。
Figure 3. SVM analysis results of breast cancer data
图3. SVM分析乳腺癌数据结果图
4.3.3. 深度学习案例教学
在医学影像范畴内,数量众多的医学图像数据给人工智能辅助诊断给予了珍贵的研究材料。此案例借助Python开展医学图像分割工作,运用MEDSAM模型[9]对器官数据集实施训练,把训练好的模型给予保存,以便用于后期的推理,在本案例的教学进程里,先是导入了numpy、matplotlib、torch等基础科学计算库,接着基于PyTorch深度学习框架加载预训练模型来进行推理。借助自定义的show_mask函数,可在原始图像上直观呈现分割掩码,并且运用show_box函数标注出目标区域的边界框,达成了分割结果的可视化,这一系列处理办法提升了模型的可解释性,还为后续的临床分析提供了可靠的技术支撑,利用Matplotlib库达成了数据的降维可视化,让医学生能更直观地理解分割结果。图4中清楚展示了医学图像分割的精确成果,依靠这种更直观的医学案例教学,激发了学生的学习兴趣,提高了知识的接受程度和应用能力。
Figure 4. Medical image segmentation
图4. 医学影像分割
4.4. 课程思政
Python程序设计基础课程着重强化课程思政元素的设计与融入,从课程自身、学习进程以及医学领域的相关实例里渗透思政元素[10]。学生要明白,处理医疗数据时,不只是技术方面的问题,还涉及伦理等诸多复杂问题,这可使学生认识技术与社会责任的关联,也能让他们更深入理解技术在医学领域的应用。弘扬科学精神与创新思维,鼓励学生勇于探索、不惧险阻,编程时,学生应从技术创新角度审视医学问题,激发创新意识与解决问题的能力,培养学生集体主义精神,使其在团队合作中感受分工协作的意义,强调借助多学科、多专业团队合作完成项目,提升学生合作能力与团队精神,课程思政的融入,帮助学生掌握编程技能,还助其树立正确价值观与伦理观,使其在职业素养与社会责任方面实现全面发展。这为学生未来医学事业发展奠定坚实思想基础,培育他们成为有社会责任感、创新能力与团队精神的医学科技人才。
4.5. 学生考核评价
采用理论和实践、线上与线下相结合的考核方式,以此全面评估学生的学习成果,最终成绩由期末考试、学习通测试以及实验上机三部分共同构成,其中期末考试占比百分之六十,学习通线上测试占比百分之二十,线下上机实验占比百分之二十,期末考试是上机考试形式,题型有选择题、填空题、算法设计、算法改错以及判断题等,目的在于考查学生对课程理论知识的掌握程度以及应用能力。学习通测试主要考查学生对各章节知识点的理解和记忆情况,实验课考核同学们运用Python解决医学领域实际问题的能力,借助这种综合考核方式,可全面评估学生对课程内容的掌握状况,保障理论学习与实践能力的均衡发展。
5. 教学成效分析
依靠开展问卷调查、进行走访以及统计学生课后使用Python的情况等途径,以此来知晓同学们对课程的满意度以及实际应用状况,基于OBE理念展开的教学改革实践收获了一定成效,学生的学习积极性有所提高,课程的参与度也有所提高,并且及格率相较于之前有了提升,针对学生所提出的问题,会持续改进课程内容,对于学生感到满意的部分也会加以强化。
6. 结论
本文围绕如何把OBE理念融入Python课程展开探讨,深入探索编程与医学领域的融合情况,经过改革后的课程借助医学案例导向的形式,使得编程技术有了具体的落脚点,学生在应对实际问题的时候可运用所学的知识点,将伦理意识、团队意识、创新意识等课程思政内容融入教学进程,提升学生的人文素养,促使学生发展更为全面。借助理论与实践的考察,综合评估学生的学习成果,该课程可提升学生的学习积极性与参与度,提高教学效果,为医学生在未来发展道路上奠定了坚实基础。
基金项目
赛–教–学融合的医工交叉人才培养模式研究(2023B298)。
NOTES
*通讯作者。