梁 冰, 馮 林(大連理工大學(xué) 創(chuàng)新創(chuàng)業(yè)學(xué)院,遼寧 大連 116024)
信息技術(shù)時代的到來,對計算機專業(yè)人才需求量巨大,也對計算機專業(yè)人才培養(yǎng)帶來了巨大的挑戰(zhàn),我國的計算機教育已經(jīng)走過了 50 年的歷程[1]。目前計算機專業(yè)人才培養(yǎng)方式急需改革,大學(xué)本科計算機專業(yè)的培養(yǎng)計算機專業(yè)課程包括C語言程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、算法設(shè)計采用筆試的方式考核學(xué)生的知識掌握能力,考試能得高分的學(xué)生,卻不能編寫一條簡單的程序,這完全背離的計算機專業(yè)對人才培養(yǎng)的目標[2-3]。
計算機科學(xué)人才最基礎(chǔ)的專業(yè)技能是計算機程序設(shè)計能力,即編程能力[4]。計算機專業(yè)人才應(yīng)該熟練掌握一門計算機語言,將人類的想法和構(gòu)思通過計算機語言實現(xiàn),并能夠讓計算機執(zhí)行,作為計算機科學(xué)的拔尖人才應(yīng)該做到讓計算機高效、準確地執(zhí)行,這是計算機專業(yè)培養(yǎng)的重要目標。計算機科學(xué)人才應(yīng)該熟練的掌握一門計算機編程語言,這是計算機專業(yè)人才的母語[5],使得人與計算機之間無障礙的溝通,計算機人才所具備的專業(yè)素養(yǎng)應(yīng)該是成為人機接口。
在熟練掌握計算機編程語言同時,實驗室注重培養(yǎng)學(xué)生的計算機思維、計算機思想,各種經(jīng)典算法的學(xué)習(xí)必不可少,通過計算機語言熟練、準確、高效實現(xiàn)算法是計算機人才在不同研究、應(yīng)用領(lǐng)域發(fā)展的堅實基礎(chǔ)[6-7]。在本科階段,應(yīng)注重計算機基礎(chǔ)理論的學(xué)習(xí),包括數(shù)據(jù)結(jié)構(gòu)、排序算法、搜索技術(shù)、數(shù)論、組合數(shù)學(xué)、搜索技術(shù)、動態(tài)規(guī)劃、計算幾何等多方面知識的熟練掌握[8-11]。
計算機科學(xué)拔尖人才培養(yǎng)實驗室依托大連理工大學(xué)創(chuàng)新創(chuàng)業(yè)學(xué)院,創(chuàng)新創(chuàng)業(yè)學(xué)院依托學(xué)校的優(yōu)勢學(xué)科資源和高水平的師資隊伍,以“培養(yǎng)拔尖創(chuàng)新人才”為目標,按學(xué)科門類招生和培養(yǎng),采用多元化的培養(yǎng)模式、靈活的管理模式和個性化的培養(yǎng)方案,激發(fā)學(xué)生的探求欲望,挖掘?qū)W生的創(chuàng)新潛質(zhì),培養(yǎng)高素質(zhì)拔尖創(chuàng)新人才。建立具有基礎(chǔ)厚實的機電、數(shù)學(xué)建模、ACM實驗室、軟件工程、媒體技術(shù)、創(chuàng)業(yè)教育、創(chuàng)造發(fā)明、人形機器、智能車等傳統(tǒng)實驗室,以及緊跟時代潮流技術(shù)和學(xué)生興趣建立3D打印工作坊、智能硬件工作坊、互聯(lián)網(wǎng)+創(chuàng)意工作坊、奇點虛擬現(xiàn)實工坊。從實驗基地建設(shè)、實驗課程建設(shè)、實驗教學(xué)改革、師資隊伍建設(shè)、管理運行體制等方面構(gòu)建了一套完整的厚實基礎(chǔ)、注重興趣、文理綜合、理工融合、強化實驗、自主學(xué)習(xí)、提高能力、不斷創(chuàng)新的創(chuàng)新教學(xué)新模式,遵循人才培養(yǎng)的客觀規(guī)律,培養(yǎng)了一大批具有創(chuàng)新精神和實踐動手能力深受社會歡迎的創(chuàng)新型拔尖人才[12-13]。
(1) 課程建設(shè)知識面廣并且深入,內(nèi)容講授從淺入深。課程建設(shè)可分為基礎(chǔ)算法課和高級算法課程,每學(xué)期開設(shè)這2門課,同學(xué)可根據(jù)自己的基礎(chǔ)選擇課程,每一節(jié)課一個專題,也可以根據(jù)自己掌握的知識點,同時選擇2門課,補充自己欠缺的知識點,比如有關(guān)圖的算法講授可分為基礎(chǔ)算法和高級算法,基礎(chǔ)算法包括最短路、最小生成樹,安排在上學(xué)期講授,高級算法包括網(wǎng)絡(luò)流、最小費流,安排在下學(xué)期講授。
每節(jié)課都有一個專題,一個專題涵蓋的內(nèi)容廣而深,由于課時有限,課后需要學(xué)生自學(xué)內(nèi)容非常多,還補充了線上視頻教學(xué),教師和骨干隊員都可以錄制視頻,視頻按照知識點進行錄制,作為資源幫助學(xué)生進一步的學(xué)習(xí)(見表1、表2)。
表1 基礎(chǔ)算法課程專題列表
表2 高級算法課程專題列表
(2) 案例教學(xué)。興趣是最好的老師,對于拔尖人才的培養(yǎng),需要在短時間內(nèi)學(xué)習(xí)大量的知識,對學(xué)生也是一種挑戰(zhàn),因此講授的問題應(yīng)該引起學(xué)生的興趣,只有喜歡,才能投入學(xué)習(xí)??梢圆捎肁CM競賽題目作為案例。ACM國際大學(xué)生程序設(shè)計競賽是由美國計算機協(xié)會(ACM)主辦的,一項旨在展示大學(xué)生創(chuàng)新能力、團隊精神和在壓力下編寫程序、分析和解決問題能力的年度競賽。ACM題目具有與實際問題聯(lián)系緊密,知識點綜合性強,時間復(fù)雜度要求高的特點,這樣的題目可以引起學(xué)生的興趣,加深對知識點的理解和對算法的熟練應(yīng)用。比如,二分圖的講授可以從圖的涂色案例講授,小時候都玩過用2種顏色給圖涂色的游戲,保證相鄰的頂點不一樣的顏色,實際問題的解決首先可以激起學(xué)生學(xué)習(xí)的興趣,還可以幫助學(xué)生理解問題。
(3) 注重算法復(fù)雜度分析,深入講解算法優(yōu)化。講授重點在于培養(yǎng)學(xué)生對算法效率的重視,不僅能夠?qū)崿F(xiàn)功能,還應(yīng)該高效的實現(xiàn)。程序在保證正確運行的同時,程序運行的效率也非常重要。目前在實際應(yīng)用中,很多程序需要處理的數(shù)據(jù)非常大,實現(xiàn)同樣的功能,不同的算法的運行的時間差別非常大,有些算法需要幾秒,有些需要幾天。因此,算法的時間復(fù)雜度分析非常重要。例如,講解最短路Dijkstra算法時,先講授鄰接矩陣存儲圖實現(xiàn)的算法復(fù)雜度為O(V2),而經(jīng)過優(yōu)先隊列優(yōu)化的最短路Dijkstra的算法復(fù)雜度為O(ElogV),可以更高效的計算最短路的長度。通過對優(yōu)化算法的講解,能夠令學(xué)生對算法有更清楚、更深入的理解,培養(yǎng)了學(xué)生思維方式和思考問題的方法,注重程序設(shè)計時代碼的效率。
(4) 理論與實踐相結(jié)合。講解算法實現(xiàn)時,使用可執(zhí)行代碼,培養(yǎng)學(xué)生讀寫代碼的習(xí)慣,加強學(xué)生讀寫代碼的能力,在理解算法的原理之后,能用可執(zhí)行代碼實現(xiàn)算法,才算是真正的掌握了算法,如果不能用代碼實現(xiàn),所掌握的算法理論也不過是紙上談兵。在理論課環(huán)節(jié),強化學(xué)生算法理論和算法實現(xiàn)緊密結(jié)合的思想,注重算法實現(xiàn)能夠?qū)λ惴ɡ碚摳钊氲睦斫馀c掌握,理論與實踐二者的相輔相成。
(5) 教材編寫,注重知識的積累和傳承。理論課內(nèi)容涉及的知識面廣,每個知識點的最佳講授方式和內(nèi)容需要年復(fù)一年的積累與改進,因此知識的積累很重要,編寫相應(yīng)的教材,并逐年改進。教材應(yīng)該在實際編碼中遇到問題的解決方式的經(jīng)驗總結(jié),編寫教材的目標是指引學(xué)生實際動手編寫代碼,使得學(xué)生的代碼能力能夠?qū)⑾敕ǚg成機器讀懂的語言并正確的執(zhí)行,因此編寫教材對學(xué)生入門和提高學(xué)習(xí)的效率是非常有幫助的。
ACM-ICPC競賽內(nèi)容以大學(xué)計算機學(xué)科理論課程為基礎(chǔ),內(nèi)容往往涉及數(shù)據(jù)結(jié)構(gòu)、搜索、圖論,動態(tài)規(guī)劃,數(shù)論,組合數(shù)學(xué),計算幾何等多個領(lǐng)域,一些競賽題目是多個領(lǐng)域知識的結(jié)合,通過ACM-ICPC競賽和培訓(xùn)模式提升學(xué)生的能力,發(fā)現(xiàn)自身知識結(jié)構(gòu)的欠缺,促使學(xué)生發(fā)揮自主學(xué)習(xí)精神,自學(xué)所需算法和相關(guān)知識。實踐教學(xué)需要全方位、各層次的組織,保證實踐教學(xué)的時間和深度,實踐教學(xué)分以下幾個層次進行組織:
(1) 日常訓(xùn)練。根據(jù)理論課教學(xué)專題,為學(xué)生挑選經(jīng)典的ACM/ICPC競賽在線評測系統(tǒng)中與專題相關(guān)的題目,熟練的用代碼實現(xiàn)本專題的算法,掌握本專題的知識點和擴展內(nèi)容。
(2) 多校聯(lián)合周賽。每周舉辦一次,無論是周賽、月賽還是校賽,題目質(zhì)量都很關(guān)鍵,需要是原創(chuàng)題目才能激發(fā)學(xué)生的比賽熱情,原創(chuàng)題目才能保證比賽的公平性。但每周一場6題左右的原創(chuàng)題目對一所學(xué)校的工作量是很大的,每學(xué)期16場左右,很難保證題目質(zhì)量,題目質(zhì)量保證不了,賽事將逐漸失去吸引力。多校聯(lián)合周賽解決了這個問題,每個學(xué)校負責一場周賽的出題,資源共享,不僅保證了題目質(zhì)量,而且多個學(xué)校的同學(xué)同場競技,更增加了學(xué)生比賽的熱情和動力。
周賽應(yīng)分為初級和高級2級別的比賽,初級中的題目屬于基礎(chǔ)和入門的,為剛剛?cè)腴T的新同學(xué)準備,過難的題目很容易打消新同學(xué)的積極性。高級題目應(yīng)具有一定的挑戰(zhàn)性,面向高年級學(xué)生,通過訓(xùn)練,學(xué)生能夠參加高級別的競賽。
(3) 校賽。每學(xué)期舉辦一次校賽,春季學(xué)期為個人賽,秋季學(xué)習(xí)為團隊賽,校賽考察學(xué)生知識點全面,提升學(xué)生競技狀態(tài),團隊賽培養(yǎng)學(xué)生的團隊精神和配合。
(4) 暑期集訓(xùn)。暑期集訓(xùn)是大幅度提升學(xué)生能力的關(guān)鍵時期,暑期時間集中,學(xué)生集中,學(xué)生學(xué)習(xí)效率高,學(xué)生學(xué)習(xí)氛圍濃厚。
(5) 省賽、四省賽、區(qū)域賽。更高級別的ACM-ICPC競賽,與全國高校中的出類拔萃的計算機人才同場競技,也是為高級別的ACM比賽選拔隊員。這樣高層次的比賽可以激發(fā)學(xué)生的潛能,在準備各級賽事的短時間內(nèi),吸收、鞏固大量的知識。
構(gòu)建本校的在線評測系統(tǒng)(Online Judge,OJ)非常重要,在線評測系統(tǒng)的魅力在于能夠給學(xué)生編寫的代碼一個及時而且詳細的反饋,正是系統(tǒng)的及時反饋提起了學(xué)生對編程的興趣,促進了學(xué)生深入理解與掌握算法的精髓、算法的時間與空間復(fù)雜度、程序編寫及debug的能力[14-15]。
評測系統(tǒng)對于正確的定義為:在規(guī)定的時間內(nèi)不超出內(nèi)存限制的條件下得出滿足題目要求的結(jié)果。由于評測系統(tǒng)對“正確程序”的要求十分苛刻,因此在學(xué)習(xí)和訓(xùn)練過程中正確地理解題目的說明十分重要。自動評測系統(tǒng)只反饋以下結(jié)果:
Accepted(AC):在規(guī)定的時間內(nèi)不超出內(nèi)存限制的條件下得出滿足題目要求的結(jié)果;
Presentation Error(PE):在規(guī)定的時間內(nèi)不超出內(nèi)存限制的條件下得出結(jié)果,但是同正確的結(jié)果相比結(jié)果的格式存在問題;
Time Limit Exceeded(TLE):程序運行時間超出了題目的規(guī)定;
Memory Limit Exceeded(MLE):程序在編譯或者運行期間向操作系統(tǒng)申請的內(nèi)存超出了題目的規(guī)定;
Wrong Answer(WA):在規(guī)定的時間內(nèi)不超出內(nèi)存限制的條件下得出結(jié)果,但是同正確的結(jié)果相比存在較大差別;
Runtime Error(RE):程序運行期間訪問非法內(nèi)存;
Output Limit Exceeded(OLE):程序輸出結(jié)果文件過大,超出評測系統(tǒng)限制;
Compile Error(CE):程序編輯錯誤。
國內(nèi)有一些知名的OJ可以供學(xué)生平時練習(xí)使用,但舉辦一些校內(nèi)比賽并不合適,主要原因是這些OJ只能掛一些已有的題目,而這些題目的解題代碼在網(wǎng)絡(luò)上都可以搜索到答案,因此比賽的挑戰(zhàn)性降低了很多,學(xué)生做題目的興趣并不大。只有搭建本校自己的OJ,才可以在比賽中掛一些原創(chuàng)的題目,一方面原創(chuàng)的題目學(xué)生做起來很有興趣,也很有挑戰(zhàn)性,另一方面培養(yǎng)起來的骨干隊員出一些原創(chuàng)性的題目,對隊員的鍛煉和提升更大。
本校的OJ在舉辦周賽、校賽或是練習(xí)賽時,掛題更加方便,使得各項比賽能夠方便、高效開展。在本校OJ上舉辦周賽、校賽,學(xué)生更愿意與周圍的同學(xué)一爭高下,提升學(xué)生的熱情。本校OJ對ACM競賽也是一個很好的宣傳,能有聚集人氣,水漲船高普遍提升學(xué)生的編程水平??梢酝ㄟ^OJ上AC題目的數(shù)量作為進入ACM集訓(xùn)隊的門檻,彼此競爭,提升學(xué)生的做題數(shù)量非常有效。同學(xué)比賽的熱情更高、學(xué)生的水平提升更快、學(xué)生的整體水平得到了提升、集訓(xùn)隊伍更具有人氣。營造計算機專業(yè)學(xué)生重視實際動手編寫代碼的學(xué)習(xí)氛圍上有多方面因素,OJ是一個很重要的因素,因為OJ提供了一個可以實際動手編寫代碼的平臺,它具有競爭性、趣味性和有效性。
ACM相關(guān)競賽獲獎的學(xué)生在編寫代碼能力、邏輯思維能力、算法理解深度、知識面廣及團隊合作能力上特別突出,成為名校和名企的最為搶手的人才,但不可否認這些能力的獲得和學(xué)生們的努力和持之以恒的學(xué)習(xí)是分不開,具有這些能力需要時間的積累,意味著全身心的投入,ACM集訓(xùn)隊員沒有寒假和暑假,這兩個時間段正是揮灑汗水,敲寫代碼,攻克難題的時候,正是因為學(xué)生在做訓(xùn)練時的辛苦和遇到難題的挫折,只有良好的實驗室氛圍,一個穩(wěn)定團結(jié)、感情深厚、具有活力的學(xué)生團隊才能幫助新隊員在挫折面前堅持下來,老隊員的水平更上一層樓,新隊員在遇到困難時不至于掉隊和退出。
(1) 以老帶新。骨干隊員的主人翁意識的培養(yǎng)以團隊建設(shè)為以己任,程序設(shè)計競賽考驗的是一個團隊的力量,由于競賽考察的知識面廣而深,因此知識的傳承極為重要,個人獨自學(xué)習(xí),要想在2-3年內(nèi)學(xué)習(xí)全部的知識點是有難度,效率也比較低。培養(yǎng)隊員們以老帶新的責任感,并將這種精神一代一代傳下去,知識和經(jīng)驗才能獲得保留和積累,提高隊員們的進步速度。讓骨干隊員參與到實驗室的招新活動,包括隊員的選拔和面試;負責集訓(xùn)課程的講授,教學(xué)相長;負責協(xié)助老師參加到一對一的實驗課程的指導(dǎo);負責周賽、月賽和校賽的出題、判題。
(2) 團隊建設(shè)。進入集訓(xùn)隊需要一定的考核標準,需要確定學(xué)生對ACM競賽的興趣和堅持,如果不能持之以恒,參加ACM競賽不會取得好成績,這是一個需要花時間和精力的比賽。另外,意志不堅定的隊員對其他隊員的士氣和團隊氛圍都有負面的影響。因此在集訓(xùn)隊員的招收上要設(shè)定入隊標準,如半年時間內(nèi)OJ上AC題目的數(shù)量,或codeforce分數(shù)達到一定值,這樣需要持續(xù)做題才能達到的標準。
(3) 實驗室信息化建設(shè)。對計算機科學(xué)拔尖人才的培養(yǎng),需要掌握知識面廣、對算法理解深入、編成基礎(chǔ)牢固的目標。因此,知識的匯總和經(jīng)驗總結(jié)非常重要,信息化平臺的建設(shè)可以實現(xiàn)知識共享、積累和知識的傳承,作為團隊隊員之間加強聯(lián)系的一個平臺。
(4) 校企合作實驗室。計算機科學(xué)拔尖人才培養(yǎng)實驗室的優(yōu)秀人才會吸引企業(yè)希望能夠成立聯(lián)合實驗室或?qū)嶒灠?,?lián)合實驗室的建立可以讓學(xué)生了解市場需求,使得理論知識的學(xué)習(xí)有市場實際應(yīng)用的指引,并根據(jù)技術(shù)發(fā)展適當調(diào)整培養(yǎng)計劃。
實驗室組織與培訓(xùn)學(xué)生參加省級、國家級及國際級計算機程序設(shè)計類競賽,包括ACM-ICPC國際大學(xué)生程序設(shè)計競賽、CCPC中國大學(xué)生程序設(shè)計競賽、CCCC“中國高校計算機大賽- 團體程序設(shè)計天梯賽”、“藍橋杯”全國軟件和信息技術(shù)專業(yè)人才大賽共獲得國家級獎項29項、省部級獎項93項。
實驗室十分重視實驗教材的建設(shè),先后出版了計算機程序設(shè)計類教材“算法與數(shù)據(jù)結(jié)構(gòu)”“圖論及應(yīng)用”“計算機幾何及應(yīng)用”3冊,實驗講義4本。實驗室教師參加建設(shè)了省級精品資源共享課程“創(chuàng)新教育基礎(chǔ)與實踐課程”及國家級精品資源共享課程“創(chuàng)新教育基礎(chǔ)與實踐”,主持并參加了省級、校級計算機專業(yè)課程教學(xué)改革研究項目4項,取得了良好的教學(xué)效果。
計算機科學(xué)拔尖人才培養(yǎng)實驗室教學(xué)效果顯著,取得了豐碩的成果,培養(yǎng)了一批有創(chuàng)新精神、實踐能力的計算機人才,產(chǎn)生了一批有實用價值的成果,畢業(yè)生得到了用人單位的好評,并到國內(nèi)外名校繼續(xù)深造。
我校創(chuàng)新創(chuàng)業(yè)學(xué)院經(jīng)過多年的理論教學(xué)和以賽代練的實踐教學(xué)的經(jīng)驗的總結(jié),逐步完善了培養(yǎng)計劃和實驗室建設(shè)模式。計算機科學(xué)拔尖人才培養(yǎng)實驗室培養(yǎng)學(xué)生注重算法理論與代碼實現(xiàn)的緊密集合,學(xué)生編寫代碼數(shù)量至少是計算機專業(yè)同學(xué)大學(xué)4年完成的平均編程量的數(shù)十倍數(shù)百倍的量。計算機科學(xué)拔尖人才實驗室培養(yǎng)出來的計算機人才具有編程基礎(chǔ)過硬、算法設(shè)計能力強、邏輯思維縝密和良好的合作精神,因此在就業(yè)和保研中有著優(yōu)異的表現(xiàn),獲得了來及微軟、
google等知名信息企業(yè)以及國內(nèi)各重點院校的青睞。
參考文獻(References):
[1] 俞鶴偉,牟艷華.創(chuàng)新型計算機人才培養(yǎng)模式的探索與實踐[J].計算機工程與科學(xué),2014,36(2):1-4.
[2] 張 振,王亞青.國外高校計算機實驗室建設(shè)及其對教學(xué)的作用[J].實驗室研究與探索,2011,30(3):317-319.
[3] 李夢娥,黃海平,章 韻.高校計算機實驗室管理與建設(shè)的探索[J].實驗室科學(xué),2013,16(5):115-117.
[4] 趙 龍,李貝貝,王喜鳳ACM-ICPC競賽對培養(yǎng)大學(xué)生綜合能力的作用[J].安徽工業(yè)大學(xué)學(xué)報(社會科學(xué)版),2013,30(3):110-111.
[5] 李志軍,胡笑濤,蔡煥杰,等. 科研實驗室參與本科人才培養(yǎng)的探索與實踐[J].實驗室研究與探索,2015,34(1):230-233.
[6] 郭文平,陳 盈,樓宋江,等.ABET視角下的美國計算機專業(yè)人才培養(yǎng)模式研究[J].實驗技術(shù)與管理,2015,32(12):217-221.
[7] 李和平,龔波林,劉萬毅.深化實驗教學(xué)改革 強化技能型人才培養(yǎng)[J].實驗技術(shù)與管理,2013,30(2):159-161.
[8] 王建芳.計算機軟件類競賽人才培養(yǎng)模式的探索與實踐[J].大學(xué)教育,2016(6):153-154.
[9] 盧錫城.顛覆性創(chuàng)新與信息技術(shù)——兼談高水平計算機人才培養(yǎng)[J].中國大學(xué)教學(xué),2015(8):4-8.
[10] 芶生平,楊 鵬,汪小平,等.以ACM/ICPC競賽為載體探索課程體系建設(shè)與創(chuàng)新人才培養(yǎng)新模式[J].中國大學(xué)教學(xué), 2010(7): 71-73.
[11] 孟繁軍,劉東升.借助ACM/ICPC改革人才培養(yǎng)模式的實踐[J].工業(yè)和信息化教育,2013(8):18-20.
[12] 楊曉蘭,胡雪原,趙旭東,等.探索教學(xué)研究型實驗室開放,培養(yǎng)創(chuàng)新型人才[J].實驗室研究與探索,2011,30(7): 371-373.
[13] 厲旭云,梅汝煥,葉治國,等.高校實驗教學(xué)研究的發(fā)展及趨勢[J].實驗室研究與探索,2014,33(3):131-135.
[14] 姚翠莉,劉一偉,金 博.ACM/ICPC競賽人才培養(yǎng)模式的研究與實踐——以大連理工大學(xué)ACM/ICPC創(chuàng)新實踐班為例[J].內(nèi)蒙古師范大學(xué)學(xué)報(教育科學(xué)版),2012,25(3):141-144.
[15] 李 坤,史永宏. 創(chuàng)新型人才培養(yǎng)實驗室開放體系探索與實踐[J].實驗室研究與探索,2015,34(1):258-261.