呂圣軍,趙建鋒,桂 婷
(浙江工業大學之江學院 信息工程學院,浙江 紹興 312030)
2016年,教育部高等學校大學計算機課程教學指導委員會發布了《大學計算機基礎課程教學基本要求》(簡稱《要求》)。《要求》指出:“計算機程序設計基礎”是大學計算機教學系列中的核心課程,通過該課程使學生初步掌握程序設計的基本方法、編程技能與上機調試能力,并嘗試通過編程解決一些示例性的應用問題(如數值計算、信息管理等)[1]。傳統的程序設計課程基本上采用教室理論授課、機房上機實驗的方式進行,人數多、課時少是制約教學效果嚴重的問題。由于學生的學習習慣、理解能力以及實踐時間不足等,都會使學生喪失學習興趣,達不到《要求》的教學效果。
所謂“多層教學模式”,是指利用多種現代教學手段, 通過課前預習、課中演習、課后鞏固的方式提高教學質量和效率。這種教學模式可以打破學習的時空限制,提高程序設計訓練量和力度。利用該模式有以下優勢。
1)貼近實戰的應用型案例有利于提高學生學習興趣。
應用型人才的培養需要對理論型案例進行改造,使其更加實用。因為有用,學生才會有更高的學習興趣,學習才能取得更高的效率。
2)精美的教學視頻能讓學生反復學習基礎知識。
傳統課堂教學的時效性很強,教師的教學不能反復觀看。因此,提前錄制教學視頻讓學生反復或者有選擇性地觀看是提高效率的好方法。
3)高效的評測軟件能極大減輕教師的工作強度,滿足基礎課教學需求。
批改作業、試卷,一直以來占用了教師的大量時間和精力,不適合通識課程、班級多的課程。評測軟件的應用極大提高了效率和準確度,教師可以空出時間去研究課程內容和教學方法。
4)學習資料共享,建設良好的學習型生態環境。
通過教學群共享空間,存儲各種學習資料,方便學生的學習,這是互聯網在教學中的優勢。課后習題在公布答案的時候,教師可以自己公布,也可以指定某個學生上傳自己的答案。學生提出的問題可以由教師回答,也可以由其他學生回答,這種方式無形中增加了學生思考的空間,極大地激發學生學習的興趣,提高學習效率。
教學模式、方法的研究和探討一直是各級教學人員關注的重點[2]??傮w而言,目前以培養計算思維或者培養應用實踐能力為主導,在具體教學方法上,有案例分析法、任務驅動法、分層教學法以及新出現的慕課[3](MOOC)和翻轉課堂教學法等[4]。各種方法的主要目的是提高學生學習興趣,力爭課堂教學更加高效。然而,程序設計課程學時的不充足、大量訓練的缺乏使得學習很難達到教學的要求。隨著學生人數的擴大,教師更難對大量學生進行細致的輔導,因此強調課前、課中、課后的“多層教學模式”值得研究。在傳統教學模式的基礎之上,再借助互聯網工具為學生提供隨時隨地可以學習的資源、跨越時空的訓練,以提高學習效率。 “多層教學模式”的架構如圖1所示。

圖1 程序設計課程的“多層教學模式”
教學越有針對性,效果就越明顯。企業需求的征詢是應用型人才培養不可或缺的一環。企業的需求反應是市場的需求,一方面給教師提供教學案例,另一方面也能提高學生學習的興趣。在這一環節中,教師的作用至關重要,既是整個活動的策劃者,也是組織者。通過企業需求的征詢,結合計算機程序設計的特點,形成針對性強的教學案例。然后,教師要改進現有教材,修訂培養計劃、教學計劃、大綱、授課計劃等一系列教學環節。針對多人教授同一門課的情況可以采取教研組長統一標準。通過企業走訪,一方面能讓學生了解企業當前的現狀,看看哪些工作是將來喜歡的崗位,這些崗位需要哪些知識,特別是程序設計類課程需要掌握哪些重點、難點等;另一方面,學生也可以向企業導師請教遇到的問題,開闊學生的視野。
程序設計教材五花八門,適合應用型人才培養模式的卻不多,無論選擇什么教材都不能一成不變,最好三年一改,讓教材也與時俱進,把企業的需求案例加入教材,一方面豐富教材內容;另一方面貼近實際,使學生學習起來更有興趣。配套的培養計劃、教學計劃這些主要根據學校的課時安排做適當調整。目前,大多數學校的程序設計課程課時不足,但是要求并沒有降低,因此需要更加高效的教學方法和模式加入其中。課前時間的利用是提高教學效果行之有效的辦法,可以讓學生提前預習教材,反復觀看教學視頻,提前掌握知識,這樣課堂上就不用記憶基礎知識點了。課堂上更多時間留給學生對知識的提煉、應用。
從國家到省級再到市級,各類教學改革項目反映了國家對應用型人才培養的重視。各級教學項目都有很具體的工作要求,對于成果也是有嚴格標準的。很多學校的核心課程建設就明確提出要錄制高質量的教學視頻每學分120min以上、資源共享、建立評價體系等要求。與傳統課堂相比,網絡類的課程越來越顯示其優越性:當時聽懂、過后就忘,或者臨時開個小差錯過了、后面銜接不上等缺點在新模式下統統沒有了。教學視頻需精心組織策劃,精簡知識點,錄制邏輯性、操作性、時序性比較強的視頻,供學生反復觀看。程序設計課程的學習方法,最初是從模仿開始的,然而程序設計步驟的連貫性、時效性,往往會使學生手忙腳亂,顧此失彼。這種情況嚴重打擊學生的學習積極性,懷疑自己的學習能力。因此,從一開始就能夠讓學生成功的調試出程序,有助于學生學習成就感的培養,也會極大提高學生的學習興趣,增強其學習動力。
教學過程不是教師向學生的單向傳輸過程,必須包含重要的交流溝通。目前,國內最為流行的交流軟件就是QQ和微信。如果把這些好的資源利用到教學中來,當然對提高效率大有幫助??梢越Q學習群,讓任課老師和班長做管理員。通過交流群,教師可以及時下發學習資料,學生也可以及時提出問題,群里的教師和學生都可能做出回答。目前手機QQ能夠輕松打開Word文檔、PPT講義等,學生通過下載,可以隨時隨地觀看,拓展了學習時域,提高了學習效率。微信公眾號也可以用于教學,通過菜單或推送形式,把教學視頻地址、知識點講解等內容推送給學生。再利用一些第三方插件,例如問卷星、易查分等建立調查表、在線測試等功能。
程序設計是實踐性很強的課程,有些學校以學生敲代碼的行數來評價學生對知識的掌握程度,也不是沒有道理的。教師應該根據班級學生學習的具體情況,制作針對性強的題目加入題庫,以供學生訓練。題庫一般采用Online Judge(OJ)系統,該系統的好處就是能夠及時地對學生的程序進行反饋,以便學生能及時地修改程序,這對學生獨立調試程序是非常有幫助的。OJ系統大都采用網站的形式存在,只要電腦服務器是開著的,該系統就會提供24小時不間斷服務,有助于學生抽出課外時間進行程序練習。
傳統的考試大部分采用試卷形式,往往是程序寫的不完整也能得分,這嚴重脫離了實戰,OJ系統不會對不完整的程序給分。計算機閱卷的優勢就在于程序代碼可能不一樣,但計算結果必須完全一致,否則是通不過測試的。這比較符合程序實際編寫中出現的不完全對的結果,是不能通過合格驗收的實際情況。
筆者所在課題組于2015年開始建設計算機程序設計教學網站,并部分參考北京大學OJ和杭州電子科技大學OJ的開發模式。教師錄制的部分教學視頻格式如圖2所示。

圖2 計算機程序設計教學視頻格式
該系列視頻以網頁的形式存放在學校網站上,校園提供全覆蓋、免費的Wifi,學生用手機、Pad或筆記本電腦可以直接登錄校園網,可隨時隨地觀看。網頁分為兩部分:上部為教師錄制的教學視頻,主要講授程序設計的基礎知識和演示編程操作案例,學生可以重復觀看,加強記憶;下部為本節課程的圖文講義,便于學生直觀地掌握結構化程序的格式與程序流程,深化對知識的理解。網站24小時不間斷服務,給學生提供學習的廣闊時空,畢竟學生每學期也不是只有程序設計一門課在學習,課余時間也是寶貴的。
建立計算機程序學習QQ交流群。該群的管理員是學校的教師和各班的班長,教師主要是下發或收集資料、回答疑問等;班長主要是管理學生在群內的言行,負責學生的各種活動等。群共享中存有教師或者學生提供的學習資料,方便學生隨時獲取。
課題組建設了名為“程序設計輕松學”的微信公眾號,具有教學服務、教學資源、真題測試3部分。教學服務菜單中,有問卷調查功能,設置該功能的主要目的是了解學生對程序設計了解的基本情況。另外,該菜單還具有請假登記、成績查詢、學校位置等輔助功能。教學資源菜單中,主要包含C語言視頻、筆試題目精講、機考題目精講3部分,另外還預留Java、Python兩個子菜單功能。真題測試部分是利用第三方軟件“問卷星”建設的在線測試系統。除此之外,還可以利用公眾號的推送功能把最近教學的知識點及時推送給學生。
目前,課題組建設了在線測試系統,該系統的題庫提供了C、Java、Python題型,其中以C程序設計為例,有220多道應用型練習題。這些練習題都是放在校園網內的教學網站上,由教師根據實際需求出的強針對性題目,可供同學們在校園內任何網絡覆蓋的地方,使用筆記本電腦加以編寫、調試、修改、提交。學生通過學號注冊,可以課內實驗,也可以課外刷題。系統有自動判題、排名、統計等功能,會對學生的代碼是否正確給出及時的分類提示,引導學生做出正確答案。提示包括語法錯誤、編譯錯誤、超時、答案錯誤等,樣式如圖3所示。

圖3 OJ系統對學生練習題給出的檢測結果
學生根據OJ的提示,逐步修改自己得代碼,直到提交成功。
課題組所提出的 “多層教學法”能否對教學起到幫助,合理化檢驗學生學習的水平是非常必要的。因此,強化考試壓力,對于部分自我控制能力不強的學生是行之有效的方法。OJ擁有高效的考試系統,該系統帶有U盤封鎖,防止學生偷懶拷貝程序代碼;還可以通過IP地址、物理地址和學生學號綁定的方法,防止學生更換賬號代交代碼。當然,機器畢竟不是人,考試過程還需要監考老師巡視違紀情況。圖4所示為2017年4月13日機械班級C語言程序設計評測情況。

圖4 C語言程序設計評測情況
從圖4中可以看出,在120min的時間內,OJ考試系統對學生的程序代碼給出了1 364次反饋,其中包括編譯錯誤、超時、答案錯誤等信息。在這么短的時間內,人工檢驗是難以完成的,真正體現出互聯網應用的高效性。
本方案所提出的教學方法是把學生的課外時間利用起來,激發學生學習程序設計的興趣,強化訓練,合理化測評。該方案是否能夠對學習程序設計有明顯的幫助,課題組參考文獻[5]中的學習興趣量表,設置了表1的評價指標,在已經學過程序設計的學生中抽樣調查。
本調查的樣本分別選擇1年級和2年級的電子、自動化、機械等專業的學生進行問卷,統計的人數數據見表1,對有效問卷人數進行統計后,認為對掌握程序設計知識有幫助的學生數占82.3%;對提高學習興趣有幫助的有73.2%,這說明大部分學生認為新方法在提高興趣和實際能力方面收獲較好的效果。

表1 教學效果評價表
通過對2017年秋省計算機等級考試的成績分析,C語言二級成績中,全院及格人數增加了63人。更加可喜的是,非計算機專業學生報名參加ACM程序設計競賽的人數增加了4人。
為了加強學生對計算機程序設計知識的掌握,筆者提出通過“多層教學法”,該方法從企業需求入手,修訂教材、大綱、計劃,錄制教學視頻。教學視頻的使用,彌補學生過后就忘的不足,強化了記憶;通過通訊軟件搭起教師和學生之間的無形的橋梁,及時答疑,加強溝通,提高效率;通過校園網的應用型題庫,給學生提供一個隨時隨地練習的環境,強化訓練,提高技能;通過評測系統檢驗學生對知識的掌握程度,給出合理的評價,體現公平。實踐證明,該方案能夠提高學生對程序設計的學習興趣,促進廣泛的編程訓練,加強對知識的理解和應用,取得較好的教學效果。當然,該方案也存在課程限制、難以推廣、學生課外時間有限等問題,這些都將在今后的實踐改進中加以完善。