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