摘要:針對農業院校程序設計類課程教學存在的問題,在分析ACM/ICPC競賽模式特點的基礎上,探討基于ACM/ICPC的程序設計類課程的教學方法、教學手段和考核機制等改革,并提出具體措施,在實際應用中取得了一定成效。
關鍵詞:ACM;實踐教學;程序設計
中圖分類號:TP312.1-4 文獻標識碼:A文章編號:1007-9599 (2011) 09-0000-02
By The ACM/ICPC Programming Class to Explore Agricultural Colleges Teaching Reform
Zhang Ying,Wang Yi,Yao Juan,Jin Xing,Xiang Jinhai
(Huazhong Agricultural University Department of Computer Science,Wuhan430070,China)
Abstract:The agricultural colleges teaching courses in program design problems in the analysis of ACM/ICPC contest model characteristics,based on the study based on ACM/ICPC programming courses teaching methods,teaching methods and assessment mechanisms for reform,and propose concrete measures in practical applications and achieved certain results.
Keywords:ACM;Practice teaching;Programming
一、ACM/ICPC簡介
ACM國際大學生程序設計競賽ACM/ICPC(ACM International Collegiate Programming Contest是由國際計算機界歷史悠久、頗具權威性的組織ACM學會(Association for Computing Machinery)主辦,是世界公認的規模最大、水平最高的國際大學生程序設競賽,其目的旨在使大學生運用計算機程序設計理論(包括數學素養、程序設汁語言、數據結構、算法分析等)來充分展示學生分析問題和解決問題的能力。ACM/ICPC被看作在校大學生的一場奧林匹克競賽,成為參賽選手展示計算機才華的舞臺,是著名大學計算機教育成果的直接體現[1]。
縱觀多年ACM/ICPC競賽,和農業院系程序設計類課程的教學相比,有如下幾大特點[2]:
(一)ACM/ICPC題目涉及知識面比較廣,來源于生活中實際問題,并融入了程序設計、數據結構、算法分析與設計、人工智能、離散數學等多學科領域的理論和方法。知識面涵蓋了所有的程序設計類課程,而且與程序設計類課程的常規例題相比,學生更有興趣,學習自主性更容易調動。
(二)每個參賽隊伍由3人組成,比賽時每個隊只分配一臺電腦。小組成員需要明確知道自己和隊友的專業特長,才能對問題合理分工,提高解題效率。除此之外對算法思路的良好描述、同一問題不同解決方案的合理論證等都極大地考驗選手的團隊協作精神。普通的程序設計課程實驗均由學生獨立完成,較少有相互的探討和分工協作。
(三)ACM/ICPC采用5小時全封閉競賽,以各隊所解出問題的多少和總用時的長短排名。采用在線測評系統進行評判,體現了比賽的公正公平;對提交程序的要求不僅包括正確性,還包括對運行時間、占用內存和輸入輸出格式的限制,考查選手對算法的靈活運用。普通的程序設計類課程考核方式為筆試,無法正確檢驗學生實際動手能力的強弱,而實驗考核也無提交時間限制,公正性、真實性無從考量。
ACM/ICPC競賽設定了一套合理的競賽排名、挑戰規則,提供了一個學習和使用程序設計語言和算法的完整實踐模式,將這種模式運用到程序設計課程的教學中必將取得顯著效果。
二、基于ACM/ICPC的程序設計類課程改革
(一)農業院校程序設計類課程教學面臨的問題
華中農業大學理學院計算機科學系面向全校農科、工科、理科、文科、生科等專業共開設了三門程序設計類的公共必修課:C++、VB.NET、數據庫技術。面向計算機科學與技術、信息與計算科學、信息管理與信息系統、地理信息系統等專業開設了C++、數據結構、算法分析等程序設計類課程。由于此類課程本身涉及知識點多、邏輯性強、抽象性高、理解難度大,農業院校學生學習起來比較吃力,大部分學生動手實踐能力不強,用所學知識解決實際問題的能力較弱。特別是在從事大型軟件工程時,靈活應用相應算法能力比較欠缺的矛盾突出,成為當前亟需解決的問題。在一些農科專業里,學生更是提不起學習興趣,單純為了應付考試而學習。而計算機相關專業的教學過程與工程項目銜接不夠緊密,導致學生動手實踐能力弱,難以將實驗功底轉化為從業能力。
(二)教學方法的改革
1.與專業結合實現學科交叉
計算機科學非常強調理論聯系實際,面對枯燥的理論,學生剛開始可能還比較感興趣,但時間一長,熱情則遞減。程序設計公共課教師可根據所教授專業的專業特點和學生敏感的專業話題入手,開篇即給出一個實際應用的問題,帶著問題教學,用一根紅線貫穿教學的始終。
例如:針對生物學專業教師可以給出分子生物學中基因搜索匹配問題,引發學生興趣。接下來在后續教學中以此為引例,循序漸進的介紹數組、串、類、簡單查找等。當解決了簡單搜索的編程實現以后,教師進一步針對如何存儲數據量龐大的基因信息、如何提高檢索速度等提問,激發學生進一步思考,進而介紹快速排序、文件存儲等知識點。再如:針對園林專業教師可提出如何建立植物信息庫的問題;針對工程專業教師可提出計算幾何算法在機械設計制圖中的應用等問題。通過對教材內容的擴展,讓學生切實感受到在加強理論學習的同時,還須與實際應用聯系起來,這樣學生學起來更有興趣,教學效果也會提升不少。
而如何與專業掛鉤,如果發現計算機編程在專業上應用的合適的切入點,還需要計算機系教師和專業教師進一步的溝通交流。我們按計算機系教師的科研方向將教師分組到每個對口的專業,實現學科之間的交叉,以更好的完成教學。
2.以能力目標為導向的項目教學
改變傳統的教學模式,從以培養知識型的人才向培養創新型、能力型的人才轉變[3]。例如在傳統的教學中講授數組這一章時,一般是先介紹數組的定義、數組的初始化、數組的引用等知識點,然后通過一個簡單的例題來強化數組的應用。而項目教學是以學生為主體,誘導學生興趣,注重學生專業能力、學習能力以及綜合應用能力培養的一種教學過程。改革后這一章的教學可采用一個實例“某等級烤煙煙葉的葉長最值”導入,然后制定項目計劃,也就是具體完成這個項目需要包含的功能模塊。接下來分解項目,模塊化后得到模塊1:錄入煙葉的葉長數據;模塊2:葉長的排序;模塊3:輸出最長和最短的葉長。然后進一步細化模塊,將教學內容融入到模塊中。比如,提問學生思考大量的葉長數據需要錄入,用什么數據類型來存儲呢?要定義多少個double型的變量呢?自然而然的引入數組的概念。最后要求葉長最值,進而引入排序的方法。教師可現場編寫程序代碼,具體的實現此項目計劃。
針對具體章節知識點的講授,如上可采用一些簡單項目實施某些小功能。在課程的通篇考慮中,可結合專業給出具體的實訓大項目,把每個章節的知識點貫穿到這個大項目的模塊中去。一方面,學生學習目標明確,完成模塊任務后即可體驗到學習的樂趣,學生也獲取一種成就感。另一方面,學生要完成一個項目,必須掌握項目中包含的理論知識與操作技能,學生知道該學什么,怎樣學,由被動吸收轉變為主動參與,提高了學生的學習能力。
3.分層次的實驗教學
傳統的實驗課內容是給出固定題目讓學生完成,千篇一律的題目對基礎知識掌握較好的學生起不到提高作用,同時又打擊了基礎較薄弱者。結合ACM模式,任課教師可以將實驗內容分級化,如分成知識型(課本中的基礎性、驗證性實驗)、應用型(學生自行設計、解決實際問題的實驗)和綜合型(若干知識點的綜合,解決一個較大規模的問題)。不同級別的題型權值不同,每一級別中又包含若干個相同權值的題目,學生可以根據自身情況選擇不同級別的題型和題目數量,只要總權值達到相應的要求即可。這樣既考慮到了不同層次學生的練習需求,又達到了統一的實驗要求。
目前的實驗題目普遍較枯燥,以單一的語法要求描述為主,難以調動學生的學習興趣和設計欲望。參考ACM習題,任課教師可以將實驗題目設計得“生活化”和“趣味化”,使學生自主選擇合理的數據結構和算法解題。如關系表達式和分支結構實驗可以讓學生根據案發現場當事人陳述來斷案,找出真正的作案人,結構體數組實驗可以讓學生設計一個小型學生信息管理系統等,這樣可以充分激發學生的學習主動性和積極性,將被動學習化為主動學習,更好地達到實踐教學目的。
(三)教學手段的改革
在多年的教學實踐中,我們注意不斷改進教學手段,經歷了“粉筆+板書”、“計算機+電子教案+動畫+大屏幕”到“網絡化教學平臺”。及時發布課件、開設論壇討論、教師在線答疑、回復,引入ACM的在線提交程序系統進行實驗、作業的判分,加強師生交流與互動,取得了良好的教學效果。
另外,也不能完全摒棄傳統教學手段。對于算法復雜性分析和算法解決問題的推導過程,適合采用傳統的黑板板書教學方式。因為學生經歷了板書從無到有,思路從疑惑到逐漸清晰的過程。為了節約板書時間,也可將算法設計中較抽象的設計思想以動畫形式演示出來,將算法設計的一系列步驟直觀展示在學生面前。
模仿ACM比賽的模式,可將若干名學生分成一個小組,讓他們自己選擇教師指定的題目,給他們充分的時間進行精心準備,讓他們就此在課堂上為其他同學進行講解。學生們在課堂教學中的表現不僅遠遠好于預期目標,而且在諸多方面提出了創造性想法,充分展現了自身的思維活力,不僅突出團隊合作精神,而且也增強學生編程技巧。通過研討、探究的過程,學生的創新能力和科研能力得到提高,也為學生申請本科生科技創新項目奠定了很好的基礎。
(四)考核形式的改革
與外國學生相比,中國學生理論基礎扎實,從老師和教材吸取的知識較多,對講授的內容掌握牢靠。但創新能力較差,不善于發現問題、提出問題,缺乏實際解決問題的能力。這種現象的根源在于考試制度,包括考核形式與評分標準。目前程序設計類課程的成績大多按兩部分計算:一部分是平時作業等情況的考核,占總成績的30%~40%;另一部分是閉卷考試,占總成績的60%~70%。這樣,大部分學生只重視閉卷考試部分,不重視平時學習,更不會挖掘潛力進行創新研究。因此,考試形式和評分標準的改革是中國教育體制改革的重中之重。
首先推行開放式實驗教學平臺,將基礎性驗證性實驗納入預作實驗,正式實驗以解決實際問題類型的題目為主。學生自由選擇上機時間和次數,預作實驗評分通過,才能進行正式實驗。正式實驗分層次教學,重點考核過程,如前2.2.3所述。取消閉卷考試,以能力為導向指定考核范圍,如給出100道應用型題目,隨機考核其中的幾道。對有創新性研究項目的學生給予加分。
三、教學改革的意義
(一)農業院系程序設計類課程教學內容與專業充分交叉結合,更好的體現了以能力為導向的教學宗旨,讓計算機專業能力得到了更好的體現。通過科學的選擇教學內容,合理的設置課程項目,構建了一套開放、系統的課程新體系。
(二)在計算機程序設計類課程學習中,學生的困難點是不易抽象出具體問題的模型,不易用算法表達求解問題的思路,缺乏系統解決問題的方法,難以下手。而實踐教學的改革,逼迫學生不得不學,不得不鉆。通過實驗教學體系的優化和整合,完善學生自主設計、創新的措施和機制,進一步的強化了學生的計算機理論修養和實踐能力,學以致用。
(三)增強師生之間的學術交流氛圍,通過論壇、研討、競賽等形式,鼓勵校園形成競爭、交流的學習氛圍.讓學生在課余時間有自主進行本學科知識鉆研的機會和環境。學生體驗了團隊協作的各個方面,為創新性研究項目的申請做好了準備。
(四)考核方式顛覆了以往的舊模式,突出過程考核和能力考核,更準確的檢驗了學生的學習效果。對提高學生自主學習能力、探究能力和創新能力,促進學生個性發展,提高人才培養質量真正起到了推動作用。
(五)對軟件開發類課程的教學改革有一定的示范作用。
四、結束語
基于ACM/ICPC模式的農業院系程序設計類課程教學改革,將理論知識學習與農業優勢學科交叉,與實際應用有機結合,注重編程能力的提高和解題思維能力的訓練,引入團隊合作、競爭交流、過程考核等機制,為學生提供了因材施教的途徑,激發了學生自主性研究性學習的興趣。盡管改革仍在不斷摸索中前進,但已經取得了明顯的效果,提高了教學質量和教學水平,學生整體素質和能力的提升也很好的應證了素質培養的目標,對軟件開發類課程的教學改革有一定的示范作用。
參考文獻:
[1]孫大烈,車萬翔.ACM競賽與學生綜合實踐能力培養[J].計算機教育,2009,19:12-14
[2]吳文虎.ACM國際大學生程序設計競賽試題與解析(一)[M].北京:清華大學出版社,1988
[3]王淮亭.數據結構實踐教學探討與實踐研究[J].計算機教育,2009,12:133-134
[作者簡介]章英(1978-),女,講師,博士在讀,研究方向為圖形處理技術和農業信息化,華中農業大學ACM隊總教練;汪毅(1975-),男,副教授,碩士,研究方向為無線傳感器網絡。
項目支撐:湖北省高等學校省級教學研究項目“高等農業院校開放式計算機基礎實踐教學體系的研究與實踐”(2010131)