針對計算機專業(yè)大學(xué)生在學(xué)習(xí)C++程序設(shè)計語言時存在難以培養(yǎng)成為實用型人才的問題,提出了一種面向工程應(yīng)用的C++程序設(shè)計教學(xué)模式創(chuàng)新方法。通過采用“雙主互動為綱、兩個創(chuàng)新、兩個學(xué)習(xí)、兩個支持、四個課堂”的教學(xué)模式,從教學(xué)方法、教學(xué)內(nèi)容、教學(xué)手段等各方面出發(fā),通過理論與實踐相結(jié)合,培養(yǎng)了計算機專業(yè)大學(xué)生的學(xué)習(xí)興趣,提高了工程應(yīng)用與動手編程能力,取得了良好的教學(xué)效果。工程應(yīng)用程序設(shè)計教學(xué)方法模式創(chuàng)新一、引言
C++語言是在C語言基礎(chǔ)上發(fā)展而來的一門面向?qū)ο蟮母呒壵Z言。教無定法,教學(xué)有法。對于計算機專業(yè)大學(xué)生的C++程序設(shè)計語言教學(xué)方法,必須結(jié)合當(dāng)前大學(xué)生基礎(chǔ)和實際情況,進行教學(xué)方法改革和教學(xué)模式創(chuàng)新,提高教學(xué)質(zhì)量和效果,使得計算機專業(yè)大學(xué)生不但能夠掌握面向?qū)ο蟮睦碚撝R,而且具有一定的可視化編程與調(diào)試能力,實現(xiàn)理論與實踐相結(jié)合,達(dá)到工程應(yīng)用型的實用人才水平。如何在有限的學(xué)時內(nèi)使得大學(xué)生能夠找到科學(xué)的創(chuàng)新學(xué)習(xí)方法[4],盡快掌握C++語言基本理論和具備編程能力,是每位任課教師都需要面臨的難題。
二、教學(xué)模式創(chuàng)新
為了培養(yǎng)面向工程應(yīng)用的C++程序設(shè)計人才,在知識、能力、應(yīng)用、創(chuàng)新等各方面全面培養(yǎng)大學(xué)生,本文提出“雙主互動為綱、兩個創(chuàng)新、兩個學(xué)習(xí)、兩個支持、四個課堂”的教學(xué)模式,使得學(xué)生能夠達(dá)到掌握理論知識和具備編程能力的工程應(yīng)用水平。教學(xué)模式創(chuàng)新的基本框架如圖1所示。
本課題組的教學(xué)模式采用雙主互動教學(xué)為綱,即基于師生互動的教師主導(dǎo)學(xué)習(xí)和學(xué)生自主學(xué)習(xí)。兩個創(chuàng)新是指對教學(xué)內(nèi)容和教學(xué)方法分別進行創(chuàng)新。教學(xué)內(nèi)容創(chuàng)新是指教師對教學(xué)內(nèi)容進行梳理分解,突出重點,并及時將新內(nèi)容、新科研成果、新概念、新技術(shù)等內(nèi)容補充進來,改善課程知識結(jié)構(gòu),以適應(yīng)社會對計算機編程人才的需求。教學(xué)方法創(chuàng)新是指采用互動式、全方位的教學(xué)方法,進行理論與實踐相結(jié)合、教學(xué)與科研相結(jié)合、課內(nèi)與課外相結(jié)合。兩個學(xué)習(xí)是指將學(xué)生分成多個小組進行討論學(xué)習(xí)、對C++的開發(fā)環(huán)境進行學(xué)習(xí),使得學(xué)生面向?qū)W以致用的培養(yǎng)環(huán)境。兩個支持是指教師要采用各種手段和方法對學(xué)生的學(xué)習(xí)進行指導(dǎo)支持,包括面授支持、電話支持、e-mail和QQ等網(wǎng)絡(luò)支持。四個課堂是指理論教學(xué)課堂、上機實踐課堂、課程設(shè)計課堂和其它課余時間的課堂。
三、采用自然語言啟發(fā)式教學(xué)方法,提高學(xué)生理解能力
C++語言是一門計算機程序設(shè)計語言。C++語言教材從前到后系統(tǒng)性特別強,前后章節(jié)之間環(huán)環(huán)相扣,聯(lián)系緊密。由于面向?qū)ο蟮暮芏嘈碌母拍畋容^抽象,如果教師在教學(xué)中僅僅把教材上的語法知識照本宣科地講給學(xué)生聽,會導(dǎo)致下面大部分學(xué)生聽不懂,學(xué)生會很容易感到枯燥乏味和厭倦疲勞,從而產(chǎn)生排斥和厭學(xué)情緒。這種抵抗情緒一旦從開始就產(chǎn)生,則將影響后續(xù)整個學(xué)期的教學(xué)效果。由于從頭到尾都聽不懂,老師在課堂上提出的問題學(xué)生也無法進行互動,這種灌輸式的教學(xué)方法效果非常差。而教師要根據(jù)課堂實際情況,采用互動式教學(xué)方法,培養(yǎng)學(xué)生的主動學(xué)習(xí)能力,才能得到良好的教學(xué)效果。
1.第一次課程教學(xué)中,明確C++語言課程的重要性
目前C++語言是大多數(shù)電子、信息、計算機相關(guān)專業(yè)的非常重要的程序設(shè)計課程,也是這些大學(xué)生后續(xù)專業(yè)課學(xué)習(xí)、畢業(yè)設(shè)計、以后上研究生或參加工作進行計算機軟件和IT開發(fā)的主要編程語言,廣泛應(yīng)用于軟件設(shè)計和開發(fā)中。要讓大學(xué)生有危機意識,在大學(xué)生就業(yè)如此嚴(yán)峻的情況下,學(xué)好C++語言,能夠提高大學(xué)生以后在就業(yè)競爭中的籌碼。
2.講課過程中,對C++語言中的很多概念,結(jié)合自然語言進行講解
C++語言作為一門計算機語言,它和人類的自然語言相比,既有區(qū)別,又有聯(lián)系。在講解一些關(guān)鍵概念時,采用一些淺顯的自然語言的例子,提高學(xué)生的理解能力。本文作者在講述一些關(guān)鍵概念時,將這些概念和自然語言結(jié)合進行循序漸進啟發(fā)式講解,激發(fā)學(xué)生的學(xué)習(xí)興趣,起到了非常好的效果。下面舉幾個例子。
(1)引用是C++語言中第一個新的概念。引用類似于自然語言中的別名或者綽號,是正名的別名,沒有正名就沒有別名。例如唐太宗就是李世民的引用。李世民是正名,唐太宗是別名。正名和別名屬于一個變量,共用同一片內(nèi)存空間。引用主要用作函數(shù)的參數(shù)傳遞,形實結(jié)合后不會產(chǎn)生臨時的變量,節(jié)省了內(nèi)存空間
(2)類和對象是C++語言區(qū)別于C語言中普通數(shù)據(jù)類型和變量的概念。類是具有相同屬性和行為的一組對象的集合,它為屬于這個類的所有對象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和行為兩個主要部分。類和對象的關(guān)系就像模具和鑄件的關(guān)系一樣,類就相當(dāng)于模具,對象就相當(dāng)于鑄件。一個模具可以生產(chǎn)出成千上萬個鑄件。
(3)友元是C++語言中另一個新的概念。在數(shù)據(jù)共享與保護中,友元類似于自然語言中的朋友,但是友元和自然語言中的朋友既有聯(lián)系又有區(qū)別。人類的朋友關(guān)系通常是雙向的、可以傳遞的,但是C++中的友元關(guān)系是單向的、不能傳遞的。
3.引導(dǎo)學(xué)生合理安排課程的學(xué)習(xí)時間,培養(yǎng)學(xué)生的學(xué)習(xí)興趣
教師可以把學(xué)生分成若干個小組并布置一些編程作業(yè),培養(yǎng)他們的團隊協(xié)作意識,并共享小組編程成果,使得他們對自己編制的程序能夠運行和產(chǎn)生正確的結(jié)果具有自豪感,提高學(xué)生的學(xué)習(xí)興趣。由每一個小組各自給全班同學(xué)講授和演示自己的算法、編程思路、運行結(jié)果,既能夠鍛煉學(xué)生的編程與演講能力,又能夠在課堂中產(chǎn)生良好的互動。
4.講課過程中盡量做到幽默風(fēng)趣,靈活運用教學(xué)手段
教師在上課時,要做到風(fēng)趣幽默、聲音洪亮、帶人真誠、平易近人、知識淵博、通俗易懂,才能產(chǎn)生良好的教學(xué)效果。教師要靈活運用多種教學(xué)手段,盡量采用多媒體教學(xué),在PPT幻燈片中多做一些動畫效果,或者以Flash動畫演示程序的動態(tài)運行過程。教師在C++語言教學(xué)過程中要根據(jù)課堂中學(xué)生的反應(yīng),隨機應(yīng)變,結(jié)合我國傳統(tǒng)文化與最新國內(nèi)外時事,讓學(xué)生潛移默化地學(xué)習(xí)一些難以理解的語法,則能達(dá)到事半功倍的效果。
四、對一些難以區(qū)分的概念采用表格形式進行對比和總結(jié)
C++語言是在C語言基礎(chǔ)上發(fā)展起來的面向?qū)ο蟮母呒壵Z言,全面兼容C,但是又增加了很多新的較為復(fù)雜的語法知識點。對于一些學(xué)生難以理解和掌握的語法知識點,如果教師不幫助學(xué)生及時進行總結(jié)和舉一反三,按照大學(xué)生初學(xué)的水平很難真正達(dá)到掌握和編程應(yīng)用的水平。因此,教師可以在講完某些知識點后采用表格的形式進行對比和總結(jié)。例如,C++中引用和指針的區(qū)別總結(jié)表,普通指針、指向常量的指針和常指針三種指針?biāo)赶虻膬?nèi)容和指針本身能否改變對比總結(jié)表,對基類中具有不同訪問屬性的成員經(jīng)過不同方式繼承后在派生類中的訪問權(quán)限的比較和總結(jié)表,運算符重載時重載為類的成員函數(shù)和友元函數(shù)、前置、后置自增、自減運算符參數(shù)個數(shù)總結(jié)表。
五、熟悉Visual C++編程環(huán)境,具備圖形界面編程能力
目前,Visual C++ 6.0是比較經(jīng)典的開發(fā)環(huán)境。即使掌握了C++基礎(chǔ)知識,仍然難以高效掌握使用Visual C++的編譯器。為了培養(yǎng)實用型軟件開發(fā)人才,教師還應(yīng)該進行Visual C++編譯器的入門教學(xué),培養(yǎng)學(xué)生掌握如下知識:
1.能夠使用Visual C++開發(fā)環(huán)境進行界面設(shè)計;
2.能夠創(chuàng)建簡單的基于MFC的應(yīng)用程序;
3.能夠使用類、函數(shù)和消息映射機制;
4.能夠利用開發(fā)環(huán)境有效創(chuàng)建對話框、按鈕和菜單等資源。
當(dāng)然,對于Visual C++的學(xué)習(xí),一本好的教材也至關(guān)重要,現(xiàn)在的書店和圖書館各種Visual C++的學(xué)習(xí)教材五花八門,不泛互相抄襲、錯誤百出、誤人子弟的教材。如何從這些書籍的海洋中找到合適的入門教材,對于作為初學(xué)者的大學(xué)生來說有點難為他們。本文作者也買過不少Visual C++學(xué)習(xí)的書籍,其中不少書就沒有任何學(xué)習(xí)價值,既浪費錢,又浪費時間。作為教師,有責(zé)任和義務(wù)為學(xué)生挑選一本優(yōu)秀的、很容易入門的教材。本文作者和周圍很多從事Visual C++語言開發(fā)的朋友們都認(rèn)為Jon Bates主編的《實用Visual C++ 6.0教程》是一本非常不錯的教材。本人在每個學(xué)期給學(xué)生教學(xué)時,都會將這本教材的電子版發(fā)給同學(xué)們,而且從他們的反饋來說,效果確實不錯。
六、理論與實踐相結(jié)合,提高程序編程與調(diào)試能力
理論必須與實踐相結(jié)合,才能得到驗證,否則只是紙上談兵。作為一門計算機語言,C++程序設(shè)計的實踐性操作特點決定了上機實踐是課程學(xué)習(xí)中的重要環(huán)節(jié)。授之以魚,不如授之以漁。幫助學(xué)生編程序或調(diào)試程序,不如教會學(xué)生編程序或調(diào)試程序。因此,在教學(xué)中,教師可以從如下幾個方面進行考慮:
1.上課時教師提前給同學(xué)們將上機編譯器環(huán)境、各種單步調(diào)試、斷點調(diào)試的方法傳授給學(xué)生,并布置好上機操作的題目,這樣學(xué)生在上機前就會有充分的準(zhǔn)備,做到有的放矢。
2.針對性地給學(xué)生布置一些具有趣味性的程序設(shè)計題目,讓學(xué)生通過查資料、上網(wǎng)和請教老師等多種方式編程調(diào)試,培養(yǎng)學(xué)生解決問題的能力,讓學(xué)生感到有成就感,提高學(xué)生的學(xué)習(xí)興趣。
3.對學(xué)生的上機存在的問題進行總結(jié),對于一些普遍存在的問題要在課堂上統(tǒng)一進行講解。并且也要對對自己的教學(xué)方法和教學(xué)模式進行實時總結(jié)和改進,形成閉環(huán)。
按照本文作者研究的教學(xué)方法,經(jīng)過一個學(xué)期的理論教學(xué)與上機實踐學(xué)習(xí),在學(xué)期期末考試前的一個月對2010級計算機科學(xué)與技術(shù)專業(yè)1班全班52個學(xué)生劃分為13個小組布置了課程設(shè)計項目。每4人一個小組,由每個小組自己推選出1個組長、1個副組長和組員。組長負(fù)責(zé)課程設(shè)計項目的總體實施和分工,副組長協(xié)助,組員配合。課程設(shè)計的考核是每個小組交一份打印課程設(shè)計報告,包括項目題目、小組成員、程序設(shè)計結(jié)構(gòu)、流程圖、源程序、實驗運行結(jié)果。每個小組推舉一名學(xué)生在講臺上進行10分鐘的PPT演講,老師和學(xué)生進行5分鐘左右的提問。考核成績是由老師根據(jù)課程設(shè)計報告、演講PPT內(nèi)容、回答問題效果等項目進行打分。經(jīng)過一個學(xué)期的C++理論學(xué)習(xí)和一個月的課程設(shè)計,全部小組都按時遞交了課程設(shè)計報告和進行了匯報演講,其中不少學(xué)生講的非常精彩,這對于他們也是一種不可多得的實戰(zhàn)鍛煉。學(xué)生普遍反映通過理論與實踐結(jié)合的學(xué)習(xí)開闊了視野,提高了工程應(yīng)用能力,培養(yǎng)了團隊協(xié)作能力,增強了學(xué)習(xí)信心,達(dá)到了前所未有的良好效果。
七、結(jié)論
本文作者根據(jù)多年來的教學(xué)體會,提出將滿堂灌式的教學(xué)方法轉(zhuǎn)變?yōu)橐詫W(xué)生為主體、以活躍式課堂為形式、以課程實際相結(jié)合的多模式創(chuàng)新教學(xué)方法,真正實現(xiàn)教師為主導(dǎo)、學(xué)生為主體的互動式高效教學(xué)創(chuàng)新模式。
參考文獻(xiàn):
[1]鄭莉. C++語言程序設(shè)計[M].北京:清華大學(xué)出版社,2010.
[2]錢能. C++程序設(shè)計教程[M].北京:清華大學(xué)出版社,2009.
[3]譚浩強. C++面向?qū)ο蟪绦蛟O(shè)計[M].北京:清華大學(xué)出版社,2006.
[4]王衛(wèi)軍.教師信息化教學(xué)能力發(fā)展策略研究述[J].電化教育研究,2012, 229(5):103-109.
[5] Jon Bates,Tim Tompkins.實用Visual C++ 6.0教程[M].北京:清華大學(xué)出版社,2000.
基金項目:本文研究得到了國家自然科學(xué)基金資助(No. 61201434)、中國博士后基金特別資助(No. 200902593)、教育部博士點基金資助(No. 20090202120002),中央高?;究蒲袠I(yè)務(wù)費專項資金項目(No. GK200902014)。