徐 凱,宋麥玲,薛思清
(中國地質(zhì)大學(xué)(武漢)計算機(jī)學(xué)院,湖北武漢,430074)
C語言是國內(nèi)外使用最廣泛的高級程序設(shè)計語言之一。C語言功能豐富、表達(dá)能力強(qiáng)、使用方便靈活、應(yīng)用面廣、目標(biāo)程序執(zhí)行效率高、可移植性好,既具有高級語言的優(yōu)點,又具有低級語言的許多特點,特別適合于編寫系統(tǒng)軟件[1],也可用于編寫應(yīng)用軟件。因此很多高校把“C程序設(shè)計”作為計算機(jī)各專業(yè)的主干基礎(chǔ)課程之一,可見其地位和作用是非常重要的。通過“C程序設(shè)計”的教學(xué),目的是使學(xué)生能夠很好地理解C程序設(shè)計的基本語法和規(guī)則,掌握C語言程序設(shè)計的基本思路和算法,熟悉程序調(diào)試環(huán)境,從而培養(yǎng)學(xué)生養(yǎng)成良好的編程思想、編程習(xí)慣、設(shè)計規(guī)范和風(fēng)格,為后續(xù)專業(yè)課程及其它程序設(shè)計課程的學(xué)習(xí)和應(yīng)用奠定堅實的基礎(chǔ)。
傳統(tǒng)的“C程序設(shè)計”教學(xué)方式是:“提出概念―解釋概念―例題講解―習(xí)題”,在課程教學(xué)過程中主要是以教師為主導(dǎo)的“填塞式”的教學(xué)方式,而大部分學(xué)生基本上是以被動接受的方式在教師指導(dǎo)下完成學(xué)習(xí),學(xué)生學(xué)習(xí)的主動性與積極性都不強(qiáng)。同時,由于這門課程的知識點多,信息量大,邏輯思維能力要求很強(qiáng)。因此,學(xué)生普遍認(rèn)為C語言程序設(shè)計的語法復(fù)雜,知識零亂,枯燥難懂,全部課程學(xué)完以后,大多學(xué)生只能看懂程序,而不會編寫程序,不會應(yīng)用C語言解決實際問題。本文結(jié)合課題組教師的教學(xué)實踐,提出在“C程序設(shè)計”課程中采用項目驅(qū)動式案例教學(xué)法,并對教學(xué)案例的選擇、實施以及在教學(xué)中應(yīng)注意的問題進(jìn)行了探討。
項目驅(qū)動教學(xué)法來源于建構(gòu)主義學(xué)習(xí)理論,與其相適應(yīng)的項目驅(qū)動教學(xué)模式為:“以學(xué)生為中心,教師在整個教學(xué)過程中起組織和指導(dǎo)的作用,利用情境、協(xié)作、會話等學(xué)習(xí)環(huán)境要素,充分發(fā)揮學(xué)生的主動性、積極性和創(chuàng)新精神,最終達(dá)到使學(xué)生有效地掌握當(dāng)前所學(xué)的知識的目的?!痹谶@種模式中,教學(xué)關(guān)注的重點是學(xué)生達(dá)到的程度,指導(dǎo)教師的任務(wù)是根據(jù)學(xué)生已有的經(jīng)驗、知識、水平和興趣來選取適合他們的項目,使學(xué)生置身于探索知識的情景之中,即在真實世界中運用知識解決問題。從根本上將傳統(tǒng)課堂中老師滿堂灌,轉(zhuǎn)變?yōu)椤皩W(xué)生為主體,教師為主導(dǎo)”的教學(xué)模式[2]。
案例教學(xué)法(Case Study)是19世紀(jì)70年代美國哈佛大學(xué)法學(xué)院院長蘭德爾首創(chuàng)的,最早是應(yīng)用于醫(yī)學(xué)領(lǐng)域,后來廣泛運用于工商管理、法學(xué)、軍事學(xué)、教育學(xué)、理學(xué)以及工學(xué)等學(xué)科。所謂案例教學(xué)法是指教師在教學(xué)過程中,根據(jù)教學(xué)目的和培養(yǎng)目標(biāo)的要求,以案例為基本素材,把學(xué)生帶入特定的情景中進(jìn)行分析問題和解決問題,從而培養(yǎng)學(xué)生運用理論知識進(jìn)行分析研究,提出自己的見解,做出判斷和決策,提高學(xué)生解決問題的能力的一種理論聯(lián)系實際的啟發(fā)式教學(xué)方法[3]。它是一種生動、靈活、多樣化的教學(xué)方法,通過師生、生生之間雙向和多向互動,積極參與,平等對話和研討,重點培養(yǎng)學(xué)生的批判反思意識及團(tuán)體合作能力,并促使學(xué)生充分理解問題的復(fù)雜性、變化性、多樣性等屬性的重要教學(xué)形式。
本文提出的項目驅(qū)動式案例教學(xué)法,其核心是用一個完整的項目貫穿“C程序設(shè)計”課程的所有教學(xué)內(nèi)容,并采用逐步擴(kuò)張法進(jìn)行項目的開發(fā),同時,把項目拆分為若干個典型案例,在課程教學(xué)中以典型案例劃分單元教學(xué)內(nèi)容,以案例引導(dǎo)學(xué)生學(xué)習(xí)不同的知識點。這樣,將項目開發(fā)與課程教學(xué)交叉融合、相輔相成,從而實現(xiàn)“C程序設(shè)計”的教學(xué)目標(biāo),并培養(yǎng)學(xué)生形成完整的編程思想與編程風(fēng)格。與傳統(tǒng)的教學(xué)方法相比,項目驅(qū)動式案例教學(xué)法具有從解決實際問題出發(fā),理論聯(lián)系實際,能夠活躍學(xué)習(xí)氣氛,調(diào)動學(xué)習(xí)主動性與積極性,使課堂更具有趣味性。
“C程序設(shè)計”課程的教學(xué)目的是向?qū)W生介紹結(jié)構(gòu)化程序設(shè)計的基本思想與方法,通過學(xué)習(xí)這門課程,讓學(xué)生了解用計算機(jī)解決問題的一般方法步驟,重點掌握編寫和調(diào)試簡單應(yīng)用程序的技能,培養(yǎng)學(xué)生的實際動手能力和探究、創(chuàng)新能力。為此,根據(jù)“C程序設(shè)計”課程的教學(xué)目的與內(nèi)容,我們將這門課程分為兩個階段來實施項目驅(qū)動式案例教學(xué)。第一階段是基礎(chǔ)教學(xué),主要包括程序基本結(jié)構(gòu)、數(shù)據(jù)類型、操作符基本的語言要素,通過對這個階段的學(xué)習(xí),讓學(xué)生能夠掌握C程序設(shè)計的基本知識,初步讀懂程序,其目的是培養(yǎng)學(xué)生的興趣。第二階段主要包括函數(shù)、指針、結(jié)構(gòu)體、文件等語言要素,通過這個階段的學(xué)習(xí),讓學(xué)生能夠獨立編寫程序,其目的是理論與實踐相結(jié)合,提高學(xué)生的實際應(yīng)用能力。
根據(jù)以上安排,筆者設(shè)計了由“學(xué)生信息管理系統(tǒng)”項目來驅(qū)動C程序設(shè)計的課程教學(xué)。在實際教學(xué)過程中,把“學(xué)生信息管理系統(tǒng)”項目拆分為20個案例,如程序結(jié)構(gòu)、數(shù)據(jù)類型、操作符、數(shù)組、字符串、函數(shù)等,每個案例對應(yīng)一個知識點。在56學(xué)時的教學(xué)過程中,40學(xué)時完成教師與學(xué)生互動的項目驅(qū)動的案例教學(xué)過程;16學(xué)時用于完成項目實踐,即仿照“學(xué)生信息管理系統(tǒng)”項目完成“本班學(xué)生檔案管理”。
在每節(jié)課程的教學(xué)過程中,以教師為主體,采用案例分析教學(xué)法,通過對案例的演示、講授和分析,將案例與所講授的課程知識點融為一體,形成一個完整的課程內(nèi)容體系。以數(shù)組這一部分為例,首先,給學(xué)生演示用數(shù)值實現(xiàn)的案例——“學(xué)生信息管理系統(tǒng)”,向?qū)W生演示學(xué)生成績的輸入、查詢、排序、刪除、輸出等與數(shù)組案例相關(guān)的內(nèi)容。同時,教師在演示的過程中向?qū)W生提出相關(guān)問題,讓學(xué)生思考的同時引出數(shù)組的知識點。其次,講授數(shù)組的語法及功能,重點對數(shù)組概念、語法進(jìn)行講授。講授完后,讓學(xué)生結(jié)合“學(xué)生信息管理系統(tǒng)”,自己總結(jié)數(shù)組的功能。再次,根據(jù)學(xué)生的理解程度,再進(jìn)一步深入剖析“學(xué)生信息管理系統(tǒng)”案例中與數(shù)組相關(guān)的內(nèi)容,可以采用從上至下的方式,帶領(lǐng)學(xué)生對案例的算法、語法及功能進(jìn)行分析,讓學(xué)生充分理解和領(lǐng)會數(shù)組在“學(xué)生信息管理系統(tǒng)”案例功能模塊中的主要作用。最后將整個案例中所用到的知識點進(jìn)行匯總,使學(xué)生更好地理解數(shù)組的理論知識,也為后續(xù)的實踐學(xué)習(xí)打下良好的基礎(chǔ)。
在整個教學(xué)過程中,教師與學(xué)生的交互貫穿整個流程。教師起主導(dǎo)作用,也就是教師根據(jù)教學(xué)內(nèi)容將所有案例與所要教授的知識點緊密結(jié)合,并流程化,分階段實施,由淺入深,層層遞進(jìn)。而學(xué)生作為學(xué)習(xí)的主體,在整個項目的實施階段,學(xué)生隨時要主動學(xué)習(xí)和理解案例,以及相關(guān)的知識點,并且要熟練掌握編程思想與設(shè)計規(guī)范。
案例的實現(xiàn)是項目驅(qū)動式案例教學(xué)法中極為重要的一步,因此,要求學(xué)生在實踐課上親自編程來實現(xiàn)案例教學(xué)中提到的案例,這樣才能讓學(xué)生真正地將各個知識點融入到實踐中,體會理論與實踐的有機(jī)結(jié)合。教師根據(jù)案例涵蓋知識點的多少及難易程度,合理安排實踐課的內(nèi)容。一般情況下,每一學(xué)時實踐課實現(xiàn)案例的一至兩個功能模塊。
為了讓學(xué)生更好地學(xué)好C語言程序設(shè)計,同時,也為了更好地發(fā)揮項目驅(qū)動式案例教學(xué)法的作用,在“C程序設(shè)計”課程中使用項目驅(qū)動式案例教學(xué)法時,應(yīng)該注意如下四點:
第一,項目的設(shè)計。項目的設(shè)計應(yīng)涵蓋C語言程序設(shè)計教學(xué)的所有知識點,并能激起學(xué)生興趣與求知欲。同時,項目難度要適宜,確保大多數(shù)同學(xué)能夠完成,項目完成后應(yīng)能看到具體的效果,這樣能調(diào)動學(xué)生探索知識的積極性和主動性。
第二,案例的選擇。案例是讓學(xué)生在真實的環(huán)境中完成任務(wù),達(dá)到提高學(xué)生分析問題、解決問題的實踐動手能力,因此案例選擇時應(yīng)考慮如下方面:(1)案例的選擇要能包含盡可能多的知識點,不能脫離相關(guān)知識點,否則案例的選擇沒有意義;(2)案例應(yīng)具有代表性與可擴(kuò)展性,學(xué)生能夠從案例中得到啟發(fā),進(jìn)行拓展性思考,這樣能讓優(yōu)秀的學(xué)生有發(fā)揮的空間;(3)案例選擇的大小和難度要適宜。難度和規(guī)模太小,難以豐富編程內(nèi)容,達(dá)不到應(yīng)有的效果;同樣,難度和規(guī)模太大,又會超出學(xué)生的實際知識水平與能力,使學(xué)生產(chǎn)生挫敗感,同樣影響教學(xué)效果;(4)案例教學(xué)中要貫穿編程風(fēng)格的訓(xùn)練,這是編程內(nèi)容中不可或缺的一部分,它反映了一個人編程的思維品質(zhì)與編程的設(shè)計風(fēng)范。因此,編程風(fēng)格的訓(xùn)練應(yīng)該從一開始就加以重視,并貫穿整個課程的始終[4]。
第三,案例的講解與總結(jié)。案例的講解是案例實施的指導(dǎo),案例總結(jié)是案例實施的歸納,是項目驅(qū)動式案例教學(xué)的重點和精華部分,教師應(yīng)該重點講解。
第四,案例的銜接與項目的完成。通過一條主線,把案例銜接起來,最終完成整個項目,并讓學(xué)生看到完成后的效果。
教學(xué)實踐證明,在“C程序設(shè)計”課程教學(xué)中采用項目驅(qū)動式案例教學(xué)法,能把理論與實踐緊密結(jié)合,能增加課堂教學(xué)信息量,提高教學(xué)質(zhì)量。同時,能夠充分調(diào)動學(xué)生的積極性,激發(fā)學(xué)生學(xué)習(xí)的興趣,對提高學(xué)生分析問題、解決問題,以及培養(yǎng)學(xué)生的創(chuàng)新思維與實踐的能力都具有重要的作用。
總之,項目驅(qū)動式案例教學(xué)法是一種具有啟發(fā)性、實踐性,能開發(fā)學(xué)生智力,提高學(xué)生決策能力和綜合素質(zhì)的新型教學(xué)方法。合理、有效地使用項目驅(qū)動式案例教學(xué)可將枯燥的抽象的概念變得生動、具體,重點突出,簡單明了,既活躍了課堂氣氛,又調(diào)動了學(xué)生的積極性[5]。所以在“C程序設(shè)計”課程的教學(xué)中使用項目驅(qū)動式案例教學(xué),容易使教學(xué)過程充滿挑戰(zhàn)性、趣味性,很好地解決傳統(tǒng)教學(xué)中遇到的問題。值得一提的是,對于部分理論知識,教師還應(yīng)該按照教學(xué)的實際情況,運用傳統(tǒng)教學(xué)方法進(jìn)行系統(tǒng)的講授,不能完全由項目驅(qū)動式案例教學(xué)法來替代。因此,今后,我們將進(jìn)一步探索項目驅(qū)動式案例教學(xué)法在“C程序設(shè)計”中的應(yīng)用,進(jìn)一步去尋求傳統(tǒng)教學(xué)法與項目驅(qū)動式案例教學(xué)法的最佳結(jié)合點,各取所長,既要能系統(tǒng)化地傳授教學(xué)內(nèi)容,又要能提高學(xué)生學(xué)習(xí)的主動性、創(chuàng)造性,從而追求更高的教學(xué)效果。
[1] 譚浩強(qiáng).“C程序設(shè)計”[M].3版.北京:清華大學(xué)出版社,2005.
[2] 郭新,孟昭文,王業(yè)君.項目驅(qū)動教學(xué)法在高校Linux人才培養(yǎng)中的應(yīng)用[J].職業(yè)圈,2007(21):116-117.
[3] 鄭金洲.案例教學(xué)指南[M].上海:華東師范大學(xué)出版社,2000.
[4] 范勁松,黃友初.案例教學(xué)法在C語言教學(xué)中的系統(tǒng)應(yīng)用[J].鄖陽醫(yī)學(xué)院學(xué)報,2005,24(3):191-192.
[5] 任華.案例教學(xué)法在計算機(jī)C語言教學(xué)中的作用探究[J].信息科技,2011(1):183-184.