張沫 章彪
摘要:對編程類課程而言,傳統教學存在填鴨式理論教學、實踐教學環節松軟流于形式等不足,教學效果不理想。該文針對程序設計類課程教學中存在的問題,給出了基于ACM競賽模式、運用在線編程測試OJ平臺來開展程序設計類課程教學,收到了較好的教學效果。
關鍵詞:ACM競賽;教學改革;C程序設計;OJ平臺
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)07-0165-02
Abstract: For programming courses, the traditional teaching method has some shortcomings, such as cramming theoretical teaching and practical teaching, which is not satisfactory. In view of the problems existing in the teaching of programming courses, this paper presents the teaching of programming courses based on ACM competition mode and online programming test OJ platform, which has achieved good teaching effect.
Key words: ACM competition; teaching reform; C programming course; OJ platform
C語言是計算機專業的通識基礎課程,旨在培養學生的邏輯思維能力、創新實踐能力和解決實際問題的能力,為后續專業課程的學習奠定良好的基礎。該課程具有表達能力強,簡潔緊湊、靈活方便,程序設計自由度大,生成目標代碼質量高,程序執行效率高等優勢。 由于c語言的特點決定了學習者本身需要很好的基礎,而很多學生是第一次接觸c語言,沒有編程基礎,這也就使得學生很害怕上這門課程,學習進度也比較緩慢。針對這種情況,如何教好學生這門課,讓學生愛學能學,對提高學生的程序設計能力至關重要。
1 傳統教學效果不理想
1.1 理論與實踐脫節,學生學習興趣欠缺
在課堂上學習的時間有限,理論知識點豐富,使得教師必須花費大量的時間來講理論部分, 這樣的話學生實踐的時間很少沒有進行實際操作,無法深刻把握,課堂后缺乏自主學習的能動性,“滿堂灌填鴨式”教學也讓學生沒有學習的興趣。
此外,學生的實驗結果通常課程結束后才公布。只要完成實驗內容,大多數學生就不再進行深入探索。另一方面,實驗方案激勵不足,學生之間沒有形成良好的競爭氛圍,所以整體教育質量也沒有得到提高。
1.2 教師教學手段單一
根據學生之前學年學習的結果來看,發現學生們“事前熱情,事后乏力”,因為他們缺乏必要的學習韌性。還有就是在高等職業教育機構中,c語言教學內容過于強調基本原則和基本業務,并且,“碾壓式教學”也沒有考慮到高等教育的專業性質和知識基礎薄弱的學生。? 教學中,教師的方法缺乏多樣性,僅僅借助一些經典的解釋和驗證示例,這也就讓許多學生在使用C語言的時候不能獨立解決出現的問題,或者必須依靠教師傳遞的代碼,然后把這些代碼直接執行復制和粘貼操作,對自己所寫的程序完全不了解,脫離實際應用,造成從學生不再聽老師講課,學習出現困難的時候也不再向老師尋求幫助,消極應對,使得教學效果較差。
1.3 實踐教學環節松軟,流于形式
該課程實踐的時間嚴重不足,以浙江郵電職業技術學院為例, 2016年這門課程共設置72小學時,實際操作36學時,理論課堂36學時。學習的時候學生們主要聽老師講解,自己操作的時間幾乎沒有,然而也只能在課堂上問老師,但老師并不總是能解決課堂上所有學生的問題。溝通平臺也沒有搭建起來,師生溝通機制也沒有形成,造成實踐無法發揮最佳效果。另外,學生學習通常都是被動式的接受,低年級學生往往也傾向于“被動”獲得知識,不能主動從網上學習,也不能獨立學習。也就是說,他們必須在老師的指導下才能進行試驗課程的學習。
1.4 考試機制不合理,僅僅“為考而考”
以往教學中,學生在課堂學習、完成課后練習 、實驗室報告、期末測評等方面的學習成績都會受到考核,而這些考試通常只涉及客觀問題,表現的是學生的記憶和敘述能力,而不能表現學生分析和解決問題的編程能力。采用這種檢驗方法過于注重形式評價,試驗作業的期末評價需要以學生實驗操作水平作為考核標準。然而以往都沒有實行這樣的考核方法,只能以卷面考試來代替。
2 基于ACM 競賽模式的C語言課程教學探索
為了解決傳統教學存在的不足,我們引入了ACM競賽模式下的教學改革策略。ACM競賽是一項旨在展示大學生創新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽,是世界上最具知名度的大學生計算機編程技能競賽之一。競賽由至多3名在校學生組隊,每隊分配一臺電腦,競賽時長歷時5個小時,考驗團隊創新和團隊合作,考核學生在開發新軟件時的創造性,還能測試他們在壓力下工作的能力。經過多年的發展,該競賽已經發展成為最具影響力的大學生程序設計競賽,目前已經已有很多優秀的OJ系統。國內知名度較高的有北大的POJ、哈工大的HOJ、浙大ZOJ、杭州電子科技大學的HOJ、牛客網等;國外比較知名的系統有OJ SGU、UVa Online Judge等。這些平臺共有的特點有:
2.1 題目涉及領域廣,對學生要求高
ACM從難度來看,有水問題(簡單問題)、中等問題和高難度問題這三個層次,平臺主題包括排序、搜索、遞歸、分區、圖形算法、數據結構、搜索算法、動態規劃、數學問題、計算幾何和具有多種算法的合成類算法主題;教師和學生按照每個問題后的成功率來確定問題目標的難度,并在教學中運用這一特點進行分層教學。
2.2 磨煉學生的創新和團隊協作能力
競賽由三名學生組成小組,他們共用一臺英語計算機,限時5個小時團隊協作進行C、C++或Java編程程序,鼓勵學生在開發新軟件時表現出創造性,并且還能測試他們在壓力下工作的能力。
2.3 磨煉學生的抗高壓能力
這些平臺每個科目都需要大量的操作時間和內存來測試學生算法的優越性;建立足夠多的方案測試實例,用這樣的方法來測試學生能否充分考慮問題;程序的返回結果須遵守非常嚴格的格式要求,以測試學生編寫代碼的嚴格程度;提交問題的總次數用罰時的方法進行,每多提交一次,總運行時間多幾分鐘,這是為了測試學生解決問題的速度和能力。這種評價機制要求學生具備很強的抗壓性,這種模式的長期教學可以就學生的理解和解決問題這兩方面的能力得到很好的發展。
2.4 采用在線評測系統,追求高質量程序
這些平臺擁有足夠多的練習和競爭所需要的習題,并為每個平臺提供了大量的實驗使用實例。學生的程序代碼會在線上傳送,而且代碼會在結果頁面上以不同的區域進行測試精確度、總時間、記憶體使用率即內存消耗等等。學生們評價以結果為標準進行調整。此方法是對學生分析問題、資料點整合、算法最優化、內存的分配和控制等方面能力的考核測試。
3 課程教與學中引入OJ平臺和ACM競賽模式
3.1 在理論教學中引入ACM 競賽
1)任務驅動
在某些理論教學內容中,可以從ACM的基礎題目中選取若干個相似的簡單題目,學生通過解題,可以加深對理論的理解。
2)翻轉課堂
對于指針等最難掌握的知識點,通過事先編寫好代碼,學生可以事先好好理解以下代碼,并在課堂開始時在ACM平臺上進行測試,然后著重把握理論內容中最困難的點,使得課堂教學效率得到提高。
3.2 基于ACM的實踐教學
理論教學結束后,選擇了一些試題進行理論解釋和強化,平臺會根據學生提交的代碼,給出相應的結果,學生能夠根據結果判斷該程序是否正確,從而避免了再去設計自己的程序測試用例。通常情況下,學生不會參與c程序設計中的軟件測試,也不會體驗到設計測試的示例。程序運行后,程序運行沒有出現錯誤通常也被識別為正確,比如在一次編程中,一名學生在輸出結果時沒有換行, 運行一次的答案是正確的,該學生誤認為換行與否不重要,這樣做明顯不正確。假若在ACM平臺上提交程序,如果對問題回答不正確或輸出格式不正確時,系統將給出“WA”或“PE”,這將有助于學生檢測程序中的問題,培養學生的嚴謹性。
3.3 基于ACM的課程教學優勢分析
1)小組學習和協作學習:作為編程課日常教學的一部分,ACM可協助學生指派三人組成一個小團隊,其中一人作為其他兩組成員之間相互學習的管理員,以加強協同合作,這種教學形式既增進了合作意識,也促進了學生的專業發展。
2)多層次教學:在OJ的在線平臺上,簡單和困難的問題做出區分,舉例來說,杭電ACM平臺,11頁之前英文題,之后為中文題,學生學習更加循序漸進,有利于學生學習。學生的基礎和能力各不相同,在實踐中,不同的學生應選擇難易程度不同的問題,這樣有利于分級學習取得很好的效果。
3)實時實際執行:OJ平臺包括各種主題,當主題完成時,學生可以在線查閱,測試平臺進行結果的反饋,顯示即時效果,并提供討論論壇,讓各路高手處理這些主題,而無須教師參與。
4)激發學生興趣,點燃學習熱情
近年來,在引入ACM平臺助理程序設計學校方面,學習舉措已明顯改善,大多數學生對學習前學習和程序設計都有意識。例如,本學期程序員為“選擇結構”部分處理15個主題,而這兩個課程102名學生中72%提出30多個問題,甚至45個問題。在教程的后續章節中,學生學習的方法變得越來越有趣。他們開始超出書本或教科書中包含的主題和專題,開始設法解決平臺上一些最困難的問題,這些問題對學習興趣、學生編程能力的發展和繼續教育都有幫助。
4 結束語
在引入ACM競賽模式到C語言課程教學的三年時間內,學生期末測試成績優秀率逐年上升,學生參加ACM省賽和市賽的成績也有了很大進步,其中第十五屆ACM競賽獲銀獎、十六屆和十七屆ACM競賽獲金獎。由此可見,基于ACM的教學模式既使得教師教學負擔變小了,還有利于提高學生編程方面的能力,激勵學生進行自主學習,有利于學生畢業后更好地適應軟件開發工作。所以, 我們將進一步擴大此類平臺的使用廣度和深度,更大地提高編程類課程的教學效果。
參考文獻:
[1] 劉宇欣,周秋霞.ACM平臺在C程序設計教學中的應用[J].計算機時代,2018(3):66-69.
[2] 田仲富,劉楠,李桂英.高校優質數字化教學資源共建共享有效策略研究[J].科教文匯(上旬刊),2018(1):1-3.
[3] 李環.基于ACM競賽的程序設計類課程教學改革研究[J].計算機教育,2016(3):115-118.
[4] 徐新愛.基于學科競賽的《C語言程序設計》課程教學改革研究[J].西南師范大學學報(自然科學版),2015,40(9):224-228.
[5] 林金珠,倪天偉.基于ACM-ICPC競賽的C語言課程教學實踐[J].安慶師范大學學報(自然科學版),2017(1):102-104,119.
[6] 戴麗萍,宋艷,張風彥,等.《C語言程序設計》課程教學改革與實踐[J].當代教育實踐與教學研究(電子刊),2015(11):548.
[7] 王曉娜,劉素轉.C語言程序設計課程教學改革研究與實踐[J].課程教育研究,2018(1):223,226.
[8] 王興國.基于互聯網+的數字化網絡教學資源共享應用研究[J].科技經濟導刊,2017(4):55.
【通聯編輯:代影】