伍 祥 王曉慶 王嘯楠
(安徽信息工程學院 計算機與軟件工程學院,安徽 蕪湖 241000)
《C語言程序設計》是絕大多數本科院校計算機專業一年級上學期所開設的第一門專業必修課程,同時,C程序語言也是多種軟硬件課程的先修課程和基礎,該課程對計算機專業的重要性不言而喻。因此,針對《C語言程序設計》,國內諸多學者在該課程諸多方面和不同角度提出了一系列卓有成效的舉措和改革。羅愷韻等人為提高學生學習C語言課程的主觀能動性和自學能力,提出了一種基于反轉課堂的教學模式[1];尹蘭蘭等人利用easyX插件,將C語言課程中涉及的重要算法可視化,以畫面的方式展現給學生,大大提升了課堂的趣味性和學生的學習熱情[2];王磊等人提出以計算思維為導向的C語言教學模式改革和時間,用以提高學生各方面專業能力[3];謝方方等人通過“思維導圖”對C語言課程的知識點進行梳理總結,使得學生在掌握該課程零碎內容更具條理性,極大地提升了其學習和掌握知識的效率[4];賈金芳等人為改變“老師只講、學生只聽”以及授課形式單一的課堂格局,提出了基于SPOC方法的C語言課程改革模式,并將其應用到實踐當中,在學生的知識掌握程度和動手能力等方面,取得了良好的效果[5];林平根據MOOC靈活、針對性強等特點,將其引入至計算機教學改革之中,提出計算機相關課程未來的改革方向[6]。
上述改革和實踐在一定程度上對學生的C語言學習起到助力作用,并在真實的課程教學中起到較好的效果,但目前C語言教學仍存在以下幾方面的問題:(1)學生在C語言學習過程中難以培養模塊化編程思維;(2)C語言理論知識和中學課程理論知識差異性較大,學生一時難以很好地接受;(3)學生課下對該“理論+實踐”類課程的復習、預習情況得不到有效監管。
C語言課程是《面向對象程序設計》《數據結構》等相關編程課程的先修課程,因此C語言課程在整個計算機專業類課程的地位舉足輕重。但是,學生在進行后續編程類課程中,很少具有將模塊化思維運用到實際編碼中的意識,即少有學生將獨立功能模塊化為函數,進而在主函數中調用,而是把整個程序代碼寫入主函數之中。這一編程習慣會直接對后續課程的學習產生較大障礙,對專業知識的掌握和科學思維的鍛煉造成極為不利的影響。
傳統經典教材通常涵蓋C語言相關的所有知識,通常包括C語言介紹、C語言算法、順序結構、選擇結構、循環結構、數組、函數、指針、結構體及文件等章節,其目錄也依據從易至難逐個鋪開,圖1為該類教材的目錄結構。
如圖1所示,該類教材函數章節處于整個教材的后半段內容之中,學生在學習該課程大半過后才進入函數的學習當中。根據近幾年的授課情況,學生在課程的學習過程中,學期前期的學習興趣和熱情度明顯高于學期后期,因此,如果在學習的后半段才接觸函數知識,其無法有效地將函數思想貫穿到C語言程序編寫中,從而很難具有模塊化的思維過程,直接影響后續編碼的效率和習慣及面向對象的思想形成。

圖1 傳統C語言程序設計教材目錄結構
為解決這一問題,本文對C語言課程的目錄課程進行了部分調整,下頁圖2即為本文所述的授課目錄順序。
本文將原來目錄下的第七章“函數實現模塊化程序設計”調整至第四章,原四、五、六三章依次后移,形成如圖2所示的目錄結構。

圖2 該課程授課目錄順序
通過上述調整,一旦學生對C語言有初步的了解,掌握了C語言基本語法之后就立即進入到函數的學習中,并在后續諸如選擇結構、循環結構、數組等章節中,強制要求學生使用函數“封裝”功能模塊。
通過課程的目錄結構優化,學生在之后的編碼中明顯具有模塊化思維,并在一年級下學期及大二學年的面向對象程序設計、數據結構等課程中,能對其思想有更好的理解和掌握。
由于理工科學生在中學階段的學習重點主要集中在數學、物理、化學等科目,因此,即便是計算機專業的學生,剛進入大學對計算機類專業課如C語言程序設計等課程重視程度不夠。此外,C語言課程本身和中學課程在學習和理解方面差異性較大,如果采用中學的思維方式,可能無法達到很好的學習效果,這就使學生在C語言學習過程存在較多困難,更加降低了其學習的興趣度。
為了解決上述問題,本文首先通過問卷調查,梳理出C語言重點和難點(亦即學生普遍存在問題的章節內容)的交集主要集中在函數、數組和指針章節。

表1 導學故事情節舉例
針對該課程的重點,制作形象生動的故事情節導入資源。將重點內容變成生活中常見的、有趣的故事情節,利用聲音、文本、圖像等多媒體形式為學生提供關于新知識的引入,包含了與已學知識的聯系,課程實際應用價值,與之后知識體系的關聯,課程內部知識之間邏輯關系,幫助學生系統認識課程。然后將動畫共享至課程學習資源中,以便學生能有效地預習,大大降低課程的乏味性,極大地激發和提升了學生的學習興趣。以單分支結構和雙分支結構為例,導學內容如表1所示(故事情節來源于自編講義)。
學生脫離“高壓”下的高中學習進入大學生活,學習狀況和節奏落差較大,缺乏自我約束能力的學生無法合理規劃課下時間,使學生在課程內容的預習和復習中產生極大的障礙,C語言程序設計是一門學生在一年級上學期理論與實踐結合重要的專業必修課程,因此,針對該課程制定一個科學合理的課下監管機制顯得更加必要。
為此,本文基于博思智慧學習平臺[7],有效地將學生的課下學習時間作合理的安排和規劃。該課程的授課形式包括理論、實踐和線下三個部分,其比例為1:1:1。線下課程并非類似于傳統課程要求學生“刷題”“刷課”,不僅沒有起到應有的效果,反而浪費了學習時間。
博思智慧學習平臺對瀏覽速度過快判定為“惡意刷課”,對重復度過高的代碼判定為“抄襲”,有效杜絕了過程中的違規行為。此外。教師可以通過“報表中心”導出學生的學期情況。圖3為教師端可見的各班學習時長統計。

圖3 各班學習時長統計圖
另外,在整個學期之中,分別在分支結構章節、循環結構章節、結構體章節結束之后安排三次階段考核,其總和所占綜合比較與期末成績等同,多維度多次考核增加了考核的公平性、科學性和合理性[8],同時,也讓學生在學習過程中做到反復復習,避免了期末考試之前“臨時抱佛腳”的尷尬局面。
針對傳統C語言課程教學中可能存在的問題,本文分別通過優化目錄結構、趣味故事情節導入及基于博思智慧學習平臺的過程化監管機制有效地解決了部分問題。上述改革和實踐還應在過程化考核中將比例更加細化、科學化,這也將是下一步的研究方向。