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