朱紅梅 孫 未 張廣梅 李蔚妍 李 濱
1.山東農業大學信息科學與工程學院 山東泰安 271000
2.山東農業大學生命科學學院 山東泰安 271000
面向對象程序設計是計算機科學與技術、網絡工程、物聯網工程、大數據、信息管理與信息系統等專業的必修課,課程設計作為集中實踐性環節之一,是面向對象程序設計課程學習完后進行的綜合練習。以培養學生用面向對象的理念解決實際問題的程序設計能力為目標,加深對面向對象程序設計理論和基本知識的理解,提高綜合應用能力。長期以來,程序設計類課程教學強調語法知識,輕視分析、設計和工程經驗的積累,課程設計通常由教師給出多個選題供學生選擇實現,忽視團隊合作能力、創新能力的培養。實踐教學環節設計缺乏系統、科學的規劃[1]。因此,改進面向對象程序設計課程設計的教學內容,探索課程設計案例的設置原則與實施方案,培養學生的工程能力,成了當前面向對象程序設計課程設計教學改革中亟待解決的問題。
我校以CDIO工程教育模式[2]為指導思想,改革面向對象程序設計課程設計的教學模式,探索面向對象程序設計課程設計案例的設置原則,構建了三階段循序漸進的項目體系教學模式,提出了全員參與的開放式考核方式。事實證明,在具有較強工程背景與應用價值的實踐中,學生主動學習的意識與能力增強,邏輯思維能力、團隊合作能力、創新能力提升,積累了必要的開發經驗,提高了工程能力。
CDIO工程教育模式是近年來國際工程教育改革的最新成果。2000年,麻省理工學院和瑞典皇家工學院等四所大學組成的跨國研究組經過四年的探索研究,創立了CDIO工程教育理念,它以產品的研發、運行生命周期—構思Conceive、設計Design、實現Implement和運作Operate為載體,讓學生以實踐的、主動的、課程之間有機聯系的方式學習工程[2]。國內外的實踐證明,CDIO教學模式適合大學工科教育教學過程的各個環節。
運用CDIO教學模式,結合面向對象程序設計課程設計的特點,教師對課程設計的內容進行構思、設計、實施、運作[3];學生學習如何構思、設計、實施、運作一個相對復雜和完整的系統。CDIO創新工程教育模式的最大特點是倡導問題驅動,注重實踐性教學和實際動手能力[4]。基于CDIO的面向對象程序設計課程設計改革必須解決兩個問題:通過課程設計,學生應該掌握哪些知識、技能以及意識體系?如何幫助學生更好地掌握這些技能?本文借鑒CDIO工程教育模式的基本思想,結合面向對象程序設計課程設計的特點,研究課程設計案例的設置原則,構建適合面向對象程序設計課程設計的教學模式和考核方式。
隨著社會信息化程度的提高,計算機的應用已經滲透到各個行業與領域,選取真實的并得到廣泛使用的軟件應用作為案例,有助于學生了解計算機軟件的應用現狀,激發學生的探究欲望,提高學習興趣,積累領域經驗。為了避免浪費時間學習相關的領域知識,盡量選取貼近學生水平和專業且易于理解的領域及其應用。盡量選擇多種不同類型的應用系統,讓學生了解它們的設計與開發過程,幫助開拓學生的視野,活躍思維,積累多種不同類型應用系統的設計開發經驗[5]。
案例要能夠清晰地、模塊化地描述功能,且能夠通過已掌握的知識及其擴展實現,有益于學生工程能力的培養,提高學生的分析綜合能力、積累程序設計和調試經驗,培養鉆研精神。
為保證教學的有效性,必須選取難度適中的案例,才能避免由于案例太難導致的教師精心設計而學生不明所以;或者反之,由于案例太簡單而無法激發學生的探索欲和求知欲,學生即使完成也會覺得索然無味。所以,必須選取難度適中易于理解的案例,讓學生有參與討論的熱情,點燃學生的求知欲望。在同一個案例中,兼顧學生專業和個體差異,既有基礎內容,也有進階內容,使不同層次、不同水平的學生都可以根據自己的能力實現一部分功能,使學生都有不同程度的收獲,建立面對挑戰的自信。
選取或設計的案例應該是動態的,可以不斷地提出新問題,對功能進行改進、優化與擴展。初學面向對象程序設計課程時,學生的專業知識有限,計算思維還沒有建立起來,對于原型系統應該實現的功能和實現方法了解比較少,隨著專業知識的不斷充實和計算思維的逐漸建立,工程能力有了提高,應選取或設計一些在后續實踐環節中可以進一步完善和擴充的原型系統。
軟件的開發過程具有嚴格的規范性和程序性。教師在教學實踐中應注意培養學生的規范意識與習慣,提高學生的職業素養和能力。在選取與設計案例的過程中,應選取各類文檔齊全、編碼規范的案例[6],并按照軟件工程的規范過程分析與示范,雖然此時的大多數學生尚未學習軟件工程,但是也要引導學生有意識地進行需求分析、設計、測試,充分理解項目的功能、性能、可靠性等具體要求,理解系統架構、功能模塊設計,了解測試條件的設置,數據的選擇等。要求學生按照規范的流程進行設計開發,并在提交的文檔中體現這種規范性。
遵循面向對象程序設計課程設計案例的設計原則,整合教學方案與定位、實踐內容和考核方式,構建三階段循序漸進的項目體系教學模式。
由于學生首次接觸面向對象程序設計的相對獨立、完整的應用,為了幫助學生更好地體驗軟件設計開發的過程,便于學生進一步理解與體驗相關知識,教師利用示范教學案例,按照軟件開發的規范流程,用清晰的、易于學生接受的語言表達出設計開發分析過程,考慮到學生的不同水平,對一些比較常用的功能,可以給予實現。除程序設計的集成開發環境外,還可以借助一些主流工具,如ProcessOn在線協作作圖工具,進行案例的設計,為學生今后進一步的學習和設計打下基礎。
教師提出幾個不同的案例要求,學生選擇其中的一個進行詳細分析和實現,引導與鼓勵學生模仿教師的工程設計開發示范過程,按照前文的軟件開發流程展開,注意面向對象程序設計語言的語法規則與編程規范,并在案例的展開過程中,引導學生主動探究,鼓勵學生站在不同的角度設計不同的方案;如果某功能模塊有多種不同的實現方案,允許多種形式的實現,并引入典型的編程模式,則應分析比較不同實現方案的特點,發現其優缺點,分析各自適合的情況。及時發現學生的編程錯誤,及時總結,分析錯誤出現的原因,討論改正錯誤的方法。在案例完成后,根據選題對學生完成的設計分別分組,在組內從功能實現、實用性、易用性、設計文檔的規范性等多方面展開討論評價,這種方式可保證全員參與,充分調動學生的主動性,使學生知己知彼,通過比較發現設計的優、缺點,實現了優勢互補,加深對程序設計方法的理解,激發學生的主動學習意識和參與意識。
經過以上兩步的實踐,學生體驗到自己會做什么,能做什么。本步驟中,學生以小組為單位,組內分工協作,組長充當項目經理,制訂項目進度,分配與協調組員工作,團隊內的學生基于案例設計原則,結合教師示范設計,根據教師要求對已實現的案例進行充分交流,提出問題,針對案例的新需求,展開設計、分析和實現。在這個過程中,要注重鼓勵學生獨立思考,發現問題,討論解決問題的方法,針對已有應用實現新的功能。提高學生創造性地綜合運用學科知識的能力,激發學生精益求精的學習精神。
考核評價是教學過程的基本環節,是檢驗教學質量的重要手段。以往面向對象程序設計課程設計的考核方式主要采用的是教師隨堂檢查學生的實驗過程、運行結果以及編寫的課程設計實驗報告。評分辦法一般為指導教師根據學生完成任務的情況、課程設計報告的質量和課程設計過程中的學習、工作態度綜合打分,多數學生只關心自己的得分結果,而對為什么有那樣的得分不感興趣。實際上,這與CDIO工程教育本質并不完全吻合,在課程考核上也要體現CDIO模式所倡導的在工程基礎知識、個人能力、團隊合作能力和工程系統能力四個層面上進行綜合培養,提高學生在課程考核中的參與性和主動性,把學生由被評判變成主動評判,課程的考核也由教師主導的考核轉變為學生和團隊作品的展示和互相評判,在評判打分的過程中互相學習、比較、發現、借鑒和提高。學生的成績由兩部分構成:個人成績和團隊成績,從而把成績的評定也變成比較、學習、交流、改進和提高的過程。
表1是我校近三年來通過三階段循序漸進的面向對象程序設計課程設計進行教學的效果反饋表,從中可以看出,絕大多數學生認為課程對自己能力的培養有一定幫助,肯定了教學效果。

表1 三階段循序漸進的面向對象程序設計課程設計教學效果反饋表
改革后的面向對象程序設計課程設計能夠深層激發學生的學習興趣,進而有效提高學生的學習效率,多數學生通過課程設計可以將所學的知識點融會貫通,加深理解,提高知識的綜合運用能力,學生在參與子項目的實踐過程中,可以獲得項目管理和小組合作等多方面的實踐經驗。但這種形式也存在一些不足:第一,由于學生的創新性選題多樣,對教師的知識面和項目實踐經驗也提出了更高的要求,增加了指導負擔,也增加了很多工作量;第二,分組實驗過程中,教師無法顧及全部學生,部分不善交流的學生易被忽略;第三,分組合作的實驗使一部分程序設計能力差、學習主動性不夠的學生參與度低。下一步,將著力于改進和豐富案例,探索新的多因素加權的成績評價體系,使學生的應用、實踐和創新能力得到符合職業需求的鍛煉。