梁冰+馮林
摘要:針對目前大學計算機學科教學與實踐在培養(yǎng)計算機人才上的不足,提出了以ACM-ICPC競賽為依托的計算機科學方向的理論教學內(nèi)容和實踐教學方法,引入ACM-ICPC競賽注重學生思維能力和計算機實現(xiàn)算法的考核方式,強化以賽代練的實踐環(huán)節(jié),培養(yǎng)學生的算法設(shè)計能力、編程技巧、邏輯思維能力以及良好的協(xié)作精神,實踐證明通過ACM-ICPC競賽的模式及其培訓能切實提升學生的程序設(shè)計和實現(xiàn)能力,培養(yǎng)社會真正需要的創(chuàng)新型計算機科學人才。
關(guān)鍵詞:計算機科學;ACM國際大學生競賽;教學方法
TP3-4;G652
一、引言
ACM國際大學生程序設(shè)計競賽(ACM International Collegiate Programming Contest,ACM-ICPC)是由美國計算機協(xié)會(ACM)主辦的,一項旨在展示大學生創(chuàng)新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。該項競賽從1970年舉辦至今已歷31屆,因歷屆競賽都薈萃了世界各大洲的頂尖計算機人才,競賽采取ACM/ICPC程序設(shè)計競賽評測系統(tǒng)pc2評判,實時發(fā)布各賽隊解題結(jié)果,避免人為的主觀因素的影響,ACM/ICPC競賽的公正性與公平性得到充分的肯定,備受國際上的知名大學和各著名信息技術(shù)公司如Microsoft (微軟公司)、GOOGLE、IBM 等的高度關(guān)注,成為世界各國大學生最具影響力的國際級計算機的賽事[1]。
創(chuàng)新實驗學院于2009年成立ACM實踐班,依托于校創(chuàng)新實踐基地,以培養(yǎng)創(chuàng)新人才為目標,近年來在省賽全國賽中獲得多項大獎,并于2012年獲得了我校首枚區(qū)域賽金牌[2]。目前,計算機人才培養(yǎng)的專業(yè)課程存在以下問題,專業(yè)課程廣度和深度都不夠,學生對算法理解的不深入。教學內(nèi)容理論性強,而缺乏實際應(yīng)用問題,內(nèi)容枯燥,學生缺乏學習興趣。實踐教學環(huán)節(jié)時間較少,形式不夠豐富,實踐活動不具有連貫性和持續(xù)性,學生的編程能力弱。
而面向ACM-ICPC競賽的計算機科學人才培養(yǎng)的教學與實踐方法能夠解決以上在計算機科學人才培養(yǎng)上存在的不足與弊端。ACM國際大學生程序設(shè)計競賽需要參賽隊員具備數(shù)據(jù)結(jié)構(gòu)、排序算法、搜索技術(shù)、數(shù)論、組合數(shù)學、搜索技術(shù)、動態(tài)規(guī)劃、計算幾何等多方面的知識。學生要想具備參加ACM-ICPC競賽的能力,需要學習大量的算法知識,而且ACM-ICPC競賽更要求算法的效率,因此學生對算法的理解更加深入。參賽學生需要要在國內(nèi)外的網(wǎng)站的OJ系統(tǒng)(online judge,OJ)上完成ACM競賽涉及到的多個專題的競賽題目,一個參加ACM競賽的合格學生在一年中的編寫代碼數(shù)量至少是計算機專業(yè)同學大學4年完成的平均編程量的數(shù)十倍數(shù)百倍的量[3]。因此,ACM實踐班培養(yǎng)出來的計算機人才具有編程基礎(chǔ)過硬、算法設(shè)計能力強、邏輯思維縝密和良好的合作精神,因此在就業(yè)和保研中有著優(yōu)異的表現(xiàn),獲得了來及微軟、google等知名信息企業(yè)以及國內(nèi)各重點院校的青睞。
二、ACM-ICPC彌補計算機教學不足
目前,大學計算機專業(yè)的教學中存在著理論教學與實踐運用的嚴重脫節(jié)。一方面,理論教學內(nèi)容不能指導實踐的運用,學生掌握了理論,卻無法用計算機語言實現(xiàn)。計算機專業(yè)課程包括C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計采用筆試的方式考核學生的知識掌握能力,考試能得高分的學生,,卻不能編寫一條簡單的程序,這完全背離的計算機專業(yè)對人才培養(yǎng)的目標。雖然,目前,國內(nèi)計算機專業(yè)的實踐環(huán)節(jié)已經(jīng)得到了強化,但是實驗課程中的程序設(shè)計題目單調(diào)枯燥,考察知識點單一,實際應(yīng)用意義不大,不利于學生對知識的深入理解和靈活應(yīng)用,更不利于創(chuàng)新能力的培養(yǎng)。現(xiàn)在的實驗系統(tǒng),老師對學生的編程結(jié)果的考核幾乎是不現(xiàn)實的,很難評價實驗課學生的編程結(jié)果,因此也不能保證學生的實驗課效果。引入ACM-ICPC競賽的PC2判題系統(tǒng)就可以解決以上問題,各大高校的OJ,如北大、杭電上的編程題目知識點綜合性很強,題目貼近生活且趣味性很強,同學們非常有興趣去做題,每道題目都由測試樣例,PC2系統(tǒng)可以自動評判程序的運行結(jié)果[4]。對程序的時間復雜度也有限制,同樣一道題目,只有效率最優(yōu)的算法才能滿足題目的時間復雜度要求,這樣思考問題,才能對知識深入理解并靈活運用,這樣的編程過程能有效的培養(yǎng)學生的創(chuàng)新能力的培養(yǎng)和實踐能力。但目前國內(nèi)的計算機專業(yè)的實踐課還尚未引入ACM-ICPC的PC2系統(tǒng)。
ACM-ICPC競賽內(nèi)容以大學計算機學科理論課程為基礎(chǔ),內(nèi)容往往涉及離散數(shù)學,數(shù)據(jù)結(jié)構(gòu)與算法,高等數(shù)學,高等代數(shù),組合數(shù)學,圖論,網(wǎng)絡(luò)優(yōu)化與線性規(guī)劃,數(shù)論,計算幾何等多個領(lǐng)域,一些競賽題目是多個領(lǐng)域知識的結(jié)合,掌握的知識需要融會貫通,才能解答出來。目前,關(guān)于計算機課程的講授還是獨立的,沒能很好的結(jié)合起來,可以通過ACM-ICPC競賽和培訓模式將多門計算機理論課內(nèi)容融合起來并能夠運用于程序設(shè)計當中。
三、面向ACM-ICPC的教學實踐方法
1.ACM程序設(shè)計競賽實際問題的案例教學方法
在課程的理論教學中嵌入具有實際問題背景的ACM-ICPC賽題。ACM競賽題目涉及的知識面非常廣,如果按照知識點一一講授,二年的課程時間學習難以講授完,且傳統(tǒng)的教學方法,學生感覺課程枯燥,對算法理解不夠深入,在競賽中難以獲得好成績。
采用acm競賽題目的實際問題案例教學方法,通過計算機編程語言實現(xiàn)算法巧妙的解決生活中遇到的有趣且有一定難度的問題,首先這些案例問題都非常的引人入勝,比如旅行商問題、背包問題、圖著色問題,acm競賽中解決這些問題的算法復雜度要求都很高,因此解決這些問題算法都具有一定的數(shù)學思想和理論深度,在解決實際問題的同時,學生對算法和數(shù)學思想理解深度、掌握和運用的熟練程度都有了非常大的提升。而且在解決每一道實際問題過程中,遇到的數(shù)據(jù)結(jié)構(gòu)、算法、數(shù)學的知識點有若干個,學生能夠在短時間內(nèi)吸收到大量的知識。
2.以賽代練的實踐教學方法
課程的實驗教學以程序設(shè)計競賽的形式實施,在實踐課環(huán)節(jié)通過在OJ系統(tǒng)上完成ACM的競賽題目。實ACM競賽對學生編程和算法的基本功要求非常高,對算法理解不深入、編程基礎(chǔ)不扎實、知識點不全面都難以在要求的時間復雜度下完成題目。因此,實踐教學部分至關(guān)重要,實踐教學需要全方位、各層次的組織,保證實踐教學的時間和深度,在實踐中提升學生的能力,發(fā)現(xiàn)自身知識結(jié)構(gòu)的欠缺,促使學生發(fā)揮自主學習精神,自學所需算法和相關(guān)知識。
實踐教學分一下幾個方面組織,日常訓練:根據(jù)課堂教學的內(nèi)容,為學生挑選acm競賽中相關(guān)的題目,加強訓練,真正掌握相關(guān)的知識點和擴展內(nèi)容。周賽:每周周末舉辦周賽,督促學生對算法的持續(xù)學習,提高學生的學習熱情,鞏固學生成果。校賽:每學期舉辦一次校賽,春季學期為個人賽,秋季學習為團隊賽,校賽考察學生知識點全面,提升學生競技狀態(tài),團隊賽培養(yǎng)學生的團隊精神和配合。暑期集訓:暑期集訓是大幅度提升學生能力的關(guān)鍵時期,暑期時間集中,學生集中,學生學習效率高,學生學習氛圍濃厚。省賽、四省賽、區(qū)域賽:更高級別的acm-icpc競賽,與全國高校中的出類拔萃的計算機人才同場競技,也是為高級別的acm比賽選拔隊員。這樣高層次的比賽可以激發(fā)學生的潛能,在準備各級賽事的短時間內(nèi),吸收、鞏固大量的知識。
實踐教學通過ACM/ICPC在線評判系統(tǒng)為教學實訓平臺,輔助完成日常訓練和模擬競賽,增加上機考核方式,實現(xiàn)對學生程序的自動運行和測試,增強學生的程序調(diào)試能力。并通過分析比賽結(jié)果,更加精細地評估學生對教學知識點的掌握程度,這些信息進一步反饋到課程的理論教學中,可以確定課程教學的實際難點和重點。
四、結(jié)語
大連理工大學創(chuàng)新實驗學院經(jīng)過多年培養(yǎng)面向ACM國際大學生競賽的學生發(fā)現(xiàn),這部分學生的計算機專業(yè)素質(zhì)較高,表現(xiàn)在編程能力強、知識面廣、具有良好的團隊合作能力、創(chuàng)新能力和臨場應(yīng)變能力,因此在畢業(yè)時能獲得名校和名企的青睞。這主要與ACM-ICPC競賽的一些良好的競賽規(guī)則和競賽環(huán)境有關(guān),本文提出了面向ACM-ICPC競賽的計算機人才培養(yǎng)教學與實踐方法提升計算機專業(yè)人才的素質(zhì),包括以下幾個方面:1、理論課按專題講授,包括:圖、動態(tài)規(guī)劃、搜索、計算幾何、數(shù)論等案例教學;2、實踐課引入PC2自動判題系統(tǒng),趣味綜合性題目選自國內(nèi)外著名OJ:3、周賽、月賽、校賽、省賽、區(qū)域賽培養(yǎng)學生綜合素質(zhì)、加深理論知識理解與實際運用能力。
參考文獻
[1] 趙 龍,李貝貝,王喜鳳ACM/ICPC競賽對培養(yǎng)大學生綜合能力的作用.安徽工業(yè)大學學報(社會科學版).2013, 30(5):110-111
[2] ACM/ICPC競賽人才培養(yǎng)模式的研究與實踐——以大連理工大學ACM/ICPC創(chuàng)新實踐班為例.內(nèi)蒙古師范大學學報(教育科學版).2012,25(3):141-144
[3] 郭嵩山,王磊,張子臻.ACM/ICPC 與創(chuàng)新性IT 人才的培養(yǎng)[J].實驗室研究與探索,2007,(12)6:181-185
[4] 韓建民,鐘發(fā)榮,趙相福.基于 ACM-ICPC 訓練模式的數(shù)據(jù)結(jié)構(gòu)實踐教學探索. 計算機教育.2013,(10): 103-107