趙磊 焦鉻
摘 要: 針對C語言程序設計教學中存在的問題,將ACM/ICPC競賽引入到日常教學中。通過建立協作式學習模式,推行實驗課趣味化、學習時間分散化,開展程序鑒賞和討論,改革考核手段等方法來實施C語言程序設計課程的教學改革。這些方法在實際教學應用中取得了一定的成效。
關鍵詞: C語言; ACM/ICPC; 協作式; 鑒賞課
中圖分類號:TP312 文獻標志碼:A 文章編號:1006-8228(2016)01-66-03
Discussion on the introduction of ACM/ICPC in the teaching of C language programming
Zhao Lei1, Jiao Ge1,2
(1. Computer department of Hengyang Normal University, Hengyang, Hunan 421001, China;
2. College of Electrical and Information Engineering, Hunan Institute of Traffic Engineering)
Abstract: For the problems in the teaching of C language programming, the ACM/ICPC (ACM International Collegiate Programming Contest) is introduced into the daily teaching. Through the establishment of collaborative learning model, implementation of interesting experiment courses and learning time decentralization, carrying out the program appreciation and discussion, reforming assessment means, and other methods, the teaching reform of C language programming course is implemented. These methods have achieved certain results in the teaching practice.
Key words: C language; ACM/ICPC; collaboration; appreciation class
0 引言
長期以來,C語言程序設計是理科專業學生必修的一門課程[1],具有表達能力強,簡潔緊湊、靈活方便,程序設計自由度大,生成目標代碼質量高,程序執行效率高等特點。正是由于C語言的這些特點,它又是一門比較難掌握的課程。探討如何提高這門課程的教學質量對提高學生的程序設計能力至關重要。
大學生競賽是激勵學生樹立創造性思維、提高教育教學水平的一種有效途徑。近年來,各高等院校積極鼓勵學生參與各類學科競賽,高度重視學科競賽在教學改革中的應用,通過參與競賽的學習模式,激發學生學習的主動學習意識,增強集體合作意識,促進創造性人才的培養。本文將ACM國際大學生程序設計競賽(ACM International Collegiate Programming Contest,簡稱ACM/ICPC)引入到C語言教學中,探討這種新的C語言程序設計課程教學模式。
1 ACM/ICPC簡介
ACM國際大學生程序設計競賽(ACM International Collegiate Programming Contest,簡稱ACM/ICPC)是全球規模最大,最有影響力的大學生程序設計競賽。其目的在于使大學生運用計算機來充分展示自己分析問題和解決問題的能力。ACM/ICPC始于1970年,到2013年止已經舉辦了37屆。這項國際頂級賽事是大學生智力與計算機解題能力的競賽,是大學生展示水平與才華的大舞臺,是全球高校計算機教育成果的直接體現。該項競賽分為區域賽和世界總決賽,各大洲的區域賽安排在上一年的9月-12月進行,第一名自動獲得參加世界決賽資格,世界總決賽安排在每年的3月-5月舉行[2]。
ACM/ICPC要求以團隊的形式參賽,每個隊伍由3名隊員組成。每隊使用一臺計算機,要求選手在全封閉的環境內(不能有任何通訊設備,可以攜帶任何紙質資料)連續5個小時對8-11個問題進行解答。競賽采用英文命題,題目涉及面非常廣。需要參賽學生具有扎實的基本功、良好的分析問題的能力、較好的團隊協作能力和壓力下編寫程序的能力。該競賽為學生提供了一個學習和使用程序設計語言和算法的完整實踐模式,讓學生以精通編程為榮,形成一個積極向上的學習氛圍。
2 當前C語言程序設計教學存在的問題
2.1 教學模式陳舊,實驗內容模板化
在當前的教學模式中,教師在教授學生的過程中往往覺得自己已經很賣力,學生在學習的過程中也花了很多精力,但學生學完之后往往只是把教師課堂上講授的內容復制到自己的實驗課中,并沒有很好地理解程序并建立自己的編程思想,實驗中學生僅僅是把老師理論課堂上講授的程序代碼通過鍵盤輸入到電腦中運行,得到一個顯示結果而已,所以實驗基本上成了驗證性的實驗,很多學生并不能真正地設計程序,更不能結合課程來解決一些生活中的實際應用性問題。
2.2 課程考核模式單一,高分低能現象嚴重
C語言程序設計課程考核在很多學校還主要采用筆試為主的傳統考核模式,考試內容往往是學生做過的類似題目,試卷成績在總成績中的比例為70%,平時成績占學生的總成績比例的30%。確實有很多高分學生,然而在這些高分學生中能夠很好的建立編程思想,解決實際問題的學生卻不多。這種考核模式不利于學生綜合實踐能力和創新能力的培養,最終形成“高分低能”的現象。
2.3 缺乏互助學習氛圍,團隊協作意識較差
當前軟件項目開發都是以團隊形式實施的,團隊成員之間需要合理分工和無障礙溝通[3]。但是在C語言程序設計的課程教學中以項目組為單位來開展教學活動的機會非常少,更談不上互助學習和協作。
2.4 實踐教學改革力度不夠
盡管近年很多大學的C語言程序設計課程的實踐教學與以前相比有了一些改善,但仍存在很多不足。首先是沒有形成一個有利于培養高素質創新型人才的培養體系;其次當前教育形式重于實質,在人才培養過程中沒有從根本上進行教學方法和技術的改革;再次很多學校只重視理論教學和課堂教學,輕視實踐環節,只強調從理論上對知識點的掌握,對程序的實現重視不夠,造成有相當數量的學生C語言的程序實現和調試能力很差。
3 引入ACM/ICPC的教學改革
3.1 協作式學習模式
ACM/ICPC競賽是以小組的形式參賽,小組由3名隊員組成。比賽期間,小組成員共同使用一臺電腦,要求小組成員必須在規定時間內解決制定的程序問題[4]。這種競賽機制與協作式學習模式正好是一致的。在C語言教學中,教師可以把學生分成幾個小組,共同分析教學內容,在短時間內完成適當難度的題目,最終通過相互幫助、協作,使得枯燥無味、難于分析的問題變得簡單起來。在C語言教學中適當地利用這種學習模式,不僅可以大大改進解題效率,同時使得每個學生都有成就感,能夠發揮所長,避之所短,利用各自的專業和特長,分工合作,集體討論,根據不同的題型,由不同的人員負責分析、討論和講解,從而加快學習進度。這樣的教學效果最終發展了學生的個人思維能力,增強了小組之間的溝通能力及對同伙差異的包容能力。
3.2 實驗課趣味化,時間分散化
傳統的程序設計類實驗題目普遍比較枯燥,難以調動學生的學習興趣和設計思路[5]。任課老師可以將實驗題目生活化、趣味化,充分激發學生的學習主動性和積極性,將被動學習轉化為主動學習。同時考慮到實驗課時非常有限,可以使用ACM/ICPC的在線評測系統,學生注冊后可以在任何時間登陸該系統進行選題、提交、評測和討論等自主學習環節,將有限的課內練習時間延續到課外。
3.3 開展程序鑒賞課,討論課堂
我們可以嘗試設置程序鑒賞課,老師和同學均可搜集一些有特點且具有應用性的程序拿到課堂上鑒賞,通過經常性的程序鑒賞和討論,能夠開拓教師和學生的編程視野,提高學生的編程興趣,只有提高興趣,喜歡編寫程序,才能寫出好的程序。
3.4 改革考核手段
ACM/ICPC模式的重要特點之一是完善而嚴謹的考核機制,所以我們將ACM的考核方式借鑒到C語言課程的考核環節中,采用ACM/ICPC模式的黑箱測試,將學生在“在線評測系統”中獲得的成績以50%的權重加入到課程考核指標當中。這樣,一方面減少了教師的工作量,降低了考核錯誤率,另一方面做到了客觀、公正,更好地發掘學生的創新能力,提高學生對知識點的掌握程度。
4 結束語
通過引入ACM/ICPC競賽到C語言程序設計的課堂教學中,可以培養學生的自主學習與協作學習能力,加強教師與學生、學生與學生之間的相互交流和溝通,激發學生的創造性思維,使學生更好地掌握C語言程序設計,提高了教學效果。從這幾年學校督導組的評價和學生的評教看,證明了這種改革能夠推動C語言程序設計課程的建設,有助于培養學生的邏輯思維、程序設計、團隊合作和協同能力。
參考文獻(References):
[1] 譚浩強.C語言設計(第三版)[M].清華大學出版社,2005.
[2] 吳文虎.世界大學生程序設計競賽(ACM/ICPC)高級教程[M].
中國鐵道出版社,2009.
[3] 楊松濤,王斌,張海燕.從ACM/ICPC競賽探討大學生的能力
培養[J].計算機教育,2010.24:16-18
[4] 徐本柱,王浩,胡學鋼.ACM/ICPC的教學與實踐[J].合肥工業
大學學報(社會科學版),2008.22(6):133-137
[5] 張熠,陳榮欽.以ACM為導向構建C語言實驗教學新平臺的
研究與實踐[J].臺州學院學報,2009.31(6):70-74