翁 偉 吳克壽 吳 蕓 林仙麗
摘要:本文在分析計算機本科專業程序設計類課程特點的基礎上,從培養應用型、創新型人才的角度,研究該類課程的建設原則,提出了程序設計課程群的課程體系、實踐體系建設方案和措施,并取得了很好的實踐效果。
關鍵詞:程序設計;課程;課程群
中圖分類號:G642 文獻標識碼:B
1概述
課程群是幾門內容密切相關,前后承接連貫一致的課程集合,一般屬于同一學科甚至同一專業。深入研究專業課程體系,探索課程基本內容以及課程之間的銜接關系,配備合理師資結構進行課程群建設,易于打通課程知識脈絡,避免課程內容重復或者前后脫節,使得前后連貫,內容融合,進而獲得整體優勢。課程群之間的課程相互配合,既能不斷加深拓展內在關系,又能起到舉一反三,相互促進的作用。我國高校進行課程群的研究實踐已有十余年的歷史,對于課程群的內涵、建設和評審均有很多探討,取得了一系列的成果,一定程度上解決了單門課程建設帶來的問題。近一年來,廈門理工學院計算機科學與技術系緊抓應用型、創新型辦學方向,在計算機科學與技術和網絡工程兩個專業中進行了課程群的建設,取得了很好的效果。本文就程序設計課程群建設的探索與實踐進行探討和總結。
程序設計課程內容豐富,語法繁多,技術復雜,不反復實踐是很難掌握的。另外,VC++、VS2008等程序開發工具,不投入大量時間去摸索,也不可能熟練運用于軟件開發。在教學實踐中我們發現,隨著課程的深入,很多同學慢慢放棄了學習程序設計。這幾年IT行業特別是軟件開發相關企業深感招人難,不是學生數量不夠多,而是他們認為畢業生不好用。事實上,這是普遍碰到的難題,師生如何“教”與“學”才能破解這個難題?從教學內容上看,教學中存在內容龐雜不成體系、課程之間脫節的問題,導致部分學生學習的時候逐漸失去信心和興趣。因此相關課程必須進行組合與統籌安排,理清知識的層次,在教學中做到知識點前后連貫,循序漸進,內容豐富而不雜亂。在逐步提高學生動手能力的同時提高學生理解力,觸類旁通,進而培養創新型人才。
本文將從應用型、創新型人才培養的角度出發,首先介紹程序設計課程群建設的基本原則,然后介紹程序設計課程體系以及課程群的建設措施,實際教學過程取得的成績證明該課程群建設是成功的。
2程序設計課程群建設的基本原則
課程群建設是專業建設的一部分,應用型人才培養方案應瞄準專業定位,與行業現狀和發展相適用,才能明確知識點、課程和課程群的具體內容。同時,課程群建設應當注重課程的知識重組,知識融合,是對單獨課程的教學大綱、實驗大綱等教學內容的重新設計。
針對應用型人才的培養目標,程序設計課程群應當以“程序設計”為核心,注重實踐與方法,走“實踐——抽象——設計”的路子,尊重客觀的學習規律,注重學習興趣的培養,在不斷實踐的過程中體會程序設計的方法,加深對程序設計理論的理解。在教學內容的設置上,首先應當以驗證、模仿的內容為主,通過不斷的實踐,體會程序設計的方法,獲得學習的樂趣。具備了一定的經驗和方法后,重點放在對問題的抽象和設計上,要求能夠針對具體的問題,抽象出程序設計的相關要素,設計出解決的方法,回歸實踐,采用主流的開發工具和開發平臺去驗證。在學習過程中,將“自己的設計”和“成熟的技術”相結合,使得學習者不斷加深對程序設計的認識。熟練掌握程序設計的“抽象”和“設計”后,程序設計理論的學習就順理成章了。
不難看出,程序設計學習過程的重點部分就是“抽象”和“設計”。以面向對象程序設計技術為重點,不斷學習用面向對象的思想來抽象待解決的問題,將其轉換成“類”的概念,設計對象的屬性和行為,以及對象之間的聯系。采用成熟的技術實現所設計的內容,是程序設計學習的重點。
實現設計的技術有很多,逐一介紹不但效果不好,顯然也是不現實的。采用“觸類旁通”的教學思路,側重熟練掌握一種工具和技術,而對其他技術點到為止,不失為一種好的教學辦法。
常用的程序設計教學語言有很多,層次也不一樣,在課程群建設中應該做到內容連貫統一,避免簡單重復,講究課程之間內容的融合、加深,也要兼顧實現技術由淺顯入深,相互參照。因此在課程的選擇上不宜過多,以4~5門為宜。理論和實踐(包括教師的實驗指導)課時比例是另一個重要的問題,在實踐中我們發現1∶2左右比較恰當。對于不同課程之間內容相同或相似部分的處理方式最能體現課程群建設的優勢。有些相同的概念都要介紹,并且要做到相互促進,使得概念更加明確,而有些類似的概念就需要刪繁就簡。
從教學目標來說,程序設計課程群教學是讓學生熟練掌握一門編程語言,熟悉相關開發方法和工具,深刻理解面向對象思想,熟悉面向對象程序設計技術。
3程序設計課程群的課程體系
程序設計系列課程旨在培養學生面向對象程序設計的“抽象”和“設計”能力,積累豐富的編程經驗,熟悉相關編程語言、工具和平臺,做到基本功扎實,實踐能力強,觸類旁通,善于綜合運用所學的知識積極主動解決問題。在課程設計上,尊重學習規律,由實踐入手,環環相扣,具體設置如表1所示。

目前,多數高校都把C語言作為程序設計的入門語言,但是對于后續課程的開設卻有不同的見解。如果著重面向對象理論介紹,普遍開設了面向對象程序設計這門課程,這當中可選擇的語言有C++、Java或C#等,雖然思想相同,但技術細節相差比較大。另外,也可以開設VB、Delphi和ASP等語言,因其形象直觀,便于理解。從貫徹“抽象”和“設計”這個特征出發,我們選擇C++語言。C++語言與C語言和數據結構有天然的聯系,符合學習由淺入深、逐步推進、舉一反三的特點。例如,數據結構中順序表、鏈表等重要的概念,在學習C++模板的時候講述了其實現技術,這對學習來說起到了“溫故而知新”的作用。再如C語言中的字符串概念,在C++中出現了字符串類,實現的功能更為完備,實現方式更加讓人易于接受,更有利于學生加深理解的是,學生自己可以實現一個字符串類。另外,對于重復的知識點,一般介紹功能較為完備的課程,比如一般C語言我們不介紹文件操作,而是讓學生自學,到了C++中,再介紹C++中的文件操作,這樣就刪除了重復的內容。
為了進一步體現應用性的辦學定位,結合當今行業的現狀,我們認為有必要讓學生在學校就接觸和熟悉B/S結構程序設計,所以開設了相應的“Web程序設計”課程。當然,在培養計劃中,“高級語言程序設計”、“數據結構”和“面向對象程序設計”作為專業必修課,而“軟件開發平臺”和“Web程序設計”可以作為專業限選課或專業任選課,注重講述流行的編程技術、框架及其開發平臺。畢竟,大型程序的開發需要軟件工程方法,不借助好的開發平臺,不僅難于設計,更難于實現。長期輕視應用技術類課程的教學,也是學生畢業后難以快速融入開發工作的原因。
4程序設計課程群實踐體系
程序設計類課程實踐性較強,為了強化學生的動手能力,通過實踐體會理論知識,在教學安排中,理論課和實踐課的內容和課時要合理設計。實踐課一般分為課內實驗課和課程設計,具體課時安排如表2所示。

課程群減少了實驗安排的隨意性和重復性。從內容上來看,“網頁設計”的實驗課注重界面效果;“高級語言程序設計”注重基本的語法知識和常用的算法;“數據結構”注重結構和算法,以及不同結構的特點;“面向對象程序設計”注重設計和實現;軟件開發平臺注重各類具體實現技術。具體實驗內容如下:
(1) 高級語言程序設計:運行環境、數據類型、運算符和表達式、順序程序設計、選擇程序設計、循環程序設計、數組、函數、指針、結構體和鏈表、文件。
(2) 數據結構:順序表操作、鏈表的操作、棧和隊列、二叉樹、圖結構、查找和排序。
(3) 面向對象程序設計:熟悉IDE編程、流程控制語句、函數的應用、類與對象的實踐、數組與指針、模板、動態內存分配、繼承與派生、文件處理、異常處理。
(4) Web程序設計:Dreamweaver網頁設計工具的使用、開發JSP(語法基礎、內建對象)、Java Servlets 、JavaBeans、Java數據庫編程技術、JSP綜合應用實例等。
(5) 軟件開發平臺:Structs、Hibernate、Spring、Ajax、JSP、EJB、XML、WebServices等。
在內容安排上,課內實驗課緊跟理論課程,而課程設計則一般學期中公布題目,期末完成,設計需要綜合課程的內容,并且有一定的難度,需要學生能動地設計實現,一般需要查閱課外知識,培養學生的自學能力和創新能力。為了做到課程之間的銜接,課程設計的題目需經過課程群內任課教師的討論通過。各門課程的課程設計各有所偏重,目前的安排情況如下:
高級語言程序設計:管理系統的功能分解,函數的設計以及指針結構體等的運用,典型算法的實現,注重語法和基本點算法。
數據結構:具體問題的數據結構設計與具體語言實現,注重各種結構的聯系和區別以及靈活運用。
面向對象程序設計:具體問題抽象為類與對象的設計,繼承、重載、多態等概念的運用,MFC平臺的自學與運用,注重“類與對象”的抽象和設計。
軟件開發平臺:界面設計,B/S程序設計,網絡程序設計等,注重各種技術的學習和運用。
5程序設計課程群的建設措施
課程群建設是個逐步探索,不斷推進的過程,需要一系列的保障措施。下面主要討論組織建設、教師培訓、教材建設、教學內容建設和教研教改等方面。
組織建設方面,由課程主講教師形成課程組,做到學歷、職稱和年齡的合理搭配,經驗豐富的教師與青年教師形成幫扶關系。課程組設組長一名,負責整個課程群的建設和規劃,以及日常會議的組織。系部出臺相關指導性政策,并給與相應的經費支持。
在教師培訓方面,“內培”與“外引”相結合,所謂內培,就是相互聽課,取長補短,有計劃地舉行教研會議,就某個主題討論,相互促進;鼓勵主講教師參與校外培訓,包括去公司實習等。同時,注重引進本學科內有實際項目經驗的高層次人才,補充教師隊伍。
在教材建設方面,對每門課程制定長遠的規劃,不斷總結教學經驗,認真修訂教學大綱和實驗大綱,合理設計每一個實驗題目和課程設計題目。對于有一定積累的課程,可以走先編寫實驗指導書,再出教材的路子。
在教學內容方面,程序設計課程的教學應當與應用技術的發展和行業的現狀和發展結合起來,技術是不斷革新變換的,因此程序設計課程群的課程和具體教學內容也需要不斷地調整。當然,基本的概念、思想和理論有不變性,所以也應當注意變化的“度”。一味的追求變化,可能會丟失本質的內容,降低學生的理解能力和創新能力。我們的做法是有計劃地組織教師參與相關的教研會議和課程培訓,深入相關單位、部門和公司了解行業運用和對我們人才培養的期待,結合自身的定位調整教學內容。另外,與兄弟院校多交流也是一個積極的辦法。
在教研教改方面,鼓勵課程群內的教師積極申請相關的課程,包括精品課程、教研教改課題以及教學輔助設施建設(如教學網站、題庫的建設)。
6結語
實施課程群建設一年來,我院形成了相對穩定的教師隊伍,教學內容更加合理緊湊,教學大綱、實驗大綱、實驗指導書、教案等教學文檔比較齊全。另外,總結了以往的教學經驗和成果,我們的教師主編了相關的教材。長期堅持的教研教改活動也取得了效果,部分年輕教師的教學水平有所提高,在學校的教學比賽中獲獎。學生學習目的更加明確,積極性高了,成績比以往普遍好轉。學生畢業設計中涉及到程序設計部分的課題質量也較以往有所提高,并且能熱情參與各類學科競賽。一系列的成果激勵我們在今后的建設中,要進一步研究教學內容,凝煉辦學特色,爭取更多的教學成果,在教材建設、精品課程建設等方面取得更大的成績。
參考文獻:
[1] 王嘉才,楊式毅,霍雅玲,等. 課群及其質量檢查評估指標體系的研究[J]. 高等工程教育研究,1999(S1):71-73.
[2] 李慧仙. 高校課程群三論[J]. 煤炭高等教育,2006,24(4):113-115.
[3] 郭必裕. 對高校課程群建設中課程內容融合與分解的探討[J]. 現代教育科學,2005(2):66-68.
[4] 徐鳳生,李天志,李海軍. 計算機科學與技術專業課程群建設探析[J]. 福建電腦,2007(2):197-198.
[5] 陳道蓄. 計算機學科發展與專業規范[C]//大學計算機基礎課程報告論壇程序委員會. 大學計算機基礎課程報告論壇論文集,北京:高等教育出版社,2005:18-21.