李秀敏,王希杰,刁麗娟
(濱州醫(yī)學院,山東 煙臺 264003)
隨著我國科技和經(jīng)濟的迅猛發(fā)展,國家需要越來越多高質(zhì)量、高素質(zhì)、高水平的創(chuàng)新型人才。習近平總書記在十九大報告中提出的實施健康中國戰(zhàn)略,為高校培養(yǎng)研究型、應用型醫(yī)學人才隊伍指明了方向。人才是醫(yī)藥衛(wèi)生事業(yè)發(fā)展的重要基石,在提升國家整體醫(yī)療服務水平和實現(xiàn)全民健康目的進程中起著關鍵作用[1]。
醫(yī)學人才的研究能力和實踐應用能力包括醫(yī)學研究、臨床決策、指導臨床應用等,是衡量醫(yī)學院校人才培養(yǎng)的重要指標之一[2]。計算機科學在醫(yī)學發(fā)展和研究中發(fā)揮著越來越重要的作用,在電子病歷、移動醫(yī)療、生物信息學、健康物聯(lián)網(wǎng)等新型交叉學科方面有著廣泛的應用。計算機知識和應用能力已成為醫(yī)學生綜合素質(zhì)的重要標志。
隨著社會的發(fā)展,對醫(yī)學生的綜合能力要求越來越高。醫(yī)學生必須具備良好的科學素養(yǎng)和科研能力,善于從醫(yī)學實踐中客觀地分析和解決問題,才能適應當代社會發(fā)展的需要??蒲心芰χ饕冈陂_展科學研究活動時,運用科學方法探求并解決問題的過程中所表現(xiàn)出來的本領,主要包括信息分析判斷和處理能力以及實踐動手能力等[3]。近些年來,我國醫(yī)學教育事業(yè)蓬勃發(fā)展,但也存在著資源短缺、師資不足、學生綜合素質(zhì)下滑等現(xiàn)象。部分醫(yī)學畢業(yè)生就業(yè)后在繼續(xù)學習能力、知識應用能力、科研創(chuàng)新能力等方面存在不足,學生綜合素質(zhì)參差不齊。醫(yī)學本科生專業(yè)課程繁多且理論課時一般多于實踐課時,同時教學計劃中涉及創(chuàng)新性、應用性、設計性的實驗課較少,在本科生中未開展相關課程的學習,科研基礎知識和方法未普及,使得學生科研意識薄弱。
現(xiàn)階段,我國從事醫(yī)療衛(wèi)生行業(yè)工作的人員數(shù)量在不斷增多,城鄉(xiāng)醫(yī)療機構分布不均、人員素質(zhì)偏低,這與我國的高等本科教育中實踐應用型的人才培養(yǎng)不足有很大關系[4]。本科教學中要培養(yǎng)學生全面發(fā)展,不僅要教授其理論知識,還要讓學生具備足夠的實踐能力,尤其在大數(shù)據(jù)時代背景下,要使其能夠熟練應用某種數(shù)據(jù)分析工具來解決實際問題。
為培養(yǎng)醫(yī)學院校學生的研究和應用能力,需進一步厘清思路,改革與創(chuàng)新教育教學模式,深化“互聯(lián)網(wǎng)+”時代下的教育改革。醫(yī)學院校學生掌握一種程序設計語言,能夠更好地掌握專業(yè)前沿知識,有利于今后的科研與技術創(chuàng)新。
大數(shù)據(jù)時代背景下程序設計課程的授課中除了掌握基本的程序開發(fā)方法外,還應進行大數(shù)據(jù)分析所需的技能素養(yǎng)和思維方式的訓練及培養(yǎng)。Python已經(jīng)成為流行的編程語言和科學計算的重要平臺,在數(shù)據(jù)分析、機器學習、Web開發(fā)、圖像處理等多個領域應用廣泛,因而Python已經(jīng)成為醫(yī)療等數(shù)據(jù)分析領域中最常用的語言。Python語言語法清晰易懂,在培養(yǎng)醫(yī)學院校學生專業(yè)能力方面具有很高的教學價值。教學中采取讓學生多參與、多討論等方式,多為學生提供一些實踐案例,做好研究型學習。
Python語言設計簡潔優(yōu)雅,安裝便捷,學習效率比較高。通過Python的學習,可以促使學生把更多精力放在解決問題能力和思維能力的培養(yǎng)上,而不是關注其內(nèi)部實現(xiàn)。Python語法簡單,沒有C語言中的指針、地址等涉及計算機系統(tǒng)結構的元素,對于具有醫(yī)學背景的學生而言比較容易學習。
在Python中,不需要事先聲明變量名及其類型,直接賦值即可創(chuàng)建各種類型的對象變量,這一點適用于Python任意類型的對象。Python是一種動態(tài)類型語言,變量的類型也是可以隨時變化的,見圖1(示例中安裝軟件為Python3.6,所有程序在IDLE中進行)。變量x的類型從int變?yōu)榱藄tr類型。Python中的變量并不直接存儲值,而是存儲了值的內(nèi)存地址或者引用,這也是變量類型隨時可以改變的原因。在Python中,沒有字符常量和變量的概念,只有字符串類型的常量和變量,單個字符也是字符串。邏輯運算符and和or具有惰性求值或邏輯短路的特點。在編寫復雜條件表達式時充分利用這個特點,合理安排不同條件的先后順序,在一定程度上可以提高代碼運行速度。例如3>5anda>3語句中,結果為False,并沒有定義變量a。語句3<5ora>3,結果為 True,不需要計算 a>3。Python 主要有 for循環(huán)和while循環(huán)兩種形式的循環(huán)結構,這里帶有else子句是Python循環(huán)語句的特色之一。如果循環(huán)自然結束時則執(zhí)行else結構中的語句,如果循環(huán)是因為執(zhí)行了break語句而導致循環(huán)提前結束則不會執(zhí)行else中的語句,見圖2~3(圖2中的代碼執(zhí)行結果為圖3所示,可見并不執(zhí)行else子句)。
圖1 查看變量類型
圖2else子句的理解
圖3 圖2語句執(zhí)行結果
Python突出的優(yōu)勢還體現(xiàn)在擁有豐富的圖形庫和科學計算庫,主要包括以Pandas為代表的數(shù)據(jù)分析庫、矩陣計算模塊Numpy、科學計算模塊Scipy、數(shù)據(jù)可視化工具Matplotlib等。通過學習Python,不但可以培養(yǎng)學生分析和解決問題的能力,提升學生的科研和應用創(chuàng)新意識,而且有助于學生掌握一種終身受用的編程語言。
程序設計課程的教學重點是培養(yǎng)學生用計算機解決問題的通用方法,從而培養(yǎng)計算思維能力[5]。針對醫(yī)學專業(yè)學生而言,結合各自的專業(yè)和興趣進行Python模塊的學習,適當增加學生的知識面和學習深度,同時結合所學內(nèi)容開展大學生創(chuàng)新項目的科學研究,掌握數(shù)據(jù)處理的主要方法。
Python基礎知識部分主要有基本數(shù)據(jù)類型、變量、運算符、表達式、程序流程控制、函數(shù)和模塊等,涉及的類庫主要有Turtle庫、Math庫、Random庫和部分內(nèi)置函數(shù)等。例如求5的階乘可以通過內(nèi)置函數(shù)用語句:reduce(operator.mul,range(1,6))來實現(xiàn),程序簡潔流暢。能力提升部分主要包括字符串、高級數(shù)據(jù)結構中的列表、元組、字典、集合等,涉及的類庫主要有Datetime庫、Calendar庫、Time庫。應用部分中主要是圖像處理和數(shù)據(jù)處理、分析與可視化,涉及的類庫主要有Graphics庫、PIL庫、Numpy庫、Pandas庫和 Matplotlib 庫等[6]。
大數(shù)據(jù)背景下醫(yī)學院校的學生應掌握大數(shù)據(jù)分析的基本技能,所以除了基本的程序設計技能外,更應側(cè)重數(shù)據(jù)分析挖掘基本思想以及主要應用方法的學習。在Python語言數(shù)據(jù)處理過程中,首先將獲取的數(shù)據(jù)轉(zhuǎn)換成numpy數(shù)字,然后用Python提供的Pandas和Scipy模塊進行數(shù)據(jù)分析及處理,最后提取數(shù)據(jù)特征并用Matplotlib庫中合適的圖形、圖表表示出來[7]。例如,使用Python繪制出的散點圖和直方圖(見圖4~5)。課程教學過程中,可以結合專業(yè)的不同特點選取介紹不同的類庫,從而加強學生研究和應用能力的培養(yǎng),為未來從事數(shù)據(jù)分析和應用工作打下基礎。
圖4散點圖
課堂教學中并非獨立地應用一種教學方法,而是在不同的教學階段,根據(jù)教學內(nèi)容、教學對象的不同,選用適合的教學方法進行教學[8]??梢圆捎冒咐虒W法、演示法、討論法,并嘗試運用慕課、微課程、翻轉(zhuǎn)課堂等在線課程模式與傳統(tǒng)教學模式相融合,進行教學方法的改革。教師要積極推行以學生為中心的教學理念,教師授課和學生討論可以同步進行,同時配合相應練習,以鞏固學生對知識點的理解[9]。課下給學生推薦網(wǎng)上教學資源,拓寬知識面,提高學習效率。
圖5 直方圖
我校已在2016級、2017級醫(yī)學生中開設了Python程序設計選修課程,在教學過程中,為了激發(fā)醫(yī)學生對算法中晦澀難懂知識的學習興趣和思考積極性,采用了所見即所得的動態(tài)交互模式進行授課,將抽象、枯燥的教學內(nèi)容以生動形象的形式展現(xiàn),深入分析編寫代碼所涉及的算法思想,增加趣味性,促進學生對知識的理解與消化,增強教學效果。例如,通過使用Pythontutor圖形化工具,可以觀察程序執(zhí)行過程,更好地理解代碼,并對可能出現(xiàn)的問題進行現(xiàn)場調(diào)試。選取的Python案例,包含模塊、函數(shù)、程序控制結構、列表的綜合應用,箭頭表示當前運行到的位置(見圖6)。從程序執(zhí)行的可視化過程可以很清楚地跟蹤變量的變化和函數(shù)的調(diào)用(見圖7),輸出結果見圖8。這種動態(tài)演示使抽象的算法簡單明了,通過這種方式與學生進行互動,便于學生通過直接比較結果的方式掌握Python程序設計的精髓。
圖6 代碼
工欲善其事,必先利其器。選擇合理的調(diào)試方法和工具對提升學習效果至關重要,我們可以在程序中增加輸出語句,了解程序的運行和變量的值,缺點是程序變得稍微復雜。另一種較直觀的方式就是使用斷點調(diào)試和單步調(diào)試。例如利用Py-Charm調(diào)試程序時,在某行增加斷點后,當程序運行到斷點時就會停下,可查看此時各變量的值,從而進行代碼的調(diào)整。
對科研能力和應用能力的要求是研究型人才培養(yǎng)規(guī)格的核心。本科階段培養(yǎng)學生養(yǎng)成主動思考、主動實踐的思維方式,使學生能盡早掌握科研基本思路、基本方法,有利于培養(yǎng)學生的創(chuàng)造能力和創(chuàng)新精神[10]。應用型人才要被實際應用于某個領域,重點強調(diào)其分析問題、解決問題的能力,還包括自我發(fā)展能力、終身學習能力。
圖7 程序執(zhí)行可視化模擬
圖8 程序輸出
教學實踐表明,Python語言程序設計課程的學習可以鍛煉學生的臨床思維和科研思維能力,是培養(yǎng)醫(yī)學生數(shù)據(jù)分析處理能力的較好途徑。我們將繼續(xù)以學生為教學主體,持續(xù)探索如何將課程與專業(yè)實踐應用更好地結合,為培養(yǎng)研究型和應用型醫(yī)學人才而努力。