賀秋瑞 郭晨睿 鄭雅馨
(洛陽師范學院信息技術學院 河南洛陽 471934)
自20世紀90年代以來,一直作為高等院校的基本計算機語言課程,在全世界范圍內得到了普及[1-2]。C語言與其他計算機語言相比,能夠很好地描述數學模型和物理模型,具有強大的表達能力,豐富的語言功能,運行效率高且移植性強等優勢[3]。目前,C語言已成為計算機科學與技術、電子信息工程、網絡工程、軟件工程等理工類專業的學生必須掌握的計算機高級語言。學生通過對課程的學習,可培養運用計算機語言解決實際問題的能力,同時具備計算機高級語言設計的基本能力和基本的編程思想,為后續應用性課程和專業課程的學習、系統開發以及從事相關專業領域工作等打好計算機語言基礎[4-5]。本文針對本校C程序設計課程在教學過程中存在的教學內容與實際應用結合不緊密、教學模式和考核方式單一的問題,鑒于教師在數據處理類科研項目中C語言發揮的重要作用,通過教學過程與科研項目的融合,從提高課堂學習效率和培養學生實踐應用能力的角度,對C程序設計的課堂教學方式的改革進行了研究并提出改進措施。
面對信息技術和工程應用的快速發展,提高學生的實踐動手和理論學習能力,加強培養和提高學生使用C語言進行系統和應用軟件開發、信號和信息處理以及相應信息服務的能力,已然成為國內高等學校教育教學的核心工作之一。結合自身一線教學過程中的體會和思考,目前,C語言課程教學在學生學習和教師教學方面均有待進一步提升的空間。
在學生學習方面,由于現代生活中手機、電腦等電子產品的普及,無形中改變了學生的學習方式、生活方式以及思維方式。目前,多數大學生習慣于使用電子產品中市場化軟件解決生活或學習中遇到的問題,而不關心軟件是如何架構、編寫和實現的,這導致學生從主觀意識上對于編程類課程的興趣不足。在C語言課程的學習過程中,大部分學生的學習目的比較直接,并不能意識到C語言課程在個人專業學習過程中發揮的重要作用,單純只是為了通過期末考試,拿到所修學分。除此之外,很多學生還存在學習效率低、學習方法不當、動手能力差等問題,這也是學生對計算機語言類課程興趣低下的原因。上述這些問題均是影響C語言課程的教學的不利因素,導致教學效果差,課程結束后學生未能掌握應具備的計算機語言編程能力,進而影響學生后續專業課程的學習、考研以及就業等。
在教師教學方面,傳統的教育思維方式和教學手段面臨著前所未有的挑戰。一方面,C語言課程內容與實際應用結合不緊密。目前很多高校的C語言課程是在大一階段開設的,學生對自己的專業缺乏了解,對于自己的專業課程要學習的內容,將來從事的工作以及學習的專業知識的具體應用等問題不甚了解。同時,大多數C語言課程的講述內容僅限于基礎編程部分,用于解決生活中一些簡單的數學計算,并不講授與自己專業相關的知識的應用。換句話說,學生對于目前所學習的C語言知識的目的不明確。這就導致學生學習完該課程后,對于為什么要學習該門課程存在很大的疑惑,進而致使學生學習積極性與主動性不高,學習效果和效率大打折扣。另一方面,教學模式比較單一,多數教師還是采用灌輸式教學,仍然是按照教材章節內容,順序介紹各個知識點及應用,這樣的教學內容與專業知識基本沒有關聯、學習枯燥,導致學生不會應用所學知識解決本專業的相關問題。除此之外,C語言課程考核方式目前主要采取閉卷筆試或上機操作少量編程題目的方式。閉卷筆試使學生陷入死記硬背的復習模式,造成學生分數不低,但編寫程序的能力較差。而上機考試只能對部分基礎知識進行測試,同時又容易導致學生不重視學習過程,只側重對編程操作相關的語句的學習,進而導致學生考完之后很難對C語言課程所學的內容有深入理解和掌握,無法達到通過考核促進學習以及檢驗掌握知識程度的目的。
針對大一新生的特點,如何實現讓學生從傳統的高中學習模式到大學專業學習模式的平穩過渡,是大一階段課程教學的重要目標。雖然C語言一直作為計算機語言的入門課程,但是其教學內容和學生在高中階段的語數英等課程是有很大區別的,雖然理論講授內容也存在大量的記憶性內容,但是其上機操作部分相比高中階段具有更高的要求。因此,從根本上來講,教師需要充分認識到C語言課程作為學生從高中階段到大學階段的過渡性課程,在引導學生接受新的專業知識和新的學習模式方面發揮的重要作用。顯然,在不同學習階段的過渡過程中,興趣無疑是最重要的催化劑。
為適應以學生為中心的教學體系,充分發揮學生在整個教學過程中的主體地位,在課程教學初期引入了C語言在數據處理應用中的課程內容設計。將C語言課程的教學內容根據教材內容安排,按照數據處理類科研項目的難易程度和進展階段逐一分解,盡可能地與C語言教學內容相契合,本著先基礎后應用的模式,讓學生循序漸進,由淺入深進行C語言基礎知識的學習。同時,結合教師自身有關數據處理類科研項目和已發表學術論文中的積累的C語言代碼,充分梳理與教材內容各章節的知識點與實際項目中的對應關系,從學以致用的角度來設計教學內容,旨在盡可能地提高學生對C語言課程的學習興趣。
實施情況舉例:在講到第三章內容《順序結構程序設計》中,可利用中國氣象局國家衛星氣象中心網址,下載的風云衛星觀測數據,類比順序結構程序設計的流程進行數據的下載和讀取。對于學生而言,由于首次接觸到風云衛星觀測數據,積極性強,興趣高,全部學生都能完成了一系列賬戶注冊、檢索數據、空間和時間范圍的選擇、數據的下載等工作。在學生完成相應操作后進一步強調順序結構程序設計的概念,加深學生對本章節內容的理解。然而,在數據讀取過程中,一部分學生由于不熟悉衛星數據的存放格式而導致讀取失敗。此時,為了持續提高學生的積極性,教師及時拓展目前常用的科學數據的存放格式,同時讓學生認識到C語言只是一種工具,可以實現多種數據讀取的目的,當然這一工具也可被其他計算機語言所取代。在拓展對風云衛星觀測數據的HDF格式的知識點后,根據原數據的存放形式,按照C語言順序結構的程序設計方法,學生均能實現衛星數據的讀取工作。在整個教學內容設計環節,雖然學生對使用C語言讀取的風云衛星數據的物理意義的理解并不透徹,但是并不影響學生把C語言應用在衛星數據處理中的熱情。在整個學習過程中,使學生獲得了成就感和滿足感,極大地提高了對C語言課程的學習興趣。
由于大多數高等院校信息類專業均將 C語言課程設置為專業基礎課,且分配課時充足(本校信息類專業設置了108課時,包括72課時的理論講授和36課時的上機操作),因此如何合理分配課時以達到最優的教學效果是對教學模式的考驗。傳統的灌輸式教學,即教師負責講,學生負責聽,仍然是以教師為中心,學生是旁觀者,進而導致學生學習氛圍沉悶,學習效果差。
為了徹底改變灌輸式的教學模式,培養學生的主動學習意識,采用了討論式的教學模式,即課堂教學與上機操作穿插進行,驗證實驗與綜合實驗的分段進行的方式,而學生討論始終貫穿其中。在課堂教學中,教師講授時間大大減少,把更多時間留給學生思考和表達。對于驗證實驗和綜合實驗也完全由學生進行整個實驗的設計。同時,整個教學模式的安排需要根據學生對C語言掌握的程度以及反饋來適時調整。學生在入門階段,由于不具備基本的編程思想,仍以教師課堂講授為主,主要表現為課堂講授與教師實操演示。在教師實際操作初期,盡可能地使用教材的數學類編程的例子讓學生入門,在實際操作中后期,脫離教材中簡單的例題,而以工程項目中C語言在數據處理中的應用為主,進一步拓展學生自主學習能力。在上機操作階段的實驗結合科研項目中遇到的問題,由學生主動思考和設計解決方案,通過實驗來驗證方案的可行性,并參與討論和優化方案。教師則需要記錄學生在整個討論過程中的表現和反饋。
實施情況舉例:在學生掌握書上關于累加運算等例子后,教師結合科研項目中的問題,把需要解決的問題明確告知學生。例如,如何使用循環結構存放已讀取出來的衛星數據,包括年份、月份、時間、地點、衛星數據等的存放。任務下發后給學生留有足夠的思考和方案設計時間。學生完成任務后,鼓勵學生在實驗室的教師機上運行程序展示給大家,并輔助講解自己的編程思想,同時鼓勵設計出不同解決方案的同學表達自己的程序設計思想,使同學們直觀感受不同的角度對知識的理解,并通過積極參與討論進一步優化實驗方案。對于一些重點內容,需要使用知識重現的方式加深學生的理解。例如,在學生的程序代碼中設置一些斷點來查看相關變量,可以讓學生更加深刻地理解變量的產生過程、變量在整個程序中的地位以及受變量影響下的程序運行狀態。基礎編程內容講授結束后,學生已掌握C語言三種基本的語句結構,在課堂講授與上機操作一對一穿插進行中,盡可能讓學生積極主動實操訓練。學生課堂學習之后鼓勵立即進行上機訓練,盡可能選擇數據處理類項目中可提高學生學習興趣的案例,如可根據教師提前讀取的衛星數據在地圖上進行可視化。
閉卷考試和上機操作考試是目前多數高校采用的C語言課程考核方式,一方面讓學生通過備考來加深知識的理解和掌握,另一方面也是對教師教學過程和學生學習過程的綜合性反饋。然而,在整個考核過程中忽視了持續提高學生學習興趣的目的,甚至導致一些學生由于懼怕考試帶來厭學的情緒,進而導致課程考核成了學生自主學習的最大障礙。
針對期末考試的特點和目的,結合本校有關期末考試的政策和具體要求,在原有期末考試閉卷考查方式的基礎上,重視學生平時成績的評定。在考核過程中,引入學生分組考核機制,類似畢業設計答辯的形式,讓每個隊員都上臺,教師提問,學生解答,教師團隊對學生小組的任務完成程度和效果,以及每個成員在團隊中的貢獻進行綜合評價。在考核過程中,能夠引導學生積極探索分組機制的合理性,清晰定位自己的角色,培養學生團隊協作能力以及在任務完成過程中的創新能力。
實施情況舉例:在學生分組答辯過程中,出現了多個針對一個任務的考核,給出了不同完成方案的小組,同時小組中的每個成員在不同的完成方案中角色定位不同。這樣的考核方式充分體現了學生在學習C程序設計這門課程時對知識的靈活運用,對解決實際問題能力的提升。例如,使用循環結構同時實現數據的存儲功能,利用順序結構實現了數據存儲和導出等。這些基本的數據處理操作是可以有多種處理方式的,而最終的最優方案需要根據用戶使用習慣來進行判斷,因此并不存在最優的概念,重要的是學生在整個方案設計的過程中對使用目的的應變。另外,考核學生在分組中負責的主要內容,做了哪些工作,有哪些收獲以及對本學期學習的總結等,均需該學生在講臺上進行匯報,這種考核方式又進一步提升了學生的表達能力。
在C語言課程教學方式的改革與實踐中,結合科研項目中的相關C程序的應用,分解到各章節知識點的重點和難點,增加避免照本宣科的教學實踐,使學生獲得了成就感和滿足感。教學模式采用了學生充分參與其中的課堂教學與上機操作穿插方式,驗證實驗與綜合實驗的分段進行,對學生學習過程提出了具體的要求,保障了學習效果,保證了學生為中心的主體地位。同時,通過引入學生分組考核機制,讓每個學生都成為學習的主體,培養了學生創新能力、表達能力以及團隊協作能力。針對本課程的改革實踐,培養了學生掌握C語言程序設計的基礎知識及基本技能,樹立了結構化程序設計的基本思想,使學生具備初步的高級語言程序設計能力,為后續的應用性課程和系統開發課程打好軟件基礎。此次一系列課程教學方式的改革與實踐,是新工科背景和工科專業認證背景下課程改革的一種探索。通過在教學內容、教學模式和考核方式改革上的持續探索推進以學生為中心的教學體系的改革,是今后教學過程中重點開展的研究方向。