金蘭
摘 要:分析傳統(tǒng)的程序設(shè)計基礎(chǔ)課程教學(xué)存在的不足,提出以計算思維培養(yǎng)為導(dǎo)向,引入問題驅(qū)動式、圖示分析式、動態(tài)模擬式、研討式課堂教學(xué)模式;層次化、階段化實踐教學(xué)模式;課外編程訓(xùn)練,改革考核評價方式,培養(yǎng)學(xué)生的算法分析和設(shè)計能力,編程能力和團(tuán)隊協(xié)作能力,并介紹了課堂教學(xué)和實踐教學(xué)的教學(xué)改革方案。經(jīng)實踐證明,取得了較好的教學(xué)效果。
關(guān)鍵詞:程序設(shè)計基礎(chǔ)課程;計算思維;問題驅(qū)動;研討式;算法分析和設(shè)計
中圖分類號: G642.0 文獻(xiàn)標(biāo)志碼:A 文章編號:1673-8454(2017)02-0035-04
在高等學(xué)校中,一般會將程序設(shè)計基礎(chǔ)知識點融入到《C語言程序設(shè)計》課程中。程序設(shè)計基礎(chǔ)課程教學(xué)的主要目標(biāo)是:掌握C語言的語法特征,掌握計算機問題求解的基本思路和方法,從問題提出、問題分析、算法分析、編寫程序、調(diào)試運行到說明歸納的過程中,培養(yǎng)學(xué)生的算法分析和設(shè)計能力、求解問題的能力和一定的創(chuàng)新能力。程序設(shè)計基礎(chǔ)課程是計算機及相關(guān)專業(yè)的一門重要的學(xué)科基礎(chǔ)課,一般在大一階段開設(shè),是大學(xué)生入學(xué)以來學(xué)習(xí)的第一門編程語言,也是訓(xùn)練計算思維和編程思維的入門課程。該門課程對于學(xué)生后續(xù)專業(yè)課程的學(xué)習(xí),甚至是求職就業(yè)都起著非常重要的作用[1]。
一、學(xué)習(xí)程序設(shè)計語言存在的問題
(1)程序設(shè)計基礎(chǔ)課程知識點龐雜,規(guī)則繁多,教師為了能夠完整全面的講解知識點,授課過程中滿堂灌,學(xué)生被動聽講,常常感覺枯燥乏味,從而失去了學(xué)習(xí)的動力和興趣[2]。
(2)學(xué)生經(jīng)常上課的時候能聽懂教師講授的知識,但輪到自己親自動手解決問題的時候,常常不知道如何抽象問題,建立計算思維模型,編程沒有頭緒,無從動手。
(3)在編寫、運行和調(diào)試程序時經(jīng)常出現(xiàn)一大堆各種各樣的問題,摸索半天仍然沒能找到問題的癥結(jié),煩躁不堪,隨著問題越來越多,排錯能力又沒有同步提升,學(xué)習(xí)的阻力越來越大,逐漸產(chǎn)生畏難情緒,進(jìn)而放棄編程練習(xí)。
該如何組織教學(xué)內(nèi)容,改進(jìn)教學(xué)方法,改善教學(xué)模式,提升教學(xué)質(zhì)量,提高教學(xué)效果,是教師需要不斷摸索、探討和改革的課題。
二、教學(xué)改革方案
1.課堂教學(xué)
(1) “授之以魚不如授之以漁”的教育理念
提出了以語法知識為主線的教學(xué)模式向以語法知識為基礎(chǔ),以計算思維培養(yǎng)為主線的教學(xué)模式。計算思維模式培養(yǎng)思路:按照問題提出->問題分析->算法描述->程序?qū)崿F(xiàn)->歸納說明的步驟來設(shè)計和實現(xiàn)。該教學(xué)模式弱化了語言語法的講解,強化了算法的分析和設(shè)計思路,有助于訓(xùn)練學(xué)生的抽象思維、邏輯思維和建模能力,提高學(xué)生的分析問題和解決問題的能力。
(2)問題驅(qū)動式教學(xué)方法
問題驅(qū)動式教學(xué)方法提高學(xué)生的學(xué)習(xí)興趣。傳統(tǒng)課程對知識點的講解通常是這樣一個過程:概念提出、舉例講解、歸納總結(jié)。問題驅(qū)動式教學(xué)過程中通常是對既往的知識點進(jìn)行回顧,針對新提出的問題找到既往所學(xué)知識點的局限性,從而引出新的知識點,再進(jìn)一步剖析講解解決問題。例如,在講解數(shù)組這一章的時候,一開始并不是先講授數(shù)組的定義、初始化等語法特征,而是從順序結(jié)構(gòu)導(dǎo)入。先提出問題:求一個班30個學(xué)生的英語課程的平均成績。按照前面所學(xué)的知識,可以采用順序結(jié)構(gòu)來實現(xiàn),定義30個變量存放30個學(xué)生的英語成績,然后依次將這30個學(xué)生的英語成績累加求平均分,雖然這樣可以得到我們要的結(jié)果,但是發(fā)現(xiàn)這種做法非常繁瑣,涉及的變量也非常多,容易出錯,于是就思考是否有一種更加簡潔方便的做法來解決問題,于是就引出了數(shù)組的定義等系列概念。問題驅(qū)動式教學(xué)方法不僅更能引人入勝,激發(fā)學(xué)生的學(xué)習(xí)興趣,而且有助于知識點的回顧,有利于知識的融會貫通。
(3)多樣化教學(xué)方法
除了宏觀上“計算思維培養(yǎng)”、“問題式驅(qū)動”教學(xué)模式以外,在教學(xué)過程中我們還采用圖示分析式、動態(tài)模擬式等靈活多樣的教學(xué)方法。使學(xué)生不單純是學(xué)到一點點知識,而是掌握獲取知識的方法和手段,即激發(fā)了學(xué)生的學(xué)習(xí)熱情,又培養(yǎng)了學(xué)生的自學(xué)和創(chuàng)新能力。
1)圖示分析式:用圖示分析的方式來演示知識模塊中復(fù)雜的變化過程和規(guī)律,形象直觀,學(xué)生學(xué)起來不費勁。例如:C語言中函數(shù)調(diào)用時,函數(shù)實參與形參之間是如何進(jìn)行參數(shù)傳遞以及它們的值是如何發(fā)生變化的?各種類型的數(shù)據(jù)作為函數(shù)參數(shù),函數(shù)參數(shù)傳遞的過程與規(guī)律也不盡相同。所以在講授函數(shù)參數(shù)傳遞這個知識模塊時,采用了內(nèi)存圖示分析法,剖析了簡單變量作函數(shù)參數(shù)、數(shù)組名作函數(shù)參數(shù)以及指針作函數(shù)參數(shù)三種情況下函數(shù)參數(shù)傳遞的過程以及函數(shù)實參和形參值的變化情況。圖示分析法可以動態(tài)地、直觀地看到在函數(shù)參數(shù)傳遞過程中內(nèi)存變量值的變化情況,有助于理解函數(shù)參數(shù)傳遞的過程和規(guī)律。復(fù)雜的函數(shù)參數(shù)傳遞過程生動形象,一目了然,有效化解了學(xué)生的畏難情緒,激發(fā)了學(xué)生的學(xué)習(xí)興趣,調(diào)動了學(xué)生的學(xué)習(xí)主動性。
2)動態(tài)模擬式:用生活中淺顯易懂、生動形象的例子來現(xiàn)場模擬程序設(shè)計中抽象復(fù)雜的算法。比如:在講解數(shù)組中的冒泡排序算法的時候,先講授了將6個數(shù)按照由小到大的順序進(jìn)行冒泡排序?qū)崿F(xiàn)的算法,接下來,請6位同學(xué)到講臺上來,隨機地站成一排,用學(xué)生的身高來模擬數(shù)的大小,然后通過不斷地對相鄰兩名學(xué)生的身高進(jìn)行大小比較、交換位置來模擬冒泡排序算法的實現(xiàn)過程。當(dāng)算法完成后,這6位同學(xué)就是按照由小到大的順序站成一排了。通過動態(tài)模擬式教學(xué)方法,抽象復(fù)雜的程序設(shè)計算法化繁為簡、通俗易懂,營造了良好的課堂氛圍,激發(fā)了學(xué)生的學(xué)習(xí)興趣,調(diào)動了學(xué)生的學(xué)習(xí)主動性。
(4)引入研討課
《程序設(shè)計基礎(chǔ)》上課環(huán)節(jié)針對2個班安排四次教學(xué)研討課, 每次2個學(xué)時,共計8個學(xué)時。課程組織形式如下:
1)教學(xué)內(nèi)容安排。一章或幾章結(jié)束后,布置一道規(guī)模適中的課后習(xí)題。比如:求一元二次方程;賽車程序;隨機生成考試座位程序。對于題目的選取,最好是開放式的,具有研討意義的題目,不要有唯一答案,題目完成可以是簡單的,也可以是復(fù)雜的。
2)學(xué)生準(zhǔn)備。學(xué)生在課下組成一個3-4人的小組,進(jìn)行分工,采用團(tuán)隊合作的形式完成該程序。要求提交:設(shè)計文檔、答辯ppt、源程序、程序演示結(jié)果。學(xué)生答辯現(xiàn)場如圖1、圖2所示。
3)考核方式。每個團(tuán)隊指派1名學(xué)生講解、演示、答辯,時間控制在5分鐘,20組都上臺。比如,一個團(tuán)隊3個學(xué)生,每個學(xué)生滿分100分,共300分。然后,拿出240分讓學(xué)生團(tuán)隊給自己團(tuán)隊成員分配各自的得分;另外的60分由教師給出;下面的學(xué)生也會根據(jù)臺上學(xué)生的表現(xiàn)給出評價,對團(tuán)隊學(xué)生的自我評分具有參考和借鑒意義。最后按照各個團(tuán)隊平均分的高低來進(jìn)行成績排序。
通過教學(xué)研討課,可以激發(fā)學(xué)生的學(xué)習(xí)興趣,鍛煉編程實踐能力,綜合運用能力,增強團(tuán)隊合作意識,溝通能力和表達(dá)能力。
2. 實踐教學(xué)
(1)層次化實踐教學(xué)體系
程序設(shè)計是實踐性極強的課程,實踐教學(xué)分四步進(jìn)行:課堂實踐、上機實驗課、課程設(shè)計、創(chuàng)新實踐。
1)課堂實踐,教師講解完案例后,給出1-2題目讓學(xué)生課堂實踐,課堂講授稍作停頓給學(xué)生一個消化吸收的間隙,鞏固當(dāng)堂所學(xué)的知識。另外,學(xué)生的思維也從“聽”切換到“思”,達(dá)到一定的教學(xué)緩沖的作用。最后,通過學(xué)生課堂實踐完成的情況,教師也能充分了解學(xué)生知識掌握的情況,適當(dāng)調(diào)整授課的進(jìn)度和節(jié)奏。
2)《程序設(shè)計基礎(chǔ)》課內(nèi)安排了六次上機,共計24學(xué)時。課內(nèi)上機環(huán)節(jié)主要是針對一個或幾個章節(jié)的授課內(nèi)容來安排設(shè)置的?!冻绦蛟O(shè)計基礎(chǔ)》上機環(huán)節(jié),鍛煉了學(xué)生分析、解決問題的能力,訓(xùn)練了動手和實踐編程能力。
3)課程設(shè)計是集中性的實踐教學(xué)環(huán)節(jié),課程設(shè)計為期兩周,任務(wù)是開發(fā)一個中小型的信息管理系統(tǒng),能夠?qū)崿F(xiàn)對信息的增加、修改、刪除、查詢、排序和統(tǒng)計等操作,實現(xiàn)信息的存盤和讀取。系統(tǒng)完成后學(xué)生現(xiàn)場演示,教師驗收、組織答辯,學(xué)生按照軟件工程流程撰寫課程設(shè)計報告。課程設(shè)計環(huán)節(jié)覆蓋了整個《程序設(shè)計基礎(chǔ)》知識內(nèi)容,并將各個章節(jié)的內(nèi)容有機結(jié)合起來,通過課程設(shè)計環(huán)節(jié)的系統(tǒng)訓(xùn)練,充分鍛煉學(xué)生的動手實踐能力,發(fā)揮學(xué)生的個性化思維、創(chuàng)新能力和團(tuán)隊合作精神,使學(xué)生更好的掌握結(jié)構(gòu)化程序的分析、設(shè)計、開發(fā)、調(diào)試和測試的流程。
4)創(chuàng)新實踐是指多數(shù)學(xué)生在學(xué)習(xí)本門課程后,順利通過全國計算機等級考試(二級C),部分學(xué)生還取得了全國計算機技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試(程序員)的資格。學(xué)院鼓勵、組織和培訓(xùn)計算機科學(xué)與技術(shù)、軟件工程等專業(yè)的學(xué)生參加“藍(lán)橋杯”程序設(shè)計大賽等競賽。
(2)階段化實踐教學(xué)內(nèi)容
上機環(huán)節(jié)依照教學(xué)體系知識點的劃分,并結(jié)合學(xué)生的認(rèn)知規(guī)律,分模塊、分階段、由淺入深地逐步遞進(jìn),將上機環(huán)節(jié)分為四個階段。
1)模仿驗證階段。在這個階段,上機指導(dǎo)教師給出一些典型的題目,并帶領(lǐng)學(xué)生分析題目,給出示范參考程序,讓學(xué)生上機運行、調(diào)試,驗證運行結(jié)果。然后提出一些問題,讓學(xué)生在計算機上練習(xí),養(yǎng)成學(xué)生通過上機練習(xí)來驗證程序和算法正確性的習(xí)慣。
2)自主設(shè)計階段。在這個階段,教師給出一些上機小題目,讓學(xué)生自主分析,編寫程序,調(diào)試運行出結(jié)果。上機主要以學(xué)生為主完成,老師可以給予輔助指導(dǎo)。
3)綜合設(shè)計階段。將兩章及以上的知識點融合在一起,教師給出較大的上機練習(xí)題,學(xué)生自主分析,編寫程序,調(diào)試運行出結(jié)果。上機主要由學(xué)生自主完成,老師可以給予輔助指導(dǎo)。
4)思考創(chuàng)新階段。教師在該階段給出一些由基本內(nèi)容引申出的題目,或者和實際問題聯(lián)系較緊密的題目,讓學(xué)生在課外上機時查閱資料、獨立思考解法,鍛煉學(xué)生活學(xué)活用、學(xué)以致用的能力,以及獨立思考、解決問題和創(chuàng)新的能力。
3.課外編程訓(xùn)練
以前也布置過課外編程練習(xí)題,但通常是沒有反饋信息,也不知道大家課后做了沒做,做對了還是做錯了,現(xiàn)在就采用了下面的方法。
(1)建立一個包含所有學(xué)生的編程討論俱樂部群,分享教學(xué)資料,發(fā)布課外拓展練習(xí)題,答疑解惑,更重要的是營造一個互幫互助的學(xué)生交流氛圍,任何同學(xué)有任何問題可以發(fā)布出來,其他同學(xué)可以提出解決方法,在你言我語之中,問題迎刃而解,學(xué)生的能力也得到了提高。學(xué)期末,對群中提問或是回答問題最活躍的前10名,給予平時成績加分。
(2)為充分調(diào)動學(xué)生的學(xué)習(xí)積極性,提高學(xué)生的編程興趣,設(shè)立課外拓展題加分榜。首先設(shè)計與生活相關(guān)的,具有趣味性,并適量引入程序設(shè)計大賽題的C語言編程題庫,每周發(fā)布2-3道“課外拓展題”,限時24小時內(nèi)完成。做完題的同學(xué)可以將源代碼和運行結(jié)果截圖發(fā)至我。做對1題加1分,如果能實現(xiàn)1題多解或是提出優(yōu)化改進(jìn)算法,加2分。每周在qq群上公布加分排行榜分?jǐn)?shù),學(xué)期末根據(jù)課外拓展題加分榜的分?jǐn)?shù)給予平時分獎勵。計科15級程序設(shè)計基礎(chǔ)課程課外拓展題加分榜如圖3所示。這樣既可以激發(fā)學(xué)生的學(xué)習(xí)興趣,調(diào)動學(xué)生的學(xué)習(xí)積極性,又可以形成后面的學(xué)生你追我趕的良性學(xué)習(xí)氛圍。通過課外拓展題的訓(xùn)練,慢慢就形成了一批編程能力比較突出的學(xué)生,同時也為后期的編程大賽遴選出種子選手。
4.考核評價方式
打破單一閉卷的傳統(tǒng)考核方式,針對不同教學(xué)環(huán)節(jié),采用不同方式進(jìn)行考核。
(1)課程考試采用閉卷考試與平時成績、上機成績相結(jié)合的方式進(jìn)行考核。平時成績占總成績的10%,上機成績占總成績的20%,卷面成績占總成績70%。平時成績包括平時到勤情況、平時作業(yè)和qq群活躍程度加分成績;上機成績包括上機表現(xiàn)、上機報告、課外拓展排行榜加分成績。
(2)考試題目包括“單選題”、“多選題”、“填空”、 “讀程序?qū)懡Y(jié)果”、“程序填空”和“編程題”等類型的題目。宗旨是考查學(xué)生的“程序設(shè)計”能力,充分體現(xiàn)“以程序設(shè)計為主線”的教學(xué)指導(dǎo)思想。
(3)課程設(shè)計考核由平時成績(含設(shè)計表現(xiàn)、到課率等)和業(yè)務(wù)考核成績(設(shè)計報告、編制的軟件、撰寫的論文等的完成質(zhì)量情況)兩部分組成,均按百分制記分,其中平時成績占總成績的30%,業(yè)務(wù)考核成績占70%。即:課程設(shè)計總成績=平時成績*30%+編制的系統(tǒng)軟件質(zhì)量*30%+學(xué)生答辯情況*10%+課程設(shè)計報告質(zhì)量*30%。
改革后的考試方法,和成績計算方法激發(fā)了學(xué)生的學(xué)習(xí)積極性;轉(zhuǎn)移了學(xué)生“死記硬背”的學(xué)習(xí)方向;鍛煉了學(xué)生“以提高能力為目標(biāo)”的學(xué)習(xí)風(fēng)氣;培養(yǎng)了團(tuán)隊合作精神,收到很好的教學(xué)效果。
三、教學(xué)改革成效
2014、2015級計算機科學(xué)與技術(shù)專業(yè)學(xué)生的程序設(shè)計基礎(chǔ)課程成績提高,成績統(tǒng)計表如表1所示。從學(xué)生的整體成績來看,2015級學(xué)生比2014級學(xué)生的平均分提高了1.6分,最高分提高了3分。從試卷分析來看,2015級學(xué)生比2014級學(xué)生的算法分析與設(shè)計能力、編碼能力、差錯和調(diào)試程序的能力有明顯提高。
學(xué)院組織和培訓(xùn)計算機科學(xué)與技術(shù)、軟件工程等專業(yè)的學(xué)生參加“藍(lán)橋杯”程序設(shè)計大賽等競賽,多屆多名學(xué)生取得了較好的成績,獲得了省級一、二、三等獎,以及國家級一、二、三等獎。
四、結(jié)語
程序設(shè)計基礎(chǔ)課程從課堂教學(xué)、實踐教學(xué)、課外編程訓(xùn)練、考核評價方式等各個方面進(jìn)行了教學(xué)改革,并經(jīng)過實踐證明已取得了一定的成績。但教學(xué)模式、教學(xué)方式的改革不是一蹴而就的,是一個長期、持續(xù)、不斷優(yōu)化的過程,在未來的教學(xué)中,我們將在學(xué)生自主學(xué)習(xí)、學(xué)生交流平臺、師資隊伍建設(shè)、測評考核等環(huán)節(jié)進(jìn)一步探討和改進(jìn)[1],努力提升學(xué)生的自學(xué)能力、實踐能力、分析能力、設(shè)計能力、表達(dá)能力、溝通能力和一定的創(chuàng)新能力,從而培養(yǎng)滿足市場需求的應(yīng)用型素質(zhì)人才。
參考文獻(xiàn):
[1]李軍,曹記東,林勇.程序設(shè)計基礎(chǔ)課教學(xué)內(nèi)容及模式改革[J].計算機教育,2013,(8):34-37.
[2]趙卓君.在程序設(shè)計基礎(chǔ)教學(xué)中結(jié)合教育理念融入豐富教學(xué)元素的應(yīng)用和探討[J].信息系統(tǒng)工程,2011,(9):135-137.
(編輯:郭桂真)