
摘要:針對“卓越工程師培養計劃”中工程和創新能力培養目標,通過實際對比Java課程不同教學模式產生的效果,探討理論與實踐并重的教學方法,總結項目式Java程序語言課程的關鍵改進環節,利用合作企業的項目資源考核學生的理論及實踐能力并驗證教學改進的實際效果。
關鍵詞:Java課程;理論與實踐并重;工程和創新;教學模式
文章編號:1672-5913(2013)03-0093-04
中圖分類號:G642
強化培養學生的工程和創新能力是“卓越工程師培養計劃”的特點之一。工程能力亦稱生產技術能力,是人們將科學知識或技術發展的研究成果應用于生產過程的能力。創新能力則是探索未知領域和對已知領域破舊立新的研發能力。因此,“卓越型人才”必須兼具應用與研發能力。當前基于“卓越計劃”的課程改革往往過于側重應用型人才培養,在課程設置上也過于案例化、項目化和實踐化,導致學生在實踐應用過程中知其然而不知其所以然。然而,創新的過程是基于客觀規律和科學理論的,扎實的理論基礎才是學生進行創新研究的原動力。如何令實踐應用充分圍繞理論知識并權衡實踐與理論教學的尺度,是筆者針對Java課程改革所要討論的問題。
1 理論型與實踐型教學的對比
為了實際了解理論教學與實踐教學的授課效果,筆者以上海應用技術學院軟件工程專業2個班級的82名學生為調查對象,對Java課程同一章節的2種教學方法產生的教學效果進行對比。此章節為Java程序語言中具有代表性的面向對象編程技術。教學方法是教師對其中一個班級(理論班)進行傳統的課堂理論授課,詳盡講述繼承和多態的概念并布置相關內容的課后作業;對另外一個班級(實踐班)則采用實踐教學的方法,以銀行賬戶管理系統為項目案例,講述繼承和多態的概念并讓學生完成程序的編寫和調試。教學效果的對比采用在不提前告知學生的情況下布置小型項目以測試學生掌握情況的形式。測試項目為繼承和多態的典型應用案例,如編寫形狀父類并派生出矩形、圓及三角形子類,然后使用多態的方法計算各形狀的面積,規定完成的時間為1課時。測試采取閉卷的形式。
根據測試結果,學生掌握的情況大致可分為完全掌握(完整可運行程序)、部分掌握(能寫出父類、子類或多態的方法,但程序無法正確運行)和沒有掌握(無法正確寫出任何程序)。教學情況統計如表1所示。
完全掌握的學生中,實踐班的人數多于理論班。我們進一步分析這些學生的答案后發現,實踐班15名學生基本以課堂案例為模板進行程序功能的修改,因此程序相似度很高;而理論班的5名學生運用繼承和多態的概念,從項目要求出發編寫具有個人特色的程序,因此程序相似度很低。顯然,從教學效果上來說,理論教學相較實踐教學更適合培養具有應用創新能力的人才;而從對比的數據結果來看,理論教學只適合少部分拔尖學生,實踐教學則更易于被學生接受。
部分掌握的學生中,理論班的人數多于實踐班。從這部分學生的答案中發現,理論班中的大部分學生能夠正確地定義父類、子類或多態,卻無法根據項目要求寫出完整的程序;而實踐班學生的錯誤大多是由于死板或錯誤地套用課堂上的案例所造成的,學生對于案例背后的理論知識一知半解。完全沒有掌握的學生出現問題的原因與部分掌握學生出現問題的原因類似,即實踐應用缺乏理論支撐,理論運用缺乏實踐指引。
由上述對比結果可見,2種單一的教學模式均無法獲得良好的教學效果。那么,是否結合2種教學模式就能取長補短并提升教學效果?筆者就此問題進行如下探索。
2 理論結合實踐教學的探索
理論結合實踐的教學模式已被廣泛應用于Java課程的教學。使用較廣泛的模式有以下2種。1)非項目模式。教學以理論授課作為主要內容,結合幻燈片等多種手段分析小型案例,進行代碼的演示與講解,并在理論課之間穿插實踐上機課程,以幫助學生鞏固課堂理論知識并進行實際應用。2)項目模式。教學以實際項目作為驅動,從開始授課就為學生布置項目任務并根據Java課程的各部分理論將項目劃分為模塊,結合教學進度讓學生分階段進行各模塊的開發,逐步完成整個項目。
2.1非項目模式教學
非項目模式教學是理論型教學模式結合實踐教學的一種改進,采用的教學方法依然是以教師為主的講授式教學,輔以實踐課程幫助學生理解和應用理論知識。Java語言課程理論知識眾多,在非項目模式教學中,理論課與實踐課的課時比例一般為2:1或3:1。充足的理論課時使任課教師能夠詳盡地講解Java的各類基礎理論,可以為學生應用Java程序語言完成各類Java軟件開發打下扎實的理論基礎。然而Java程序語言中必然存在枯燥且抽象的語法、定義和概念等,一些自制能力較差和對困難準備不足的學生在面對不斷出現的抽象知識時會產生厭煩和畏縮心理。
此外,由于實踐課時的限制,在實踐項目的安排上,非項目模式教學一般以課本例題或具有理論針對性的案例為主。雖然此類實踐項目具有理論針對性強以及答案可控性高的優點,但由于案例的片面針對性,使實踐項目缺乏實用性。學生學會的只是簡單應用某特定知識點,對于相對復雜且綜合性知識要求高的系統開發依然無從人手,從而產生“學習這門課程做不出任何有用軟件”的挫敗心理,打擊了學習積極性并產生應付考試的不良學習態度。
2.2項目模式教學
針對上述問題,筆者對上海應用技術學院卓越工程師試點班的38名學生采用項目模式的試點教學,期望通過開發具有實際應用價值的小型項目讓學生了解Java程序語言的實際用途,激發學生的興趣并幫助學生明確學習目標,從而改善非項目模式存在的問題,探索適合培養“卓越工程師”的教學模式。
在試點教學開始前,筆者首先需要確定實踐項目的內容。考慮到試點班學生將在最后1學年進入合作企業(塔塔信息技術股份有限公司)接受培訓,因此實踐項目小規模地模擬了該企業的主要開發產品——ERP系統,名為企業貨物進銷存管理系統。該項目涵蓋Java程序語言的主要知識點,包括程序流程控制、數組、類和對象、系統類、輸入輸出系統、GUI圖形界面設計、數據庫操作等。同時,該項目各模塊關聯教材各章節的知識點,也為學生明確了各階段學習的目標。
在課時安排上,為了保障項目開發所需的時間,筆者將理論與實踐課時調整為各占50%;同時,考慮到學生已具備C++、數據庫等先修課程的基礎,因此在理論課中盡量減少純理論知識的講解,著重以項目和程序案例代碼講解為主。目的是讓學生對案例化的理論知識產生直觀的應用感受,進而逐步將代碼中具有特例性的知識內容泛化,歸納為教材中的抽象理論,從而使學生在知識轉化的過程中學到知識,而并非單純地記住知識。
值得注意的是,在試點過程中,筆者發現項目模式的授課計劃不能依照教材中的目錄順序制訂。以試點項目為例,完整的管理系統開發一般從數據庫操作出發創建項目,進而設計系統的模塊類和GUI圖形界面,并在開發過程中使用流程控制和數組等一系列Java程序語言內容。因此,項目模式的教學必須根據項目開發的流程,安排教材中各章節內容的先后授課次序。實踐證明,這樣的授課計劃有利于實踐課程的順利開展,減少學生由于學習枯燥理論而產生的厭煩情緒。根據試點班學生的反饋得知,在實際開發項目的過程中,許多具有創造性的想法是無法通過套用案例實現的。此時,他們會回顧理論課的授課內容并通過教材或互聯網探索適用的理論知識,每當成功運用理論知識實現想法時,都會產生豁然開朗的感受,從而對融會貫通并靈活應用理論知識的重要性有了更深刻的認識。
項目開發需要團隊,更需要積極向上的團隊,不合理的團隊組合會造成學生的依賴性,甚至有些學生根本不動手實踐。在試點中,考慮到同寢室學生交流機會多和生活規律類似的特點,筆者將團隊以寢室為單位進行劃分,同時根據個別學生的要求進行微調。為了調動團隊每位學生的積極性和責任心,筆者采用根據項目模塊輪換組長的機制。每次輪班的組長負責安排各組員的職責和工作,組織討論模塊需求和設計方案,統籌書面的工作計劃、設計方案和模塊代碼。學生在組長和組員角色的輪換中,紛紛感受到作為組長的壓力和責任、作為組員協同合作的重要性以及自身努力對于整個團隊的影響。在每一次的模塊開發中,組員間相互激勵并相互約束,分享成功的喜悅,增進了集體榮譽感以及學習的主觀能動性。
當然,除了學生自身的努力以及團隊的協作外,教師的指導和引領也至關重要。筆者在試點教學過程中發現,對于一些知識點涵蓋量大和邏輯性強的模塊,教師需要啟發學生思路,指導學生運用知識,準備相關的資料并及時與學生進行交流,從而時刻掌握項目開發的進度,避免學生犯不必要的錯誤。此外,在理論授課中,教師應根據項目開發進度對內容作針對性的調整,著重糾正開發過程中出現的錯誤,從理論層面分析錯誤的原因,配以相關案例啟發學生找到正確的解決方案。
項目的考核采用教師模擬客戶的形式,從程序的強壯性、功能性以及友好性等方面對軟件的質量進行評判。從項目的整體質量評判團體分,并參照各模塊中分工和職責的難易度評判個人分,進而得出綜合分。在總評分方面,將項目分納入考核成績中,并將其所占分數比例提高到50%,真正在成績上反映出實踐和理論的并重。
3 項目式Java程序語言教學的關鍵環節
通過實踐探索,筆者可以對本文第1節最后提出的問題作出肯定回答,即實踐結合理論的教學方式可以提升教學效果,但前提是必須把握如下幾個重點環節。
1)實踐項目內容的選取。Java程序語言的應用極為廣泛,案例項目眾多。在項目的選取上必須注重內容的實用性和趣味性、知識的涵蓋量以及開發的周期。選取合理的項目,可以激發學生的興趣,加深學生對理論知識的理解,為學生運用創新思維創造空間。
2)授課計劃和課時的安排。多數情況下,項目模式教學方法需要更長的實踐課時,這就導致理論課時的縮減。因此,在授課計劃的制訂過程中必須精煉理論課的內容。教師可以根據學生對于C++等類似于Java程序語言的課程掌握情況以及理論與實際項目的關聯程度,針對性地篩選授課內容,并在理論課中通過案例教學加深學生對抽象理論的理解,在實踐課中培養學生從項目開發中歸納泛化理論知識的能力。
3)團隊的組織。由于學生之間存在著學習習慣、生活習慣、興趣愛好等差異,團隊的組織應從學生的主觀意向出發,讓關系較親近的學生組成一個團隊,這樣有利于團隊凝聚力的培養。此外,教師可在項目開發過程中創造客觀條件,培養團隊中每位組員的主觀能動性,安排每位學生輪流扮演組長和組員的角色,讓學生感受組長工作的難度,體會組員協同組長工作的重要性,在團隊工作中培養集體榮譽感和責任心。
4)教師的作用。Java程序語言是一門應用性強和理論多樣的課程。學生容易對日漸增多的理論產生厭煩情緒,更容易在屢次失敗的實踐中喪失學習信心。因此,教師需要把控課程的進度,突出每一次授課的重點,避免照本宣科。對于較難的抽象理論,教師需結合趣味性強且實用性高的案例以幫助學生理解。同時,教師必須及時對學生遇到的困難和問題進行指導,可用相似例子或相關理論啟發學生思路,鼓勵學生通過自己的努力解決問題。此外,對于授課的內容,教師應根據學生對于實踐和理論的掌握情況進行調整,尤其應針對學生對理論理解的偏差以及在實踐中出現的錯誤,及時進行分析和糾正。
5)考核的方式。除了傳統的以試卷形式考核學生對于理論知識的掌握情況,實踐項目的完成情況同樣應作為考核重點。實踐項目的考核應合理評估學生的實踐應用能力,讓學生理解實際應用的重要性。教師在考核中需大幅增加實踐成績的比例,在實踐評分中除了需要根據項目的完成情況給出團隊成績外,還需要根據每一位學生階段性的工作量、工作難度、團隊貢獻等,綜合評判學生的個人成績。
4 企業參與的合作人才培養
檢驗上述教學模式好壞的最好方式是讓學生面向社會,接受企業對他們能力的檢驗。“卓越工程師培養計劃”也重點提出學校與企業合作培養的要求。利用企業資源,將企業培養納入教學環節是提高Java程序語言課程質量的關鍵。
以上海應用技術學院的合作企業(塔塔信息技術股份有限公司)為例,該企業以Java作為主要程序開發語言,具有眾多的項目開發小組,是學生檢驗和發揮所學知識的理想平臺。合作過程中,企業培養由專任的培訓人員負責,根據企業項目的需求,對學生Java程序語言的應用能力進行強化培訓,采用面試的方式對學生進行考核。只有符合企業能力要求的學生才能直接進入項目小組進行程序開發,而不符合要求的學生則需要接受進一步的培訓。這種“優勝劣汰”的模式能夠讓學生提前感受到社會的競爭壓力,對于實現學生從畢業到就業的“零過渡”具有很大益處。
此外,與學校的項目開發方式不同,企業化的項目管理涉及一系列的需求文檔、規格說明、測試準則等,具有高度的規范性和嚴謹性。小組中每一位項目組長均由經驗豐富的開發人員擔任,對于組員的管理、工作職能安排、開發進度跟蹤均有獨到之處。學生通過比較自己在校內項目中的管理和開發方式,很容易就能找到自身的不足之處,迅速明確努力的目標和方向。同時,企業中的學生也是員工,需要對自己編寫的程序和工作進度負責。對于無法完成工作安排的學生,企業除了進行培訓指導以外,還必須根據企業的相關條例對其進行相應的處罰。嚴格的企業化管理會給學生造成壓力,但同時也促進學生自學、自律、團隊合作等綜合能力的培養。
筆者從企業的反饋中得知,相較于傳統教學模式培養的學生,新教學模式培養的學生能夠迅速理解開發項目的需求,掌握相關知識的應用,明確自身在團隊中的職責,完成項目開發的任務。更可喜的是,多名學生在完成培訓后直接被合作企業聘用,這是對學生能力最有力的證明,更是對教學模式改進效果的肯定。
5 結語
通過對項目式教學以及校企合作培養的探索與實踐,筆者總結出權衡理論與實踐的教學模式,有效地提高了學生的工程與創新能力。上海應用技術學院將軟件工程專業列為“卓越工程師培養計劃”的首批試點專業,將積極深化這一新的教學模式,通過加強與企業的合作,進一步完善這一教學模式中的關鍵環節,從而更好地培養創新工程能力強和適應社會發展需求的高質量人才。
(編輯:宋文婷)