曹曉蘭 彭佳紅 彭劍
摘要:編程能力和軟件能力是計算機專業(yè)本科人才必備的能力,也是他們未來職業(yè)生存和發(fā)展的基礎(chǔ)。文章根據(jù)計算機專業(yè)本科生培養(yǎng)要求和社會對計算機人才的期望,對培養(yǎng)兩種能力的理論課程體系和實踐教學體系進行研究,針對編程能力和軟件能力,分別構(gòu)建相應的理論課程系列,并從“夯實基礎(chǔ)、提高能力、面向應用”3個層次,構(gòu)建兩種能力的實踐教學體系。
關(guān)鍵詞:編程能力;軟件能力;課程體系;實踐教學體系
0 引言
可持續(xù)發(fā)展教育觀認為知識、能力、素質(zhì)是構(gòu)成現(xiàn)代教育三方面的內(nèi)容。高等教育應該是以能力培養(yǎng)為中心的教育,要圍繞能力的培養(yǎng)來實施教育教學。本科生的能力包括較強的學習能力、創(chuàng)新能力和專業(yè)能力。
對計算機科學與技術(shù)專業(yè)的本科生來說,能夠編寫規(guī)范的程序代碼是最基本的專業(yè)能力,但從社會的需求來看,計算機專業(yè)人才僅具備良好的編程能力遠遠不夠,還應該具有軟件系統(tǒng)開發(fā)等各方面的能力。軟件開發(fā)的復雜性要求從事開發(fā)的人員能站在系統(tǒng)的全局角度看問題,并用工程化的方法分析、解決問題,也就是我們所說的軟件能力。一直以來,由于計算機科學與技術(shù)專業(yè)的性質(zhì)和認識上的局限性,教學上一般比較側(cè)重對學生編程能力的培養(yǎng),而對軟件能力的培養(yǎng)重視不夠,使得不少學生存在著軟件開發(fā)就是編寫程序代碼的錯誤觀點,或者意識到了軟件能力的重要性,卻缺乏軟件開發(fā)必須具有的工程觀、系統(tǒng)觀。
編程能力與軟件能力之間存在著密切的關(guān)系:編程能力是計算機人才應該具備的最基本的能力之一,也是軟件能力形成的基礎(chǔ);而軟件能力是真正能滿足社會需求的能力,是一種更高標準的要求,能促進編程能力的提高和完善。我們在教學中,不僅要注重學生的編程能力培養(yǎng),還要有目的地培養(yǎng)學生的軟件能力,這不僅符合計算機專業(yè)培養(yǎng)要求,也符合社會對計算機人才的要求。而能力培養(yǎng)不是一兩門課程或一兩個教學活動就可以實現(xiàn)的,需要一個“養(yǎng)成”過程,必須循序漸進,用明確的系列課程構(gòu)成相應的訓練系統(tǒng),使學生在修養(yǎng)中形成一些良好的學科習慣,潛移默化地養(yǎng)成學科優(yōu)秀人才所要求的能力。因此,針對計算機專業(yè)的特點,以這兩種能力的培養(yǎng)為目標,我們在理論課程體系、實踐教學體系建設等方面上做了一些研究和實踐。
1 理論課程體系的構(gòu)建
按照能力培養(yǎng)的要求,課程應該是成系列的,是有利于各種專業(yè)能力逐漸形成的漸進系統(tǒng)。針對編程能力和軟件能力,我們分別構(gòu)建了兩種相應的理論課程系列:編程能力培養(yǎng)系列課程和軟件能力培養(yǎng)系列課程,如圖1所示。編程能力培養(yǎng)系列課程側(cè)重于培養(yǎng)學生掌握本學科要求的計算思維方法、算法設計策略和技術(shù),能夠熟練應用至少一門高級程序設計語言,具有良好的代碼編寫習慣,此外還要具備面向?qū)ο笏季S能力;而采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件是軟件能力的體現(xiàn),因此是軟件能力培養(yǎng)系列課程的側(cè)重點。這兩大課程系列形成一個漸進系統(tǒng),幫助學生完成由編程能力到軟件開發(fā)能力的提升。
從編程能力提升至軟件能力是一個循序漸進的過程,因此這兩個系列中的多門課程之間,知識上既有前導后續(xù)的關(guān)系,程度上也有迭代式加深的關(guān)系,甚至可能有些課程部分內(nèi)容是重疊的,需要教師清楚該課程在整個能力培養(yǎng)體系中所處的地位,從而在教學內(nèi)容選擇上各有側(cè)重,在教學要求上各有不同。
1.1 編程能力培養(yǎng)系列課程
針對編程能力的培養(yǎng),我們進行了以下4個系列課程建設,分別是計算思維能力培養(yǎng)系列課程、算法系列課程、程序設計與實現(xiàn)系列課程、面向?qū)ο笤O計理念培養(yǎng)系列課程。
計算思維能力包括形式化、模型化描述和抽象思維與邏輯思維能力等。此系列的課程主要由一些數(shù)學類和計算模型類的課程組成,包括高等數(shù)學、離散數(shù)學、線性代數(shù)、工程數(shù)學、計算思維與問題求解、形式語言與自動機等。對一般本科生而言,計算思維能力難以在短時間內(nèi)養(yǎng)成,需要一個漸進過程:由單一具體的實例計算,遷移到一般的、形式化的類計算/模型計算,實現(xiàn)思想境界的變化。在時間上,需要適當延長數(shù)學類課程的教學周期,將連續(xù)數(shù)學、離散數(shù)學、類計算/模型計算3部分內(nèi)容按階段分開安排,從第1學期一直延續(xù)到第6學期。
算法對于計算機專業(yè)的本科生是非常重要的。算法系列課程主要幫助學生建立算法的慨念,掌握算法設計策略和技術(shù),并具備算法分析能力,主要有數(shù)據(jù)結(jié)構(gòu)與算法、Matalab與數(shù)值計算等。
程序設計與實現(xiàn)能力要求學生至少掌握一門高級程序設計語言的基本思想和方法,具有分析、學習和實現(xiàn)高級程序設計語言的能力,主要包括編譯原理、高級語言程序設計、數(shù)據(jù)庫系統(tǒng)等課程。如高級語言程序設計課程c語言,能使學生掌握基本的編程基礎(chǔ)及模塊化的程序設計理念。
如今面向?qū)ο蟮木幊淌侵髁鳎瑹o論使用何種面向?qū)ο蟮恼Z言,其精髓都是面向?qū)ο蟮乃枷?,因此掌握面向?qū)ο笏枷氡日莆照Z言本身更重要,如對繼承、多態(tài)、重載等面向?qū)ο蟾拍畹睦斫猓瑢γ嫦驅(qū)ο蠡驹瓌t的掌握等。面向?qū)ο笤O計理念培養(yǎng)系列課程包括面向?qū)ο蠹夹g(shù)引論、面向?qū)ο笳Z言程序設計等。
1.2 軟件能力培養(yǎng)系列課程
學生的軟件能力主要體現(xiàn)在對軟件系統(tǒng)的認知、分析、開發(fā)與應用能力上,既要具有系統(tǒng)的眼光和觀點,對系統(tǒng)結(jié)構(gòu)、部分與整體、不同級別的抽象等有深刻認識,也要具有工程的知識,了解工程的概念、原理、技術(shù)和方法,以及這些在軟件開發(fā)維護中的重要作用。對此我們進行了以下3個系列課程建設,分別是軟件工程系列課程、系統(tǒng)開發(fā)系列課程、工具軟件應用系列課程。
軟件工程系列課程包括軟件工程導論、高級軟件架構(gòu)、UML模型分析、軟件測試、軟件成熟度模型CMM等。通過這些課程的學習,學生能深刻理解軟件工程概念、原理和技術(shù)方法,熟悉軟件開發(fā)周期中每階段的任務,包括需求分析和建模、軟件設計和實現(xiàn)、軟件評審與測試、人機交互界面設計、軟件項目管理等,并認識到軟件開發(fā)是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目。endprint
系統(tǒng)開發(fā)系列課程側(cè)重于項目開發(fā),強調(diào)抽象與高級實現(xiàn)。有面向?qū)ο髴贸绦蜷_發(fā)項目、電子商務應用程序系統(tǒng)開發(fā)項目、使用XML的企業(yè)應用開發(fā)、Web設計與編程、現(xiàn)代電子系統(tǒng)設計、CRM客戶關(guān)系管理系統(tǒng)。通過某些行業(yè)領(lǐng)域較大型的項目開發(fā)樹立學生的整體觀,培養(yǎng)學生的系統(tǒng)眼光,使他們學會考慮全局,按照分層模塊化的基本思想,站在不同的層面上把握不同層次上的系統(tǒng)。
了解和善于使用工具軟件能幫助開發(fā)者提高工作效率,改進工作質(zhì)量,工具軟件應用系列課程除了包括與軟件開發(fā)密切相關(guān)的軟件工程CASE工具,還包括了一些通用軟件應用課程,如辦公自動化、多媒體技術(shù)與應用等。
2 實踐教學體系的構(gòu)建
實踐教學是培養(yǎng)學生能力的另一個重要環(huán)節(jié),實踐教學體系是一個與理論課程體系有機結(jié)合,又相對獨立的完整體系,貫穿于人才培養(yǎng)的全過程。要將實踐教學體系作為一個系統(tǒng)來構(gòu)建,適當?shù)刈非笙到y(tǒng)的完備性、一致性、健壯性、穩(wěn)定性和開放性。按照能力培養(yǎng)循序漸進的原則,我們以理論課程體系為基礎(chǔ),從夯實基礎(chǔ)、提高能力、面向應用3個層次上,構(gòu)建了兩種能力的實踐教學體系,如圖2所示。圖中灰色進度條代表各個實踐教學環(huán)節(jié)對編程能力和軟件能力培養(yǎng)的覆蓋范圍。
課程實驗是對應于某一門課程設置的,實驗內(nèi)容與該課程理論教學內(nèi)容緊密結(jié)合,側(cè)重學生對課程各個知識點的掌握,規(guī)模一般比較小。設置了實驗的課程有數(shù)據(jù)結(jié)構(gòu)與算法、高級語言程序設計、數(shù)據(jù)庫系統(tǒng)、編譯原理、多媒體技術(shù)等。
課程設計更強調(diào)綜合性、設計性,復雜度也高于課程實驗,是引導學生將知識用于解決實際問題的第一步。我們將課程設計分為兩種:一種是要求學生獨立完成的,如程序設計課程設計、數(shù)據(jù)結(jié)構(gòu)與算法課程設計、編譯原理課程設計等;一種是以小組為單位完成的,如數(shù)據(jù)庫原理課程設計、軟件工程課程設計等。后者比前者規(guī)模更大,從工程化的角度出發(fā),強調(diào)小組成員分工合作。
將實踐教學活動擴展到課外一方面可以補充教學總學時的不足,更可以讓學有余力的學生進一步仔細、深入地研究問題、解決問題。因此,我們鼓勵學生參加各種課外實踐活動,如組織學生參加省級、國家級的各種學科競賽,組成多個興趣小組,參與各種社會技術(shù)服務等。
多門課程的綜合設計一般放在高年級,由系統(tǒng)開發(fā)系列課程中的某一門牽頭,如電子商務應用程序系統(tǒng)開發(fā)項目或CRM客戶關(guān)系管理系統(tǒng)等,給出多個可供選擇的題目,學生根據(jù)情況選題。多門課程的綜合設計規(guī)模更大、對學生要求更高,通常涉及多門課程知識,既需要程序設計、數(shù)據(jù)庫知識,也需要軟件工程知識,還要了解某些行業(yè)領(lǐng)域的專業(yè)知識,比較接近社會的實際需要。
生產(chǎn)實習通過讓學生直接接觸專業(yè)生產(chǎn)實踐活動,能在一定程度上讓學生從社會科學研究和生產(chǎn)實踐中體驗需要學什么,并真正能了解、感受未來的實際工作。生產(chǎn)實習一般安排在專業(yè)課學習期間,或者課程學習結(jié)束后畢業(yè)設計之前。對于大四的學生,甚至可以將生產(chǎn)實習與畢業(yè)設計有機結(jié)合,緩解畢業(yè)設計時間不足的問題。
畢業(yè)設計在整個實踐教學體系中綜合性最強。學生進行畢業(yè)設計時,已經(jīng)完成整個教學計劃中所有課程的學習,完成其他各類實踐。它承擔著培養(yǎng)學生綜合應用所學知識和掌握的技能,分析和解決實際問題、獨立工作、團隊協(xié)作等能力的任務。同時對學生在4年學習中所獲得的知識掌握情況、學習和接收新知識和新技術(shù)的能力以及解決實際問題的能力進行檢驗。
整個實踐教學體系體現(xiàn)了循序漸進的要求,既有基礎(chǔ)性的驗證實驗,也有設計性和綜合性的實驗或?qū)嵺`環(huán)節(jié),在規(guī)模上有小、中、大,難度上有低、中、高;內(nèi)容上既有基本要求,還有更高要求,并通過更高要求引導學生進行更深入地探討,體現(xiàn)實驗題目的開放性。另外還強調(diào)實踐環(huán)節(jié)與實際的緊密結(jié)合。
3 結(jié)語
編程能力和軟件能力是計算機專業(yè)本科創(chuàng)新人才必備的能力,也是他們未來職業(yè)生存和發(fā)展的基礎(chǔ)。加強學生程序能力和軟件能力的培養(yǎng)不僅符合計算機專業(yè)對人才專業(yè)能力的要求,而且也滿足就業(yè)市場對人才專業(yè)能力的期望。
研究不僅有益于信息科學技術(shù)學院計算機人才專業(yè)能力培養(yǎng)模式的創(chuàng)新,一定程度地豐富計算機教育領(lǐng)域關(guān)于人才專業(yè)能力培養(yǎng)的理論認識,而且在提高學生程序能力、軟件能力,提升學生專業(yè)素質(zhì)和社會競爭力上有著十分重要的現(xiàn)實意義。
參考文獻:
[1]張海藩.軟件工程[M].5版.北京:清華大學出版社,2008:5.
[2]李文敬,劉之家,閉應洲,等,應用型本科計算機專業(yè)實踐教學體系的構(gòu)建與實施[J].計算機教育,20ll(2):103-107.
[3]彭佳紅,彭佳文,拜戰(zhàn)勝.農(nóng)科類計算機科學與技術(shù)專業(yè)課程群建設研究[J].高等農(nóng)業(yè)教育,2010(3):66-67.
(見習編輯:劉麗麗)endprint