摘要:以C++程序設計語言教學存在的問題為突破口,從教學內容、教材選取、教學方法、教學工具、教學手段和考試方法等各方面入手,總結了在教學改革與課程實踐方面的一些經驗和體會,提高了C++語言的教學質量和教學效果。
關鍵詞:C++程序設計語言;教學改革;課程實踐
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2008)31-0917-02
Shallow Talk on Teaching Reform and Curriculum Practice of C++ Language
CHEN Hua
(College of Mathematics and Computational Science, China University of Petroleum(Huadong), Dongying 257061, China)
Abstract: Breakthrough for the problems of the teaching in C++ programming language, and starting with many aspects such as teaching content, teaching materials choosing, teaching method, teaching tool, teaching means and examination method, summarized experience and understanding on teaching reform and curriculum practice, improved teaching quality and teaching effect of C++ programming language.
Key words: C++ programming language; teaching reform; curriculum practice
1 引言
C++程序設計語言是在國內外得到迅速推廣和應用的一種計算機語言,已在眾多領域得到廣泛應用,也是信息與計算科學專業教學體系中的一門比較重要基礎課,為后續課程提供了編程基礎。特別在新的教學大綱中,C++語言的講授和上機總學時達到了96學時,較以往有了大幅度提升。但在講授本課程的時候,是采用以一般程序設計內容為主、面向對象內容為輔的方式,還是采用以面向對象內容為主、面向過程為輔的方式,是以語法教學為主,還是以問題驅動教學方式為主,仍存在較大爭論。因此,有必要探討C++程序設計語言的教學方法和課程改革[1-3]。
2 C++程序設計語言教學存在的問題
1) C++它是從面向過程的C語言發展而來的,并非是純面向對象的語言,面向過程和面向對象教學分離,不利于學生掌握先進的面向對象程序設計方法。一般情況下,先講解C語言的面向過程部分,再講解面向對象的部分。但在利用面向對象的思想編程時,學生寫起程序來,還是使用面向過程的思維模式。原因在于人們在看待某類問題時,總存在先入為主的思維定勢。
2) 面向對象的C++語法較復雜,教學往往陷入語法泥潭,削弱了更為重要的算法的教學和解決實際問題的能力。大部分C++語言教材,都是以語法為中心,忽略了學習計算機語言的根本目的。即培養學生用計算機來解決問題的思維和實踐能力。因此學生編程能力的培養是首要的,掌握語言本身不過是實現編程的一個手段,而不是編程的目標。
3) 開發工具陳舊,未能使用主流的開發工具平臺。很多學校仍然采用VC6.0作為開發工具,雖然VC6.0是一款優秀的開發工具,但畢竟產生于十年前,對標準C++的支持力度不夠。而目前主流的C++開發工具Visual Studio 2005.net是是微軟2006年新推出的開發平臺,它功能強大,被許多軟件公司選為主要開發工具。若采用Visual Studio 2005.net作為C++語言課程中的開發平臺,則為學生的專業發展和就業打下良好的基礎。
4) 教學內容陳舊,STL(Standard Template Library)的內容在教學中體現較少。STL是ANSI/ISO C++標準中最新的一部分內容,它提供了一個可擴展的應用框架,高度體現了軟件的可復用性。學生應學會站在巨人的肩膀上進行編程,只有這樣才能提高自己的編程和實踐能力。
3 C++教學改革與課程實踐的基本思路
3.1 教學內容
1) 強調算法,即突出程序設計而不是語法。強調算法,不是忽視語法,而是不要繁瑣的鉆牛角尖的語法,我們要的是基本的常用的語法,更多的是要模仿。不是知道的語法越多,程序編得越好,而是自己動手編程越多,程序編得越好,實踐能力越強。
2) 解決面向對象與面向過程分離的問題,直接講授面向對象程序設計方法,掌握怎樣從客觀事物中抽象出類來的方法,并采用UML語言對所抽象的類進行建模。初步培養學生能夠從軟件工程的角度考慮編程問題,具備了初步的軟件工程思想。
3) 選擇最新的C++體系(98標準)作為教學內容。該標準拋棄了原有的C++面向過程的教學階段,而且突出了面向對象C++實現軟件通用性的兩大關鍵技術:模板、派生。增加STL部分的教學內容,初步掌握相關的數據結構知識。
4) 加強面向對象程序設計方面的教學,培養面向對象程序設計的能力。面向對象方法所強調的基本原則,就是直接面對客觀存在的事物來進行軟件開發,將人們在日常生活中習慣的思維方式和表達方式應用在軟件開發中,使軟件開發從過分專業化的方法、規則和技巧中回到客觀世界,回到人們通常的思維。使學生能夠掌握從客觀事物中抽象出類來的方法去考慮和解決實際問題。
5)解決Windows編程與DOS編程分離的問題,采用基礎教學與實踐教學相結合。在基礎教學中采用Windows平臺下的控制臺方式(命令行方式)以突出編程能力的培養。在實踐部分比較全面地學習標準的Windows圖形界面編程,這安排在課程設計(放在課程結束后暑期實習中)中,由學生在教師指導下主要通過自學獨立完成。
3.2 教材選取
《C++語言程序設計》[4-5]是清華大學出版社出版的一本優秀的教材,該書第1版榮獲2000年中國高校科學技術獎自然科學二等獎 2000年全國優秀暢銷書獎,該教材已發展到第三版,配套輔助教材達四種。我們從2000級開始使用該書作為程序設計語言(C++)這門課的教材,從授課和學生反饋情況來看,本書將C++語言作為大學生學習程序設計的入門語言,不僅詳細介紹了語言本身,而且介紹了常用的數據結構和算法,在原第2版的基礎上,第3版還增加了對UML建模語言的介紹和STL及泛型程序設計的內容。全書以面向對象的程序設計方法和《人員信息管理系統》的開發貫穿始終,每一章都首先闡述面向對象的程序設計思想和方法,然后引出必要的語法知識,在講解語法時著重從程序設計方法學的角度講述其意義和用途,力求使學生在掌握C++語言的同時,能夠對現實世界中較簡單的問題及其解決方法用計算機語言進行描述。當然,要達到能夠描述較復雜問題領域的水平,還需要學習面向對象的軟件工程課。
3.3 教學方法
在教學過程中以面向對象的程序設計方法貫穿始終,每一章都是首先闡述面向對象的程序設計思想和方法,由實際問題入手,然后引出必要的語法知識,在講解語法時著重從程序設計方法學的角度講述其意義和用途。
習題與實驗都是學生的實踐機會,具體指導和講評是必要的。特別是在學生尚未入門時具體指導尤其重要,最好是在實驗室里配大屏幕顯示,學生與教師演示同步操作,或用同步操作的教學軟件。在輔導實驗時只可能解決少數學生的少數問題,提倡上機時學生互相討論互相幫助。做習題,也提倡較難的題在同學之間先討論再獨立完成,畢竟我們要求規范化編程,主要是靈活應用通用算法,不是創造別人看不懂的算法,初級階段主要是模仿,見多識廣后就能編出好的程序。講評是在學生做完習題和實驗之后,針對學生實際發生的最常見的錯誤進行的,也可以介紹一些同學的好作業,這是一個總結提高的過程。
以開發《人員信息管理系統》為主線,貫穿整個學期,提高學生對軟件開發過程的認識和興趣,為《軟件工程》、《數據結構》等后續課程打下堅實的基礎。
3.4 教學工具和教學手段
課堂教學盡可能地應用現代化教育技術,使用多媒體進行課堂教學,給學生營造一個良好的程序設計語言環境。與傳統教學方式相比,多媒體教學具有形象、生動、交互性好、信息量大、減少文字書寫等顯著特點。對課程中難以理解的抽象內容可以給予直觀展示和動態模擬,達到既能輔助教師形象地講授課程中的難點和重點的目的,又能激發學生學習的興趣,從而提高教學效率和教學效果。
不要拘泥于傳統的教學方法,即以教師為中心,教師講,學生聽、記、做筆記。可以將更多的方法結合進來,講授法、練習法、實驗法、演示法等。但更應將多媒體網絡技術結合進來,利用多媒體網絡模擬現實環境,通過聽覺、視覺、觸覺等多種方式對學生的感官進行綜合刺激,其效果是任何一種單一的途徑所無法比擬的,同時學生也可以在真實感中學習,卻又沒有真實世界的壓力,可實現信息共享,人機交互和即時反饋。多媒體課件對學生學習也可以起到事半功倍的作用。在多媒體課件中利用圖像、動畫、聲音模擬課程中抽象的、難以理解的教學內容,并將其形象化,這樣就更利于學生理解與記憶。比如C++程序的運行機制,學生很難理解、很難想象其過程,如果讓其做成課件,以動畫的形勢模擬其過程,學生就能很快地掌握了。交互式教學方法在實踐中是切實可行的,這種方法以學生為中心,同時發揮教師在教學中的主導作用,真正實現教師與學生、學生與學生的雙向交流和互動。比如以學生為中心,進行分組教學,這樣既可以提高學生的自主性學好知識,也可以因材施教,更可以提高學生的團結與協作能力,這種能力在軟件開發過程中更是不可缺少的。
3.5 考試方法
考試要多樣化,面要廣,難度要適中,以考察能力為主。針對C++語言課程的特點,近年來期末考試形式為開卷,試題形式為程序填空、程序改錯、算法編程實現,平時作業主要是課后部分編程題;大作業就是《人員信息管理系統》,基本貫穿整個教學過程。三者所占比重為:總分=平時作業(10%)+大作業(30%)+期末考試(60%)。這樣對學生的考察不再以語法考察為重點,而是以解決問題的能力為重點。從近幾年的實踐情況來看,效果明顯。
4 結束語
通過從教學內容、教材選取、教學方法、教學工具、教學手段和考試方法等多方面多環節入手,對C++語言教學進行了全方位的改革,使得學生的學習積極性有了較大提高。但是,隨著C++語言的發展,在教學和課程實踐中還會出現許多新的問題和矛盾,在今后的教學實踐中,還應根據實際情況不斷調整教學思路,提高教學水平。
參考文獻:
[1] 景雪琴. C++語言程序設計課程教學探討[J]. 高等教育研究學報,2005,28(2):89-91.
[2] 賈振華,李瑛. 《C++程序設計》課程教學方法探析[J]. 華北航天工業學院學報,2006,16(4):51-53.
[3] 余戰秋.《C++語言程序設計》課程教學方法研究[J]. 巢湖學院學報,2007,9(3):146-148.
[4] 鄭莉,董淵. C++語言程序設計[M]. 2版. 北京:清華大學出版社,2001.
[5] 鄭莉,董淵,張瑞豐. C++ 語言程序設計[M]. 3版. 北京:清華大學出版社,2005.