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