劉盛堯 盛 凱
(合肥職業(yè)技術(shù)學(xué)院,安徽 合肥 230000)
《C 語言程序設(shè)計(jì)》一般是電子信息,計(jì)算機(jī)類等專業(yè)的第一門編程基礎(chǔ)課。 目前對于C 語言課堂教學(xué)的研究有很多,例如,文章[1]讓C 語言教學(xué)融合當(dāng)前網(wǎng)絡(luò)腳本語言HTML 及JavaScript 的學(xué)習(xí), 對C 語言課程廣度和深度突破習(xí)慣性認(rèn)知模式進(jìn)行了探索;文章[2]釆用任務(wù)驅(qū)動教學(xué),推動學(xué)生在短時間掌握C 語言的主要知識點(diǎn)。 但課堂時間畢竟是有限的,需要課后的大量練習(xí),才能鍛煉出實(shí)際動手編程能力,因此,對課后作業(yè)練習(xí)的改革和探索成了一個值得探究的問題。
本文首先進(jìn)行C 語言課程課后作業(yè)的改革設(shè)計(jì),然后以計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用專業(yè)三個平行班授課為例,探索C 語言課后作業(yè)改革實(shí)踐的效果。
要督促學(xué)生《C 語言程序設(shè)計(jì)》等編程類課程的課后作業(yè),提高學(xué)生自主學(xué)習(xí)的興趣,并真實(shí)地反映學(xué)生的學(xué)習(xí)情況,筆者希望可以通過以下幾點(diǎn)作業(yè)改革,達(dá)到良好的學(xué)習(xí)效果。
線上學(xué)習(xí),首先通過工單制、超星等平臺建立自己的教學(xué)資源,另一方面推薦優(yōu)秀的慕課以及學(xué)習(xí)視頻,提供在線資料讓學(xué)生在課下進(jìn)行預(yù)習(xí)和復(fù)習(xí)。 比如,通過工單制的小視頻觀看作業(yè),提前進(jìn)行課程預(yù)習(xí),并留一些課前作業(yè),了解學(xué)生的掌握程度,這樣課上教學(xué)時不至于處于一種完全不了解的狀態(tài);課后對課上不理解的內(nèi)容可以通過觀看優(yōu)秀學(xué)習(xí)視頻補(bǔ)缺補(bǔ)差。從課前課后兩方面控制學(xué)生的預(yù)習(xí)質(zhì)量和課堂學(xué)習(xí)的質(zhì)量,提高學(xué)生對C 語言知識點(diǎn)的整體掌握。
利用Dotcpp C 語言學(xué)習(xí)網(wǎng)站的在線做題, 對應(yīng)章節(jié)有對應(yīng)知識點(diǎn)的編程題目,在線測評可以自動進(jìn)行檢測,可擁有獨(dú)立小組,自定義適合小組自身的訓(xùn)練計(jì)劃,了解小組成員的學(xué)習(xí)狀態(tài),多人權(quán)限角色協(xié)同編程工作。 利用C 語言學(xué)習(xí)網(wǎng),首先較傳統(tǒng)的老師布置的幾個作業(yè)題目或書后的幾道練習(xí)題而言,有充足的題庫可以讓同學(xué)進(jìn)行練習(xí);其次對于傳統(tǒng)的老師紙質(zhì)批改或者人工批改學(xué)生的電子編程作業(yè)都是非常繁瑣的,即便老師投入巨大的時間與精力,也無法全面進(jìn)行精確無誤的排查,而通過系統(tǒng)可以自動判定編碼的準(zhǔn)確性,并且可以立即向?qū)W生反饋正誤,進(jìn)行再次練習(xí)。
對于編程類的課后作業(yè), 由于網(wǎng)絡(luò)資源豐富,即使一再強(qiáng)調(diào)作業(yè)完成的自主性,但依然避免不了抄襲現(xiàn)象。 單純的復(fù)制粘貼完全無法提高學(xué)生的編程能力,為此在前半個學(xué)期打基礎(chǔ)時候,不僅讓學(xué)生在編譯器上進(jìn)行代碼的編寫調(diào)試,還讓學(xué)生將作業(yè)代碼謄寫在一個沒有復(fù)制粘貼功能的文本中,來鍛煉學(xué)生寫代碼的規(guī)范性和速度,避免了完全的抄襲。
優(yōu)化考核方式,增加平時上機(jī)測評得分的成績,采取平時測評不過關(guān)一票否決制, 提升學(xué)生平時用功的動力,杜絕期末考試前臨時抱佛腳的現(xiàn)象。上機(jī)測試時間限定為一節(jié)課,分別在循環(huán)程序設(shè)計(jì)、函數(shù)、指針和文件操作這幾個重要章節(jié)學(xué)完之后, 進(jìn)行4 次上機(jī)測評,教師提供多個問題隨機(jī)分發(fā)給學(xué)生測試,要求學(xué)生當(dāng)場完成,并從運(yùn)行結(jié)果、編程規(guī)范、程序邏輯等方面評定實(shí)驗(yàn)成績。用這種現(xiàn)場綜合性的考核機(jī)制,較為真實(shí)地反映學(xué)生平時作業(yè)的練習(xí)掌握情況。
由于每個人對知識的求渴狀態(tài)以及學(xué)習(xí)能力等各方面存在很大差異,對課程學(xué)習(xí)的要求和目標(biāo)也會產(chǎn)生很大差異,如果一味做等同要求,會適得其反。因此,將課后作業(yè)練習(xí)設(shè)置不同的難度系數(shù),難度系數(shù)越大,起點(diǎn)得分越高,平時成績在起點(diǎn)得分基礎(chǔ)上進(jìn)行加權(quán),但是不超過上一個等級分?jǐn)?shù),若不能按時按量完成則直接降為最低等級。 在學(xué)期初,每個學(xué)生可自主根據(jù)自己的目標(biāo)選擇作業(yè)完成等級,并在每次小測驗(yàn)之后根據(jù)學(xué)生獲得的分?jǐn)?shù)以及個人意愿相對應(yīng)的調(diào)整他們的作業(yè)難度等級。 通過這種方式,既能保證個體的差異性,也能激發(fā)學(xué)生的挑戰(zhàn)欲。
利用大作業(yè)和小作業(yè)相結(jié)合的形式,不僅布置對應(yīng)章節(jié)的課后小作業(yè)任務(wù),在課程的一開始就公布綜合大作業(yè)題,如學(xué)生系統(tǒng),出題系統(tǒng),倉庫管理系統(tǒng)等綜合應(yīng)用編程大作業(yè)。引入產(chǎn)業(yè)界結(jié)對編程[3]思路,將學(xué)生進(jìn)行4~5 人分組,結(jié)合具體項(xiàng)目功能需求,組員之間相互討論,查閱資料,分配項(xiàng)目任務(wù),相互檢查所寫代碼,完善項(xiàng)目,鼓勵大家采用不同的思路,不同的函數(shù)或不同的算法去解決問題。 課程結(jié)束后驗(yàn)收,驗(yàn)收過程要求運(yùn)行小組編寫代碼,講解組內(nèi)成員任務(wù)分配以及完成情況,項(xiàng)目設(shè)計(jì)思路以及上交相關(guān)的文檔材料。
大作業(yè)題目考察了C 語言課程輸入輸出、分支程序設(shè)計(jì)、循環(huán)程序設(shè)計(jì)、數(shù)組、字符串操作、函數(shù)、指針和文件操作等各項(xiàng)知識點(diǎn)。 但是,如果把大作業(yè)放在課程的最后階段,僅作為學(xué)生的考試題目,往往收不到好的效果, 很少有學(xué)生能完整地完成大作業(yè)的要求。 這是由于學(xué)生平時只對單個知識點(diǎn)進(jìn)行訓(xùn)練,大作業(yè)包含多個知識點(diǎn)的應(yīng)用,一個學(xué)生很難一下子將前后的知識融會貫通,因此,通過結(jié)對方式,多名同學(xué)共同討論,從學(xué)習(xí)完每個章節(jié)后慢慢建立綜合項(xiàng)目系統(tǒng)的雛形, 隨著知識點(diǎn)增加逐步添加項(xiàng)目的功能,最后在學(xué)期末完成大作業(yè)的設(shè)計(jì)任務(wù),從而達(dá)到循序漸進(jìn)的綜合性項(xiàng)目練習(xí)目標(biāo),使學(xué)生掌握程序開發(fā)過程中的需求分析、算法確定、程序設(shè)計(jì)和調(diào)試等環(huán)節(jié),實(shí)現(xiàn)對學(xué)生知識點(diǎn)綜合運(yùn)用能力的培養(yǎng)。
本文以筆者所教19 級計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)用專業(yè)1班~3 班三個班級為實(shí)驗(yàn)對象, 實(shí)驗(yàn)周期為開設(shè)C 語言課程的一學(xué)期。 具體實(shí)施方法如下:19 計(jì)網(wǎng)1 班,采用除上文1.5 內(nèi)容以外的所有改革課后作業(yè)的練習(xí)方式;19 計(jì)網(wǎng)2 班,采用上述所有改革課后作業(yè)的練習(xí)方式;19 計(jì)網(wǎng)3 班, 采用除上文1.6 內(nèi)容以外的所有改革課后作業(yè)的練習(xí)方式。
經(jīng)過一個學(xué)期的實(shí)踐,在有C 語言課程的專業(yè)課期末考試中,筆者所教的三個班級比其他未采用課后作業(yè)改革的班級進(jìn)行卷面成績對比,具體見表1。
表1 實(shí)驗(yàn)班級與未采用課后作業(yè)改革的班級卷面成績比較
從表格對比中可以看到,采用課后作業(yè)改革的班級比未改革的班級平均卷面成績有顯著提高, 且在80 分以上的同學(xué)百分比明顯高于未改革的班級。 再對三個實(shí)驗(yàn)班級的一些指標(biāo)進(jìn)行橫向比較,具體對比見表2 和表3。
表2 實(shí)驗(yàn)班卷面成績比較
表3 作業(yè)完成上交情況比較
比較發(fā)現(xiàn),19 計(jì)網(wǎng)1 班沒有對學(xué)生進(jìn)行因材施教的作業(yè)等級劃分,大家做同等作業(yè)的情況下,自覺且理解能力強(qiáng)的同學(xué)會越來越好,而理解能力差的同學(xué)會越來越跟不上,布置的作業(yè)必做題也無法很好地全部完成,從而失去信心,造成卷面成績不及格的人數(shù)明顯提高。 19 計(jì)網(wǎng)3 班沒有讓學(xué)生進(jìn)行結(jié)對編程的大作業(yè)訓(xùn)練,可以看到在最終的考試成績上并沒有太大的影響,但是作業(yè)遲交比例與19 計(jì)網(wǎng)1 班持平,可能是因?yàn)闆]有小組間的相互提醒,個別同學(xué)出現(xiàn)作業(yè)拖拉等想象,并且在課程結(jié)束之后,筆者做了一個關(guān)于學(xué)過C 語言你目前可以在什么地方運(yùn)用它的問卷調(diào)查, 發(fā)現(xiàn)19 計(jì)網(wǎng)3 班的僅有個位數(shù)同學(xué)對C 語言項(xiàng)目編程有概念,其他同學(xué)學(xué)習(xí)目的僅限于平常考試以及計(jì)算機(jī)考級,真正覺得C 語言多有用有興趣的同學(xué)較少,故結(jié)對小組以及項(xiàng)目大作業(yè)的訓(xùn)練更加有利于C 語言的學(xué)習(xí)。
通過以上實(shí)踐效果的對比分析,采用上述所有改革課后作業(yè)的練習(xí)方式后,首先,學(xué)生的學(xué)習(xí)興趣明顯提高,并主動發(fā)QQ 向教師咨詢編程問題,在課后能深入討論程序中存在的問題。 其次,通過小組的團(tuán)隊(duì)合作,促進(jìn)了學(xué)生之間的密切溝通和合作。最后,因材施教的作業(yè)等級劃分制度讓學(xué)習(xí)好的同學(xué)更加有動力,學(xué)習(xí)稍差的同學(xué)扎實(shí)打牢基礎(chǔ),而非徹底放棄,一落千丈。
通過教學(xué)班級學(xué)生調(diào)查來看,這種方法激發(fā)了學(xué)生的編程興趣,團(tuán)隊(duì)合作能力,上機(jī)編程能力普遍得到了很大提高。 此外,本作業(yè)模式也可推廣到計(jì)算機(jī)相關(guān)專業(yè)的其他程序設(shè)計(jì)類課程的教學(xué)中, 如C++、Java、Python 等。 當(dāng)然,沒有哪一種改革模式是一勞永逸的,教學(xué)改革仍然任重道遠(yuǎn)。例如,在結(jié)對編程上如何協(xié)調(diào)組隊(duì)成員的能力差異,做到幾人即可共同進(jìn)步又能夠能力高者先行;整合無法粘貼復(fù)制的功能到編譯器中等,上述這些訴求都將在后續(xù)研究中繼續(xù)探索和實(shí)踐。