蘇婧 莫欣岳 李歡
摘? 要:計算機程序設計作為高校大氣科學專業(yè)的重要基礎課程,旨在培養(yǎng)學生應用計算機語言編程并解決大氣科學領域實際問題的能力。在信息技術高速發(fā)展的今天,如何開展合理的課堂教學和有效的實踐訓練,以滿足新時期國家和社會對大氣人才培養(yǎng)的要求,是高校課程改革的主要目的。該文基于作者十幾年教學實踐的經驗與思考,從編程語言和教材的選擇、課堂教學方式、實踐訓練環(huán)節(jié)等方面,對目前大氣科學專業(yè)程序設計課程教學中存在的問題進行探討和總結,并提出具體的教學改革思路和方法,以期為完善課程體系建設、提高教學質量提供借鑒。
關鍵詞:大氣科學;Fortran語言;程序設計;教學改革;實踐訓練
中圖分類號:G642? ? ? ? 文獻標志碼:A? ? ? ? ? 文章編號:2096-000X(2023)30-0122-04
Abstract: As a fundamental course of Atmospheric Sciences, Computer Programming aims to cultivate students' ability to apply computer language to program and solve practical problems in Atmospheric Sciences. With the rapid development of information technology, how to conduct reasonable classroom teaching and effective practical training to meet the requirements from the state and society for the cultivation of talents in Atmospheric Sciences in new era is the main purpose of curriculum reform in university. Based on the experience and thinking of teaching practice for more than ten years, the problems existing in the teaching of the programming course of Atmospheric Sciences are discussed and summarized from the aspects of the selection of programming language and teaching materials, classroom teaching methods and practical training in this paper. To overcome these problems, some specific ideas and methods of curriculum reform are proposed, expecting to provide reference for improving the curriculum system construction and teaching quality.
Keywords: Atmospheric Sciences; Fortran language; programming; teaching reform; practical training
第三次科技革命是人類文明史上繼蒸汽技術革命和電力技術革命之后科技領域里的又一次重大飛躍。計算機技術的發(fā)展作為第三次科技革命的產物,有效推動了社會信息化時代的進步,并且其應用已經深入到社會的各個領域。大氣科學的發(fā)展始終與計算機技術的進步密不可分,歷史上正是大型計算機的出現,提供了海量數據處理和計算的能力,才使得數值天氣模式進行短期天氣預報和氣候模式開展長期氣候變化預測成為可能。20世紀上半葉數值預報理論已建立,但由于人工計算能力的限制,無法利用微分方程的數值化解法實現氣象參數的預報,氣象學者們認識到計算速度已經成為了制約數值預報發(fā)展的最大“瓶頸”。直到二戰(zhàn)后期美國氣象學家查尼(J G. Charney)和計算機之父馮·諾依曼(Von Neumann)合作,于1950年在世界第一臺計算機上首次成功實現了氣象高度場的24小時預報,之后隨著數值預報業(yè)務與資料同化方法的進步,數值預報對計算速度的需求也與日俱增,氣象預報部門也成為世界上最先進計算設備首先應用的領域之一??梢赃@樣說,沒有計算機科學與技術的進步,就沒有大氣科學的發(fā)展。
目前,大氣科學受益于計算和遙感技術的大力推動,實現了中短期天氣預報、長期氣候預報與全球監(jiān)測,已經發(fā)展到了一個全新的階段。利用計算機進行程序設計從而解決大氣科學中的各種問題,成為從事大氣科學相關科研和業(yè)務的必備能力[1]。因此,在大氣科學專業(yè)的本科教學中,計算機程序設計一直是一門重要的必修專業(yè)課程。如何通過這門課程的學習,讓學生掌握一門高級程序設計語言,了解大氣學科中常用的數值算法,使學生具有利用程序設計解決學科中一般問題的能力,滿足新時期國家和社會對大氣人才培養(yǎng)的需求,是教師在這門課程教授時必須思考的問題[2]。因此,選擇適合的程序設計語言和教材,進行合理的課堂教學,開展有效的實踐訓練,是程序設計課程教學的3個重要方面。本文將結合作者對程序設計課程十幾年的教學實踐經驗與感悟,從上述3個方面對本課程的教學和改革進行探討。
一? 精選語言教材,扎實做好課前準備
(一)? 確定適合的編程語言
程序設計語言即計算機語言,是人類對計算機發(fā)出的指令,也是人類與計算機進行溝通和交流的工具[3]。計算機語言分為機器語言、匯編語言和高級語言,其中前兩種又可以統(tǒng)稱為低級語言,由于使用二進制和機器代碼編寫,主要用于內核程序的編寫,因此面向用戶受到限制。高級語言的指令更接近人類語言且通用性大大提高,對用戶更加友好,成為各行業(yè)主要應用的計算機語言。Fortran、Pascal、C++、Java、MATLAB和Python等都是當前被廣泛使用的計算機高級編程語言,并由于各自的特點受到不同領域用戶的青睞。Fortran、IDL、Matlab、NCL以及Python在大氣、海洋等科學計算領域被廣泛應用。其中Fortran作為最早出現的計算機高級語言,由于其強大的數值計算能力,是一門適合科學計算和工程分析的程序設計語言,也一直都是大氣科學的科研和業(yè)務中最常使用的編程語言,并且經過60年的發(fā)展積累了大量模式源程序[4]。目前,包括全球長期氣候模式GCM、大氣數值預報模式MM5和WRF,以及輻射傳輸模式LBLRTM和RRTM等一批重要模式都是采用Fortran語言進行編寫。因此,在高校大氣學科教學中,通常將Fortran語言作為第一門程序設計語言,并在本科生第一或第二學年安排教學。本文將以Fortran語言為例,對大氣科學專業(yè)程序設計課程的相關教學改革問題進行探討。
(二)? 精選授課教材
Fortran語言開發(fā)使用較早,已有很多經典教材用于高校教學。例如譚浩強主編的《FORTRAN語言》,白云編著的《Fortran95程序設計》,彭國倫編寫的《Fortran程序設計》等。這些教材各有特點,有的簡明扼要適于初學者入門,有的詳實全面利于進一步的深究,基本能應對不同的教學需求。但對于大氣科學專業(yè)的學生來說,這些教材由于缺少與專業(yè)領域相關的問題實例,學生往往覺得該課程是計算機專業(yè)的課程,與大氣科學專業(yè)聯(lián)系不緊密,因此產生抵觸心理,在教學過程中難以激發(fā)學生的學習興趣。而由氣象出版社出版的南京信息工程大學薛勝軍等編著的《Fortran語言程序設計》和蘭州大學張健愷等編寫的《Fortran語言及應用》2部教材則主要針對大氣科學專業(yè)[5-6]。教材中不僅包含了選擇法和冒泡法排序、斐波那契數列等經典的數學算法,還結合了氣象觀測數據缺省值的處理、極端天氣的判定、數值方程求解以及衛(wèi)星和再分析數據處理等大氣學科中的常見問題,開展實例設計。例如教材中例題通過結合臺站常見降水等級劃分問題,演示if判斷語句的使用;結合數值方程常用求解的牛頓迭代法,演示條件循環(huán)語句使用;結合衛(wèi)星數據的變量賦值,演示三維數組的使用方法。這些例題通過學科中常見的問題舉例,向學生展示使用FORTRAN語言解決實際問題的方法,使學生在學習FORTRAN語言時能和專業(yè)知識緊密結合,從而激發(fā)學生學習興趣,產生學習源動力。因此,選擇合適的教材不僅可以通過該課程的學習讓學生掌握程序設計的基本思想和方法,還能培養(yǎng)其使用Fortran語言解決學科中實際問題的能力,為后續(xù)統(tǒng)計天氣預報、數值方法、數值天氣預報等專業(yè)課的學習奠定程序設計基礎。
二? 改革教學方式,合理開展課堂教學
(一)? 教學方法的改革創(chuàng)新
高校課堂理論教學通常采用口述結合板書或多媒體進行,雖然這種教學方法對于教師更易于控制教學內容和節(jié)奏,在規(guī)定課時內呈現較多的信息量,但是會令學生覺得枯燥,不能有效調動學習積極性[7]。特別是對于程序設計這種技能實踐類課程,與其專業(yè)課程不同,其教學目標不是通過講授令學生理解知識點從而對整個課程體系進行系統(tǒng)學習,而是要掌握一門實踐技能[8]。無論前期對方法要點的講述多么詳盡,最終目的都是要能靈活熟練地應用。美國國家訓練實驗室的學習金字塔理論中,提出學習分為被動學習和主動學習,其中被動學習包括聽講、閱讀、視聽和演示,通過這4種方法對知識的吸收比例分別為5%、10%、20%和30%,即如果采用被動學習方法,則對知識的透徹理解非常有限,而如果采取討論、實踐和講授等主動學習方法,對知識的吸收比例可以上升到50%、70%和90%。由此可見,采用主動學習方法能夠有效提高學生對知識的理解和吸收,特別是對于程序設計此類技能型課程。因此,在課堂教學中如果全程僅使用口述結合PPT的教學方法,學生往往會處于被動學習狀態(tài),其對知識點的掌握最多不超過30%,就會在課堂上經常出現知識和例題聽起來很容易理解,但獨立編程時卻無從下手、程序報錯時不會修改等問題。實踐證明,常規(guī)的被動教學方法并不完全適用于程序設計這類課程的教學。在今后的課程教學改革中,教師課堂教學在使用口述和PPT進行知識點講解的同時,還應增加編程實例和常見問題修改的演示環(huán)節(jié),允許支持所有學生攜帶筆記本電腦,在教師演示時學生可以同步在自己的電腦上進行代碼編寫和錯誤修改。這樣不僅能夠幫助學生在課堂上緊跟教師思路,及時掌握課程內容的重點和難點,而且可以有效激發(fā)學生的學習熱情和動力,與教師同步編程、修改、探討,從被動學習轉化為主動學習,進而更為深刻地理解和領會課堂講授知識在實際編程中的應用。
(二)? 算法學習貫穿教學始終
算法是指解決問題的思路和方法,在編程時可以使用不同的語言結構,但其背后的算法都是一致的,因此編程的核心就是算法,也被稱為程序設計的靈魂[9]。多年教學實踐中我們發(fā)現,很多初學者面對實際的編程任務無從下手,主要并不是由于語法規(guī)則和結構有多復雜,而是不知道如何對問題進行分解并通過編程來實現。例如在對數據進行大小排列時,如何將排序問題轉化為循環(huán)結構,才是編程的關鍵。因此,對算法的理解越透徹則編程越容易。但在實際教學中,部分算法對于剛接觸編程的本科生來說覺得難以理解,究其原因,主要因其早已熟悉習慣的是數學解析思維,是以自身面對問題的解決思路為出發(fā)點的,但在編程中解決問題的主體并不是我們自身,而是計算機,這就需要編程者在思考問題時進行主體轉換,以計算機視角思考如何發(fā)揮其優(yōu)勢解決問題。以1到100(或更大數據)連加的簡單問題為例,如果從自身解題的思路出發(fā),首尾相加進行湊整的高斯法對于大腦計算是最簡便快捷的,會是最容易選擇的方法,但按此算法編寫程序卻繁瑣復雜;如果以計算機為主體,由于大量重復的計算是其優(yōu)勢可以利用循環(huán)結構容易實現,因此,不斷重復兩數相加的這種對于人們來說不易計算的“笨辦法”,卻是計算機編程最容易實現的算法。再比如,對于典型的水仙花數問題,數學思維中需要聯(lián)立方程求解,而對于計算機而言則可以利用計算優(yōu)勢對所有定義內整數進行檢驗。從以上舉例中可以看到,在面對問題設計算法時,編程者需要將解決主體從個人轉化為計算機,然而這種轉換對于初學者并不容易,需要在實踐中不斷進行算法構建訓練,才能熟練完成這種轉換,形成下意識思維。然而教材中通常只在第一或第二章節(jié)給出算法的概念并例舉一些經典案例,后續(xù)章節(jié)則主要介紹語法規(guī)則、選擇和循環(huán)結構、數組及文件等方面的知識,不再強調算法。如果僅在一個章節(jié)的學習中進行算法講解,而后續(xù)章節(jié)則側重語法知識和結構的講授,不對例題和算法進行歸納總結,那么學生很難對不同類型問題的算法有深入了解,進行思路轉化訓練,也就不能設計出合理有效的程序。因此,在課程教學過程中,對算法的學習應該是貫穿整個教學環(huán)節(jié)的。在教材的不同章節(jié)中,除了講述循環(huán)、數組、子程序等內容,也應對例題相關算法進行梳理,令學生在整個課程的學習中,始終在學習和應用算法,牢固掌握典型問題解法,這才是程序設計的核心。
三? 夯實編程基礎,有效推進實踐訓練
(一)? 重視課后實踐
計算機程序設計作為一門技術實踐類課程,將課堂理論教學和課后上機實踐相結合是其重要特點[10]。上機實踐是程序設計課程的必要環(huán)節(jié),學生只有在實踐中通過獨立編寫、修改程序,才能真正掌握分析、設計、編程和測試的能力。否則只是學而不練,就會造成“什么都學過,卻什么都不會”的尷尬局面。正如學習駕駛一樣,教練講解的交通規(guī)則和駕駛規(guī)則是必須要掌握的學習基礎,可如果只是將這些知識點記牢,不實際駕車進行行駛訓練,就不可能學會駕駛,也根本無法體會教練所講授的技巧。因此,對于技能實踐類課程,要以培養(yǎng)學生解決實際問題的能力為主要教學目標,并通過實踐環(huán)節(jié)來實現這一目的,令學生做到學以致用。以筆者所在單位為例,在當前的課程設置體系中,除了36學時的課堂教學之外,同步配套了36學時的上機實踐課,目的就是利用上機實踐鍛煉學生的實際編程能力。
然而在教學實踐中發(fā)現,學生對上機實踐課不重視的現象普遍存在。一部分學生認為課堂講授才是重點,只要期末考試卷面成績得到高分就達到了目的,故一開始就對實踐課產生了輕視心理;而另一部分學生在初期課堂教學時能理解所學內容,但在實踐課獨立編寫程序時,出現不會構建算法或不會修改程序運行中遇到的語法問題的現象,而一旦無法輕易解決困難就會止步不前,進而產生急躁、畏難情緒,失去信心,逐漸回避實踐課的練習。
在教學實踐中,我們針對上述2類情況分別采取了一系列改革措施,并取得了較好的效果。對于心理上不重視、持有懈怠情緒的情況,在課程初始階段就應向學生說明程序設計是一門實踐應用型課程,強調配套實踐課的重要性及其實際應用意義,并在后續(xù)授課中反復強調這一理念,從而令學生先入為主地加強對實踐課的重視程度。其次,通過豐富課堂教學方式,鼓勵學生在課堂中與教師同步編寫程序,讓學生切身感受到自己動手編程的重要性。同時,對實踐課期末考試方式進行改革,用上機實踐考試代替卷面筆試作答方式,讓學生隨機選擇3道題在規(guī)定時間內編寫程序得到結果,根據運算結果的正確性、完整性及完成時間得到最后分數。除此以外,還增設期末綜合實踐環(huán)節(jié)用以鍛煉學生解決實際問題的能力,其成績可按比例計入期末成績。例如,為學生提供某一氣象臺站近60年實測的日平均溫度數據,要求其進行數據處理,計算月、年平均溫度和溫度距平等參數,根據參數值畫圖分析臺站近60年極冷、暖年份以及季節(jié)、年均溫度和距平變化趨勢。這種綜合實習不僅能讓學生熟悉臺站觀測數據的放置格式和處理方法(比如溫度數據需要乘以0.1才是實際溫度),在計算過程中學習如何使用數組進行大量數據的處理,使用循環(huán)語句計算平均溫度和距平;而且還能夠促進學生開展自我延伸學習,比如繪圖和趨勢分析方法。結合這類大氣科學中常見的實際問題,開展綜合訓練,以練代學,能夠加強學生對所學知識的復習、應用,有效地鍛煉其利用程序設計解決專業(yè)問題的能力。通過以上改革方法,切實從學生的思想認識、切身感受和考核機制等方面加強對實踐環(huán)節(jié)的重視程度。對于學生畏縮不前、信心不足的情況,在設置實踐課習題時要注意難易結合,甚至可以從例題的模仿編譯開始,循序漸進、由易入難。在實踐中我們發(fā)現,開始哪怕僅是幾行語句的程序或是簡單的模仿編譯,但只要學生愿意動手實踐,就能從中感受到程序運行成功的喜悅,進而產生一種積極的正向反饋,對編程產生一種“我可以”“我能行”的自信而不再是畏懼心理,并對后續(xù)逐步培養(yǎng)自主編程能力建立了心理優(yōu)勢。同時,教師在實踐課上要隨時關注并及時幫助學生調試運行程序,特別是在編程初期,學生容易陷入一些初級問題不能及時解決,從而焦躁并喪失信心,如果此時經驗豐富的教師能給予及時指導,就會幫助其在這一過程中積累經驗和樹立信心,今后即使面對更難的問題也能從容應對。但由于班級學生通常在40~50人,僅靠一位授課教師很難顧及所有學生的需求,而本院的研究生往往因科研工作需要而熟練掌握了編程技巧,故可在本科實踐課上配備1~2名研究生助教輔助教學。上述方法已成功應用在教學改革實踐中,受到學院教師和學生的廣泛認可。
(二)? 編程實踐貫穿學習階段
目前,程序設計課程一般開設在本科第一或第二學年,學生通過一學期扎實的課堂學習和實踐鍛煉,在學期結束時普遍具備了獨立編程的能力,部分學生甚至可以利用程序設計解決一些復雜問題,教學效果能夠達到預期要求。但教師在本科第四學年指導學生完成畢業(yè)論文時卻發(fā)現,一些學生的編程水平不進反退,個別學生甚至對程序設計已經十分陌生。究其原因,主要是因為在程序設計課程的學習結束后,很多學生缺乏后續(xù)的實踐練習,由此可見,實踐技能類課程的學習一定要在不斷地練習中積累經驗,提升應用能力。因此,在本科高年級開設的數值分析、統(tǒng)計天氣預報等專業(yè)課的學習中也應重視實踐練習,利用編程解決實際問題,不斷提高編程能力,使之成為能夠靈活使用、融入自身的一門技能。
四? 結束語
大氣科學與計算機技術的發(fā)展密不可分,計算機程序設計已成為大氣學科的一門重要專業(yè)基礎課程。本文結合筆者十幾年的本科教學經驗,總結了目前大氣科學專業(yè)程序設計課程教學中存在的一些問題,并提出了相應的解決思路。本文提出要在確定適合的程序設計語言和教材的基礎上,將合理的課堂教學和有效的實踐訓練有機結合,真正實現教學實踐一體化,有效推進高校程序設計課程教學實踐改革。讓學生感受通過編程解決問題的成就感,在學習過程中充分調動學生的主觀能動性,增強學生獨立自主編程的信心,形成正反饋,在不斷的練習中積累經驗、總結方法,逐步掌握該項技能,游刃有余地解決專業(yè)領域問題,為日后的科研和業(yè)務工作奠定堅實基礎。
參考文獻:
[1] 陳純毅,楊華民,任斌,等.激光大氣湍流傳輸數值實驗建模與計算機模擬[J].系統(tǒng)仿真學報,2018,30(6):2133-2143.
[2] 樊仲欣,朱彬,呂晶晶,等.氣象實驗教學現代化信息系統(tǒng)的建設與實現[J].實驗室研究與探索,2021,40(7):140-143,157.
[3] 左正康,劉志豪,黃箐,等.Apla與程序設計語言泛型特性比較研究[J].江西師范大學學報(自然科學版),2019,43(5):454-461.
[4] 瞿子晶,鐘圣俊.WebGIS和SLAB模型的突發(fā)性大氣污染事故模擬和應用[J].環(huán)境科學與技術,2014,37(5):107-111.
[5] 薛勝軍,耿煥同.FORTRAN語言程序設計[M].北京:氣象出版社,2009.
[6] 張健愷,張珂銓.FORTRAN語言及應用[M].北京:氣象出版社,2021.
[7] 何紹明.“互聯(lián)網+”背景下的高校課堂教學改革路徑探究——評《互聯(lián)網+教育:教與學的變革》[J].中國教育學刊,2022(9):110.
[8] 關成斌,李連,王捷,等.非計算機專業(yè)第二程序設計語言“速成”教學探索與實踐[J].計算機工程與科學,2019,41(S1):186-189.
[9] 劉雨薇,李茹.線上線下混合式教學在“算法設計與分析”課程中的應用研究[J].教育理論與實踐,2021,41(9):62-64.
[10] 宋友.面向大類工科專業(yè)的程序設計課程教學改革[J].中國大學教學,2018(11):47-50.
基金項目:蘭州大學教育教學改革研究項目“深度機器學習在大氣科學中的應用探索”(JYXM-2020-20375);中國高等教育學會2022年度高等教育科學研究規(guī)劃課題“國際學生網絡輿情監(jiān)測和應對機制研究”(22LH0409);教育部產學合作協(xié)同育人項目“校企深度合作推進計算機領域一線教師師資培訓”(220902070162538);海南省自然科學基金“數據驅動的空氣質量預報深度學習模型的關鍵技術研究”(623RC457);海南大學科研啟動基金項目“基于人工智能和大數據的空氣質量預報建模研究”(KYQD(ZR)-22097);海南大學教育教學改革研究項目“新工科背景下基于項目驅動和混合式教學的課程教學改革研究—以《數據倉庫與數據挖掘》為例”(hdjy2364)
第一作者簡介:蘇婧(1983-),女,漢族,甘肅蘭州人,博士,副教授,碩士研究生導師。研究方向為大氣物理學與大氣環(huán)境。
*通信作者:莫欣岳(1991-),男,漢族,甘肅蘭州人,博士,講師,碩士研究生導師。研究方向為大氣科學、人工智能與大數據。