文章編號:1672-5913(2011)23-0044-04 中圖分類號:G642 文獻標識碼:A
摘 要:C++程序設計是我校空間信息與數字技術新專業的重要基礎課程。近年來,根據專業知識體系要求,我們對該專業C++課程教學進行了系統建設。本文介紹了C++課程建設的相關結果,包括課程教學與實踐教學的安排、教材的選擇、教學方法的探索以及對教學內容中與其他計算機課程的銜接處理等,可為本專業C++課程教學及其他計算機課程建設的開展提供參考。
關鍵詞:C++教學;課程建設;教學安排;教學方法探索;課程銜接處理
空間信息與數字技術專業(數技專業)是我校新建本科專業,開設數學、計算機、地理信息系統和遙感等課程,培養從事空間信息處理和海洋信息系統研發的專業人才。C++課程作為數技專業的基礎課程,教學目的是培養學生面向對象的程序設計能力,為后續學習數據結構、算法分析與設計、地理信息系統等課程建立編程基礎。
數技專業屬非計算機專業,我校計算機專業已有C++課程教學體系不適合直接用于數技專業的C++教學。近三年來,我專業C++教師基于“以學生為本”的思想,從學生培養目標出發,在梳理C++及相關課程的知識體系并吸取已有C++教學經驗的基礎上,從課程教學安排、教材及教學環節、教學手段和教學方法以及與其他程序設計語言的銜接處理上,對本專業的C++課程進行了系統建設,為本專業C++課程教學提供了保證。本文介紹本專業在C++課程教學內容安排、教學方法探索和與其他相關課程的銜接等方面的建設結果。
1 合理安排教學內容
制定符合專業實際的C++課程教學計劃,可為C++教學規定合理的教學框架。我校數技專業是強調計算機教學的非計算機專業,開設的計算機課程包括計算機應用基礎、程序設計語言、數據結構、
算法分析與設計和操作系統等。本校計算機專業的程序語言是先開C再開C++。考慮到C++基礎部分是C的超集,比C應用更廣[1-2],C++高級部分中的面向對象程序設計思想可直接用到C#和Java中[3]。此外,C++還是數據結構、算法分析、操作系統等后續課程的首選實現語言,因此,本專業選擇在程序語言中直接開C++,并將其教學目的規定為以C++語法教學為基礎,以培養學生面向對象編程能力為重點。
基于C++教學目的,我校確定數技專業C++教學大綱為貫徹培養學生面向對象編程能力主線,保證數據結構等課程學習必需的基本知識,將表達式、數據類型、控制結構、函數、指針與數組、類與對象、運算符重載、繼承、多態和模板等確定為必學內容,教學中以C++語法教學為輔助,將程序設計方法的教學作為重點。
在教學計劃方面,學生修完“計算機應用基礎課程”后,在第二學期開設C++(理論課時64學時、實踐課時32學時),在第二學期后的小學期中開C++課程設計(32個學時)。
2 探索有效的教學手段與教學方法
采用科學有效的教學方法,是完成C++課程教學目標的重要保證。與C、C#和Java相比,C++內容多而抽象,而數技專業學生學習C++之前沒有程序語言基礎。因此,在C++教學中,需要探索有效的教學手段與方法,重點解決讓學生樂于學和易于學的問題。
2.1 明確C++學習意義
明確C++的學習意義,可提高學生學習C++的興趣。我們主要從“C++學習有何用”著手,仔細挑選了由C++語言開發的幾款典型軟件,在第一節課簡單演示這些軟件,以此說明C++語言在整個計算機軟件開發中的重要地位,觸發學生學習愿望。主要介紹的軟件包括開發平臺Nokia Qt、Visual Studio和VC++;桌面工具Office、Photoshop、K3DSurf和Matlab;數據庫系統Sql Server;網絡軟件IE和Google搜索引擎;C++小游戲GDI動畫;行業應用軟件“臨港城市風暴潮災害三維展示系統”(由本專業教師參與開發)等。另外,我們還羅列了數技專業與C++密切相關的后續核心課程,包括數據結構、操作系統、算法分析與設計等,說明C++在數技專業課程中不可或缺的基礎地位。
2.2 靈活采用多種教學方法和手段
學生理解C++的學習意義后,仍可能會因C++的復雜而缺少學習信心。對于解決C++難學的問題,我們從理論與實踐教學兩方面探索解決方法:始終以學生為教學主體,將對學生面向對象程序設計思維的培養作為教學主線,注重對案例教學[4-7]、啟發式教學[4-5]的靈活應用,并督促學生讀寫程序。
1) 把握C++教學主線。
C++語法復雜又細碎。為避免學生被C++語法“海洋”淹沒,在教學中,我們把握“面向對象程序設計”這條主線,在C++教學內容處理上,以數據類型與表達式、控制結構、函數、數組與指針為基礎,以多態為目標,強化類與對象、繼承和多態等重點內容。
此外,在C++教學中,我們避免引入如矩陣乘積和動態鏈表等過于復雜和突兀的算法,將其留待學生掌握相關基礎知識后,由后續的數據結構、算法分析與設計等課程去處理,以免加重C++的教學難度。
2) 設計教學案例。
C++的內容枯燥。靈活應用案例教學法,以鮮活的案例形式呈現C++知識,提高學生學習興趣,讓學生從解決相關計算問題的C++案例程序中熟悉語法,培養他們的程序設計思想。在數技專業近年的教學中,主要應用的案例有以下5個方面。
?程序控制結構案例:九九乘法表和成績百分制向五分制的轉換。
?函數調用案例:求和函數的傳值調用,交換函數的引用和指針調用。
?類與對象案例:公民類、學生類、圓和長方形類。
?運算符重載案例:復數的加(+)、乘以(*)和輸出(<<)等運算符的重載。
?繼承與多態案例:公民類和學生類、圖形shape類與圓類、長方形類和銅錢類等。
讓學生理解各個案例所蘊含的設計思想和知識,輔以相應練習,讓學生模仿編程。
(1) 運用啟發式教學。
C++是一門應用性強的課程。相比于硬塞知識,讓學生理解各個知識點“有什么用”和“如何用”更為重要。因此,在本專業C++教學中,教師運用啟發式教學,注重讓學生思考兩個問題:某個C++知識有什么用,以及某問題能用C++的什么知識來解決。在啟發學生思考后,才引出知識點,加深學生印象。比如,在開始函數一章時,我們用交換10對整形變量的重復交換代碼,啟發學生思考有沒有更節約代碼輸入的方法,以此引出函數的概念;在開始數組一章時,我們用多個單變量存儲本班全部同學(40人以上)成績的程序,啟發學生思考有沒有更節約標識符的方法,以此引出數組的概念。這樣,從解決實際問題出發引出C++知識點,避免了直接講解抽象的C++概念。
在講解典型案例時,充分利用板書。先啟發學生思考案例中計算問題的解決方法和步驟,將結果總結在黑板上,然后與學生一起討論,在黑板上將各步驟翻譯成C++代碼,分析代碼用到的新知識點,帶領學生一起完成分析問題、算法設計和代碼編寫過程,并讓學生在練習代碼編寫時去模仿,這樣比用PPT直接展示代碼效果更好。
(2) 督促學生讀寫程序。
C++課程也是一門實踐性強的課程。學生往往苦于課上明白,課下不能寫。因此,必須加強學生的實踐練習,讓其由不會到會,并孰能生巧。對此,我們一方面布置學生課后讀典型案例的代碼,另一方面,將代碼書寫與上機調試有機結合:針對每章的核心知識設置編程題目,要求學生先在課后書寫代碼,再在實驗課上調試并記錄代碼的改正步驟,以提交手寫代碼和調試記錄作為實驗考核的依據,從而督促學生多動手,實現教與學相輔相成。
理論課程結束后,我們在暑假前的小學期中安排了C++課程設計,目的是讓學生在分組完成小型C++課程設計題目的過程中綜合應用學習過的C++知識,強化面向對象的程序設計思想,熟悉包括分析問題、總結算法、編寫程序和撰寫項目報告等在內的程序開發流程,培養學生的動手和協作能力。課程設計期間,教師跟蹤進度和答疑。近年來,我們用過的課程設計題目主要和學生的學習實際相關,主要有使用I/O流建立學生信息管理系統、使用類構建選課管理系統、使用類建立學生評優系統、通過聚合和派生構建大學類、使用模板構建復數類等。通過C++課程設計,學生編程能力普遍提高。
3 選擇合適的教材與實驗環境
教材是承載教學的基石,好的C++教材,應該是主線明確、知識點自包含、理論內容清晰簡潔、實例新穎貼切,強調學生動手實踐。另外,數技專業是直接上C++,應選用包含C++基本語法的教材。在歷年C++教學中,本學院采用過譚浩強、錢能、任哲、劉懷亮等人的教材,前二者適合課時量大的重點高校,任哲教材側重理論。劉懷亮教材包含了C++基本語法和面向對象兩部分,理論簡潔,實例緊扣知識點,章節練習構思巧妙,使用下來效果較好,適合于本專業C++教學。
在C++實驗環境方面,我們選用Visual Studio 2008,該平臺時下流行,使用方便,后續還將在C#可視化程序設計和Asp.net 網絡程序設計選修課中用到。另外,我們還向學生簡單介紹C++開發框架Qt,該框架將在后續地理信息系統和計算機圖形學與虛擬現實等課程中用到。
4 處理好與其他計算機課程的銜接
C++課程為其他計算機核心課程提供重要支撐。為方便學生后續計算機課程的學習,我們對C++與相關課程的銜接進行了處理。
首先,C++是數據結構、地理信息系統、計算機圖形學和虛擬現實技術等課程的基礎。因此,在C++教學中,除了強調面向對象編程思想外,內容上還盡量包含相關課程所必需的基礎知識。比如:在C++中強調數據結構(C++版)中用到的位運算、指針、數組、抽象類和模板;分析地理信息系統、計算機圖形學、虛擬現實技術的教學內容后,我們發現在C++中必須包含向量(vector),而且需介紹三門課程將用到的C++開發框架Qt。
此外,考慮到將來在參與海量數據分析與計算中,數技專業學生還可能用C和 Matlab進行計算,而本專業未開設這兩門課,因此在C++課程理論教學結束后,我們還用4課時簡單介紹了C和Matlab的語法特點、程序結構、編譯環境及與C++之間的程序轉換和鏈接方法,讓學生初步了解如何進一步學習和應用C與Matlab。
5 結論
數技專業是對計算機要求較高的非計算機專業。我們從專業特色出發,對C++課程進行了建設:先明確了C++是該專業計算機課程的前導課程,確定了C++的教學目的,合理地規劃了本專業C++知識結構、教學大綱和教學計劃;然后針對本專業學生,直接學習C++的困難,對C++教學方法進行了探索,對案例教學法和啟發式教學法進行了靈活應用,對適合的教材和實驗環境進行了遴選;另外,考慮與相關專業課程的銜接和方便學生從事計算工作,我們在教學內容上對有關知識進行了強調和包含。經過C++課程的系統建設,我們保證近年來數技專業C++教學的有效開展,教學效果也較良好。
參考文獻:
[1] 謝娟英. 大學計算機專業C與C++程序設計語言開設探討[J]. 計算