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