李秉璋 羅 燁 景征駿 黃海軍

摘要:“面向對象程序設計”是計算機及相關專業重要的專業課。本文在分析課程實踐環節中存在的問題后,從認識論的角度出發,論述了課程設計的目的,重點闡述了旨在提高學生實踐能力的課程改革與探索的內容、方法、手段,以及課程實踐環節改革后收到的效果。
關鍵詞:面向對象;程序設計;實踐教學;精品課程
中圖分類號:G642 文獻標識碼:B
1引言
“面向對象程序設計”課程是高校計算機科學與技術專業的一門重要的專業基礎課。也是“數據結構”、“編譯原理”等專業課的先修課程,在整個專業的教學體系中占有非常重要的地位。該課程的授課對象是大學一年級的學生,他們有一定的邏輯思維能力,基本掌握面向過程的程序設計方法。但對面向對象思想方法的抽象性和復雜性,面向對象語言C++本身的高難度,使之成為一門比較難以學習和掌握的課程,學生學習效果不佳,應用能力不強。因此如何提高學生面向對象技術的應用能力,提高教學效果是本課程教學改革主要探索研究的內容。
“面向對象程序設計”在2007年被列為我校精品課程,課程建設目標之一就是分析課程現狀,找出問題結癥,改革實踐教學方法、手段、內容,切實提高學生的“動手能力”——運用面向對象技術解決實際問題的能力。
2存在問題
我校計算機科學與技術專業從2002年開始講授面向對象語言——C++。多年的教學中,主要存在著以下問題:
(1) 學生有面向過程的程序設計能力,但較難接受面向對象的思想和方法,往往在C++的開發環境中,設計出純面向過程的程序。
(2) 缺乏歸納、總結能力,獨立分析問題、解決問題的能力。特別缺乏大程序的設計、調試能力。
(3) 現有的實驗教材和指導書中內容過多的驗證性實驗,嚴重地影響了學生自主學習、創新提高能力的培養。課程前后實驗缺乏必要聯系,缺少計算機解題的邏輯思維訓練。這些問題勢必降低了課程的教學效果,影響了學生應用能力和創新能力的提高。
3實踐教學目的
站在認識論的角度看,面向對象是一種認識客觀世界的認知方法學,同時也是一種解決問題的思維模式。面向對象理論體系將對象作為需求分析和系統設計的核心和主體,在此基礎上,引用科學方法論中的分類思想,將相似的一組對象抽象為類,采用各種手段將相似的類組織起來,實現問題空間到解空間的映射。課程教學中存在的上述問題,體現在學生身上,根源在教學上。我們的實踐教學不能再僅僅教會學生如何套用語言的語法,依樣畫葫蘆驗證教材和課堂講課內容,而是應該包括如下兩個方面的教學目的。
3.1提高學生對面向對象思想、方法的理解,全面掌握面向對象的技術,并熟練應用之
作為面向對象程序設計這門課程,它有著自身完備的知識體系以及教學線索。其中蘊涵這樣一條知識主線:提出問題→建立類與對象→運用對象解決問題→對對象的改進、進化→建立繼承機制→產生類族→建立多態機制→類的復用→類的模版技術→對象對消息的響應機制→對象的異常處理機制。課程的教學任務就是要不斷地灌輸上述知識主線,實踐教學的任務就是將現實世界的類和對象的概念源源不斷地引入到實驗中,用面向對象的語言去描述,使用對象的方法去解決實際問題。
3.2對課程內容總結歸納,使學生理解C++語言內在規律,提高自主創新能力
C++中的知識點、規則眾多、繁雜,平時單個實驗只能包含一至兩個知識點。實踐教學要在單個簡單實驗的基礎上,適時進行總結、歸納,揭示規律,從而提高學生自主學習、提高創新的能力。例如在掌握了類的構造函數、派生類和組合類的構造函數、復制構造函數、深復制和淺復制等知識點后,要求學生總結異同點,找出內在規律,并在課外實驗題中將這些知識點串聯起來,形成一個綜合性、設計性實驗。
4改革與探索
在課程的教學中堅持實踐教學不斷線,將實踐教學貫穿于課堂內外。一方面,教師要發揮自己的主導作用,想方設法去激發學生的學習熱情;另一方面,根據學生能力的不同,充分調動學生的主觀能動性,挖掘他們學習上的潛力,讓他們感受自己獨立解決問題的樂趣,提高他們的動手能力和分析問題、解決問題的能力。幾年來,我們對實踐教學進行了以下幾個方面的改革。
4.1建立三個層次的課程實踐教學結構,重視應用能力的培養
C++知識體系龐大,內容繁雜,教學大綱規定要求掌握的知識點、技術也很多。為此我們建立了由三個層次實驗內容組成的實踐教學結構,著力提升所有學生的語言應用能力。這三個層次分別是:
(1) 課內實驗,該類實驗主要涉及課程的相關知識點。實驗目的是使學生理解、鞏固并掌握理論教學的內容。要求所有學生都必須完成。
(2) 課程設計,主要是設計與開發性實驗。該類實驗以“任務”或“課題”形式提出實驗要求和具體的實驗結果,學生以組為單位進行設計。要求掌握實驗所涉及到的知識,通過綜合利用這些知識來設計、開發并最終完成課程設計項目。
(3) 各類科研,對部分學習能力強的學生,請他們參與課外研究或教師科研,重在培養學生的研究能力與創新意識。
4.2改革教學內容,強化面向對象思想方法的傳授
傳統的語言教學方法總是從面向過程的技術開始講解,再講授化面向對象方法。在教學改革中,我們從課程第一節課開始進入“面向對象”的世界,讓學生接受面向對象的思想,理解接受面向對象的概念,不斷訓練學生從客觀世界事物中抽象類的能力。例如一般教材是先學習結構,后學習類與對象。我們在教學中相反,先學習類與對象,再涉及結構(學習結構也只是因為后續課程“MFC的應用”中存在結構類型)。學生的第一個實驗就是類實驗。
4.3重視實驗內容的設計,精心設計實驗內容
我們發現不少實驗指導書的實驗內容設計不科學,實驗設計缺乏層次性和連續性,只注重單個實驗,沒有重視前后知識的積累、遷移。驗證性實驗多于設計性、綜合性實驗。使得學生實驗后的收獲也僅是只見樹木,不見森林。為此我們結合課程建設目標和專業人才培養方案,精心設計編制了有利于能力培養的實驗教材。其中8個實驗(見表1)屬于第一層次的實踐。8個實驗涵蓋了C++主要技術,在概念、內容上前后緊密銜接,有適度覆蓋,后一個實驗解決前一個實驗中存在的不足。全部實驗結束形成一個包含C++主要知識點和技術的簡單應用程序。實際教學效果證明,學生通過這樣的實驗,面向對象程序設計能力大大提高。
同時實驗指導書對實驗內容進行了拓展和延伸,同時開設了大量的選作實驗,使得學生在課外,能根據各自能力、愛好選做,以此來拓展思維,培養創新能力。
在課程結束后,增加了2周“面向對象程序設計”課程設計。這是第二層次的實踐。課程設計是一個研究性學習的過程。在指導老師的輔導下,學生2~3人為一組,以項目開發的形式,完成一個包含C++主要技術、功能相對完整的應用程序。要求學生完成相應的項目需求分析、設計、調試、運行,撰寫課程設計報告。進一步增強學生獨立分析問題、解決問題的能力。
在教學過程中,注意發現學習熱情高,創新能力強的學生,及時吸引他們加入教師的科研團隊,參與教師的科研課題。組織引導他們參加學校、省市各類學生科研活動、程序設計競賽等。這就是第三層次的實踐。
4.4改進實踐教學的考核方法,注重創新能力的培養
首先鼓勵學生采用“奇特的”、“五花八門”不同算法進行實驗,發揮學生創造性思維,培養學生的創新能力。在成績評定上,不拘泥于程序是否完全正確,而是更注重是否采用了合理的技術、程序設計是否新穎、獨到。事實上不少學生設計的算法很有新意,設計的程序很獨特。
在課程設計中則著重考察學生分析問題、解決問題的能力、科研能力和工程能力是否得到鍛煉。通過檢查課題設計內容,了解學生是否采用了面向對象的主要技術、這些技術的應用是否合理;通過提問了解學生通過課程設計對理論教學中的內容是否有更深的理解和體會,對課程設計中遇到的各類問題采用了什么方法加以解決。
5改革的效果
課程組在“面向對象程序設計”課程教學過程中堅持改革,從教學思路,教學方法、教學內容、考核評價方式等方面不斷探索、并不斷完善。經過兩個學期的考試(實行教考分離)、參加江蘇省ACM競賽、挑戰杯比賽、參加教師科研活動等,都取得了較好的成績。因此,這一教學改革措施得到廣大學生的認可。
參考文獻:
[1] 李秉璋,徐亞平,羅燁,等. 以提高應用能力為目標進行計算機專業課教學——“面向對象程序設計”教學改革探索[J]. 計算機教育,2006(12):28-30.
[2] 湯亞玲,秦峰. 面向對象程序設計課程教學探究[J]. 安徽工業大學學報:社會科學版,2008,25(6):132-134.
[3] 歐陽津,申秀民. 改革實驗教學模式培養創新性人才[J]. 中國大學教育,2008(2):79-80.
[4] 徐光偉,史有群. 培養創新能力的計算機專業實踐教學體系探索[J]. 計算機教育,2007(7):7-9.