鄭富蘭 史春秀
摘要:針對高校計算機專業(yè)人才培養(yǎng)的現(xiàn)狀,分析在C程序設(shè)計課程傳統(tǒng)教學(xué)過程中普遍存在的問題以及傳統(tǒng)理論與實踐教學(xué)特征,結(jié)合自身教學(xué)經(jīng)驗,提出以程序先行為基礎(chǔ)和以實踐教學(xué)為中心的分階段教學(xué)改革思路。
關(guān)鍵詞:C程序設(shè)計;高級程序設(shè)計;實踐教學(xué);教學(xué)研究;教學(xué)改革
C語言作為一門高級程序設(shè)計語言,不僅是很多高校計算機專業(yè)學(xué)生學(xué)習(xí)程序設(shè)計的入門語言,而且是非計算機專業(yè)學(xué)生的公共必修課,在培養(yǎng)學(xué)生分析和解決問題能力方面起著舉足輕重的作用。然而,學(xué)生普遍反映學(xué)習(xí)C語言有一定難度,認(rèn)為C語言抽象、不好理解,尤其對于實踐部分更是一籌莫展。實際上,這種局面的出現(xiàn)與教學(xué)雙方都有關(guān)系。
1、教學(xué)中出現(xiàn)的主要問題
1.1 理論教學(xué)重語法、輕算法,教學(xué)目的不強
在理論教學(xué)中,大多數(shù)教師只是按照傳統(tǒng)的教學(xué)方法,根據(jù)選定教材并對照教學(xué)大綱逐一講解。這種“滿堂灌”的教學(xué)方式挫傷了學(xué)生的學(xué)習(xí)興趣,而重語法、輕算法的教學(xué)思路偏離了“教學(xué)相長”的教學(xué)理念,更偏離了這門課的教學(xué)目的。
1.2 實踐環(huán)節(jié)薄弱,教學(xué)效果不佳
C語言本身是實踐性很強的一門課,大量的理論知識需要在實踐中得到應(yīng)用和鞏固,算法和編程思想需要在實踐中形成。然而,實際教學(xué)收效甚微,主要原因有以下3個方面:①學(xué)生學(xué)習(xí)缺乏主動性,在實踐課上隨心所欲,沒有目的性;②對于在實踐課中遇到的困難,學(xué)生沒有足夠的預(yù)期,從而降低了學(xué)習(xí)積極性;③實踐與理論教學(xué)聯(lián)系不緊密,包括教師在理論教學(xué)中缺乏對相應(yīng)實踐內(nèi)容的指導(dǎo)和教師在制訂實踐任務(wù)時針對性不強。
以上3個方面的原因?qū)е聦W(xué)生往往直到下課都運行不了一個程序,大大挫傷學(xué)習(xí)積極性并形成惡性循環(huán),這是一部分學(xué)生編程能力相對不高的主要原因。
1.3 考核模式單一
考試在整個教學(xué)中起關(guān)鍵作用,是教師教學(xué)和學(xué)生學(xué)習(xí)的“指揮棒”。對于C語言程序設(shè)計這門課的考核,大部分院校仍采用傳統(tǒng)的筆試方式,考核的重點是語法和基本的邏輯推導(dǎo)能力,忽略了學(xué)生對問題的分析和對所學(xué)知識的綜合應(yīng)用能力。
2、課程教學(xué)思路探索
在傳統(tǒng)的教學(xué)方法中,教師總是把更多的精力用在理論教學(xué)上,認(rèn)為實踐是學(xué)生自己的事,是鞏固前面所學(xué)的理論知識,加深對理論知識的理解。然而通過分析教學(xué)中出現(xiàn)的問題,我們認(rèn)為傳統(tǒng)的教學(xué)思路不適合實踐類課程,因此提出以程序先行為基礎(chǔ)和以實踐教學(xué)為中心的教學(xué)改革思路。
2.1 程序先行,逐步強化學(xué)生的編程意識
以課本為中心的“重語法”教學(xué)模式很容易使知識脫離使用環(huán)境,使學(xué)生體會不到知識的使用價值,因此教師必須對每一小節(jié)的授課內(nèi)容進行精心設(shè)計,讓學(xué)生逐步建立穩(wěn)固的學(xué)習(xí)興趣,我們采用的方法是“從程序中來:到程序中去”。具體地說,針對每一小節(jié)的教學(xué)內(nèi)容,教師首先提出一個較實際且難度適中的問題,然后分析問題并提出解決方法,繼而給出相應(yīng)程序。
在整個分析過程中教師要有意強化學(xué)生的編程意識,這個過程不僅能激發(fā)學(xué)生的學(xué)習(xí)興趣,還有益于學(xué)生逐步建立用計算機解題的思想。在學(xué)生對該程序所涉及的知識點在宏觀上有了感性認(rèn)識之后,教師再對相關(guān)的表達式和語句作進一步講解,以使學(xué)生達到理性認(rèn)識的層面,這也符合學(xué)生的認(rèn)知過程。編程思想在整個理論教學(xué)中逐步滲透,而相關(guān)語法知識的學(xué)習(xí)則是采用“用中學(xué)”的方式完成。
2.2 靈活運用教學(xué)手段和教學(xué)方法,理論與實踐相輔相成
好的教學(xué)方法能夠活躍課堂,激發(fā)學(xué)生的興趣和求知欲;也有利于教師分析問題,講清所授內(nèi)容;同時可以開拓學(xué)生的思路,往往能夠達到事半功倍的效果。教師要根據(jù)不同的教學(xué)內(nèi)容使用不同的教學(xué)方法。下面我們以“指針”教學(xué)為例說明各種教學(xué)方法。
比喻教學(xué)法是把講授內(nèi)容比作生活中某些事物,以達到輔助理解的作用。例如,講指針的定義時,我們可以用“拜訪同學(xué)”作比喻:A同學(xué)要拜訪C同學(xué),A本來就知道C的地址——直接訪問;A去B家拿到C的地址——間接訪問,A去B家拿到的C家地址就如同一個“路標(biāo)”,稱為“指針”。
類比教學(xué)法是將教學(xué)中出現(xiàn)的類似知識點進行對照講解,以達到鞏固知識和加深理解的作用,如將函數(shù)中簡單變量作參數(shù)與指針變量作參數(shù)類比,類比情況如表1所示。
在比較時,將比較內(nèi)容用PPT展示,并將比較內(nèi)容在Tubor C(或VC)環(huán)境下的實踐結(jié)果相對照,激發(fā)學(xué)生求知欲,同時適當(dāng)運用啟發(fā)式教學(xué)輔助講解,引導(dǎo)學(xué)生自己分析并最終得出結(jié)論。隨后,教師可以根據(jù)理論教學(xué)內(nèi)容的難易程度,以“階梯狀”形式制定相應(yīng)的實踐任務(wù):①將理論教學(xué)中的例子稍加改動,讓學(xué)生進行“驗證性”實驗;②理論教學(xué)要適當(dāng)留下“伏筆”,要求學(xué)生在實踐中“求證”,如教師可將2個同是指針變量作函數(shù)參數(shù)而改變不同的值的案例相對照,對照情況如表2所示,在理論教學(xué)中只分析并講解其中一個例子,而將另一個留作實踐作業(yè);③綜合前2項實踐任務(wù),設(shè)想一個(或多個)應(yīng)用題目,使學(xué)生能綜合練習(xí)所學(xué)知識。
2.3 實踐教學(xué)分階段進行,逐步提高學(xué)生編程能力
在程序先行的教學(xué)思想指導(dǎo)下,我們將實踐教學(xué)劃分為入門階段、基本編程階段、編程能力提高階段和綜合編程階段,分階段教學(xué)流程如圖l所示。根據(jù)學(xué)生各階段對知識的掌握程度,教師應(yīng)制訂不同的實驗方案和標(biāo)準(zhǔn),并提供相應(yīng)的指導(dǎo)。當(dāng)然理論教學(xué)也應(yīng)與實驗方案同步,除了完成相應(yīng)的教學(xué)內(nèi)容外,還要分析實踐中出現(xiàn)的典型問題,從正、反兩方面強化相關(guān)知識和編程思路。
1)入門階段。
此階段理論教學(xué)內(nèi)容大致為C語言基礎(chǔ)知識、各類運算符及表達式、基本輸入、輸出語句、選擇結(jié)構(gòu)。學(xué)生的實驗任務(wù)分為3部分。第一部分是調(diào)試任務(wù),即教師提前給定相應(yīng)程序并要求學(xué)生改錯,直到出現(xiàn)運行結(jié)果。此類實驗旨在將實踐與理論相結(jié)合,讓學(xué)生熟悉語法知識并輕松獲得成就感,激發(fā)學(xué)習(xí)興趣。第二部分是運行例題,要求學(xué)生運行課本上的某個例題。在編程初期,學(xué)生很容易因疏忽出現(xiàn)語法錯誤。此類實驗不僅可以磨練學(xué)生,還可以強化學(xué)生的語法知識,指導(dǎo)學(xué)生進行理論學(xué)習(xí)。第三部分是簡單編程任務(wù),要求學(xué)生改編課本例題或解決較簡單的實際問題,如實現(xiàn)一個簡單計算器或判斷某數(shù)是否為素數(shù),從而訓(xùn)練編程基本技能。
2)基本編程階段。
此階段理論教學(xué)內(nèi)容為選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),學(xué)生的實驗任務(wù)不再有調(diào)試任務(wù)和運行例題,而主要是通過程序擴展(如由判斷某個數(shù)是否是素數(shù)擴展為判斷3位數(shù)的素數(shù))、程序變換(如將程序中的Continue改為break、將1-100累加改為累積)鞏固編程技能,并讓學(xué)生在實踐中深刻體會知識點的具體作用。
3)編程能力提高階段。
此階段理論教學(xué)內(nèi)容大致為函數(shù)、編譯預(yù)處理、數(shù)組、指針,主要讓學(xué)生通過舊題新編(如判斷素數(shù))體會新知識的應(yīng)用,并且加入一些實際性問題(如對一組數(shù)進行排序、刪除、查找等),讓學(xué)生通過一題多解(如斐伯那契數(shù)列)拓展編程思路,達到鞏固舊知識和應(yīng)用新知識的效果。
4)綜合編程階段。
此階段理論教學(xué)內(nèi)容大致為結(jié)構(gòu)體、共用體和文件,除了讓學(xué)生鞏固基礎(chǔ)知識外,還針對某些實際問題(如為本班所有學(xué)生建立檔案,并讓學(xué)生完成查找、刪除、計算總分和平均分、排序等操作)讓學(xué)生通過分工合作達到掌握知識點和鞏固編程技能的綜合應(yīng)用效果。
該環(huán)節(jié)中,在編程實驗題的選擇上,教師需充分考慮實驗題和理論教學(xué)的銜接以及實驗題的綜合可操作性、趣味性和難易程度。這樣不僅可以使理論知識在實驗中得到驗證和應(yīng)用,更重要的是使學(xué)生獲得成就感,從而增強學(xué)習(xí)興趣,提高學(xué)習(xí)主動性,讓學(xué)生成為課堂的真正主體和主人。
2.4 改革考核模式,實施新的考核標(biāo)準(zhǔn)
考核模式由傳統(tǒng)的單純筆試考核改為“2+2+6”模式,即總成績=機試成績×20%+平時成績×20%+筆試成績×60%,由注重“結(jié)果”向注重“過程”靠攏。根據(jù)實際教學(xué)效果,教師可以在以后的教學(xué)中逐步完善考核機制,這樣更有利于學(xué)生編程能力的提高;當(dāng)考核模式成熟到一定程度時,教師甚至可以取消筆試,將考核模式改為“4+6”模式,即總成績=平時成績×40%+機試成績×60%。
3、結(jié)語
筆者在多年C語言教學(xué)過程中不斷探索,取得了較好的教學(xué)效果。隨著學(xué)校及學(xué)院教學(xué)改革力度的加大,新的考核模式將提上日程,學(xué)生的編程能力將得到進一步提高。在此基礎(chǔ)上,引導(dǎo)并鼓勵學(xué)生多參加課外實踐活動,也是學(xué)生綜合能力提高的必備項目。我們深刻地認(rèn)識到,教學(xué)需要不斷地探索、改進、完善,教師在教學(xué)中應(yīng)以學(xué)生為原動力,不斷推陳出新,積極探索新的教學(xué)思路,提高學(xué)生學(xué)習(xí)興趣和教師教學(xué)質(zhì)量。