張先偉,曲志堅,張立紅,馬新娟,王海鵬,劉曉紅
(山東理工大學 計算機科學與技術(shù)學院,山東 淄博 255049)
隨著社會的不斷發(fā)展,信息技術(shù)幾乎涵蓋了社會的方方面面,社會對計算機類專業(yè)的人才需求日益增加。據(jù)統(tǒng)計,截至2016 年,我國的計算機類專業(yè)布點數(shù)已經(jīng)達到2 956個,在校生數(shù)占整個工科在校生數(shù)的百分之十六七[1]。然而,對于計算機類專業(yè)人才培養(yǎng)理念和教育教學方法上還存在諸多問題,尤其是面向應(yīng)用型人才培養(yǎng)的地方高校中更為明顯[2]。這些問題主要體現(xiàn)在專業(yè)培養(yǎng)理念上重理論、輕實踐,重知識、輕能力,重書本、輕創(chuàng)新;在授課方式上以教師為中心,通過課堂講授知識的方式對學生進行單向知識傳授;在對學生的評價方法上,通過使用紙質(zhì)試卷進行期末考試的方式衡量學生的學習狀況;在教學方法上采用板書加電子教案的形式。這些問題直接導致的結(jié)果是,培養(yǎng)出的學生無法擺脫眼高手低、好高騖遠的毛病,缺乏良好實踐能力、創(chuàng)新能力等專業(yè)基本素質(zhì),缺乏專業(yè)競爭力難以滿足社會需求。
為了提升計算機類專業(yè)人才培養(yǎng)質(zhì)量,迫切需要改變傳統(tǒng)教學理念,從傳統(tǒng)的以教為中心轉(zhuǎn)變?yōu)橐詫W生能力發(fā)展為中心。應(yīng)用型人才的核心能力是工程實踐能力,工程實踐能力是一種綜合能力[3-4]。計算機類學生工程實踐能力的基礎(chǔ)和核心在于學生的編程能力、計算思維、算法能力、創(chuàng)新能力等基本程序設(shè)計能力的培養(yǎng)[5]。程序設(shè)計能力培養(yǎng)主要是在大一和大二階段,因此應(yīng)以計算機類專業(yè)人才的程序設(shè)計綜合能力培養(yǎng)為目標,建設(shè)包括程序設(shè)計基礎(chǔ)、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)與算法一體的程序設(shè)計能力課程體系和教學方法,突出對編程能力、計算思維和基本算法實現(xiàn)能力的培養(yǎng),并在此基礎(chǔ)上通過組織學生參與各類大學生程序設(shè)計競賽激發(fā)優(yōu)秀學生算法能力和創(chuàng)新能力的進一步提升,實現(xiàn)競教相長的良性循環(huán)。
為提高學生的程序設(shè)計能力,在授課理念上應(yīng)改變以往局限于課程本身的狹隘的認識,把程序設(shè)計類課程放在專業(yè)體系中來認知,打通程序設(shè)計基礎(chǔ)、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)與算法、編譯原理等課程之間的聯(lián)系,在教學設(shè)計中形成一個整體,充分發(fā)揮專業(yè)入門課程的引導作用。利用程序設(shè)計基礎(chǔ)培養(yǎng)學生基本的編程實踐能力,在離散數(shù)學課程中通過數(shù)學問題的編程實踐加深基本理論和算法的理解,在數(shù)據(jù)結(jié)構(gòu)與算法課程中強化算法的實現(xiàn)能力,促進對算法和基本理論的掌握,通過編譯原理實踐對算法和理論進行綜合運用并加深對程序執(zhí)行過程的理解。利用程序設(shè)計類課程體系的設(shè)計充分培養(yǎng)學生的實踐動手能力,讓學生掌握知識在實際問題中的應(yīng)用和方法,實現(xiàn)對學生程序設(shè)計基本能力的有效培養(yǎng),又可以促進學生良好的專業(yè)學習習慣、專業(yè)思維習慣以及專業(yè)實踐動手習慣的初步養(yǎng)成。程序設(shè)計能力培訓課程體系結(jié)構(gòu)和課程間的關(guān)系如圖1所示。
圖1 程序設(shè)計能力培養(yǎng)課程體系結(jié)構(gòu)
從圖1可知,學生入校以后從程序設(shè)計基礎(chǔ)課程開始,始終強化程序設(shè)計能力。通過在不同課程中持續(xù)的強化編程能力,使學生在大學前兩年形成良好的編程習慣。此外,這種實踐能夠使學生在編程中理解理論,逐漸促進計算思維的形成并形成良好的算法設(shè)計和實現(xiàn)能力。通過在離散數(shù)學中引入實踐,一方面能夠使學生提高編程能力,更重要的是能理解數(shù)學理論與計算機求解問題之間的關(guān)系,降低學習數(shù)據(jù)結(jié)構(gòu)課程的困難,更容易理解數(shù)據(jù)、算法和程序之間的聯(lián)系。
課堂授課過程中應(yīng)摒棄專業(yè)課以知識講解為主的教學方法,程序設(shè)計基礎(chǔ)課程實現(xiàn)理論實踐一體化的教學模式,所有內(nèi)容全部在機房授課,學生邊學邊練,讓教師成為教學過程的組織者與協(xié)調(diào)者,讓學生成為教學過程的參與者。通過離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)與算法、編譯原理課程加重實踐教學的比重,注重理論與實踐的結(jié)合;通過講練結(jié)合的教學模式,加強教學過程中教師與學生的實時互動、學生與學生的實時互動,通過程序競賽形式的上機練習,增強學生學習過程中的競技性、趣味性,提高學生參與學習的積極性與主動性。
以山東理工大學為例,程序設(shè)計能力培養(yǎng)課程體系中的課程實踐環(huán)節(jié)完全依托于自主開發(fā)的山東省高校第一個程序在線評測系統(tǒng)(SDUTOJ)。通過靈活的使用該系統(tǒng),將程序設(shè)計類課程的實驗教學、實踐練習和考核結(jié)合在一起,學生可以隨時隨地登錄系統(tǒng)提交實驗代碼,有效調(diào)動了學生的實踐積極性,解決了課程原有實踐教學方法單一、受制于教學場地、實踐教學方法落后等原因造成的對學生實踐能力培養(yǎng)不足的問題(課程實驗可訪問SDUTOJ,在線注冊并登錄以后點擊Experiments查看:http://acm.sdut.edu.cn/onlinejudge2/index.php/Home)。
在學生考核與評價的過程中,可以借助大學生程序設(shè)計競賽機制與SDUTOJ平臺,對程序設(shè)計基礎(chǔ)、離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)與算法和編譯原理的課程的考核方式進行徹底的改革,突出對能力的考核與評價。以山東理工大學為例,程序設(shè)計基礎(chǔ)課程自2014年開始取消了理論考試,只保留平時實驗與期末機考兩個環(huán)節(jié),建立了與課程目標一致的實踐能力考核框架。所有課程采用“抽測+補測”的機考模式,通過階段性的實驗抽測,充分保障了平時實驗考核結(jié)果的公平性、有效性,解決了原來對學生平時實踐能力無法準確考核評價的問題;通過后期定時對抽測不過關(guān)學生的補測,調(diào)動了學習基礎(chǔ)相對較弱的部分學生平時認真及時做題的積極性,真正發(fā)揮了平時“抽測+補測”這種新型考核模式對學生平時學習的驅(qū)動作用。離散數(shù)學、數(shù)據(jù)結(jié)構(gòu)與算法和編譯原理根據(jù)課程性質(zhì),依托于在線測評系統(tǒng)實現(xiàn)課程的日常實驗和編程練習,借鑒程序設(shè)計競賽模式完成課程期末機考,考試成績由理論筆試成績、平時上機測驗成績和期末上機考試成績構(gòu)成,實現(xiàn)了理論考試與機考相結(jié)合的評價機制。截止2018年6月20日,通過在線測評系統(tǒng)進行實踐訓練和考核統(tǒng)計情況見表1。
程序設(shè)計類課程改革保證了計算機類專業(yè)學生有較高的實踐能力,為了不斷激發(fā)學生的學習興趣和動力,為優(yōu)秀學生提供良好的發(fā)揮空間,促進創(chuàng)新能力的進一步提升,可以通過組織學生參加各類大學生程序設(shè)計競賽,實現(xiàn)程序設(shè)計類課程教學與ACM大學生程序設(shè)計競賽的有機結(jié)合,形成以教學帶動競賽以競賽促進教學的良性循環(huán)[6]。教師應(yīng)將科技競賽視為學生創(chuàng)新能力培養(yǎng)的一個重要環(huán)節(jié),本著人才培養(yǎng)的理念參加科技競賽,認為大學生創(chuàng)新活動源于教學、源于專業(yè)又能夠促進教學、融入專業(yè)能力的培養(yǎng)過程,注重學生良好的自我約束能力和誠信比賽的品質(zhì)培養(yǎng),注重團隊意識與協(xié)作能力的訓練。
為了更好地組織管理學生參加競賽,促進學生更快成長,我們構(gòu)建了科學完整的ACM創(chuàng)新培養(yǎng)體系,制訂了從第一學期到第五學期詳細的訓練計劃。該訓練計劃包含了每個周末與寒暑假的訓練安排,包含大一、大二、大三各個年級學生的不同訓練內(nèi)容,也包含了專業(yè)與非專業(yè)學生的不同訓練計劃。該訓練培養(yǎng)體系涵蓋了ACM國際大學生程序設(shè)計競賽所需要的全部內(nèi)容,知識點的分布按照不同培訓階段由易到難,訓練題目借鑒了國際國內(nèi)最高質(zhì)量的題目標準,保障了只要學生能夠按照體系要求認真努力的訓練,就一定可以顯著的提升個人能力。
表1 山東理工大學程序設(shè)計能力培養(yǎng)課程體系實踐訓練和考核情況統(tǒng)計
此外,建設(shè)了合理的ACM梯隊對學生進行分類指導和訓練,目前集訓梯隊主要包含以下幾個:梯隊一:程序設(shè)計基礎(chǔ)一(主要面向所有有意愿加入的大一學生);梯隊二:程序設(shè)計二(主要面向從梯隊一選拔的、參與大一寒假集訓的大一學生);梯隊三:數(shù)據(jù)結(jié)構(gòu)(主要面向經(jīng)梯隊二選拔的、參與大一第二學期集訓的學生);梯隊四:算法初級(主要面向經(jīng)梯隊三選拔的、參與大一暑期集訓的隊員);梯隊五:算法中級(主要面向經(jīng)梯隊四選拔的、參與大二第一學期集訓的主力隊員);梯隊六:算法高級(主要面向經(jīng)梯隊五選拔的、參與大二寒假及以后集訓的主力隊員)。最后,還成立了“智能數(shù)據(jù)工程與分析學實驗室”和“運維技術(shù)中心”兩個實驗室,對退役后有志于學術(shù)研究與技術(shù)訓練的學生開放,跟著指導老師做研究或者項目開發(fā)。
程序設(shè)計能力培養(yǎng)體系建設(shè)的重要支撐平臺是我們設(shè)計的程序在線測評系統(tǒng)(http://acm.sdut.edu.cn/onlinejudge2/),其支撐了課程體系建設(shè)的實踐教學改革和實施,支撐了大學生程序設(shè)計競賽的訓練和組織。該系統(tǒng)自2009年上線以來,不斷對系統(tǒng)進行維護與升級,不斷地補充練習題目。目前該系統(tǒng)包含適合各個水平學生的不同難度的4 000多道在線編程測試題目,題目包含程序設(shè)計基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)與算法、編譯原理和離散數(shù)學等課程的編程練習題,也包括部分各類大學生程序設(shè)計競賽的真題,在練習和作業(yè)時為各個層次的學生提供了選擇的余地。目前該系統(tǒng)已經(jīng)成為目前省內(nèi)高校中注冊用戶最多、題目數(shù)量最大的程序在線測評系統(tǒng),截止2019年5月13日該系統(tǒng)累計提交量已達6 013 649 次。通過該在線測評系統(tǒng),學生可以在有網(wǎng)絡(luò)的地方登陸平臺練習并在線測評所提交代碼是否正確。作為一種創(chuàng)新的實踐教學平臺,允許學生根據(jù)自身水平和興趣,選擇適合的編程訓練方式、數(shù)量和難度,提高實踐教學的學習效率,極大地激發(fā)了學生的編程興趣,激勵了學生的個性化自主實踐訓練;同時教師可以查看學生提交的代碼,有效地監(jiān)督學生并及時發(fā)現(xiàn)學生編程中的問題并予以指導,使課程的實踐效果得到了明顯的加強和提高。
2006年到2019年5月9日,本專業(yè)學生參與各類大學生程序設(shè)計競賽獲銅獎(三等獎)以上情況統(tǒng)計見表2。
表2 山東理工大學計算機類專業(yè)學生參與各類大學生程序設(shè)計競賽獲獎情況統(tǒng)計表
截止2019年5月13日,山東理工大學計算機類專業(yè)學生在各類大學生程序設(shè)計競賽中獲得國家級銅獎以上獎勵76項,其中2016年11月舉行的第41屆ACM/ICPC國家大學生程序設(shè)計競賽亞洲區(qū)域賽(青島)以學校排名11位的成績獲得金獎;此外,還在山東省大學生程序設(shè)計競賽中獲得三等獎以上獎勵50項。值得注意的是在能夠反映各個高校計算機專業(yè)教學水平的中國大學生計算機競賽團體程序設(shè)計天梯賽中,我校在2016年、2017年和2019年分別以全國第六名、全國第七名(珠峰爭鼎組)和全國第七名(珠峰爭鼎組)的成績獲得高校一等獎,在2018年獲全國(珠峰爭鼎組)第14名,高校三等獎。2016年7月和2019年5月,我校受邀在中國大學生程序設(shè)計競賽研討會上做了“競教相長”的經(jīng)驗交流報告。
山東理工大學從2006年開始首次參加ACM國際大學生程序設(shè)計競賽,獲得優(yōu)勝獎,2007和2008年未參加比賽,直到2011年才獲得區(qū)域賽的首個銅獎,2014年獲得首個銀獎,2016年獲得首個金獎。對于2015年才開始的中國大學生程序設(shè)計競賽,獲獎數(shù)量和質(zhì)量也在逐漸提高。從上述獲獎數(shù)量和質(zhì)量的統(tǒng)計中可以發(fā)現(xiàn),從2014年課程綜合改革并構(gòu)建了較為完善的程序設(shè)計能力培養(yǎng)體系以后,學生的程序設(shè)計能力有了顯著提高。
程序設(shè)計能力培養(yǎng)課程體系建設(shè)與改革從2014年秋季程序設(shè)計基礎(chǔ) (C語言)課程開始,到目前為止歷經(jīng)4年,從開始的計算機科學與技術(shù)專業(yè)學生逐漸擴展到軟件工程和通信工程專業(yè)的學生。以程序設(shè)計基礎(chǔ)綜合課程改革的方式和經(jīng)驗為借鑒,進而將計算機科學與技術(shù)和軟件工程專業(yè)的課程改革逐漸擴展到數(shù)據(jù)結(jié)構(gòu)與算法、離散數(shù)學和編譯原理等課程,并且在逐漸地納入面向?qū)ο蟪绦蛟O(shè)計、操作系統(tǒng)等課程形成更為完善的課題體系結(jié)構(gòu),保證計算機類專業(yè)學生從大一到大三有不間斷的上機實踐機會。此外,通過完善大學生程序設(shè)計競賽訓練和管理機制,進一步提高優(yōu)秀學生的創(chuàng)新能力。
綜上所述,山東理工大學計算機程序設(shè)計能力培養(yǎng)體系的建設(shè)與實踐對提高學生的實踐能力和創(chuàng)新能力具有良好的促進作用,相關(guān)的做法和經(jīng)驗可以為面向應(yīng)用型人才培養(yǎng)的地方高校計算機類專業(yè)的人才培養(yǎng)提供些許可借鑒的方法和經(jīng)驗。鑒于篇幅限制,對各門課程綜合改革的方法和經(jīng)驗以及競教相長的創(chuàng)新能力培養(yǎng)模式并未展開論述,下一步我們將繼續(xù)總結(jié)經(jīng)驗,提出更具體的程序設(shè)計能力培養(yǎng)方法。