探析程序設(shè)計競賽在軟件工程專業(yè)中的應(yīng)用
程序設(shè)計是給出解決特定問題程序的過程,是軟件構(gòu)造活動中的重要組成部分。程序設(shè)計往往以某種程序設(shè)計語言為工具,給出這種語言下的程序。程序設(shè)計過程應(yīng)當(dāng)包括分析、設(shè)計、編碼、測試、排錯等不同階段。專業(yè)的程序設(shè)計人員常被稱為程序員。
摘要:軟件工程專業(yè)的主要職責(zé)是培養(yǎng)高質(zhì)量的軟件工程師,文章從當(dāng)前高校軟件工程專業(yè)課程現(xiàn)狀出發(fā),提出將程序設(shè)計競賽引入軟件工程的編程語言類與專業(yè)基礎(chǔ)課教學(xué)的策略,并以哈爾濱理工大學(xué)軟件學(xué)院為例,分析其實(shí)施成效。
關(guān)鍵詞:程序設(shè)計競賽;高校;軟件工程
目前,我國信息產(chǎn)業(yè)處在飛速發(fā)展的階段,市場對于軟件的需求變化較快,各種軟件產(chǎn)品更新較快。軟件行業(yè)為了滿足市場需求和軟件產(chǎn)品開發(fā)需要,軟件技術(shù)也在日新月異地更新?lián)Q代。針對此情況,高校的軟件工程專業(yè)對于人才的培養(yǎng)也一直要通過教學(xué)大綱、教學(xué)內(nèi)容、教材選擇等途徑的調(diào)整,緊跟軟件行業(yè)的步伐,培養(yǎng)出適應(yīng)行業(yè)需要的高質(zhì)量的軟件人才。
一、軟件工程課程現(xiàn)狀
國內(nèi)多數(shù)高校軟件工程專業(yè)針對大一、大二學(xué)生開設(shè)的編程語言類課程(如:“C/C++語言程序設(shè)計”、“面向?qū)ο蟪绦蛟O(shè)計Java”等)、專業(yè)基礎(chǔ)類課程(“數(shù)據(jù)結(jié)構(gòu)與算法”、“離散數(shù)學(xué)”等),仍存在以下一些問題。(1)人才培養(yǎng):側(cè)重專業(yè)知識點(diǎn)的傳授,保證了所講授內(nèi)容理論知識結(jié)構(gòu)的科學(xué)完備,但是忽視了學(xué)生“學(xué)以致用”的能力培養(yǎng),存在“學(xué)霸”不會編程的現(xiàn)象。(2)教學(xué)內(nèi)容:主要側(cè)重專業(yè)理論知識的講解,學(xué)生只停留在專業(yè)知識的識記上,不會運(yùn)用知識解決問題,學(xué)生只停留在敲書上的示例代碼的階段。(3)教材選擇:選擇的教材主要側(cè)重編程語言語法的介紹,書中的案例很多是關(guān)于數(shù)值計算的,缺少實(shí)踐應(yīng)用價值案例程序。(4)缺少能力培養(yǎng)的平臺:在整個教與學(xué)的過程中,缺少培養(yǎng)學(xué)生分析問題,解決問題的能力,以及創(chuàng)新能力的平臺。(5)考核方式:知識的學(xué)習(xí)過程包括“了解―熟悉―記憶―理解―運(yùn)用”,多數(shù)學(xué)生還停留在熟記階段,所以考核方式也多側(cè)重“死記硬背”,沒有檢驗(yàn)學(xué)生理解和運(yùn)用的程度。(6)缺少素質(zhì)培養(yǎng):軟件工程專業(yè)的特點(diǎn)就是不斷更新,而多數(shù)學(xué)生只是被動掌握了書上的專業(yè)理論知識,缺乏主動學(xué)習(xí)的意識,不知道進(jìn)一步拓展學(xué)習(xí),沒有深層次領(lǐng)悟背后的專業(yè)內(nèi)行,導(dǎo)致缺少通過解決問題來驅(qū)動學(xué)習(xí)知識的專業(yè)素質(zhì)。同時,在團(tuán)隊合作、資源共享、英語閱讀以及搜索目標(biāo)答案等素質(zhì)方面也需要加強(qiáng)培養(yǎng)[1]。
二、程序設(shè)計競賽平臺的.構(gòu)建
為了豐富軟件工程專業(yè)的學(xué)生專業(yè)知識學(xué)習(xí)的氛圍,以及提高學(xué)生的分析問題、解決問題、編程能力、邏輯思維能力以及創(chuàng)新能力,為學(xué)生建立程序設(shè)計競賽平臺。該平臺主要側(cè)重算法研究與程序設(shè)計,為學(xué)生營造一個算法和程序設(shè)計學(xué)習(xí)與交流的平臺,增強(qiáng)學(xué)生們對算法的認(rèn)識,對程序設(shè)計競賽的認(rèn)識,重視學(xué)生的能力素質(zhì)培養(yǎng),為學(xué)生開發(fā)項(xiàng)目夯實(shí)專業(yè)基本功。
(一)科學(xué)的組織運(yùn)作
由專業(yè)內(nèi)部有程序設(shè)計經(jīng)驗(yàn)的教師根據(jù)方向(如:C/C++語言、Java語言等)形成指導(dǎo)團(tuán)隊,引導(dǎo)學(xué)生在程序設(shè)計競賽平臺上發(fā)展和提升自我,為平臺科學(xué)高效地運(yùn)作制訂計劃,包括:選拔計劃、培訓(xùn)計劃、訓(xùn)練計劃以及參賽計劃。選拔學(xué)生成立算法研究與程序設(shè)計的協(xié)會,包括:會長、副會長、實(shí)驗(yàn)室管理組長(出勤、衛(wèi)生、會費(fèi)、資金等)、宣傳組長(招新、海報制作等)、技術(shù)組長(組織競賽)、講座組長(算法培訓(xùn))以及日志管理組長等。各負(fù)責(zé)人職責(zé)明確,正式會員常年參加訓(xùn)練,包括寒暑假,全體會員服從指導(dǎo)教師和會長安排,并形成自我管理的團(tuán)結(jié)和睦的氣氛。協(xié)會日常訓(xùn)練和管理工作組織有序,紀(jì)律嚴(yán)格,采取分級訓(xùn)練方式。
(二)軟硬件環(huán)境及網(wǎng)絡(luò)平臺的建設(shè)
指導(dǎo)教師及協(xié)會成員建立程序設(shè)計基本的軟硬件環(huán)境。為加入?yún)f(xié)會的學(xué)生建立網(wǎng)絡(luò)交流平臺,及時解答大家的問題,并共享電子資料(書籍、課件、視頻等),以及進(jìn)行各種競賽信息的通知。同時,建立基于B/S(瀏覽器/服務(wù)器)結(jié)構(gòu)的網(wǎng)絡(luò)練習(xí)平臺,主要針對各種問題進(jìn)行分析解決,能夠讓學(xué)生實(shí)時提交程序設(shè)計代碼,并能夠?qū)崟r反饋對錯。
(三)主要工作的開展
1.進(jìn)入平臺的選拔工作。新生入學(xué)時,指導(dǎo)教師及協(xié)會負(fù)責(zé)人進(jìn)行宣講,主要介紹程序設(shè)計競賽平臺的具體學(xué)習(xí)方式,以及學(xué)生可以獲得的收益。參加學(xué)生必須具備良好的品德,誠實(shí)守信,遵守紀(jì)律,熱愛程序設(shè)計以及樂于助人,經(jīng)本人申請,填寫基本情況調(diào)查表。同時,能夠完成基本編程題目數(shù)目的學(xué)生可以加入,并注冊成為正式的協(xié)會會員。
2.新生指導(dǎo)。指導(dǎo)教師及協(xié)會負(fù)責(zé)人會組織老會員指導(dǎo)新生,給新生進(jìn)行答疑輔導(dǎo),形成良性的學(xué)習(xí)機(jī)制,引導(dǎo)新生更快地進(jìn)入專業(yè)學(xué)習(xí)。
3.制訂計劃:指導(dǎo)教師和協(xié)會相關(guān)負(fù)責(zé)人會幫助每個隊員制訂訓(xùn)練計劃。
4.算法培訓(xùn):面向協(xié)會會員定期提供算法培訓(xùn)課程,講解相關(guān)程序設(shè)計競賽中的題目,豐富學(xué)生的編程知識,培養(yǎng)更縝密的邏輯思維能力,提高學(xué)生的解題能力、臨場競賽能力,增強(qiáng)學(xué)生參加校級省級,或省級以上程序設(shè)計競賽的實(shí)力。
5.訓(xùn)練:定期組織訓(xùn)練賽,檢驗(yàn)學(xué)習(xí)成果,提高會員的程序設(shè)計的實(shí)戰(zhàn)能力。
6.競賽:組織參加國家級、省級、校級及院級的程序設(shè)計競賽以及企業(yè)組織的競賽。通過相關(guān)程序設(shè)計競賽,豐富學(xué)習(xí)生活的同時,增加學(xué)生學(xué)習(xí)算法的熱情,為學(xué)院程序設(shè)計提供良好的氛圍。
7.考核:指導(dǎo)學(xué)生建立會員競爭機(jī)制,實(shí)行淘汰機(jī)制,提高協(xié)會會員參與各項(xiàng)活動的積極性。
三、程序設(shè)計競賽在軟件工程教學(xué)中的應(yīng)用策略
(一)通過網(wǎng)絡(luò)平臺提高編程能力
根據(jù)講授的內(nèi)容,布置網(wǎng)絡(luò)練習(xí)平臺上的相關(guān)題目,讓學(xué)生練習(xí)。學(xué)生通過完整的對問題的分析、解決方法的設(shè)計以及編碼、測試,真正體會軟件工程的過程,并將學(xué)到的知識點(diǎn)應(yīng)用到具體題目的解決上,達(dá)到“學(xué)以致用”的目的,也提高其分析分析、解決問題的能力以及創(chuàng)新思維、邏輯思維能力。如:教師講授C語言程序設(shè)計這門課程,可以根據(jù)所講授的知識點(diǎn),將練習(xí)題目歸類布置,包括:入門題、輸入/輸出、基本運(yùn)算、條件及循環(huán)、數(shù)組、字符串、結(jié)構(gòu)體等。
(二)上機(jī)考核
組織學(xué)生通過網(wǎng)絡(luò)練習(xí)平臺進(jìn)行上機(jī)考核,可以有效檢驗(yàn)學(xué)生的程序設(shè)計能力和知識運(yùn)用能力,提高考核的效率和有效性。同時,為了保證考核的公平性,鄰近考生所做試題是不同套,但難度一樣。
(三)算法培訓(xùn)
主要針對編程語言類課程(如:“C/C++語言程序設(shè)計”、“面向?qū)ο蟪绦蛟O(shè)計Java”等),這些課程側(cè)重語法的講解,算法培訓(xùn)可以讓學(xué)生掌握解決問題的方法,提高其邏輯思維能力。
(四)練習(xí)賽與相關(guān)競賽
通過協(xié)會組織的練習(xí)賽,鼓勵授課對象積極參加。為了進(jìn)一步提升學(xué)生的程序設(shè)計能力及創(chuàng)新能力,鼓勵學(xué)生參加學(xué)院、學(xué)校級程序設(shè)計競賽,行業(yè)協(xié)會組織的賽事,如:美國計算機(jī)協(xié)會組織的ACM-ICPC大學(xué)生程序設(shè)計競賽(省級、東北賽以及亞洲杯)、工業(yè)和信息化部人才交流中心組織的藍(lán)橋杯全國軟件和信息技術(shù)人才大賽以及中國計算機(jī)學(xué)會(CCF)組織的CCF計算機(jī)軟件能力認(rèn)證(CSP)等;企業(yè)組織的賽事,如:Oralce公司組織的“甲骨文杯”全國 Java 程序設(shè)計大賽,百度公司組織的“百度之星”程序設(shè)計大賽,以及谷歌公司組織的“Google編程挑戰(zhàn)賽”等。通過“以賽促學(xué)”的實(shí)戰(zhàn)平臺,切實(shí)提高學(xué)生的編碼能力,一方面讓相關(guān)課程的教學(xué)效果落到實(shí)處,另一方面通過競賽獲獎增加學(xué)生的就業(yè)砝碼。
四、教學(xué)效果分析
哈爾濱理工大學(xué)軟件學(xué)院在過去的5年里,堅持讓學(xué)生“做中學(xué)”和“以賽促學(xué)”,在相關(guān)程序設(shè)計競賽中獲得國家級獎項(xiàng)25項(xiàng),省級獎項(xiàng)144項(xiàng),通過程序設(shè)計競賽平臺有效地激發(fā)學(xué)生編程的動力,明確了學(xué)習(xí)的目標(biāo),讓學(xué)生能夠主動參與到學(xué)習(xí)過程中,課堂上教師有更多的時間講解對應(yīng)知識點(diǎn)的應(yīng)用以及程序設(shè)計競賽中出現(xiàn)的題目,實(shí)現(xiàn)了課堂翻轉(zhuǎn),學(xué)生程序設(shè)計能力得到極大提高。并且,獲獎學(xué)生積極帶動周圍學(xué)生編程,形成了“以點(diǎn)帶面”的良好的專業(yè)學(xué)風(fēng)。
通過程序設(shè)計競賽平臺顯著提高學(xué)生成績,圖1中,平滑折線代表給2011級學(xué)生采用傳統(tǒng)教學(xué)模式學(xué)生的“數(shù)據(jù)結(jié)構(gòu)與算法”課程的成績(67人,平均值=53.4),點(diǎn)劃線代表給2012級學(xué)生引入程序設(shè)計競賽平臺后數(shù)據(jù)結(jié)構(gòu)課程的成績(65人,平均值=66.6)?梢悦黠@看出在教學(xué)中引入程序設(shè)計競賽平臺后,學(xué)生整體成績有大幅度的提高。
圖1 引入程序設(shè)計競賽平臺前后學(xué)生“數(shù)據(jù)結(jié)構(gòu)與算法”課程成績的對比
另外,通過鼓勵2013級、2014級學(xué)生通過學(xué)院、學(xué)校的在線程序設(shè)計評判系統(tǒng)做題,以及按照程序設(shè)計競賽的方式進(jìn)行上機(jī)訓(xùn)練、考核,學(xué)生在大一階段的C/C++語言程序設(shè)計的成績得到了顯著提高,并且學(xué)生的練習(xí)時間、完成題目的數(shù)量與最終的成績是成正比的。
本文提出程序設(shè)計競賽平臺引入軟件工程專業(yè)的教學(xué)環(huán)節(jié),尤其是編程類課程、專業(yè)基礎(chǔ)類課程中,并詳細(xì)闡述了怎樣建立程序設(shè)計競賽平臺,以及將其應(yīng)用到軟件工程專業(yè)的教學(xué)中的具體實(shí)施措施。通過實(shí)例分析,證明了在軟件工程專業(yè)引入程序設(shè)計競賽平臺的確可以激發(fā)學(xué)生專業(yè)課程學(xué)習(xí)的動力,提高學(xué)生的程序設(shè)計能力、綜合的軟件工程素質(zhì),使學(xué)生形成了扎實(shí)的專業(yè)“內(nèi)功”,以不變應(yīng)對萬變。該方法還可以推廣到相關(guān)學(xué)習(xí)編程類課程的專業(yè)中,讓學(xué)生擁有實(shí)踐動手的平臺。
參考文獻(xiàn):
[1]于波,郭紅,李鵬.CDIO工程教育模式在數(shù)據(jù)結(jié)構(gòu)與算 法教學(xué)中的應(yīng)用[J].黑龍江教育:高教研究與評估, 2014,(12).
【探析程序設(shè)計競賽在軟件工程專業(yè)中的應(yīng)用】相關(guān)文章:
1.探析程序設(shè)計競賽在軟件工程專業(yè)中的應(yīng)用
2.簡述項(xiàng)目管理在軟件工程中的應(yīng)用
3.社會網(wǎng)絡(luò)在企業(yè)管理中的應(yīng)用探析
4.程序設(shè)計類課程教學(xué)在高職計算機(jī)應(yīng)用專業(yè)中布置比例的探索