花衛華 劉修國 黃帥
摘要:C++面向對象程序設計是我校遙感專業的一門基礎課,課程內容的理論性和實踐性都很強,也比較枯燥,不易被學生接受理解。本文結合作者長期對大一遙感專業的課程教學實踐和對課程內容重難點內容的分析,跟蹤學生在學習中存在的普遍問題,提出了以程序設計方法為基礎、以專業能力培養為導向的教學方法,從教師教學和學生學習兩個角度,闡述了如何更好實現C++課程在專業課程體系中的教學目標,提高課程教學質量。
關鍵詞:面向對象;程序設計;教學改革;遙感專業
中圖分類號:G642.41 文獻標志碼:A 文章編號:1674-9324(2016)34-0137-02
一、課程內容分析及教學目的
1.遙感專業的特點與本課程內容分析。遙感專業屬于測繪類大學科方向,主要培養具備遙感科學技術與工程的基本理論、方法和技能的各層次專業人才。要求學生能夠熟練掌握衛星遙感平臺、傳感器技術、遙感信息獲取與數據處理、多傳感器數據匹配和融合、圖像自動解譯技術等基本技術與方法,能夠在城市規劃、農業、林業、水利、地質、測繪等各類遙感領域,從事遙感電子設備與系統研制、應用系統和系統集成的建設與開發工作[1]。因此,對遙感專業的學生來說,程序設計是一門必備的技能。針對面向對象程序課程的教學任務量和教學特點,我校在制定遙感專業教學大綱中安排學生從一年級開始學習程序設計課程,分上下兩個學期學完。課程內容主要包括[2]:①程序設計基本概念與語法,包括數組、函數、類和對象、繼承與派生、多態性、輸入輸出流、異常處理等,以及C++14標準中包含的模版、泛型、匿名方法、lambda表達式、新型智能指針等。②程序設計方法,包括結構化程序設計和面向對象程序設計。面向對象程序設計的出發點之一就是彌補結構化程序設計中的一些缺點,但其可以使用結構化程序設計中的函數、數組等基本理論。本課程主要要求學生學習和掌握面向對象程序設計的思想,同時要求學生采用規范的程序設計風格,形成良好的程序設計素養。③程序調試技巧。④專業問題的分析與程序轉化能力。
2.教學目的。教師通過理論和實踐教學,使學生掌握結構化程序設計方法和面向對象程序設計方法,了解面向對象的基本概念和使用面向對象技術進行程序設計的基本思想,學會采用面向對象的方法進行問題分析,能夠熟練運用C++語言解決一般問題,培養學生的動手實踐和科研創新能力,為大型應用軟件設計與開發打下良好的理論和實踐基礎。通過本課程的教學,希望學生能夠達到的能力[3]包括:①程序編寫與調試能力,熟練掌握VC++的編輯調試工具,能夠快速編寫程序代碼;掌握程序排錯的基本方法,能夠獨立快速進行程序調試。②專業問題的分析與程序轉化能力,對實際專業對象和問題進行分析與抽象,設計出結構合理的對象關系圖,并能進行求解。③創新能力,能夠獨立思考和深入鉆研,善于對所學知識,進行梳理、概括、歸納總結,給出合理解決方案;能夠獨立閱讀參考代碼和資料,自我擴充知識結構。
二、普遍存在的問題及原因
1.學習中存在的問題。在學習過程中,大一學生們普遍反映該門課程的概念和知識點太多,課程內容的風格與其他課程差別很大,不易理解,一些學生甚至對編程產生了畏懼情緒,一步跟不上,步步跟不上。學生們學習過程中所遇到的困難具體來說包括以下幾個方面[4]:①學生對遙感與面向對象程序設計的關系不清楚,學習的熱情不高,比較茫然。②知識點具有一定難度,部分學生不注重對編程基礎知識的掌握。③本課程是理論教學與上機實踐相結合,教學內容多、學習任務量重。④C++中蘊含的計算思維方式不容易掌握[5]。部分學生在學習了本課程后,不善于從計算機語言的角度去思考問題。⑤編程環境VC++相對比較復雜,不太容易快速掌握。
2.教學中存在的問題。許多老師具有多年的程序設計經驗,容易慣性地認為所講授的知識點比較容易,從而忽視了學生的個性化感受,再加上缺乏有效溝通,最終導致老師講臺上講的很有激情,學生在下面一臉茫然。具體來說有如下問題:①沒有激發學生的學習興趣。傳統的“以教師為中心、學生被動接受知識”的“填鴨式”教學方法忽略了學生學習程序設計的主動性,從而培養不了學生的創造性思維和探索精神,使得原本就不吸引學生的課堂變得更加枯燥無味,大大降低了學生的學習興趣[6]。②沒有因材施教。大一新生的計算機基礎知識的掌握程度大不相同,在教學中若進度偏快,就有部分學生無法跟上老師的節奏,影響學習的積極性;如果講的偏慢,會在整體上影響教學進度。
三、以能力培養為導向的教學方法研究
遙感專業開設C++面向對象程序設計課程,目的并不是要每個學生將來畢業了都能夠勝任程序員的工作[7],而是讓他們學會利用程序設計的思想和工具,具備解決專業問題的能力和潛力。針對以上對教學過程中存在問題的分析,現從以下幾個方面提出以能力培養為導向的教學方法,力求提高教學效果。
1.活躍課堂氣氛,激發學習興趣。表面上看起來,面向程序設計課程本身是一門很枯燥的課,課程內容不是概念就是代碼,課程中很多內容又不容易被學生理解。在教學中如果不和學生互動,學生只是被動的學習,那么他們不但在學習過程中對知識點的理解很困難,而且其學習的成果也不會達到預期的目標。在C++的教學過程中,最理想的狀態就是,學生一直都能保持一種亢奮的狀態,做到“樂于學、勤于練、善于思”。針對這種情況,教師可以采取以下幾種手段,激發學生的學習興趣:①從簡到難,穩扎穩打。C++的知識點的難度是不一樣的,在課堂上和上級實習中,給學生以適當的提示,讓學生每一步都能看到解決問題的希望。②課堂上,對重點、難度知識點要盡量形象、生動地進行講解,有時可以借助打比方、講故事,也可引入UML或Visio繪圖來輔助。③對容易混淆的概念,集中起來進行類比講授。④引導學生知其然,更要知其所以然。
2.精心設計實習題目,全面覆蓋專業問題。面向對象程序設計是一門實踐性很強的課程,通過實踐來加深對課程中理論知識的理解。因此,在實習內容的安排上,既要重視理論知識的重現,又要注重學生解決問題實際能力的培養;既要考慮學生的總體學習情況,又考慮學生的個體差異;既要考慮專業知識的覆蓋,又要增加趣味性,并為學生提供一個發揮想象的空間。每個實驗都要求學生自己進行設計和調試,老師在其中只是起引導和輔導作用。通過多次實踐,學生不但可以對所學的內容進行鞏固,而且還可以在其基礎上創新。著眼于學科體系內的課程銜接,可從以下幾方面來考慮實習題目的設計:①從大一所學的高等代數中出一些關于矩陣、行列式運算方面的問題進行訓練。②從遙感專業內容本身尋找題目,諸如遙感圖像處理、影像顯示和影像分類等問題,來讓學生體會C++解決專業問題的巨大威力。③通過設置課程設計題目,引導學生既要善于獨立思考,又要學會分工協作。C++語言基于面向對象思想,無論是微粒度的代碼級的設計模式,還是軟件模塊的設計組織,都能很輕松地應對。指導學生在大模塊軟件設計編寫過程中,學會團隊合作,同時在自己的模塊中精益求精。
3.既要紙上談兵,又要參加實戰。面向對象程序設計課程是一門操作性和實踐性很強的課程[8],如果只選擇理論考試的方式來測驗學生對本門課程的掌握程度是遠遠不夠的。單純的考試只會使學生對課本上的概念和知識進行盲目地死記硬背,即使考試拿到很高的分數,也不知道怎么將課本中的理論知識應用于實際操作中,更不懂得怎么用C++語言解決實際問題,從而出現高分低能的現象。學習C++目的是要利用這個計算機語言作為工具,解決本專業內的科學計算問題。引導學生從理論走向實踐,真正學會這門本領。每年都有校級、省級甚至全國性的GIS程序設計大賽,教師應該根據學生學習C++所掌握的不同程度,推薦其參加不同類別的程序設計大賽,真正在實戰中檢驗和提高技能。
四、總結
C++面向對象程序設計是一門方法性、實踐性和應用性都比較強的課程,不容易被初學者理解,在課程的教與學的過程中都存在著困難。能夠熟練掌握這門課程是廣大師生共同的希望。這門課程學好了的話,后續課程會得心應手。在本課程的教學中,以提高學生運用C++解決專業計算問題的能力為主要目標,通過激發學習興趣、設計遙感類實習題目和鼓勵參加程序設計大賽等手段,充分調動學生的自主性,強化對面向對象概念的理解,適應面向對象程序設計的[5,8]思維習慣,逐步學會靈活運用面向對象思想來分析和解決具體的專業計算問題。
參考文獻:
[1]趙巧華,陳健.遙感科學與技術專業建設中的幾個關鍵問題[J].地理空間信息,2010,(05):154-156.
[2]陳優良,徐昌榮,陳淑婷.GIS專業面向對象程序設計教學改革探討[J].地理空間信息,2010,(01):151-154.
[3]姜峰,湯偉,賴俊.基于能力培養的面向對象程序設計課程教學改革探索[J].計算機工程與科學,2014,(S1):126-130.
[4]王新志,曹爽,孫景領.測繪專業“面向對象程序設計”課程教學實踐與思考[J].測繪工程,2012,(02):73-76.
[5]程學云,管致錦.面向計算思維和探究能力培養的C++實踐教學探索[J].電腦知識與技術,2013,(31):7037-7038.
[6]王文冰,李輝.以實例貫穿課堂的面向對象程序設計課程教學改革[J].計算機教育,2011,(01):91-94.
[7]李秉璋,徐亞平,羅燁,等.以提高應用能力為目標進行計算機專業課教學——“面向對象程序設計”教學改革探索[J].計算機教育,2006,(12):28-31.
[8]彭召意,朱艷輝,周玉.C++面向對象程序設計課程的實踐教學研究[J].計算機教育,2010,(05):151-154.