劉文獻
(蘭州大學草地農業(yè)生態(tài)系統(tǒng)國家重點實驗室 / 甘肅省西部草業(yè)技術創(chuàng)新中心 /蘭州大學農業(yè)農村部草牧業(yè)創(chuàng)新重點實驗室 / 蘭州大學草地農業(yè)教育部工程研究中心 /蘭州大學草地農業(yè)科技學院,甘肅 蘭州 730020)
21 世紀是生命科學的世紀。隨著生物科學的迅猛發(fā)展,不斷涌現(xiàn)的新技術直接影響著高等院校生物科學相關本科生和研究生教學的方向和內容。近二十年來,隨著各種高通量測序技術的不斷發(fā)展,測序技術正在向高精度、長讀長、低成本、便攜式發(fā)展[1]。據(jù)美國國家人類基因組研究所(National Human Genome Research Institute, NHGRI)統(tǒng) 計,1 MbDNA測序和人類基因組測序成本已經(jīng)由2001 年的5 292和9 500 USD 降至2019 年的0.014 和1 301 USD[2]。測序技術的不斷改進及成本的持續(xù)降低直接推動了高通量測序技術在包括動物學、植物學、醫(yī)藥健康、微生物學、生態(tài)環(huán)境等生物學類學科的廣泛應用,并隨之產生海量的測序數(shù)據(jù)[3]。因此,也相應地要求相關專業(yè)學生具備一定的編程能力來完成對海量數(shù)據(jù)的提取、分析以及可視化展示。
目前,我國高校草業(yè)科學等非計算機專業(yè)學生編程教育及編程能力現(xiàn)狀令人堪憂,無論是對編程的認知還是具體的編程能力都較之計算機專業(yè)學生顯著較差[4]。究其原因,除了各高校重視程度不夠外,非計算機專業(yè)學生面對編程學習時普遍存在著基礎差、畏懼心理強等問題,直接影響了編程課程的教授和學生學習效果。如何幫助學生克服畏懼心里,引導學生快速構建編程知識體系是目前我國草業(yè)科學專業(yè)學生信息學課程改革面臨的主要問題之一。
目前,被廣泛應用于大數(shù)據(jù)分析的編程語言主要包括Perl、R 和Python 語言等。其中,相比其他語言,R 語言具有開源免費,統(tǒng)計模塊極其豐富和強大等特點,受到廣大科研工作者的追捧和喜愛,應用也越來越廣泛[5]。另外,R 語言的一個獨特之處是具有非常強大的數(shù)據(jù)可視化能力,可在極少編程腳本的情況下繪制出精美、多樣的可發(fā)表級圖形[6]。因此,在教授、培養(yǎng)和提高非計算機專業(yè)學生編程能力方面具有獨特的優(yōu)勢。俗話說:“一圖勝千言”。相較之文字和理論的單調、無聊以及晦澀難懂,精美的圖形具有更強的視覺沖擊力,更能吸引學生的注意。因此,對于草業(yè)科學專業(yè)學生編程能力的培養(yǎng),在傳承傳統(tǒng)編程類教學模式的基礎上,引入R 語言繪圖作為學生編程能力教育的入門課,對于培養(yǎng)和提高學生編程能力將具有積極的推動作用。
截至目前,國內高校對生物學類專業(yè)編程課程的開設及學生系統(tǒng)編程能力的培養(yǎng)仍普遍不足。筆者通過利用問卷星(https://www.wjx.cn/)在線問卷調查方式,對蘭州大學草地農業(yè)科技學院2016 級-2019 級四個年級3 個專業(yè)(草業(yè)科學、草業(yè)基地班及農林經(jīng)濟管理)的本科生進行了有關編程語言掌握和學習基礎的摸底問卷調查。調查實際回收問卷共241 份,參與調查問卷男女比例分別為47.3% (114)和52.7% (127)。調查結果顯示(圖1),高達54.36%(131)和42.74% (103)的學生分別對編程一點不了解或者一般了解,只有2.9% (7)的學生對編程非常了解。在對編程技能的認可程度上,分別有56.02%(135)和39.83% (96)的學生認為掌握一門編程語言對自己的學習和發(fā)展非常重要或一般重要,只有4.15% (10)的學生認為不重要。相對應的,有55.19%(133)和41.08% (99)的學生非常愿意或愿意花費一定精力來學習一門編程語言。對于學習一門編程語言最大困難的認識:47.3% (114)的學生認為自身基礎太差,37.76% (91)的學生感覺入門太難,14.94%(36)的學生認為相應的學習環(huán)境和氛圍不利于自身編程學習。綜合以上調查結果,總體上蘭州大學草地農業(yè)科技學院學生對編程語言的了解和掌握程度不盡如人意,但普遍上學生都認識到了編程語言的重要性,并具有極強的意愿去學習和精通一門編程語言。針對學生普遍認為的基礎差和入門太難是阻礙自己學習編程語言的主要攔路虎的特點,在具體的授課內容和形式上如何克服這兩大問題則是編程課程改革需要著重考慮的問題。
圖1 蘭州大學草地農業(yè)科技學院本科生編程調查問卷Figure 1 The questionnaire of programming for undergraduate of College of Pastoral Agriculture Science and Technology, Lanzhou University
編程語言的學習需要充分調動學生的抽象思維、邏輯思維以及空間思維,要求學生能夠學以致用,堅持不懈,才能較好地掌握一門編程語言。傳統(tǒng)的編程授課常常與數(shù)理統(tǒng)計相關聯(lián),要求學生需要有較強的數(shù)理統(tǒng)計基礎,因此對學生編程學習的入門要求較高。如果學生數(shù)理統(tǒng)計基礎較差的話,整個編程學習的過程則會顯得異常艱難,從而不能達到最終的教學效果。筆者通過多年的教學、研究發(fā)現(xiàn),通過引導學生利用R 語言命令行編程,不但輕松快速,而且可實現(xiàn)精美科研繪圖的繪制。這樣既能提高學生學習編程的自信心,也可以極大地激發(fā)學生編程學習的興趣。因此,相輔于傳統(tǒng)編程教學的途徑和方法,對草業(yè)科學專業(yè)學生采用以R 語言繪圖作為引導課程,對于輔助學生編程學習快速入門和編程能力的提高都具有積極的推動作用。
2.1.1 R 語言、Rstudio 軟件及ggplot 2 繪圖包概述
介紹R 語言、Rstudio 軟件及ggplot 2 包的起源、發(fā)展歷程、應用現(xiàn)狀以及主要優(yōu)勢和特點[7],使學生在了解R 語言本質特征的基礎上激發(fā)學生在Rstudio環(huán)境下利用ggplot 2 包學習科研繪圖和R 語言編程的興趣。
2.1.2 R 語言繪圖基本操作及原理
講解R 語言和Rstudio 軟件的下載、安裝及升級方法。介紹R 語言常用CSV(逗號分隔文本)數(shù)據(jù)格式及數(shù)據(jù)導入方法。示范講解常用R 語言包的安裝、卸載、升級、幫助文件查看的方式及常見問題的解決方法。著重講解ggplot 2 繪圖基本要素、繪圖語法以及關鍵、常用的繪圖函數(shù)。
2.1.3 階段性教學內容
根據(jù)編程語言學習的規(guī)律,在教學內容設計方面遵循由易到難、由點到面、循序漸進的原則,根據(jù)不同授課階段設定相對應的教學繪圖內容。教學過程總體分為基礎階段、提升階段和補充階段3 個階段。緊密結合本專業(yè)學科特點選擇每個階段的繪圖類型,盡量選擇廣泛應用于本學科研究中的圖形,從而有利于學生學以致用,提高學習效率和學習興趣。
基礎階段:在學生了解掌握了R 語言基礎及數(shù)據(jù)格式特征的基礎上,教授學生利用ggplot 2 包通過命令行繪制較為簡單常用的圖形,包括柱狀圖、線狀圖及散點圖等(圖2)。通過該階段的繪圖學習,使學生基本掌握ggplot 2 包繪圖的基本語法及規(guī)律,感受利用R 語言編程途徑繪制圖形的優(yōu)勢,克服畏懼心理,建立學習自信心。
提升階段:在基礎階段學習的基礎上,進一步教授學生ggplot 2 包繪圖的圖層疊加語法體系。通過添加不同命令行的方法,在基礎繪圖的基礎上繪制較為復雜的圖形,包括誤差圖、餅圖、回歸分析圖、分面圖(圖3)及多圖合并(圖4)等。通過提升階段的學習,使學生能夠通過自由編排繪圖腳本達到繪制不同要求的復雜圖形,做到融會貫通,舉一反三。
補充階段:此階段學生已經(jīng)掌握利用R 語言編程繪制不同圖形的基本原理和方法,在此基礎上,通過教授學生如何修改不同參數(shù)來完善和提升作圖效果,包括修改坐標軸、圖例、主題、背景、顏色、形狀、注釋及圖片輸出等,最后繪制出可發(fā)表級別的圖形,并最終熟練掌握R 語言編程要領,為后續(xù)深入學習R 語言及其他語言編程打下理論和思維體系基礎。
圖2 教學基礎階段不同繪圖教學內容Figure 2 The teaching contents at the basic stage
圖3 教學提升階段不同繪圖教學內容Figure 3 The teaching contents at the improving stage
圖4 教學提升階段多圖合并教學內容Figure 4 The teaching content of multiple graphs merger at the improving stage
授課過程主要包括課堂講解、學生上機實習以及課后輔導3 個主要部分。隨著個人筆記本電腦的普及,課堂講解和學生上機實習可以有機整合在一起,達到老師講解和學生操作的同時完成,以提高教學效果。課堂講解過程,應著重講解不同命令行的具體含義及作用,要求學生在聽課過程的同時敲入繪圖腳本,并實時觀察不同命令行的具體繪圖結果,加深學習印象。課后通過構建雨課堂、微信班級群等網(wǎng)絡工具對學生進行輔導。對學生提出的問題可通過文字、語音以及錄制操作視頻等方式進行及時反饋,精心呵護學生的求知欲和學習興趣。根據(jù)教學進度和學生掌握R 語言編程知識的程度,有選擇性推薦優(yōu)秀的中英文R 語言編程社區(qū)和網(wǎng)站,引導學生自主學習,主動拓寬知識面,加強編程思維和能力。
鑒于編程語言實踐性強的特點,為鼓勵和加強學生平時對課程知識點的訓練和復習,課程最終成績應更注重平時成績,采取平時和期末考試成績?yōu)? : 1 的比例進行計算。期末考試主要包括基礎理論知識和實際編程能力考核。平時成績除反轉課堂(flipped classroom)[8]學生表現(xiàn)外,還應通過多次課后作業(yè),要求學生根據(jù)任課老師提供的原始數(shù)據(jù)進行不同類型圖形的繪制。平時考核根據(jù)學生不同水平,提供不同的練習內容,既要避免作業(yè)內容過于簡單,使得程度高的學生覺得無趣,浪費時間;又要避免內容過于復雜,打擊程度差學生的學習積極性。為了有效防止學生之間提交作業(yè)的抄襲,真正掌握學生學習效果,在提交書面作業(yè)的同時要求學生提交自己作圖過程的視頻,要求學生對每個步驟的具體含義和作用進行講解,從而實時了解不同學生對課程知識點的掌握程度,進而可以有計劃的對不同學習程度的學生進行區(qū)別化輔導。
“千里之行,始于足下?!笔炀氄莆找婚T編程語言是一個長期堅持不懈學習的過程,而是否能夠很好地入門則決定著學生后續(xù)的學習效果。草業(yè)科學專業(yè)學生編程學習的顯著特點就是編程基礎差,對編程保有一種神秘感,導致其在學習過程中具有顯著的畏懼心理,更容易因為入門難等問題而中途放棄。針對這類問題,在課程伊始即對R 語言的發(fā)展歷程進行詳細介紹,使學生對R 語言的內在特點及編程規(guī)律具有充分的了解和認識。為了達到快速克服學生畏懼心理及降低入門的難度,在R 語言科研繪圖的眾多內容中選擇ggplot 2包在繪圖中的應用及編程方法進行集中教授,避免過多課程內容對學生學習產生干擾,影響學生學習效果和學習動力。在繪圖演示過程,利用R 語言命令行繪圖腳本中可以在“#”后面直接添加文本注釋的特性,通過對關鍵命令行內容進行注釋并詳細講解,同時對照命令行出圖結果,直觀地讓學生理解每行命令的功能,從而快速構建R 語言命令行繪圖思想體系,提高學生學習效果(圖5)。與此同時,根據(jù)不同的教學進度給學生推介不同類型優(yōu)秀的國內外R 語言學習網(wǎng)站和交流社區(qū),例如“Plotting in R for Biologists”(http://omgenomics.com/plotting-in-r-for-biologists/),“R 語 言 中 文 社 區(qū)”(https://blog.csdn.net/kmd8d5r),“R-bloggers”(https://www.r-bloggers.com/)等,通 過引導學生接觸優(yōu)質學習資源來拓展知識面,逐漸從被動教授變?yōu)橹鲃訉W習,達到快速入門學習的效果。
在R 語言繪圖中,對繪圖數(shù)據(jù)的理解程度直接影響著學生編程的思維和作圖結果的優(yōu)劣。為了提高授課效果,對授課過程中每類繪圖原始數(shù)據(jù)都不能直接沿用出版物或網(wǎng)上資料的數(shù)據(jù),而應針對本專業(yè)學科的特點設計學生比較熟悉的數(shù)據(jù),以便于學生理解和應用。例如,針對微觀研究方向,可以利用不同基因在不同處理下的基因表達量作為原始數(shù)據(jù);對于宏觀研究方向,可以利用某野外實驗站不同年份降水量、積溫以及作物生物量數(shù)據(jù)等用以不同圖形的繪制。
為了提高學生學習的興趣,根據(jù)學生參與科研實踐內容自由分組,利用反轉課堂的形式,要求學生利用自己所學的R 語言編程繪圖知識對自己參與的課題,例如國創(chuàng)、校創(chuàng)或跟隨本科生導師開展的課題所獲得的數(shù)據(jù)進行作圖,并上臺進行講解演示,同時要求其他學生進行點評。通過該形式,不僅可以讓學生進一步鞏固和靈活運用所學知識,獲得更多的滿足感,而且可以讓學生真正做到學以致用,提高科研能力。
另外,授課過程不拘泥于傳統(tǒng)的教師講授,學生聽講的形式。通過不定期的學生作業(yè)展示評比、作圖腳本挑毛病小游戲以及作圖擂臺比賽等形式,以學生為主導,充分調動學生學習的積極性和參與性,在有趣活躍的互動氣氛中,鞏固學生已學知識,加深印象,拓寬編程視野,提高學生自主學習的能力和動力。
圖5 腳本注釋(圖左綠色文字)和實時結果觀測(圖右)輔助編程學習法Figure 5 The assisted programming learning method with script annotation (the green scripts in left graph)and real-time drawing result observation (graph in right)
經(jīng)過多年實踐證明,通過基于R 語言繪圖引導的教學模式不僅能夠有效幫助草業(yè)科學專業(yè)學生克服對編程學習的畏懼心理,同時也能夠激發(fā)學生編程學習的興趣和熱情,達到了快速入門編程學習的目的,起到了良好的教學效果。近年來,通過本模式學習的本科生和研究生已經(jīng)基本能夠輕松利用R 語言編程完成其科研工作中的繪圖工作并發(fā)表了英文文章[9],部分學生也因此獲得了良好的編程能力,最終被保送北京大學、中國科學院等高等院校繼續(xù)進行生物信息學相關專業(yè)的深造。在此基礎上,今后將繼續(xù)總結新的教學經(jīng)驗,不斷調整、優(yōu)化教學設計和內容,進一步深化編程教學改革,從而更有效地培養(yǎng)具有較強編程能力和實踐能力的復合型草業(yè)科學專業(yè)人才。