馬秀榮
(呼倫貝爾學(xué)院 內(nèi)蒙古 海拉爾 021008)
目前大多數(shù)應(yīng)用型高校將C語(yǔ)言作為計(jì)算機(jī)語(yǔ)言入門課程,高校中一般開(kāi)設(shè)《C語(yǔ)言程序設(shè)計(jì)》這門課程,主要是為了培養(yǎng)學(xué)生的應(yīng)用能力,讓學(xué)生能夠養(yǎng)成求解復(fù)雜科學(xué)問(wèn)題的計(jì)算思維、算法設(shè)計(jì)、程序編寫及測(cè)試分析等方面的能力。2016年,呼倫貝爾學(xué)院被自治區(qū)教育廳確定為內(nèi)蒙古自治區(qū)整體轉(zhuǎn)型發(fā)展的兩所高校之一,同年成為國(guó)家“十三五”應(yīng)用型本科產(chǎn)教融合發(fā)展工程百所試點(diǎn)高校。[1][2]《C語(yǔ)言程序設(shè)計(jì)”課程作為計(jì)算機(jī)專業(yè)的基礎(chǔ)學(xué)科,重在掌握牢固的基礎(chǔ)知識(shí)和鍛煉學(xué)生的動(dòng)手操作能力。
在C語(yǔ)言知識(shí)的傳授過(guò)程中,應(yīng)始終貫穿于以編程能力訓(xùn)練提高為目標(biāo),在教學(xué)內(nèi)容編排和組織、案例設(shè)計(jì)過(guò)程中注重循序漸進(jìn)地設(shè)計(jì)編程算法;在學(xué)生學(xué)習(xí)過(guò)程中重視線下教學(xué)與線上訓(xùn)練的有機(jī)結(jié)合;在課后作業(yè)中重視程序設(shè)計(jì)題目的歸納梳理和測(cè)試;在前述的各個(gè)教學(xué)環(huán)節(jié)中重視實(shí)際應(yīng)用問(wèn)題算法的訓(xùn)練與提高。要想學(xué)好數(shù)組,必須要多編程、多調(diào)試。在教學(xué)中要注重程序設(shè)計(jì)能力的培養(yǎng),通過(guò)在教學(xué)過(guò)程中不斷地使用多種教學(xué)方法,改變學(xué)生的學(xué)習(xí)環(huán)境,設(shè)計(jì)多樣的教學(xué)活動(dòng)以及迭代式學(xué)習(xí)教學(xué)內(nèi)容等來(lái)打破以往的教師滿堂講、學(xué)生被動(dòng)學(xué)的局面。以應(yīng)用型人才培養(yǎng)目標(biāo)為指導(dǎo),在教學(xué)改革過(guò)程中結(jié)合學(xué)生實(shí)際情況不斷去探索,充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)積極性,發(fā)揮學(xué)生的自主性,培養(yǎng)學(xué)生的創(chuàng)新性,對(duì)提高教學(xué)質(zhì)量和培養(yǎng)應(yīng)用型人才具有重要的意義。
《C語(yǔ)言程序設(shè)計(jì)》課程作為專業(yè)基礎(chǔ)課程,開(kāi)課在第一個(gè)學(xué)期,學(xué)生基本上沒(méi)有語(yǔ)言編程基礎(chǔ),數(shù)學(xué)基礎(chǔ)薄弱,邏輯分析能力差,缺乏利用計(jì)算機(jī)解決問(wèn)題的思維和能力。教師在講授中一般是理論按照章節(jié)介紹語(yǔ)法知識(shí),并輔助現(xiàn)場(chǎng)演示、例題講授以及練習(xí)編寫代碼。因?yàn)檎n時(shí)設(shè)置有限和學(xué)生操作機(jī)會(huì)少,學(xué)生不能深入思考和領(lǐng)悟課程的內(nèi)涵。
本課程教學(xué)分為理論教學(xué)和實(shí)驗(yàn)教學(xué)兩部分,理論課安排在教室授課,實(shí)驗(yàn)課在機(jī)房調(diào)試程序。理論教學(xué)中教師按照教學(xué)大綱,在課堂上按部就班地講述知識(shí)點(diǎn),學(xué)生被動(dòng)學(xué)習(xí)。實(shí)驗(yàn)課與理論課安排脫節(jié),由于不能及時(shí)檢驗(yàn)實(shí)踐操作,造成了學(xué)習(xí)的不連續(xù)性。有的學(xué)生在實(shí)驗(yàn)課上不提前做好準(zhǔn)備工作,調(diào)試出錯(cuò)率高,解決問(wèn)題數(shù)量少,實(shí)踐操作能力欠缺。要想進(jìn)一步培養(yǎng)學(xué)生的應(yīng)用能力,需要加強(qiáng)理論學(xué)習(xí)和實(shí)踐操作、課堂學(xué)習(xí)與課后學(xué)習(xí)的有效銜接。
學(xué)習(xí)對(duì)象都是大一新生,部分學(xué)生沒(méi)有學(xué)習(xí)定位,缺乏學(xué)習(xí)的動(dòng)力和興趣。自主學(xué)習(xí)與創(chuàng)新思維能力較弱,遇到稍微難理解的問(wèn)題容易放棄。同時(shí),上課聽(tīng)講地效率不高,課后忙于各種活動(dòng),相關(guān)知識(shí)沒(méi)有得到深入理解。學(xué)生實(shí)踐操作少,動(dòng)手能力不強(qiáng),基礎(chǔ)知識(shí)薄弱,做不到進(jìn)一步解決難題。課程理論知識(shí)抽象性強(qiáng),學(xué)生難于理解,要想應(yīng)用理論解決問(wèn)題,應(yīng)在實(shí)踐環(huán)節(jié)多操作,讓學(xué)生及時(shí)看到程序調(diào)試效果,調(diào)動(dòng)學(xué)生學(xué)習(xí)的興趣和主動(dòng)學(xué)習(xí)意識(shí)。
1.混合式教學(xué):調(diào)動(dòng)學(xué)生的自主學(xué)習(xí)能力,讓學(xué)生提前觀看視頻,先了解教學(xué)內(nèi)容。課前安排測(cè)試檢驗(yàn)學(xué)生自學(xué)情況,用成績(jī)激勵(lì)學(xué)生,調(diào)動(dòng)學(xué)生學(xué)習(xí)的積極性。課堂教學(xué)中“學(xué)中做,做中學(xué)”實(shí)施教學(xué)過(guò)程。[3]
2.案例式教學(xué):以案例為載體,引導(dǎo)學(xué)生思考解決問(wèn)題的方法,激發(fā)學(xué)生的思考,啟發(fā)學(xué)生的思維風(fēng)暴,讓課堂教學(xué)目的更加明確,重點(diǎn)突出。[4]
3.任務(wù)驅(qū)動(dòng)式教學(xué):在實(shí)踐教學(xué)中,強(qiáng)調(diào)學(xué)生的練與用。在PTA平臺(tái)設(shè)置在線測(cè)試題目集,學(xué)生可以通過(guò)平臺(tái)驗(yàn)證代碼的準(zhǔn)確性,讓學(xué)生以完成任務(wù)為目標(biāo),激勵(lì)學(xué)生應(yīng)用所學(xué)知識(shí)。
4.討論式教學(xué):實(shí)踐調(diào)試程序中,容易遇到不可預(yù)知的狀況。同樣,同一問(wèn)題會(huì)有不同的解決方案,通過(guò)大家的集思廣益,可以找到最佳得解決方案。在討論中,分析算法實(shí)現(xiàn)過(guò)程,找出論點(diǎn)依據(jù),研究代碼的可實(shí)施性。通過(guò)討論使學(xué)生積極參與到小組合作學(xué)習(xí)中,從而進(jìn)一步理解算法內(nèi)涵。
打破理論和實(shí)踐脫節(jié)教學(xué)模式,學(xué)生自帶電腦,并安裝極域電子教室和Dev C++集成開(kāi)發(fā)環(huán)境,教師利用極域電子教室演示PPT課件,學(xué)生機(jī)同步接收,邊講邊練。精心設(shè)計(jì)課件,通過(guò)動(dòng)畫展示問(wèn)題的求解過(guò)程,調(diào)動(dòng)學(xué)生參與積極性,引導(dǎo)學(xué)生逐步掌握教學(xué)內(nèi)容。呼倫貝爾學(xué)院教學(xué)平臺(tái)發(fā)布教學(xué)資源——視頻、單元學(xué)習(xí)、教學(xué)活動(dòng)等,方便學(xué)生課下繼續(xù)鞏固加強(qiáng)。PTA平臺(tái)建設(shè)習(xí)題庫(kù),創(chuàng)建題目集,發(fā)布課前測(cè)試、課堂練習(xí)、課后作業(yè)等,實(shí)時(shí)評(píng)測(cè)學(xué)生提交代碼,調(diào)動(dòng)學(xué)生學(xué)習(xí)的興趣。
將立德樹(shù)人和全面育人理念有機(jī)融入課堂教學(xué),引導(dǎo)學(xué)生樹(shù)立正確的人生觀和價(jià)值觀。結(jié)合課程內(nèi)容,引用政府工作報(bào)告、時(shí)政要聞、國(guó)學(xué)古詩(shī)詞等展開(kāi)思政教育,培養(yǎng)學(xué)生正確的人生觀和踐行社會(huì)主義核心價(jià)值觀。通過(guò)引用“人心齊,泰山移”“集體是力量的源泉,眾人是智慧的搖籃”等諺語(yǔ),再次理解數(shù)組概念的內(nèi)涵,即具有相同類型數(shù)據(jù)的有序集合,擁有單個(gè)變量所不具備的強(qiáng)大功能。通過(guò)數(shù)組引用方法的教學(xué),培養(yǎng)學(xué)生要有團(tuán)隊(duì)合作精神。
《C語(yǔ)言程序設(shè)計(jì)》課程實(shí)踐性強(qiáng),基于應(yīng)用型院校人才培養(yǎng)的模式,教學(xué)中要重點(diǎn)鍛煉學(xué)生的實(shí)踐能力。課堂教學(xué)中以程序設(shè)計(jì)為主線,迭代式學(xué)習(xí)教學(xué)內(nèi)容,鞏固算法思想。教學(xué)原則是以程序能力為培養(yǎng)目標(biāo),精講多練。教學(xué)方法是逐步深入、分散難點(diǎn)和案例驅(qū)動(dòng)、循序漸進(jìn)。為了更好地讓學(xué)生掌握教學(xué)內(nèi)容,通過(guò)課前測(cè)試、課堂教學(xué)和課后鞏固三個(gè)方面進(jìn)行教學(xué)改革,如圖1所示,具體實(shí)施方案是案例引導(dǎo)、漸進(jìn)訓(xùn)練和上機(jī)隨測(cè),重在加強(qiáng)鍛煉學(xué)生的動(dòng)手操作能力。
圖1 教學(xué)過(guò)程
1.課前測(cè)試
充分利用課余時(shí)間,課后及時(shí)發(fā)布任務(wù)單,任務(wù)單中包括復(fù)習(xí)鞏固作業(yè)和預(yù)習(xí)任務(wù)。本次的預(yù)習(xí)任務(wù)是通過(guò)觀看視頻,學(xué)習(xí)并理解最小值算法的思想及實(shí)現(xiàn)過(guò)程。在課前布置了編程測(cè)試,檢查學(xué)生的自主學(xué)習(xí)情況和考察學(xué)生的動(dòng)手編程能力。例如,一道計(jì)時(shí)編程題,測(cè)試點(diǎn)有3個(gè),滿分10分。2020級(jí)軟件工程本班49人參加測(cè)試,有13人得到滿分10分,有10人得到部分分?jǐn)?shù),還有26人沒(méi)有通過(guò)測(cè)試得到0分。教師不僅要關(guān)注學(xué)生的得分情況,還要查看學(xué)生編寫的代碼,從而了解學(xué)生的預(yù)習(xí)學(xué)習(xí)效果。重點(diǎn)檢查非滿分學(xué)生的提交代碼,原因主要集中在三方面:預(yù)習(xí)不到位;學(xué)生審題不嚴(yán)密;編程規(guī)范不達(dá)標(biāo)。
2.課堂教學(xué)
(1)反饋信息
系統(tǒng)自動(dòng)評(píng)測(cè)成績(jī),檢驗(yàn)了學(xué)生自我管理、主動(dòng)學(xué)習(xí)的效果。展示部分學(xué)生試卷答題情況,如圖2所示。共同分析試卷的錯(cuò)誤點(diǎn),第一段代碼說(shuō)明學(xué)生下標(biāo)和數(shù)據(jù)元素概念混淆,比較的是元素值,應(yīng)該修改的是元素的下標(biāo),也能看出該學(xué)生并沒(méi)有理解最小值算法的思想;第二段代碼說(shuō)明學(xué)生未真正理解最小值和下標(biāo)的對(duì)應(yīng)關(guān)系,以至于多引用一個(gè)變量n,引用n時(shí)未給賦初值,造成得到了局部分?jǐn)?shù)。
圖2 學(xué)生代碼
(2)強(qiáng)化算法
針對(duì)學(xué)生預(yù)習(xí)不到位情況,在課堂上重新回看視頻,在視頻播放中強(qiáng)化要點(diǎn),指出學(xué)生出錯(cuò)原因是未能分析下標(biāo)的變化規(guī)律,由于下標(biāo)和數(shù)組元素是一一對(duì)應(yīng)關(guān)系,下標(biāo)出錯(cuò),數(shù)組元素引用就會(huì)出錯(cuò)。觀看視頻,讓學(xué)生掌握最小值算法的思想,著重分析下標(biāo)的變化規(guī)律,改寫課前測(cè)試代碼。在學(xué)生操作中,再次強(qiáng)調(diào)注意編碼規(guī)范,學(xué)習(xí)的嚴(yán)謹(jǐn)性。
(3)實(shí)踐練習(xí)
在上一學(xué)期的班級(jí)中,教學(xué)中直接講述選擇法排序過(guò)程,學(xué)生答題通過(guò)率為63.4%,沒(méi)有達(dá)到預(yù)期效果。思考如何更好提高教學(xué)質(zhì)量,應(yīng)注重程序能力培養(yǎng)為核心,精講多練;迭代式學(xué)習(xí)教學(xué)內(nèi)容,在實(shí)踐中熟練應(yīng)用教學(xué)內(nèi)容。在2020級(jí)軟件工程本班教學(xué)中增加了過(guò)渡實(shí)踐環(huán)節(jié),布置了一道編程題目最小值和第一個(gè)數(shù)交換。這樣既可以鞏固最小值算法,又為本次課程做了良好銜接,分解了選擇法排序的難度。在實(shí)踐環(huán)節(jié)中,要求學(xué)生獨(dú)立完成代碼,強(qiáng)調(diào)實(shí)踐的重要性,重在發(fā)揮學(xué)生的主體地位,教師只做必要的答疑。同時(shí),在PTA平臺(tái)添加了編程題目,如圖3所示。學(xué)生編寫代碼后提交到平臺(tái)可以檢驗(yàn)代碼的準(zhǔn)確性,教師隨時(shí)可以查看學(xué)生的代碼和分?jǐn)?shù),從而了解學(xué)生對(duì)教學(xué)內(nèi)容的掌握情況。
圖3 課堂測(cè)試題目
(4)引出重點(diǎn)、突破難點(diǎn)
在教學(xué)過(guò)程中,利用幻燈片展示本次課的教學(xué)內(nèi)容——選擇法排序,算法思想是每次排序中用未排序序列的最小值和未排序序列的第一個(gè)數(shù)交換,共排序n-1次。[5]為了幫助學(xué)生理解排序過(guò)程,首先播放動(dòng)畫演示序列的排序變化過(guò)程,讓學(xué)生理解每次排序時(shí)數(shù)據(jù)分為兩個(gè)序列:排序的序列和未排序的序列。每次在未排序的序列中找最小值,所以要重點(diǎn)分析未排序的數(shù)據(jù)。每次排序時(shí)未排序的數(shù)據(jù)又是變化的,如何找到這些元素并且正確引用。
聲明部分:int a[20];//包含20個(gè)整數(shù)的數(shù)組a,int n;//實(shí)際個(gè)數(shù)n。
步驟1:分析第一組未排序的數(shù)據(jù)對(duì)象a[0],a[1],...,a[n-1]。在這n個(gè)數(shù)中找最小值,設(shè)最小值下標(biāo)是index,則找到的最小值a[index]和第一個(gè)數(shù)a[0]交換,這個(gè)操作已經(jīng)在實(shí)踐環(huán)節(jié)完成,學(xué)生自己編寫代碼。
步驟2:分析第二組未排序的數(shù)據(jù)對(duì)象a[1],a[2],...,a[n-1]。在這n-1個(gè)數(shù)中找最小值,找到的最小值a[index]和第一個(gè)數(shù)a[1]交換,這個(gè)操作的編程思想和實(shí)踐環(huán)節(jié)一致,但代碼要有變化,學(xué)生在引導(dǎo)下編寫代碼。
步驟3:由點(diǎn)看面,先對(duì)比前兩組數(shù)據(jù),可以發(fā)現(xiàn),第一次找最小值時(shí),最小值的下標(biāo)初值為index=0;第二次找最小值時(shí),最小值的下標(biāo)初值為index=1;index的值是變化的,這個(gè)值就是外循環(huán)的循環(huán)變量i。在這兩次排序中分別是i=0和i=1,所以合并最小值下標(biāo)初值語(yǔ)句為index=i。同理合并內(nèi)循環(huán)j=i+1;i 步驟4:擴(kuò)展為n-1次的排序,最終寫出完整的選擇法排序的代碼。 通過(guò)動(dòng)畫演示,讓學(xué)生理解選擇法排序的思想;分析出未排序數(shù)據(jù)對(duì)象后,正確引用這些數(shù)組元素,突出了本節(jié)課的重點(diǎn);前序的強(qiáng)化最小值算法和實(shí)踐練習(xí),循序漸進(jìn)書寫編程代碼突破難點(diǎn)。 (5)小組討論 布置課堂活動(dòng),以小組討論的方式改變傳統(tǒng)的講授法,把課堂留給學(xué)生,充分發(fā)揮學(xué)生的主體地位,同時(shí)讓學(xué)生完全掌握選擇法排序的思想,并用此思想解決實(shí)際問(wèn)題。小組討論中,為樹(shù)立自己觀點(diǎn)的正確性,畫流程圖、觀察存儲(chǔ)空間數(shù)值的變化等,多方式找到說(shuō)服對(duì)手的依據(jù),學(xué)生更好地理解數(shù)組元素的內(nèi)涵,鍛煉了團(tuán)隊(duì)合作意識(shí)。 (6)知識(shí)延展 編程不是解決一道題,而是解決一類題。同樣,學(xué)生掌握內(nèi)容的程度也有不同,為學(xué)有余力的學(xué)生增加擴(kuò)展題目,在PTA平臺(tái)中添加了如圖3所示的3題和4題。第3題是是以選擇法排序?yàn)樵?,在此基礎(chǔ)上變化了題目要求,讓學(xué)生進(jìn)一步應(yīng)用選擇法排序思想解決問(wèn)題。第4題的分析過(guò)程和最小值算法有相同之處,也是強(qiáng)化數(shù)組元素正確引用的典型算法。此部分由學(xué)生自行編寫代碼完成,可以小組討論,教師只負(fù)責(zé)指導(dǎo)、答疑。同樣,學(xué)生編寫地代碼是否正確均要在PTA平臺(tái)提交驗(yàn)證,限時(shí)測(cè)試和實(shí)時(shí)排名激勵(lì)了學(xué)生的競(jìng)爭(zhēng)意識(shí)。 3.課后鞏固 學(xué)生要融會(huì)貫通地應(yīng)用課堂所學(xué)內(nèi)容,課后鞏固是不可缺少的。根據(jù)教學(xué)內(nèi)容,布置編程題目,重在練習(xí)下標(biāo)和數(shù)組元素之間的一一對(duì)應(yīng)關(guān)系,從而真正掌握一維數(shù)組的定義、初始化和數(shù)組元素的引用。針對(duì)問(wèn)題分析算法求解過(guò)程,鍛煉學(xué)生的知識(shí)運(yùn)用能力和解決問(wèn)題的分析能力。通過(guò)編寫代碼提交驗(yàn)證,激發(fā)學(xué)生的求知欲和實(shí)踐操作能力。 課堂教學(xué)實(shí)時(shí)評(píng)測(cè),在PTA平臺(tái)添加了4道題目,學(xué)生題目的正答率如圖4所示,它可以直觀地反應(yīng)學(xué)生的課堂學(xué)習(xí)情況。由統(tǒng)計(jì)數(shù)據(jù)可以看出,第1題和 第2題得分率較高,原因是第1題是過(guò)渡題,學(xué)生能夠運(yùn)用已有算法思想進(jìn)行變化;第2題是課堂重點(diǎn)突破內(nèi)容,動(dòng)畫演示分析數(shù)據(jù)對(duì)象,正確引用數(shù)組元素,引導(dǎo)學(xué)生參與編程,解決雙重循環(huán)關(guān)聯(lián)難題。第3題是擴(kuò)展題目,得分率略小于60%。第4題得分率最低,原因是測(cè)試有時(shí)間限制,學(xué)生未能在限時(shí)時(shí)間內(nèi)提交代碼;學(xué)有余力的學(xué)生占少數(shù),多數(shù)學(xué)生的問(wèn)題分析能力需要加強(qiáng)。對(duì)于沒(méi)有完全解決的問(wèn)題,將再次添加到課后鞏固中的題目集中,可以線上師生探討,在充裕的時(shí)間內(nèi)讓學(xué)生強(qiáng)化練習(xí)。 圖4 課堂測(cè)試正答率 經(jīng)過(guò)實(shí)踐教學(xué)中使用多種教學(xué)方法,強(qiáng)調(diào)程序設(shè)計(jì)能力培養(yǎng)和迭代式學(xué)習(xí)教學(xué)內(nèi)容從而提高教學(xué)質(zhì)量,增強(qiáng)學(xué)生的實(shí)踐操作能力效果。但同時(shí)也發(fā)現(xiàn)了一些不足:線上學(xué)生自主學(xué)習(xí)難于控制;機(jī)房授課課堂不易組織;學(xué)生復(fù)習(xí)總結(jié)能力欠缺等。針對(duì)這些不足,還需進(jìn)一步探究《C語(yǔ)言程序設(shè)計(jì)》課程的教學(xué)改革,從而更好地為競(jìng)賽輸送選手,為企業(yè)培養(yǎng)應(yīng)用型人才。(三)教學(xué)效果
結(jié)語(yǔ)
呼倫貝爾學(xué)院學(xué)報(bào)2021年6期