摘要:文章對非計算機專業學生C++面向對象程序設計課程的相關教學問題進行研究和探討。首先論述該課程的設置方法和對非計算機專業學生進行混合雙語教學的必要性,然后對該課程教學實施過程中關于教材選擇、課程考核環節所涉及的問題和具體解決方法進行闡述。通過筆者的教學實踐表明,對非計算機專業學生實施混合雙語教學能夠充分調動學生學習的積極性和主動性,有助于培養他們綜合運用C++知識的能力和素質,能夠獲得較為良好的教學效果。
關鍵詞:C++;面向對象;程序設計;混合式雙語教學
隨著計算機技術在各行業應用程度的加深,社會對具有各類專業背景的計算機應用人才需求不斷加大,客觀上要求各非計算機專業學生也必須掌握基本的程序設計技能。因此,目前各高校在本科生通識課程中一般都開設了C語言程序設計課程,甚至把通過有關計算機等級考試作為畢業的附加條件之一。
作為一種程序設計類課程,C++語言屬于C語言的面向對象擴展,編譯得到的可執行代碼效率很高,運用該語言進行高效率軟硬件設計都非常合適。因此,近年來在C語言程序設計通識課程基礎上,很多理工類高校非計算機專業也逐步把C++程序設計當作計算機程序設計類基礎課程并逐漸向C/C++程序設計專業基礎課程設置方式過渡。
2C++面向對象程序設計課程的混合式雙語教學
2.1課程設置
以C++語言為基礎進行面向對象程序設計知識的傳達,當前絕大多數高校都是設置兩門獨立課程,即先設置C語言課程,然后再設置專門的C++課程,也有的高校采用一門C/C++混合課程的方式,更有甚
者干脆摒棄C 語言課程直接開設C++課程。考慮到C語言本身涉及很多低端操作并具有使用靈活的特點,學習起來已經比較困難,而C++語言是C語言的超集,是C語言的面向對象擴展,與C語言相比,擴展的新知識點非常多,概念描述體系變化比較大,若將C語言和C++語言放在一門課程中學習,將使得課程顯得比較復雜和龐大,不利于課程教學的順利實施。因此,將它們放在兩門課程中的做法比較可取:在C語言課程講授中著重傳達結構化程序設計思想和算法以及計算機程序設計的基礎概念,而在C++程序面向對象設計的課程中除了進一步鞏固C語言相關知識外,再重點進行面向對象思想的傳達和熏陶。這樣既可以承前啟后保證學習的延續性,又能有效傳達產業界盛行的面向對象程序設計理念,從而為培養信息時代背景下的高技術應用復合型人才奠定基礎。
2.2課程教學方法——“混合式雙語”教學法
計算機基本軟硬件技術的孕育和發展絕大多數是由歐美發達國家完成的,大量的計算機文獻資料和資源主要是用英語表達的,要想深刻理解計算機的基本知識并不斷提高對計算機技術知識的理解和應用水平,能夠熟練運用計算機英語專業術語進行專業資料的處理或查找是非常必要的。衡量一個國家計算機應用水平的高低,計算機技術人員對于計算機英語的熟悉和運用水平應該是非常重要的指標之一。比如印度作為發展中國家,在世界軟件外包市場能占領一席之地,除了政府政策扶植以及軟件工程做得好等關鍵因素之外,英語作為其官方語言應該也是其中一個非常有利的因素。對于計算機類基礎課程進行雙語教學可以提高學生計算機專業英語應用能力,增強其國際化素質,由此滿足學生未來就業發展的需要。
C++面向對象程序設計由于其課程特點非常適合采用具有雙語特點的教學方式,原因有三:第一,計算機語言和操作命令本身就是在英語的基礎上開發設計的,采用雙語教學更有利于學生對語法規則的掌握。第二,采用純中文方式教學,學生往往對程序設計的基本方法和語法規則掌握得比較好,但在自己編程時不會利用調試工具進行查錯及改錯,一個關鍵問題就是看不懂各種英語提示信息以及各種幫助文件。第三,由于計算機英文教材大多使用較簡單的句式,常用的計算機專業詞匯只有一、兩千個,這對于已經具備基本聽說能力的大學生來說,進行雙語式教學是可能的[1]。
目前,C++面向對象程序設計與雙語有關的教學方式主要有以下三種:1)以中文教學為主,配以英語章節名稱和專業詞匯以及術語解釋或說明;2)中英文教學并重,這種教學方式要求教師用中英文相結合的方式授課,中文和英文授課比例基本差不多;3)以英語教學為主,僅用漢語作必要的輔助說明[2]。對于計算機類的本科專業學生而言,由于專業素質培養的需要,一般可采用第三種方式;對于目前基礎普遍較低的大中專院校學生,通常可采用第一種教學方式;但對于絕大多數非計算機專業學生的C++課程教學,筆者建議采用上述三種方式有機結合的混合雙語教學方式。
事實上,對于計算機專業的同學而言,建議采用第三種方式的近乎全雙語教學的方式,因為計算機專業一般都設置了很多關聯密切的計算機基礎課程,學生對計算機學科所涉及的概念、術語以及知識點都非常熟悉,采用雙語教學可以進一步提高他們的知識水平,使得他們在具有國際化水平的同時也能有效保證教學質量和效率;但對于非計算機類的其他理工科專業學生而言,他們的計算機知識學習能力比起計算機專業的學生來一般要相對差一些,而且近年來由于擴招和獨生子女特點等因素的影響,生源基礎往往參差不齊,在學習素養上總體來說有所滑坡。在傳授新的計算機知識的時候,非計算機專業學生的學習速度要相對慢一些,如果對于他們不加區別的也“一刀切”地推行雙語教學,則不利于他們對面向對象思想的理解和對C++程序設計基本知識的掌握,使得教學效果難以得到有效保證。而且對于他們而言,有關C++程序設計術語很難通過常規英語的學習來推測其具體含義,也未必會如計算機專業類學生那樣設置專門的計算機英語課程來學習了解。因此,對于非計算機專業學生完全沒有必要實施嚴格的雙語教學,筆者根據自己的教學實踐,覺得對于此類學生最好實施三種方式的有機混合式雙語教學,即盡可能兼顧所有學生的基礎和接受情況,提供足夠的學習素材和課程教學資源,從近漢語、半雙語至全雙語的范疇內讓學生發揮自由選擇的主動性,自覺針對自己的特點有目的地選擇相應學習方式,達到靈活的混合式教學效果。
2.3教材選擇
現在國內外C++教材很多,有非常厚的令人望而生畏的教材,也存在很薄的手冊性教材,選擇合適的教材對于成功的C++教學,非常重要。根據經驗,對于如上介紹的混合式雙語教學,筆者建議選用國外經典教材,同時也要注意翻譯者的翻譯水平是否符合信、達、雅的翻譯要求。而且最好能夠在國內同時有中文和英文影印版的教材,這樣一方面對某些水平較高的學生可以建議其直接閱讀英文教材,另一方面對于基礎較差學生讓其閱讀相應中文教材,同時對一般基礎學生則便于進行“半雙語”教學,可在中文和英文資源中選擇合適的材料最大限度地滿足學生素質差別大造成的教學需要。此外,還要注意選擇國內口碑很好的中文教材作為參考教材,以保證互補性,因為國內的好教材一般考慮了國內學生的特點,在內容組織和各環節上更加適合國內的教學環境。至少指定一門參考教材也便于學生復習鞏固所學知識,因為重復復習一本教材容易在心理上產生厭倦情緒,如果有講述同樣內容的不同教材作為參考對照,則可同時借鑒兩本教材的長處,有助于學生對所學內容的理解和把握。
經過仔細考察和比較,筆者建議選擇Walter Savitch博士編著的國外經典C++面向對象程序設計中文翻譯和影印版教材作為主導教材[3],同時把譚浩強教授編著的C++教材作為參考教材[4-5]。兩者都是C++程序設計教學中口碑非常好的教材,分別由中外名師編著,教材內容互相補充,在教學過程中一主一輔,相得益彰。其中Savitch教材有大量的自測題,每一自測題都有答案,可以輔助學生理解概念,另外還有難度較高的編程實踐題,前者可以幫助學生理解基本概念,適用于基礎一般的學生,后者可以輔助學生對基本概念的加深理解,適用于基礎較好的學生。由于其中自測題量非常大,基本上每一個C++知識點都有所照顧,這對基本概念的回顧和訓練非常有幫助。還可以選擇有代表性的編程實踐題作為上機實驗課所用的素材,其中部分難度比較大的實踐題可以進一步應用于C++面向對象程序設計的課程設計。該教材還有一個較大的亮點就是C語言概念和C++概念的有機過渡和銜接。教師在基于該教材進行課程講述時,可以根據學生實際的基礎情況酌情選擇一些章節進行介紹,而其余章節可以留給同學自學,這樣有選擇、有取舍的教學使得該教材的使用具有非常廣泛的適應性和靈活性,而譚浩強的教材在國內一直以來都很受歡迎,自然可以作為本課程不可多得的參考教材之一。
2.4課程考核
由于C++知識點非常多、非常雜,很多東西需要在平時掌握,臨時突擊難以奏效,因此在教學過程中需要增加平時考核的比重,在期末考試時則注重知識的全面、綜合考查。這樣對考核進行合理化的分配,有助于促進學生注重知識和學習的平時積累,避免臨時抱佛腳,可大大改善整個課程的學習效果。如前所述,對于筆者建議的Savitch教材,由于其中自測題量非常大,而且都相關于C++基本知識點的把握和理解,在平時考核過程中筆者一般抽取其中典型題目進行適當修改后考核,這一方面便于學生“舉一反三”、從多角度掌握相關知識點,另一方面也可以敦促學生加強對課程講授過程中知識點的復習而自覺在學習過程中進行大量自測題的練習,這對于C++課程的學習是非常必要的。
對于該課程的期末考核,筆者強調70%~80%分值左右題目也是以自測題為基礎進行適當改變得到的,而20%~30%分值題目是難度較高的綜合性題目,這樣一方面可以敦促大多數學生在考前進行全面復習鞏固,加強課程學習效果,另一方面可以調動少數優秀學生的復習積極性,客觀上形成一定的成績激勵機制。在上機考核中,基于所選定教材,筆者從教材的編程實踐題目中選擇一些較有趣味的、綜合性比較強的題目,這些題目一般沒有答案,在互聯網上也搜尋不到非常具體的相關資料,這可以促進學生積極獨立思考,自覺在實踐過程中增強對所學知識的理解和運用能力。而在課程設計考核環節中,筆者則一般布置綜合性更強的、很難由單個人單槍匹馬完成的題目,這些題目必須通過密切的團隊協作才能順利完成。這樣可以進一步培養學生的團隊精神,并在一定程度上讓他們體會現代軟件工程中的面向對象分工及協作的思想。
教學實踐證明,筆者這種考核方式一方面能夠兼顧基礎不同的學生,真正跳出了為了考核而考核的怪圈,切實達到了以考核促學、促教的目的;另一方面可以通過多頻度、多層次、多環節環環相扣的培養和考核,幫助培養學生對所學課程知識的綜合應用能力。
3結論和展望
對于非計算機類高等學校本科學生的C++面向對象程序設計教學來說,根據本課程的具體特點和需要,結合教學實踐,筆者建議最好采用“混合式雙語”教學。為了盡可能照顧大多數學生的教學需要,并兼顧全體同學的學習積極性,筆者認為要注意選擇合適、權威的國內外經典主教材和參考教材,在教學方式上采用“混合雙語”教學,注重以多頻度、多層次、多環節考核敦促學生平時學習并在期末進行全面復習,綜合提高教學效果,并盡可能廣泛地提供教學資源,使得不同基礎的學生都能根據自己需要選擇合適、配套的學習和實踐資料,充分協調教學方式單一性與學習需求多樣性的矛盾。在此基礎上,再輔以必要的教學方法,往往可以獲得較好的教學效果。
由于該課程僅僅是C++語言的入門課程,要想在實際過程中能夠有效應用所學C++面向對象知識進行開發和設計,往往還需要了解一種具體的圖形用戶接口集成封裝環境,如Windows系列的MFC和類Unix系列的Qt,在教學中如何密切結合這些封裝環境進行C++相關技能的培養和訓練,為學生進一步學習和能力的提高奠定基礎,是筆者需要進一步努力探索的問題。
參考文獻:
[1] 曹佳麗. 關于計算機學科開展“雙語教學”的思考[J]. 黑龍江科