周旭 李艷麗 魏唯 張宇楠 聶丹丹
[摘 要]針對醫(yī)學專業(yè)Python語言程序設計課程教學現(xiàn)狀,為了讓教學過程變得生動有趣,增強程序設計語言教學效果,該文利用任務驅(qū)動式教學的優(yōu)點,根據(jù)Python課程的內(nèi)容及特點,把任務驅(qū)動教學運用于Python課程的教學中進行研究。并且在教學中增加小組討論和小組項目展示環(huán)節(jié),以課堂精講為主,課后答疑為輔,培養(yǎng)醫(yī)學生計算機方面自學能力,訓練學生程序設計能力,期望通過教學改革提高醫(yī)學類專業(yè)學生的計算思維與科研創(chuàng)新能力。
[關鍵詞]Python語言;任務驅(qū)動;教學方法
[中圖分類號] G642,TP312[文獻標識碼] A[文章編號] 1674-9324(2020)44-0-04[收稿日期] 2020-05-08
引言
大數(shù)據(jù)時代背景下,醫(yī)學生程序設計課程的定位是通過某一編程語言的教學,使掌握科研數(shù)據(jù)背后的醫(yī)學意義。相比于其他程序設計語言,Python語言是一種面向?qū)ο蟆⒔忉屝陀嬎銠C程序設計語言,是目前最接近自然語言的通用編程語言[1]。Python具有語法規(guī)則簡單、易上手、易理解的特點,被一致認為是最適合入門編程的程序設計語言[2]。由于Python完全免費并且在人工智能、圖像處理、數(shù)據(jù)挖掘和數(shù)據(jù)可視化等方面有不斷優(yōu)化的庫,學生可以輕易完成各種高級任務,可以很方便地使用這些豐富的擴展庫完成和醫(yī)學數(shù)據(jù)處理相關的各種工作。通過學習基本的語法知識和第三方庫安裝方法自如地處理、分析和管理醫(yī)學數(shù)據(jù),學生既掌握通用程序開發(fā)技術,又能在程序開發(fā)過程中熟練調(diào)用通用的數(shù)據(jù)分析挖掘模塊。Python程序設計語言的學習可以培養(yǎng)醫(yī)學生大數(shù)據(jù)分析所需的數(shù)據(jù)素養(yǎng),促進醫(yī)學生自身專業(yè)能力的提升。
在教學隨社會需求不斷演化變遷的實踐中,如何讓醫(yī)學生快速地適應大數(shù)據(jù)分析需求,精準掌握程序設計基本技能,提高計算思維能力。文章在Python程序設計課程教學方法上進行了研究,重點采用任務驅(qū)動的課堂教學,以課堂精講為主,課后答疑為輔,同時在實驗內(nèi)容上進行改革,讓醫(yī)學專業(yè)學生掌握學習程序設計基本編程技能,能夠獨立編寫程序,把計算機技術應用到醫(yī)學領域,促進醫(yī)學應用的創(chuàng)新發(fā)展。
一、教學現(xiàn)狀
Python語言程序設計是大多數(shù)高校針對非計算機專業(yè)學生設定的一門必修公共計算機基礎課程,此門課程主要是培養(yǎng)學生應用計算機技術來解決實際問題的能力。程序設計課程的特點是動手能力要求高、知識點多、重點難點多、課時少,大部分程序設計課程的學習要求學生在一個學期內(nèi)由入門轉化為熟練編程,順利通過國家二級考試[3]。
大學新生計算機水平參差不齊,大部分沒有用過具體的計算機編程語言進行程序設計實踐。當接觸程序設計類課程時,普遍感覺知識凌亂、內(nèi)容枯燥、難以理解。對于傳統(tǒng)授課的教學方法,只是讓學生機械性地記住一些語法知識,程序設計課程的實驗作業(yè)大多是統(tǒng)一布置的一個一個獨立的小題目,前后缺少連續(xù)性、整體性[4]。在學期結束談到對這門課程的感受時,仍有部分同學感覺所講內(nèi)容沒有掌握完全。有些醫(yī)學生僅僅能看懂程序卻不會編程序,不能用python語言解決實際問題。
學生對Python在醫(yī)學專業(yè)應用領域的見解圖
二、教學改革方法
(一)課堂教學分配上,學習任務明確
第一節(jié)課展示應用范圍,展示Python編程魅力,展示和醫(yī)學相關例子,如腫瘤患者數(shù)據(jù)分析,醫(yī)學圖像處理等。同時,進行調(diào)查問卷,了解學生的需求。從而設計嚴密的針對本班級學生的教學計劃和有傾向性的教學任務。圖1為利用學習通對學生進行問卷調(diào)查“希望Python這門課對以后醫(yī)學專業(yè)學習有什么幫助并幫你解決什么問題”得到的學生回答詞云。從上圖可以看出有些同學對Python和醫(yī)學專業(yè)之間的應用關系沒有明確想法,有些同學則側重想利用Python解決醫(yī)學輔助診斷,醫(yī)學數(shù)據(jù)分析和建模,或?qū)︶t(yī)學影像進行處理。針對學生需求,我們會在基礎階段向同學講授基本的編程思想和語法知識,并在進階拓展階段,向同學們介紹一些和醫(yī)學數(shù)據(jù)分析相關案例程序。把基礎和進階兩部分教學階段的學習內(nèi)容分配在有限的教學學時內(nèi),讓學生學會使用程序設計語言,掌握基本語法知識和應用實例。學習目標分成三部分:了解自然問題利用計算手段進行求解的基本思維方式,了解集成開發(fā)環(huán)境的特點和使用方法;掌握程序設計、模塊化編程基本思想,具備高質(zhì)量程序的良好編程素養(yǎng);了解常用的算法和問題求解策略,體會算法、數(shù)據(jù)結構在解決實際問題中的作用。
(二)課前預習,課上精講,課后復習
1.對學生進行分組。每次課前會發(fā)布學習任務文檔,讓學生了解每節(jié)課的重點難點,學習目標,同時將知識模塊的相關案例程序發(fā)放給學生,要想寫出程序,必須能讀懂別人寫的程序。學生先自己學習教材內(nèi)容,對照教材和相關學習視頻,自己研究下發(fā)的案例程序,遇到不懂的知識點進行標注,通過學習通、QQ群等交流平臺進行討論咨詢。另外,學生通過前期關于研究程序方面的交流,逐漸掌握解決相似問題的基本方法。
2.項目驅(qū)動,分組進行程序設計。首先讓學生了解本次課所要學習內(nèi)容的主線,對重點難點進行區(qū)分。在項目任務驅(qū)動的教學模式中,教學成效的好壞直接取決于項目任務的設計,合理有效的項目任務設計才能成為教學的動力,才能引導學生自主探究學習,而過于簡單或者過于復雜的項目設計,可能就不能達到理想的教學效果[5]。在組織教學內(nèi)容方面,以完整的案例為依托,設計一些生活中常用的案例和項目覆蓋教學知識點,將零散的知識匯總,難易適當,循序漸進地幫助學生掌握各種數(shù)據(jù)類型、程序控制結構,函數(shù)和文件處理等操作。以可視化界面和以Turtle繪圖為例的程序會引起學生的興趣。因此,引入Tkinter庫和Turtle庫,分別設計一個簡單的醫(yī)學藥品管理程序和數(shù)碼管繪制程序。借助醫(yī)學藥品管理程序向同學們深入講解組合數(shù)據(jù)類型和數(shù)據(jù)操作、控制語句和函數(shù)的使用等等。采取逐步擴張法進行項目開發(fā),將項目劃分為一個個子項目,通過在教學過程中完成一個個子項目而逐步將整個大系統(tǒng)實現(xiàn)。而每個子項目又是隨著應用的需求逐步提出來的,由此引進新的概念和新的教學內(nèi)容。另外,通過繪制數(shù)碼管重點講授日期數(shù)據(jù)類型的使用和自定義函數(shù)的定義與調(diào)用。同時,給學生展示科赫曲線和數(shù)碼管結合的小程序,激發(fā)學生的創(chuàng)造意識,提高醫(yī)學專業(yè)學生學習程序設計語言的興趣,促進Python語言程序設計課程教學成效的提升。
在開展項目任務驅(qū)動的Python語言程序設計課程教學中,教師要創(chuàng)新課程教學設計,突破以往課程教學擔任學習教學模式,將學生從單個的學習模式中解放出來,組成項目任務的探究小組,制定明確的小組項目任務和目標,讓小組成員的都積極參與到Python語言程序設計課程項目的任務實現(xiàn)中來,例如,教師就借助這樣的項目任務教學,讓學生圍繞一個任務進行合作探究式學習,不僅能夠增強學生之間的團結合作,還能促進學生對Python語言程序設計中的技巧和方法進行掌握,能夠促進課程教學不斷取得實實在在的成效。學生可以通過在創(chuàng)建窗體上添加控件的方式,通過完成具有其他功能的程序設計開發(fā)。比如將Tkinter和繪圖程序結合,通過交互式界面展示繪制的多個醫(yī)學化學結構分子式,或者開發(fā)醫(yī)生生成績管理系統(tǒng),這些設計與實現(xiàn)會增進并鞏固學生對新概念、新知識的理解的運用。由此,項目開發(fā)與課程教學交叉融合、相輔相成,從而實現(xiàn)教學目標并培養(yǎng)學生的計算思維。
3.課后復習答疑。教師要檢查學生作業(yè),通過學生在作業(yè)中的代碼注釋了解學生的編程思路和方法。課后讓學生充分發(fā)揮創(chuàng)造力,在課本小例子的基礎上進行創(chuàng)新,設計一些其他程序,以學生興趣為導向,培養(yǎng)學生解決問題能力,在解決問題時學習知識。對于學生不理解的,教師可以采用多媒體PPT、實驗課上機演示等展示相關問題。另外,教師鼓勵學生通過分小組討論方法進行歸納整理,實現(xiàn)本小組的項目。教師通過遠程控制軟件,幫助學生分析問題出現(xiàn)在哪里,協(xié)助學生一起調(diào)試程序,通過學習通軟件中的討論模塊、通訊QQ軟件的遠程控制模塊,師生之間完全擺脫了時間和空間的限制,在課后及時對知識點進行學習交流。
(三)實驗改革
以往學生的實驗過程,只是完成書上的例題,學生上機只是照搬書上的程序輸入計算機,調(diào)試發(fā)現(xiàn)語法錯誤,輸出結果,這樣的實驗安排不能很好地鍛煉學生的創(chuàng)造力和想象力。無法調(diào)動學生的積極性,提高編程能力。將實驗內(nèi)容劃分為基礎實驗和進階實驗(按學生需求劃分實驗內(nèi)容)。
1.在基礎實驗階段,主要是驗證學生對基礎python語句,函數(shù)定義使用,程序控制結構掌握的程度。在講解字符串內(nèi)置函數(shù)方面,設計敏感詞隱藏程序,讓學生掌握replace方法的使用,還增加一些其他程序,如猜數(shù)字游戲了解循環(huán)語句和分支語句的使用方法,強化學生的基礎知識。
2.進階實驗階段,主要設計一些和生活相結合的題目,讓學生動手編程。目前很多編程語言教材上列出的習題多是一些數(shù)學計算題,這類題目雖然契合知識點,但是相對單調(diào),而且容易誤導學生以為該程序語言只能進行一些算術運算,漸漸學生會對該編程語言失去興趣,我們的教學改革側重為學生布置相對輕松的編程任務。
Python是最為靈活、功能強大的編程語言,在人工智能數(shù)據(jù)挖掘數(shù)據(jù)可視化方面有不斷優(yōu)化的庫,以jieba庫為例向?qū)W生介紹第三方庫的安裝方法,在掌握基礎知識后,對學生進行能力測驗,通過調(diào)查問卷獲取學生興趣,對學生進行興趣小組劃分,以小組為單位完成進階實驗內(nèi)容。在項目任務驅(qū)動的教學模式中,教學成效的好壞直接取決于項目任務的設計,合理有效的項目任務設計才能成為教學的動力,才能引導學生自主探究學習,而過于簡單或者過于復雜的項目設計,可能就不能達到理想的教學效果。因此,在項目任務設計中,我們給醫(yī)學生設定5個方面的項目任務,每個方面需要安裝的第三方庫和一些關鍵知識要點都有相應的說明文檔,并給學生發(fā)對應的例子和任務文檔,要求同學們在給定例子的基礎上,進行創(chuàng)新改進程序,填寫制定的實驗報告。同時,同學們也可以發(fā)揮想象力,完成這5個方面以外的其他內(nèi)容。小組成員通過分模塊,分功能合作的方式完成程序設計工作,不僅靈活地掌握知識,還提升自主學習能力。
(1)圖像處理。Python圖像處理醫(yī)學圖像主要借助于Pillow庫,學生可以對圖像進行分割渲染等等。Pillow庫通過該程序可以實現(xiàn)對動圖的圖像處理,包括連接動圖、灰度處理和手繪風格處理三個功能。
(2)爬蟲統(tǒng)計分析。和爬蟲相關的第三方庫有urlli、requests等??梢岳门老x實現(xiàn)醫(yī)學專業(yè)英語名詞和中文的漢譯英工作。 (3)文本處理。Python文本處理可以分析醫(yī)學病歷,通過詞云解析對病例進行詞頻統(tǒng)計,結合聚類算法得到患者的最終患病情況結果。(4)格式化輸出。Python程序設計可以編寫一個體檢報告 格式化輸出網(wǎng)頁版。
(5)游戲設計。游戲設計需要第三方庫Pygame??紤]到一些學生喜歡設計游戲及想要開發(fā)可視化界面的需求,以pygame庫為例,給大家介紹貪吃蛇游戲的設計技巧。
按照上述項目劃分和學生興趣驅(qū)動,要求學生們在布置任務4周之后,提交本小組項目實驗結果。大家均在既定的程序上進行了創(chuàng)新,開辟了其他有意思的程序并撰寫了小組分工程序設計實驗報告。另外,在課堂上讓每組進行程序作品演示,測試他們對模塊函數(shù)的理解程度,同學們對此非常感興趣,演示的結果也得到其他組同學的認可。例如有些小組完成的是學生成績分析及GPA統(tǒng)計程序。在用戶登入成功后,可根據(jù)用戶輸入成績數(shù)據(jù)計算績點與平均成績、平均績點,并根據(jù)用戶要求繪制學年成績分析雷達圖。還有的小組構建了一個以老式飛機大戰(zhàn)游戲為基礎,打造出坤坤與《逍遙游》中鯤的大戰(zhàn)場景,將老套的游戲賦予了新的時代內(nèi)涵。在原代碼的基礎上加入了背景音樂,對游戲界面進行了美化,對游戲速率和關卡進行了調(diào)整。還有的小組提交的作業(yè)是從網(wǎng)絡中爬取下一些醫(yī)學嬰兒出生過程的圖像,然后編程實現(xiàn)對圖片進行連接、合成及手繪風格的處理。
實踐表明,讓學生帶著問題去思考,在每次學習完新的知識之后,都可以通過一個例子,把之前的語法知識串在一起,這樣不僅可以鞏固基礎編程知識,還可以進一步通過拓展練習增強學生的編程興趣,學生充分發(fā)揮想象力,強化知識的應用,達到了預期學習效果。
三、考核方式
傳統(tǒng)的課程考核是期末考試,通過最后一次考核很難評價學生的動手能力如何。新媒體時代下的考試不應該僅在最后考試,平時也有考試,在每一單元模塊學完、甚至在每一次上完課后都進行課堂在線考試。在保證檢驗基本知識的同時,增強平時實踐在考試比重,強化考察學生們的動手實踐能力。所以這門課程的期末總評分數(shù)應該是如下構成:平時上課表現(xiàn)(10%)+平時在線考試(20%)+平時項目作業(yè)(30%)+最后的期末考試(40%)。其中,平時上課表現(xiàn)包括出勤率、課上回答問題情況,平時在線考試則是借助學習通,在講完每章或者幾個章節(jié)的知識點后,發(fā)布作業(yè)或者在線考試任務,及時掌握學生對知識點掌握情況,平時項目作業(yè)包括分小組完成的項目任務,它屬于過程性考核,增加它在總成績中的占比(30%),促進學生平時投入學習,保證學習質(zhì)量,避免突擊考試的應試學習。最后的期末考試實行無紙化考試模式,利用“萬維全自動計算機基礎考試平臺”實現(xiàn)對于理論知識和程序設計能力綜合測驗。期末考試題型包括單項選擇題,多項選擇題,判斷題,填空題和程序題,所有的題型覆蓋書中知識點,考察學生的編程能力,基礎知識能力。
通過在吉林大學醫(yī)學專業(yè)3個班級中實施該課程考核方式,實現(xiàn)了綜合評價學生的學習效果,提高醫(yī)學專業(yè)學生學習程序設計語言的興趣,這樣的綜合性考察方式滿足對學生的學習情況進行客觀評價。
四、總結
Python程序設計課程是計算機基礎課程中醫(yī)學生較難掌握的內(nèi)容。文章探討了教師在教學過程中如何設計針對醫(yī)學生的教學案例,通過任務驅(qū)動方式讓這門程序設計語言和醫(yī)學生的專業(yè)緊密聯(lián)合起來,從而提高學生的學習興趣,讓枯燥的語法教學變得生動有趣,增強教學效果,促進專業(yè)課知識發(fā)展和應用,進一步培養(yǎng)學生計算思維,提升自學能力,綜合應用能力。
參考文獻
[1]羅曉玲,張晶晶,鄭斯文,等.Python語言程序設計教學模式改革研究[J].電腦知識與技術,2020,16(07):138-139.
[2]嵩天,黃天羽.Python語言程序設計教學案例新思維[J].計算機教育,2017(12):11-14+19.
[3]周乃富.新媒體時代下程序設計課程的教學模式構建[J].福建電腦,2018,34(09):155-156+146.
[4]王瑞,唐萬梅.“MOOC+翻轉課堂”的多元化教學模式研究與實踐—以“Python語言程序設計”課程為例[J].軟件導刊,2019,18(02):204-207.
[5]崔立新,焦彥敏,劉春幫.計算機任務教學中任務設計的有效性分析[J].信息安全與技術,2015,6(02):95-96.