劉美玲 李熹 周衛 張綱強 文勇
[摘 要]文章從軟件工程專業的培養目標出發,簡述課程設計的概念、CDIO工程教育模式,探索基于CDIO的軟件工程專業綜合課程設計實踐教學模式,詳細介紹課程設計的組織與實施,最后總結近幾年課程設計的實踐心得與教學經驗,為軟件工程課程設計的實踐教學提供借鑒與參考。
[關鍵詞]CDIO;課程設計;軟件工程;實踐教學
[中圖分類號] G642.3 [文獻標識碼] A [文章編號] 2095-3437(2022)05-0063-03
軟件工程專業注重培養具有良好的科學素養,系統掌握計算機基礎理論,具備運用先進的工程化方法、技術和工具從事軟件分析、設計、開發、維護等工作,具備工程項目的組織與管理能力、團隊協作能力的高層次、實用型、復合型軟件工程技術和管理人才。
課程設計是廣西民族大學(以下簡稱“我?!保┸浖こ虒I的一門實踐性課程,分別在大一、大二、大三學年的第二學期開設,時間均為兩周。在兩周的課程時間里,學生集中在實驗室,每個年級由2~3名教師負責,學生在教師的指導下完成課程設計作品。每個學年的課程設計要求不同,完成形式也不同:或個人獨立完成或團隊分工合作,但目的都是培養學生的自主學習能力、綜合設計與應用能力,訓練學生的工程化思維。本文從我校軟件工程專業的培養目標出發,結合CDIO工程教育模式以及近幾年的教學實踐,從課程設計的概念、CDIO理念、制訂課程設計大綱和課程設計的組織等幾個方面介紹軟件工程專業課程設計的具體實施方案,并總結近幾年課程設計的實踐心得。
一、什么是課程設計
課程設計是學生在學完課程之后集中一兩周時間,以個人獨立完成或團隊分工合作等方式,圍繞某一設計題目進行專業實踐活動,其旨在鞏固、強化、拓展學生所學知識,提高學生實踐操作能力和自學創新能力,培養學生的團隊合作意識[1]。
課程設計是針對性較強的實踐教學環節,是將課程基本理論與工程實際相聯系的綜合訓練,是培養應用型人才的一個重要步驟。課程設計可以使學生通過查閱資料、分析題目、確定設計方案等一系列步驟將理論知識與工程實踐相結合,從而鞏固、加深學生對所學知識的理解,提高學生的整體思維能力、綜合應用能力和創新能力[1]。
二、CDIO工程教育模式概述
CDIO工程教育模式是國際工程教育改革的成果,其中,C代表構思(Conceive),D代表設計(Design),I代表實現(Implement),O代表運作(Operate)。CDIO以產品研發到產品運行的生命周期為載體,讓學生以主動的、實踐的、課程之間有機聯系的方式學習工程,以培養學生的工程能力,該理念是“做中學”和“基于項目教育和學習”的集中概括和抽象表達。CDIO工程教育模式的愿景是為學生提供一種強調工程基礎的、建立在真實世界的產品和系統的構思—設計—實現—運行過程的背景環境基礎上的工程教育。CDIO工程教育模式培養大綱將工程畢業生的能力分為工程基礎知識、個人能力、人際團隊能力和工程系統能力四個層面,大綱要求以綜合的培養方式使學生在這四個層面達到預定目標。CDIO工程教育模式提出了包括基本理念、學習目標、一體化教學計劃、工程導論、設計實現經驗、工程實踐場所、綜合性學習經驗、主動學習、教師能力的提升、教師教學能力的提高、學生考核和專業評估等12條標準,為工程教育實踐提出具體的、可操作性強的指導[2-3]。
三、課程設計的組織與實施
課程設計的組織與實施以軟件項目為主線,結合軟件生命周期,將CDIO工程教育模式包括的四個階段——構思、設計、實現、運作貫穿于課程設計實踐的始終,軟件需求理解與分析、系統設計、系統實現、系統測試與部署運行分別對應CDIO工程教育模式的四個階段,將其理念與軟件工程項目實踐緊密聯系。
課程設計主要由制訂大綱、學生實踐、教師指導、過程考核與最終考核幾個環節組成。其中,課程設計大綱的制訂是課程設計的首要環節,學生實踐是主要環節,教師指導是教師了解學生完成進度、發現學生遇到的問題并給予輔導與建議的過程,考核是對學生的作品進行檢查與評價,包括過程考核與最終考核。過程考核貫穿整個課程設計的始終,主要考核學生在完成軟件系統過程中的系統分析、設計與實現的完成情況;最終考核通過學生演示系統及答辯來完成。
(一)制訂課程設計大綱
課程設計的題目要與軟件工程專業培養目標和課程設計的教學大綱要求相一致。課題應盡量滿足理論知識與專業技術相結合、軟件工程理論與項目實際需求相結合的要求,既要全面覆蓋理論課程所學知識,適合實踐教學和啟發創新,又要聯系工程實際,并適應本專業的發展趨勢。課題應具有一定的可操作性、設計性、靈活性、挑戰性和趣味性。課程設計內容難易程度的確定要以中等水平的學生在規定時間內經過努力能完成任務為依據[1]。
另外,課題應盡可能與學生的實際學習、生活等相關,這樣學生在調研、分析設計時更容易了解需求。例如,與學生學習相關的課題有學生成績管理系統、課程信息管理系統、圖書信息管理系統、學生選課系統、畢業論文選題系統等,與學生生活相關的課題有宿舍管理系統、超市管理系統、網上購物系統等[4]。
根據課程設計的教學大綱要求,制訂相應的課程設計大綱,明確課程設計的課題、目的、時間安排、任務要求、開發流程、評分標準與細則、考核方式等。大一、大二的課程設計是個人獨立完成,因此,課題設計的難易程度應適中,以保證學生在規定的時間內能順利完成;大三的課程設計則是以團隊的形式完成,題目難度應比大一、大二稍大。為了在指導與評價上盡可能統一與公平,每一屆學生我們只提供一個題目,我們也會根據實際情況一年或兩年更換題目,以免不同年級的學生互相抄襲。
基于CDIO工程教育培養模式的培養大綱中定義的四個層面的能力與我校軟件工程專業培養方案,結合社會對軟件工程人才培養的要求與我校軟件工程專業學生實際,我們制訂了以工程項目為主線的符合我校軟件工程專業學生特點的綜合課程設計實施方案,課程設計方案符合CDIO工程教育培養模式的12條標準。
(二)學生實踐與教師指導
在課程設計中,學生是主體,教師是主導。學生圍繞系統需求分析、功能劃分與設計、數據庫設計、界面設計、系統實現、系統測試與部署運行等展開實踐。學生在課程設計實踐中,應最大限度地發揮教師的導向作用與學生的主動性、創造性。學生在完成課程設計的過程中,教師可以對學生進行統一指導與個別指導。指導過程同時也是教師對學生課程設計進度的檢查與監督過程,教師在指導中可以實施過程考核。
1.在理解課題上的指導。理解課題的目標與功能需求是課程設計的第一步,教師在課程設計開始時應統一講解課程設計大綱中的任務要求、基本功能要求、擴展功能要求、技術要求等,并說明各個基本功能模塊與擴展功能模塊的難易程度,幫助學生理解系統需求和了解系統的難度,以便學生順利展開系統設計。
2.在技術上的指導。由于課程設計是一門綜合性的實踐課程,涉及程序設計語言、數據庫、數據結構、軟件設計模式等多門課程,而課程設計所需的理論知識與技術未必都在課堂上講授過。教師需要對課程設計中用到的技術進行串講,串講時要指明核心技術是什么、需要掌握哪些技術,并以項目演示操作的方式講解這些技術如何運用等。與技術相關的理論知識以及詳細內容需要學生自學,這有助于培養學生的個人能力、特別是學習能力,這一點與CDIO工程教育模式對學生能力的要求相一致。
3.在設計上的指導。課程設計的具體實施主要由個人獨立設計與教師指導兩個部分構成,當然,在課程設計中學生之間可以互相討論。在系統設計過程中,教師會逐一與每位學生交流,讓學生闡述其系統設計思路與方法、數據庫設計等,通過這樣的方式,教師可以深入了解學生的學情,并拓展學生的思路,從中發現問題并引導學生解決問題。
由于學生的基礎與能力不同,教師在課程設計的指導上要因材施教。對于基礎好、動手能力強的學生,教師應當引導他們進行深入探索與研究,進行創新性的設計與擴展功能設計,而不僅僅局限于基本功能要求。這就要求教師要具備系統的、扎實的專業知識,要不斷學習新技術,更新知識結構,只有這樣才能更好地引導學生。
對于基礎好、動手能力一般的學生,因為他們的理論基礎扎實,系統分析與設計會做得較好,但是實際編程能力稍弱,教師可以鼓勵引導學生發揮理論基礎優勢完善系統設計,在系統實現時給學生推薦一些應用性強的項目案例,提升學生理論知識的應用能力。
對于基礎與動手能力都一般的學生,教師要幫助他們加深對理論知識的理解,并在設計上多加指導,引導學生從易到難逐步完成設計;在編碼實現時,給學生提供易于理解、可操作性強的項目案例,讓其參考案例完成。
對于極少數基礎差或態度不端正的學生,教師要主動與學生交流,深入了解他們的實際情況與想法。對于學習確實有困難的學生,教師要幫助他們排除心理障礙,多加鼓勵,提供可操作性強的學習視頻,讓他們邊學邊做。對于極個別態度不端正的學生,教師既要幫助其轉變學習態度,并給予更多的關注,又要不斷地督促其獨立學習,并嚴格要求。
在課程設計的指導中,除了教師的指導,也可以采取“強幫弱”的幫扶形式,讓能力較強的學生幫助能力較弱的學生,促進學生之間的交流與幫助。
(三)考核
在為期兩周的課程設計結束后,教師要對學生的軟件系統完成情況進行檢查并考核,評分項主要有設計文檔、功能模塊、數據庫設計、代碼質量、系統調試能力、答辯情況等,考核主要采取學生講解其系統設計思路并演示系統和教師提問學生答辯的考核方式。這種考核方式對于增強學生的學習緊迫感、加強學生對知識的全面理解與綜合運用、提高學生的動手實踐能力、鍛煉學生的語言組織與表達能力、應變能力等都有明顯的效果。
答辯過程分為學生自述、教師提問、學生回答三個環節。首先由學生闡述其系統的分析、設計與主要實現過程,接著邊講解邊演示系統。學生展示完之后,教師根據考核標準進行提問,提問內容包括系統的數據庫設計思路、模塊設計思路、代碼與技術等方面。教師通過學生答辯情況并結合學生的設計文檔、系統完成情況進行綜合考評。學生通過與教師面對面的交流與答辯,可加深對理論知識的理解,彌補和糾正知識點理解上的盲點與誤區,發現設計存在的問題并獲得解決的方法。教師從學生的自述與問題回答中能了解學生理論薄弱的地方與設計存在的問題,從而在今后的教學中改進。
四、關于軟件工程專業課程設計的幾點思考
近幾年的課程設計實踐效果表明,課程設計是學生鞏固所學知識并能學以致用、提高綜合應用能力的重要平臺。通過課程設計,大部分學生的自主學習意識與學習能力、專業能力和工程系統能力都得到了較大的提高。同時,教師也從課程設計實踐教學中獲得了一些有用的經驗,為進一步完善課程設計教學提供了幫助與參考。
(一)課題的選定
在選定課題時難度要適宜并具有一定的挑戰性,課程設計大綱的制訂既要滿足大多數學生的基本要求,又要滿足能力強的學生的提升要求,只有這樣在最終考核評價時才能有一定的區分度。
(二)及時發現并總結問題,積累經驗
在課程設計實踐中,教師要在課堂上不斷走動,與學生交流,了解學生的完成進度與存在的問題,若是個別問題則個別指導;若教師預見該問題是其他學生可能會遇到的問題,則應事先提醒全班學生要注意;若問題是普遍性的,則向全班指出問題所在并給出解決方法。不論什么問題,教師都應及時指導學生。另外,教師應從學生上交的課程設計文檔中發現學生數據庫設計與面向對象建模方面存在的問題,并分析問題產生的原因,以改進教學方法。教師還可以從學生的心得體會中了解學生對課程設計的態度以及遇到的問題,為以后的課程設計指導積累經驗??傊?,在課程設計的任何一個環節,教師都要善于發現問題、總結經驗。
(三)教師要不斷提高自身能力
從課程設計大綱的制訂、任務布置到指導、考核都需要教師付出很多時間與精力,這對教師的專業知識與能力要求都很高。因此,要想保證課程設計的質量與效果,教師要有很強的責任心和完善的知識結構。如果教師對課程設計不重視,對學生不負責,不參與學生的設計與討論,不聽取學生的思路,不及時給予學生指導,那么課程設計將達不到理想的效果。如果教師的知識結構本身不完善,對課程設計所涉及的知識沒有深刻的理解,對最新的技術沒有一定的了解,那么在學生提出大量問題的時候,就會覺得力不從心,起不到該有的指導和引導的作用[5]。
(四)采用個人完成與團隊合作完成方式
我校軟件工程專業的課程設計貫穿大學四年,大一、大二主要培養學生的個人能力,采取個人獨立完成的方式;大三主要培養團隊合作精神與能力,采取團隊合作完成的形式;大四則是由學生獨立完成畢業設計。課程設計過程中可采用比賽、學生互評或小組互評、互相提問等方式來激發學生的競爭意識,增強學生的團隊合作意識,增進各組之間的學習與交流,擴大學生的知識面。這樣的方式有助于學生團隊能力的培養,符合CDIO工程教育模式四個層面能力的要求。
(五)高效到位的指導
由于課程設計的指導教師一般為2人,而面向的班級數不定,一個年級最多有2個班100人,學生人數較多,教師指導不過來。如何做到高效到位的指導,保證課程設計的質量與效果,是需要我們進一步思考和探索的。對于學習能力強的學生,教師可鼓勵引導他們發揮最大潛能。而對于理論基礎薄弱、動手能力欠缺的學生如何幫助他們鞏固基礎知識、提高動手能力,進而提升他們CDIO工程教育模式四個層面的能力,這需要我們不斷思考、探索和實踐。
五、總結
我校軟件工程專業的課程設計已在九屆學生中進行了實踐,對照CDIO工程教育模式培養大綱的四個能力,絕大部分學生的工程基礎知識、個人能力和工程系統能力在課程設計中都得到了鍛煉與提升,取得了比較好的教學效果。與此同時,課程設計要求教師具有較高的專業水平與綜合能力、較強的工程實踐能力,包括多門課程知識的綜合運用水平、系統分析與設計能力、編程能力、實際系統開發中解決問題的能力、程序調試能力等,因此,教師在課程設計實踐教學中的教學能力也有了較大的提升。
[ 參 考 文 獻 ]
[1] 尹繼明,呂凡任.課程設計在實踐教學中的應用研究與探索[J].揚州教育學院學報,2011(2):73-75.
[2] 顧佩華,包能勝,康全禮,等.CDIO在中國:上[J] .高等工程教育研究,2012(3):24-40.
[3] 顧佩華,包能勝,康全禮,等.CDIO在中國:下[J] .高等工程教育研究,2012(5):34-45.
[4] 劉美玲,李熹,黃文鈞.軟件工程專業Java課程設計實踐與思考[J].計算機教育,2014(10):62-65.
[5] 楊全勝,王曉蔚,吳強.對提高高校計算機專業課程設計質量的思考[J].計算機教育,2007(22):36-39.
[責任編輯:陳 明]