作為在2002年6月經江西省教育廳批準建立的首批軟件學院之一,南昌大學軟件學院已經辦學近四年了。從成立伊始,我們就圍繞培養企業需要的實用型軟件人才這個目標,在管理體制、運行機制、教學體系、課程設置等諸多方面進行探索和創新,試圖走出一條有特色的軟件人才培養之路。本文是對我們采用套件教學培養實用型軟件人才的簡單總結,希望與國內兄弟院校交流經驗,共同把如何推進中國軟件工程教育這篇大文章做好。
什么是套件教學
套件教學,也可以稱之為綜合性教學,就是針對企業對軟件人才的實際需求將若干相互關聯的課程整合在一起,其中既有理論知識講授,又有工程實踐訓練,尤其強調用綜合性課程設計考核學生的學習效果。經過近三年的教學實踐,套件教學不僅受到學生們的普遍歡迎,更重要的是得到了企業的認可。
選擇哪些內容進行套件教學值得研究。在實地調研的基礎上,我們掌握了國內其他軟件學院的課程設置情況,發現這些學院的課程設置與傳統的計算機科學與技術教學體系有所不同,但是整合的力度不夠大,與企業的實際需要有很大距離。與此同時,我們又廣泛搜集國外相關學院的軟件工程課程體系信息,其中CCSE2004給我們的啟發很大。它是由500位來自大學和工業界的專家共同制定的,在2004年8月23日發布。在這個教學體系中已經出現了整合的課程,如操作系統與網絡。要想做出正確的選擇,了解企業的需求是必要的,因為培養的人才是否對路最終要由企業和社會檢驗。我們還大量收集企業需求,掌握企業軟件技術應用現狀和對人才的具體要求,這樣就會做到心中有數,就可以有的放矢。
我們開設的套件教學課程主要集中在軟件工程的專業基礎課和核心課上面,試圖通過“套件教學系列”連貫地培養學生軟件工程的實踐能力,使他們學有所得、學以致用。到目前為止我們開設的套件教學課程有:計算機體系結構,其中涵蓋了計算機組成原理、計算機體系結構、數字邏輯、數字電路、單片機原理、微機接口技術等六門課程。高級程序設計語言主要包括C和C++。數據結構與算法要結合一種程序設計語言如C講授基本的數據結構和排序、查找兩大類算法。操作系統與網絡,這是按照CCSE2004開設的一門課程,主要介紹操作系統基礎、網絡和通信基礎,側重點是網絡操作系統。軟件工程(二),系統介紹面向對象分析、設計和編程的原理和方法,并且運用統一建模語言UML建立軟件系統的動態模型和靜態模型。Web開發技術分兩條主線,一條是微軟的C#、ASP,一條是IBM的Java、JSP,兩者都要訪問后臺的數據庫,構成一個完整的網絡應用。嵌入式系統設計要使學生將計算機軟件和計算機硬件課程的理論和實驗內容有機結合起來,針對不同的實際應用進行教學和實驗。面向應用定制是它的最主要特點之一。相關技術可以涉及到電子線路、自動控制、計算機組成、計算機系統結構、匯編系統、操作系統、軟件工程等課程領域。
為什么開展套件教學
從知識層面看,傳統的計算機科學技術和軟件工程教育通常將知識體系分割成一門門獨立的課程,盡管課程之間存在著內在聯系,但是由于分別講授而且周期過長,往往導致學生不能將這些知識連貫成一個整體,甚至出現學了后面忘了前面的情況。更為嚴重的是,教學體系沒有充分考慮企業對軟件人才的需求以及軟件領域本身的發展變化,如此就會出現知識陳舊和學非所用的情況。
從行業特點看,軟件工程本身強調實踐性也就是要求學生具備很強的動手能力,而不僅僅是用書面考試來檢驗學生的學習效果。因此我們強調通過套件教學及相關的工程實踐教給學生“一把手”的能力,即要求學生具備5種能力:會用C++或者Java 編寫程序,會設計數據庫,會組建局域網并且進行網絡維護,會利用ASP 或者JSP開發網絡服務(Web Service),會使用面向對象方法做系統分析和設計。
在教學理念上我們將之稱為“珍珠串項鏈”,即將一些重要的基本概念、知識點連同相應的技能訓練串聯起來講授和實踐。這樣能夠收到傳統教學所意想不到的效果,而事實上企業的開發環境就是一個集成的環境。
套件教學的實踐效果
我們從2003年開始套件教學的嘗試。課程為“Web開發技術”,其中涵蓋了C#、ASP.NET 和SQL Server 2000數據庫。整個課程學時數是96個,一半上課一半上機。考核形式是讓學生獨立設計一個商業網站,而且可以二至三人合作完成,借以培養他們的合作精神和協調能力。實踐證明效果很好,學生反映學到了實用的東西,而且最引以自豪的是他們能夠利用所學到的知識和本領完成企業需要的工作。
隨后,我們根據CCSE2004軟件工程教學體系大幅調整原有的培養方案,增加了計算機體系結構、數據結構與算法、操作系統與網絡、軟件工程二(面向對象分析/設計與UML 建模、嵌入式系統設計等套件教學課程)。以軟件工程(二)為例,我們將Java 語言、面向對象分析與設計、UML 系統建模、JSP和JDBC整合在一起,教學時數128個,仍然以一個綜合性課程設計作為最終考核方式,讓學生自己選擇一個感興趣的領域或問題進行從分析、設計到建模、編程的全過程實踐,從而提高了他們運用知識的能力和解決實際問題的能力。
經驗和體會
開展套件教學首先要有一支過硬的師資隊伍。授課教師不僅要具備深厚扎實的理論知識還要具有豐富的項目開發經驗,換句話說,要“能說會干”。單純的有理論沒實踐的“經院型”教師不行;僅僅從事過項目開發,缺乏系統理論知識的“實干派”也不行。目前在我們的套件教學團隊中已經有2位教授、4位博士、5位碩士和5位在讀軟件工程碩士,基本構建起一支知識結構合理、經驗豐富、新老搭配的師資隊伍。
開展套件教學也要具備完善的實驗條件。我們的實驗中心擁有嵌入式系統設計實驗室、軟件工程基礎實驗室、軟件工程實驗室、網絡實驗室、J2EE實驗室、軟件測試實驗室、數據庫設計實驗室、Web應用開發實驗室8個實驗室,這滿足了我們進行套件教學創新的要求。
開展套件教學還要有相應的教學管理措施。套件教學突破了原有的單一課程教學和課程考核方式,給教學管理提出了新問題。必須在管理層面上有所創新,設計新型的而且行之有效的管理方式。有些課程設計持續時間長,要求老師要建立學生學習過程記錄,跟蹤學生的設計情況,發現問題及時解決。因此要有配套的教學檔案和管理制度。同時還要考慮課時費用,制定切實可行的報酬標準。總之,要把責任、權力和待遇統籌兼顧,人員、設備和制度配套整合,這樣才能達到預期的目的,收到應有的效果。
套件教學的教材建設是一個大問題。由于每一個“套件”都是2至3門甚至更多課程的整合,因此很少有現成的教材可供使用。相應地,套件教學工程實踐指導教材也是一個空白點。目前,已經有上海交通大學等學校在編寫類似教材。我們也在總結三年來的教學經驗,著手開展這方面的工作。