1. 首頁
  2. 職業/專業/職能

軟體工程專業程式設計課程群建立論文

軟體工程專業程式設計課程群建立論文

摘要:程式設計課程群是軟體工程專業系列課程的重要組成部分,建設該課程群有利於提高學生程式設計能力,進而提高就業競爭力。分析了學生在學習程式設計課程中的一些問題,提出了程式設計課程群的主要知識和能力體系要求,透過精講課程主要內容、大規模開展程式設計訓練、課程設計、改革考核與評價方式等方法進行課程群教學改革,取得了較好的教學效果。

關鍵詞:軟體工程;程式設計;課程群;建設;實踐

軟體工程專業的培養目標是面向我國軟體產業培養急需的工程應用型人才。軟體產業的發展要求學生具備較強的系統分析、設計、開發與維護能力[1]。為培養學生軟體系統方面的相關能力,許多高校的軟體工程專業都設定了系列課程模組,如程式設計課程模組、網路技術課程模組、計算機體系和作業系統課程模組、軟體工程課程模組等,這些模組往往是一些單獨課程的組合,有很多學生學了這門課程,又忘記了那門課程,到畢業時專業能力達不到社會所要求的層次。程式設計課程群是軟體工程專業系列課程的重要組成部分,其承載的技能培養目標是專業培養的子目標[2],處於非常重要的地位。課程群建設是專業建設的一部分[3],有利於打通課程知識脈絡,避免課程內容重複或前後脫節,使前後連貫,內容融合,進而獲得整體優勢[4]。程式設計課程群主要培養計算思維能力、演算法設計與分析能力、程式設計與實現能力和系統分析開發能力[5]。學生透過程式設計課程群的學習,可掌握1~2門程式設計語言,更進一步理解程式設計方法,熟練掌握常用的資料結構和演算法,形成良好的程式設計風格,可獨立分析、設計和開發中小型軟體系統。所以對程式設計課程群進行研究並積極實踐對專業培養目標的實現具有重要現實意義。

1問題分析

目前,大多數高校資訊類相關專業都開設了程式設計系列課程,一般為C語言程式設計、資料結構與演算法、java程式設計等。許多高校都將C程式設計作為第一門程式設計課程[6],一般安排在第一學期或者第二學期,學完C語言之後,再學其他程式設計課程,如資料結構等。由於C語言本身比較靈活且語法內容比較多,對於初學者來說並不太好掌握。一些教師在授課過程中,沒有站在軟體設計的高度思考教學內容,往往過多地強調語言成分的語法和語義,而忽視了計算思維能力[7]的培養,使學生從開始就扎程序序設計語言的細枝末節中去,忽略了軟體工程思想的滲透,到最後學生掌握了一些語法,卻不能寫出較為優美的程式或沒有形成較好的程式設計思維和風格。演算法是程式的靈魂,資料結構和演算法在課程群中具有基礎和核心地位[8]。在實際教學過程中,學生普遍反映資料結構和演算法課程抽象難學,在學習和實際應用中出現的問題比較多,很難寫出能正確執行的程式,學習過程中成就感不強,學完之後還是不知道如何應用,很難達到預期的效果。由於在前期的學習中,程式設計基礎沒有打牢,對常用的資料結構和演算法沒有真正掌握,模組化程式設計思維沒有有效建立,良好的程式設計風格沒有形成,導致後續的高階面嚮物件語言程式設計學習很難深入,最終導致軟體分析與設計能力得不到有效的提升。

2程式設計課程群建設

我校軟體工程專業採取校企合作辦學模式,由吉首大學和中軟國際共同建設,企業參與人才培養的全過程,在具體實施過程中,學校側重於理論教學部分,企業側重於實踐教學部分[9]。程式設計課程群是軟體工程專業課程體系的重要組成部分,企業參與討論與建設,確定該課程群以軟體設計能力培養為主線,以C語言程式設計、資料結構、面向物件技術、演算法設計與分析幾門課程為基礎組建課程群,C語言程式設計開設在第一、二學期,資料結構、面向物件技術、演算法設計與分析分別開設在第三、四、五學期,第六學期可開設JavaWeb程式設計或Asp.NetWeb程式設計,使課程群在能力構建和開設形式方面形成一個不間斷的體系。

3程式設計課程群實施

3.1精講課程主要內容,提高程式設計能力

課程組教師首先需要站在軟體分析與設計的角度研究各門課程在課程群中的地位和作用,把課程群中的系列課程作為一個有機的整體,研究各門課程的主要教學內容,針對課程重點、難點、疑惑點進行精講,做到理論與實踐課並重,有效提高學生程式設計水平。在課程群系列課程中,由於第一門課程是後續系列課程的基礎,所以學生必須掌握它。在C語言的教學中,要滲透軟體分析與設計的思想,把握程式的主要框架,不糾纏於一些細枝末節的.語法。函式是C語言教學中的重點,需要重點突破,從模組設計的角度來考慮函式設計,對於一個具體的函式,則要掌握函式的返回型別、引數型別以及引數個數。如用函式處理一個數組時,需要傳遞陣列的首地址和陣列的規模,首地址用指標表示,陣列的規模則有兩種表示方法,一是陣列的長度,二是陣列的起始下標和結束下標,這兩種方式可能會分別應用到不同的地方,如果教師一直不提示第二種方法,則將來學生在寫陣列做引數的遞迴程式時可能會遇到困難。從多年的教學實踐來看,如果學生真正掌握了函式設計方法,再加上必要的演算法知識,一般情況下,程式設計就會變得得心應手而且十分有趣;對於資料結構課程,採取以資料儲存(記憶體)為主線的方法,將重點放在資料的儲存和相關演算法方面,在演算法實現時滲透模組化的思想,需注意標頭檔案和實現檔案的定義,因為資料結構內容具有很強的連貫性且程式的初始化工作較多,如連結串列的具體應用則先要建立連結串列、樹的遍歷和節點的查詢等則先要建立樹、圖的遍歷和最短路徑及關鍵路徑等則先要建立圖,在實驗過程中有意識地把一些基礎工作放入標頭檔案,則會極大地提高實驗的效率;在面向物件技術教學中,以面向物件程式設計的方法為核心,以語言中的面向物件機制為主要內容,在適當的時候引入《ThinkinginC++》、《EffectiveC++》、《ThinkinginJa-va》等優秀書籍中的一些思想和經驗,要注重面向物件程式設計過程中大的程式框架的合理性以及具體處理演算法的正確性;在講授演算法設計與分析的時候,應集中精力將主要演算法講透,直到學生學懂為止,在實現演算法時,應充分運用面向物件設計的思想,將演算法封裝在類中;在web程式設計教學中,採用案例驅動的方式,精講軟體專案設計中的主要方法和主要問題,培養學生工程化設計思想。精講的目的是讓學生多練,精講之後要佈置任務併為學生提供練習環境和相關指導,必須充分發揮教師主導和學生主體作用,教師要認真檢查學生的作業、實驗和練習情況,及時糾正問題,引導學生運用軟體工程的思想設計程式,培養學生良好的程式設計思維和程式設計風格,激發學生自覺學習和實現相關演算法,最終提高程式設計能力。

3.2大規模開展程式設計訓練,培養程式設計能力

為培養學生演算法設計與分析能力,學院在晚上和週末開放了實驗室,在實驗室搭建了ACM線上測評系統(ACMOnlineJudgeSystem),並接入了校園網,結合C程式設計、資料結構與演算法等課程部署了大量習題。學院利用課餘時間,有計劃組織學生進入實驗室進行程式設計訓練,併為每次訓練配備了指導教師。平時,學生也可以在寢室登入平臺進行訓練。教師在講授C程式設計等課程的時候,要求學生利用課餘時間在ACM平臺上完成至少上百道題的訓練,並將完成情況計入課程的平時成績。透過大規模開展線上程式設計訓練,學生的程式設計能力有了明顯的提高。

3.3開展課程設計訓練,培養工程化設計思想

在課程群中除開設理論課程對應的實驗專案之外,還針對整門課程開設了綜合性課程設計專案,如C語言課程設計、面向物件技術課程設計、javaweb課程設計,單個課程設計週期為1-4周。學院課程設計專案主要由企業教師指導完成,該類專案採用分組形式,在組內模擬軟體企業執行模式設定相關崗位角色,學生在模擬企業環境中,利用模擬的軟體開發專案,進行輪崗和角色體驗,培養學生的軟體工程應用能力、軟體專案開發與測試能力、職業素質等,從而使學生熟悉軟體專案開發流程和規範,養成良好的軟體開發習慣。課程設計結束時,要求學生演示並講解自己的專案開發情況,由學院教師和企業教師組成評定小組進行評分。

3.4改革考核與評價方式,理論與實踐、平時與期末相結合

理論與實踐相結合。程式設計課程群內的課程都是實踐性很強的課程,其目的是運用所學的知識解決實際問題,決定了課程的期末考核要綜合考慮理論和實踐兩部分內容。理論部分主要考查學生對基本概念的理解和對基本知識的掌握情況,實踐部分側重考查學生的綜合應用能力,這兩部分成績都在期末完成,占課程總成績的60%左右。平時與期末相結合。期末考核重在體現學習的結果,平時成績則側重於體現學習過程,在課程總成績中,平時成績佔40%左右,即一門課程約有40分來自平時的學習過程。平時成績一般由出勤、作業和平時實驗情況、課程設計情況組成。在學期開始第一堂課的時候將課程評分方式告知每一個學生,必須抓緊平時的學習,若平時分小於20分,則取消課程考試資格或直接將課程總成績記為不及格。

4結語

程式設計課程群對培養學生計算思維能力、演算法設計與分析能力、系統分析與設計能力具有重要作用。本文分析了學生在課程群學習中遇到的一些問題,從軟體分析與設計的角度對課程群進行建設與改革,提出了以C語言程式設計、資料結構、面向物件技術、演算法設計與分析等幾門課程為基礎組建程式設計課程群,給出了課程群的主要知識與能力體系要求,透過精講課程主要內容、大規模有組織地開展程式設計訓練、企業教師指導課程設計、改革考核與評價方式等方法進行教學改革,學生的程式設計能力得了到較大的提高。

參考文獻

[1]韋迎春,文俊浩,陳蜀宇.以能力培養為核心構建示範性軟體學院實踐教學體系[J].中國高等教育,2011(2):49-50.

[2]喬付,王國權,張鳳武.CDIO理念下計算機程式設計課程群建設探索[J].內蒙古師範大學學報,2011,24(11):39-41.

[3]孫雷,王新.計算機專業程式設計課程群的研究與實踐[J].教育教學論壇,2013(11):222-224.

[4]翁偉,吳克壽,吳芸,等.程式設計課程群建設探索與實踐[J].計算機教育,2009(23):123-125.

[5]王海舜,蔣巍巍.基於程式設計能力培養的軟體設計類課程群架構[J].計算機教育,2012(2):23-26.

[6]萬臣,謝芳,胡泉.計算機專業程式設計課程群的建設與研究[J].合肥工業大學學報:社會科學版,2009,23(1):33-36.

[7]汪紅兵,姚琳,武航星,等.C語言程式設計課程中的計算思維探析[J].中國大學教學,2014(9):59-62.

[8]熊回香.資料結構課程與資訊化人才培養的關係研究[J].高等理科教育,2008(5):43-46.

[9]周清平,王曉波,徐洪智,等.平臺化思維模式助推高校軟體工程專業綜合改革[J].中國高等教育,2015(8):58-60.