當前位置:學問君>學習教育>畢業論文>

探析程序設計競賽在軟件工程專業中的應用

學問君 人氣:8.94K

程序設計是給出解決特定問題程序的過程,是軟件構造活動中的重要組成部分。程序設計往往以某種程序設計語言爲工具,給出這種語言下的程序。程序設計過程應當包括分析、設計、編碼、測試、排錯等不同階段。專業的程序設計人員常被稱爲程序員。

探析程序設計競賽在軟件工程專業中的應用

摘要:軟件工程專業的主要職責是培養高質量的軟件工程師,文章從當前高校軟件工程專業課程現狀出發,提出將程序設計競賽引入軟件工程的編程語言類與專業基礎課教學的策略,並以哈爾濱理工大學軟件學院爲例,分析其實施成效。

關鍵詞:程序設計競賽;高校;軟件工程

目前,我國資訊產業處在飛速發展的階段,市場對於軟件的需求變化較快,各種軟件產品更新較快。軟件行業爲了滿足市場需求和軟件產品開發需要,軟件技術也在日新月異地更新換代。針對此情況,高校的軟件工程專業對於人才的培養也一直要透過教學大綱、教學內容、教材選擇等途徑的調整,緊跟軟件行業的步伐,培養出適應行業需要的高質量的軟件人才。

一、軟件工程課程現狀

國內多數高校軟件工程專業針對大一、大二學生開設的編程語言類課程(如:“C/C++語言程序設計”、“面向對象程序設計Java”等)、專業基礎類課程(“數據結構與算法”、“離散數學”等),仍存在以下一些問題。(1)人才培養:側重專業知識點的傳授,保證了所講授內容理論知識結構的科學完備,但是忽視了學生“學以致用”的能力培養,存在“學霸”不會編程的現象。(2)教學內容:主要側重專業理論知識的講解,學生只停留在專業知識的識記上,不會運用知識解決問題,學生只停留在敲書上的示例代碼的階段。(3)教材選擇:選擇的教材主要側重編程語言語法的介紹,書中的案例很多是關於數值計算的,缺少實踐應用價值案例程序。(4)缺少能力培養的平臺:在整個教與學的過程中,缺少培養學生分析問題,解決問題的能力,以及創新能力的平臺。(5)考覈方式:知識的學習過程包括“瞭解―熟悉―記憶―理解―運用”,多數學生還停留在熟記階段,所以考覈方式也多側重“死記硬背”,沒有檢驗學生理解和運用的程度。(6)缺少素質培養:軟件工程專業的特點就是不斷更新,而多數學生只是被動掌握了書上的專業理論知識,缺乏主動學習的意識,不知道進一步拓展學習,沒有深層次領悟背後的專業內行,導致缺少透過解決問題來驅動學習知識的專業素質。同時,在團隊合作、資源共享、英語閱讀以及搜尋目標答案等素質方面也需要加強培養[1]。

二、程序設計競賽平臺的.構建

爲了豐富軟件工程專業的學生專業知識學習的氛圍,以及提高學生的分析問題、解決問題、編程能力、邏輯思維能力以及創新能力,爲學生建立程序設計競賽平臺。該平臺主要側重算法研究與程序設計,爲學生營造一個算法和程序設計學習與交流的平臺,增強學生們對算法的認識,對程序設計競賽的認識,重視學生的能力素質培養,爲學生開發項目夯實專業基本功。

(一)科學的組織運作

由專業內部有程序設計經驗的教師根據方向(如:C/C++語言、Java語言等)形成指導團隊,引導學生在程序設計競賽平臺上發展和提升自我,爲平臺科學高效地運作制訂計劃,包括:選拔計劃、培訓計劃、訓練計劃以及參賽計劃。選拔學生成立算法研究與程序設計的協會,包括:會長、副會長、實驗室管理組長(出勤、衛生、會費、資金等)、宣傳組長(招新、海報製作等)、技術組長(組織競賽)、講座組長(算法培訓)以及日誌管理組長等。各負責人職責明確,正式會員常年參加訓練,包括寒暑假,全體會員服從指導教師和會長安排,並形成自我管理的團結和睦的氣氛。協會日常訓練和管理工作組織有序,紀律嚴格,採取分級訓練方式。

(二)軟硬件環境及網絡平臺的建設

指導教師及協會成員建立程序設計基本的軟硬件環境。爲加入協會的學生建立網絡交流平臺,及時解答大家的問題,並共享電子資料(書籍、課件、視頻等),以及進行各種競賽資訊的通知。同時,建立基於B/S(瀏覽器/服務器)結構的網絡練習平臺,主要針對各種問題進行分析解決,能夠讓學生實時提交程序設計代碼,並能夠實時反饋對錯。

(三)主要工作的開展

1.進入平臺的選拔工作。新生入學時,指導教師及協會負責人進行宣講,主要介紹程序設計競賽平臺的具體學習方式,以及學生可以獲得的收益。參加學生必須具備良好的品德,誠實守信,遵守紀律,熱愛程序設計以及樂於助人,經本人申請,填寫基本情況調查表。同時,能夠完成基本編程題目數目的學生可以加入,並註冊成爲正式的協會會員。

2.新生指導。指導教師及協會負責人會組織老會員指導新生,給新生進行答疑輔導,形成良性的學習機制,引導新生更快地進入專業學習。

3.制訂計劃:指導教師和協會相關負責人會幫助每個隊員制訂訓練計劃。

4.算法培訓:面向協會會員定期提供算法培訓課程,講解相關程序設計競賽中的題目,豐富學生的編程知識,培養更縝密的邏輯思維能力,提高學生的解題能力、臨場競賽能力,增強學生參加校級省級,或省級以上程序設計競賽的實力。

5.訓練:定期組織訓練賽,檢驗學習成果,提高會員的程序設計的實戰能力。

6.競賽:組織參加國家級、省級、校級及院級的程序設計競賽以及企業組織的競賽。透過相關程序設計競賽,豐富學習生活的同時,增加學生學習算法的熱情,爲學院程序設計提供良好的氛圍。

7.考覈:指導學生建立會員競爭機制,實行淘汰機制,提高協會會員參與各項活動的積極性。

三、程序設計競賽在軟件工程教學中的應用策略

(一)透過網絡平臺提高編程能力

根據講授的內容,佈置網絡練習平臺上的相關題目,讓學生練習。學生透過完整的對問題的分析、解決方法的設計以及編碼、測試,真正體會軟件工程的過程,並將學到的知識點應用到具體題目的解決上,達到“學以致用”的目的,也提高其分析分析、解決問題的能力以及創新思維、邏輯思維能力。如:教師講授C語言程序設計這門課程,可以根據所講授的知識點,將練習題目歸類佈置,包括:入門題、輸入/輸出、基本運算、條件及循環、數組、字元串、結構體等。

(二)上機考覈

組織學生透過網絡練習平臺進行上機考覈,可以有效檢驗學生的程序設計能力和知識運用能力,提高考覈的效率和有效性。同時,爲了保證考覈的公平性,鄰近考生所做試題是不同套,但難度一樣。

(三)算法培訓

主要針對編程語言類課程(如:“C/C++語言程序設計”、“面向對象程序設計Java”等),這些課程側重語法的講解,算法培訓可以讓學生掌握解決問題的方法,提高其邏輯思維能力。

(四)練習賽與相關競賽

透過協會組織的練習賽,鼓勵授課對象積極參加。爲了進一步提升學生的程序設計能力及創新能力,鼓勵學生參加學院、學校級程序設計競賽,行業協會組織的賽事,如:美國計算機協會組織的ACM-ICPC大學生程序設計競賽(省級、東北賽以及亞洲盃)、工業和資訊化部人才交流中心組織的藍橋杯全國軟件和資訊技術人才大賽以及中國計算機學會(CCF)組織的CCF計算機軟件能力認證(CSP)等;企業組織的賽事,如:Oralce公司組織的“甲骨文杯”全國 Java 程序設計大賽,百度公司組織的“百度之星”程序設計大賽,以及谷歌公司組織的“Google編程挑戰賽”等。透過“以賽促學”的實戰平臺,切實提高學生的編碼能力,一方面讓相關課程的教學效果落到實處,另一方面透過競賽獲獎增加學生的就業砝碼。

四、教學效果分析

哈爾濱理工大學軟件學院在過去的5年裏,堅持讓學生“做中學”和“以賽促學”,在相關程序設計競賽中獲得國家級獎項25項,省級獎項144項,透過程序設計競賽平臺有效地激發學生編程的動力,明確了學習的目標,讓學生能夠主動參與到學習過程中,課堂上教師有更多的時間講解對應知識點的應用以及程序設計競賽中出現的題目,實現了課堂翻轉,學生程序設計能力得到極大提高。並且,獲獎學生積極帶動周圍學生編程,形成了“以點帶面”的良好的專業學風。

透過程序設計競賽平臺顯著提高學生成績,圖1中,平滑折線代表給2011級學生採用傳統教學模式學生的“數據結構與算法”課程的成績(67人,平均值=53.4),點劃線代表給2012級學生引入程序設計競賽平臺後數據結構課程的成績(65人,平均值=66.6)。可以明顯看出在教學中引入程序設計競賽平臺後,學生整體成績有大幅度的提高。

圖1 引入程序設計競賽平臺前後學生“數據結構與算法”課程成績的對比

另外,透過鼓勵2013級、2014級學生透過學院、學校的在線程序設計評判系統做題,以及按照程序設計競賽的方式進行上機訓練、考覈,學生在大一階段的C/C++語言程序設計的成績得到了顯著提高,並且學生的練習時間、完成題目的數量與最終的成績是成正比的。

本文提出程序設計競賽平臺引入軟件工程專業的教學環節,尤其是編程類課程、專業基礎類課程中,並詳細闡述了怎樣建立程序設計競賽平臺,以及將其應用到軟件工程專業的教學中的具體實施措施。透過實例分析,證明了在軟件工程專業引入程序設計競賽平臺的確可以激發學生專業課程學習的動力,提高學生的程序設計能力、綜合的軟件工程素質,使學生形成了紮實的專業“內功”,以不變應對萬變。該方法還可以推廣到相關學習編程類課程的專業中,讓學生擁有實踐動手的平臺。

參考文獻:

[1]于波,郭紅,李鵬工程教育模式在數據結構與算 法教學中的應用[J].黑龍江教育:高教研究與評估, 2014,(12).