摘要:“C++高級編程”對學生理論基礎及實踐能力要求較高。采取何種有效方法,在有限的課時內提高學生理論水平與動手能力,是我校“C++高級編程”課程教學工作近年來探索的一個重點。本文主要介紹了作者在理論教學、實驗教學等多個教學環節中教學方法的收獲和體會。
關鍵詞:C++高級編程;實踐教學;案例教學;綜合性實驗
“C++高級編程”是一門對學生理論基礎及實踐能力要求較高的課程。C++高級編程是基于C++靜態數據類型檢查的、支持多重編程范式的通用程序設計語言基礎上的高級編程。它支持過程化程序設計、數據抽象、面向對象程序設計、制作圖標、泛型程序設計等多種設計風格,對學生理論水平及動手能力綜合素質要求較高。
在教學工作中,我們堅持理論聯系實踐,幫助學生建立科學、有效的編程思想。并結合教學工作進行開發應用,提高了學生編寫程序的動手能力,取得了較好的教學成果。
1教學中存在的主要問題
通過對我院計算機專業“C++高級編程”課程教學現狀分析,發現主要存在以下問題:
(1) 重“理論教學”輕“實踐教學”。我校計算機專業該課程教學總課時為70學時,要求學生在較短的學習時間內既要掌握理論知識,同時又具備較強的動手實踐能力。因此,教師在授課過程中,要么過分強調理論教學,要么過分側重于流行數據庫開發工具的教學,致使理論教學與應用實踐比例失衡,使學生存在理論高分實踐低能現象。
(2) 教學方法和手段缺乏多樣性。目前,多媒體教學日趨流行,我校教師在“C++高級編程”理論授課中大多采用CAI課件進行教學。此教學方法雖然減輕了教師的板書負擔,增加了信息量。但學生反映在學習過程中,教學內容重視語法細節而輕視實踐環節,理論結合實際解決問題的能力較低,始終處于被動學習狀態。
(3) 實驗內容過于簡單,覆蓋理論知識范圍有限。在實驗課教學過程中,每章節課后題可供學生選擇范圍較小,各章節實驗內容聯系不緊密,存在脫節現象。學生無法將所學知識應用到項目的分析、設計、實施、驗收各環節中去。既不利于學生理論聯系實際,也不利于學生適應工作后的企業項目開發環境。
(4)“教”與“學”考核方法過于單一。我校在“教”與“學”考核方式上以傳統的理論筆試為主。該考核方式在“教與學”環節上存在重理論學習輕實踐應用,使得絕大多數學生學習目的就是為了順利通過考試,而忽略了實踐能力的培養,致使“高分低能”現象的出現。
2教改思路
“C++高級編程”包括理論講授、實驗和課程設計三個環節,只有各環節緊密銜接、密切配合,才能保證該課程的教學效果。
2.1理論聯系實際,采用案例教學法吸引學生興趣
“C++高級編程”課程涉及知識面較廣,理論性和實踐性要求較強。在教學過程中,我通過設置具體案例,將學生學習內容溶入到分析、討論、表達等教學過程中,讓學生在具體的問題環境中積極思考、主動探索,培養學生認識問題、分析問題和解決問題的能力。
(1) 以典型案例為例證,引入核心知識。結合教學過程中每個關鍵知識點設置一些典型程序,以典型程序為例,詳細講解相關的知識點。在此過程中,以教師講授為主,學生通過對典型程序代碼的研討學習,加深對知識的理解和掌握[1]。
例如,在講解“網絡程序設計”這一章時,首先向學生展示目前網絡中最常見的即時聊天軟件,如騰訊QQ;其次演示具體的程序實例,并講解文字、語音或視頻聊天程序的核心代碼,遇到核心知識點時,再深入講解相關的理論知識。
采用這種方法授課,可將復雜的問題簡單化、枯燥的知識趣味化、抽象的道理具體化,可以使學生產生濃厚的興趣,極大調動了學生研究學習代碼的積極性。
(2) 圍繞實際案例,展開討論。當課程進行到中期時,學生已具備了一定的編程經驗,這時可以借助一個實際案例,組織學生開展辯論和研討。教師提出該案例,但不對案例作具體的解釋說明,讓學生在課堂上各自闡述自己的觀點、論據,并相互提問和回答[2]。
例如,在“數據庫程序設計”一章的學習中,總結該章節的內容后,就可以用一個學生做過的數據庫程序為實際案例,讓學生們討論該程序有何優點、不足及如何改進。這種方法不僅可以鍛煉學生獨立發現問題、思考問題的能力,還有利于培養學生敏銳的應變能力、思維能力和語言表達能力。
2.2加強實驗教學,鍛煉學生動手能力
“C++高級編程”課程的實驗教學是整個教學過程中一個非常重要的環節。上機實踐不僅能提高學生靈活運用理論知識的能力,而且使學生在編程、上機操作、程序調試等方面受到嚴格的訓練,有效地提高學生程序設計能力。
在開始學習“C++高級編程”課程之前,學生通過“C++程序設計”和“面向對象編程方法”的學習,已具備一定的編程基礎。很多學生對程序設計的認識還只是停留在借助程序熟悉語法的程度上,對如何使程序高效、穩定、可移植性強等方面沒有很理性的認識。如何培養學生養成良好的編程習慣,真正從專業角度進行軟件設計,是“C++高級編程”實驗教學需要認真思索和努力解決的問題。
首先,向學生介紹自己多年來的編程經驗體會,推薦一些好的書籍和文獻資料供學生使用。其次,讓學生大量閱讀和仿寫優秀的程序,通過學習和借鑒快速掌握這些優秀程序員的經驗和方法,少走彎路,養成良好的編程習慣。第三步,也是最關鍵的一步。在實驗過程中,始終嚴格檢查學生設計的程序,及時指出其在編程習慣上的錯誤。很多學生認為只要編寫的代碼能調試運行出結果就萬事大吉,這是錯誤的思想。作為教師要具有極大的耐心和持之以恒的耐力,及時指出并糾正學生編程中出現的問題,使學生養成良好、高效的編程習慣。
另外,為取得實驗教學的最佳效果,在實驗項目的設計上采取由淺入深,逐漸增加難度的辦法,引導學生逐步提升編程能力。開始時,多設計一些驗證性強的實驗,讓學生結合事例步驟仿寫程序。在中后期設計一些具有較強綜合性的實驗項目,鍛煉學生綜合運用知識的能力。教師開始時要詳細講解,分階段布置一些難度較大的作業由學生獨立完成,培養學生動手能力。
2.3通過綜合性實驗,培養學生獨立研究的能力
課程設計環節安排在整個教學過程的后期,目的是著重提高學生軟件分析、設計和開發的綜合能力,是培養學生綜合運用知識獨立研究的關鍵環節。
所謂綜合性實驗是指實驗內容涉及本課程的綜合知識或相關課程知識的實驗。開設綜合性實驗的目的在于培養學生的綜合分析能力、實驗動手能力、數據處理能力及查閱中外文資料的能力[3]。為此,我布置了4個綜合性設計實驗項目。
(1) 多媒體軟件設計項目:設計開發一個多媒體播放器,能夠播放某種格式的音頻文件、視頻文件或動畫。要求該軟件具有選擇播放文件,播放、暫停、繼續播放、停止、音量控制等基本功能。
(2) 圖形圖像軟件設計項目:設計開發一個圖形圖像軟件,要求該軟件能夠畫出點、直線、圓等基本圖形,具有設定顏色、大小、位置等基本功能。
(3) 數據庫系統程序設計項目:設計開發一個后臺數據庫與一個前臺信息管理系統,可以對數據庫中的記錄進行管理。要求該軟件具有瀏覽、修改、增加、刪除和查詢等基本功能。
(4) 網絡程序設計項目:設計開發一個客戶機/服務器模式的網絡軟件,要求能夠根據選擇建立客戶機端程序或服務器端程序,客戶機端和服務器端之間能夠相互交換數據。
實驗中教師采取個別講解、個別輔導、就普遍存在的問題演示相結合方法進行講授,有針對性地發現和解決每個學生存在的問題。在課程設計過程中始終堅持以下要求:①按照軟件工程思想使用面向對象技術進行程序設計。②注意養成良好的編程習慣和程序設計風格。③不斷提高程序調試技能。
要求學生提交的課程設計報告包含的內容有:設計項目涉及的核心知識介紹、設計開發的步驟、程序功能介紹、核心源代碼、設計總結。
經過4周共20學時的實踐課程學習,學生按時提交了設計結果。其中40%的學生選擇了多媒體軟件設計項目,45%的學生選擇了數據庫系統程序設計項目,10%的學生選擇了網絡程序設計項目,5%的學生選擇了圖形圖像軟件設計項目。從設計過程、設計結果和課程設計報告綜合分析來看,10%的學生非常優秀地完成了設計,30%的學生完成得較好,50%的學生基本達到了設計目標,而有10%的學生未完成或部分完成了設計。學生普遍反映通過實踐學習開闊了視野,提高了編程綜合能力,增長了信心,達到了預期的課程設計實踐目標。
3結語
2008年5月教育部對我校的本科教學評估中,“C++高級編程課程設計”作為綜合性、設計性實驗項目獲得專家的好評,該科目評審結果為優秀,教學經驗在全校教師中進行了推廣。
“C++高級編程”這門課程在教材、教學內容、教學方法的選擇及實驗內容的設計等方面都對任課教師提出了新要求。堅信通過不斷實踐改革“C++高級編程”教學內容,改進教學方法,我們會培養出更多具有創新型、研究型、綜合素質高的人才。
參考文獻:
[1] 黃英瓊. 談“計算機圖像處理”課程實例教學法[J]. 計算機教育,2007(3):24-26.
[2] 馬曉敏,姜遠明,胡光. 試論計算機案例教學的新思路[J]. 教學與管理,2007(4):133-134.
[3] 江靜.“數據結構”課程綜合性實驗的實踐[J]. 實驗科學與技術,2006(6):64-66.
Exploration and Practice on the Teaching Method in C++ Advanced Programming
MA Xiao-ting
(School of Information Engineering, Lanzhou University of Finance and Economics Lanzhou 730020, China)
Abstract: C++ Advanced Programming desires advanced learners that have firm theory base and strong ability in practice, so it is asked highly for students. Which methods are more effective and how to enhance the theory and practice ability of students, it’s one of emphases of the teaching of our school in C++ Advanced Programming. This paper introduce mostly the teaching methods﹑reap and experience of author in theory teaching and practice teaching.
Key words: C++ advanced programming; practice teaching; case teaching; comprehensive experiment
(編輯:白杰)