孫麗 張利鋒 岳峻
摘要:針對目前Java教學中以知識點為線索的教學模式導致學生解決實際問題的能力不足的情況,介紹將項目驅動的研究性學習理念引入Java課程教學中的實施過程和評價方法,闡明項目驅動教學模式對軟件工程能力培養(yǎng)的顯著提高作用。
關鍵詞:Java程序設計;項目驅動;研究性學習;教學改革
0 引言
目前,高校計算機編程人才的培養(yǎng)模式與軟件企業(yè)對開發(fā)人員的技能需求之間尚存在一定的差距。軟件工程類應屆畢業(yè)生的實際動手和編程能力普遍不能滿足企業(yè)需要,企業(yè)更希望畢業(yè)生能立刻參與到項目中為企業(yè)帶來實際的生產力,而不愿意花額外的培訓成本,所以他們對有過軟件設計、開發(fā)經驗的畢業(yè)生較為青睞。導致這一問題的原因是多方面的,但教材和教學方法無疑是最為重要的兩個方面。已有的教材往往根據一個個孤立的知識點設計例題和練習題,導致學生在學習完課程后雖然掌握了各個知識點的作用,卻不能很好地理解它們的應用場景,無法將知識點融會貫通并應用到實際問題的解決中。這些知識點如同一個個齒輪,學生即使掌握了每個齒輪的作用,但仍然無法根據需求將其裝配成用戶需要的機器,而且,Java程序設計課程也一直沿用傳統(tǒng)的講授模式。要改變這種局面,就必須從課程設計和教學方法人手,以實際的項目為牽引,統(tǒng)籌各個知識點,提高學生的學習興趣、學習主動性和知識的應用能力。
1 研究性教學的關鍵是師生角色的轉變
軟件開發(fā)是一項充滿挑戰(zhàn)的創(chuàng)造性勞動,不斷地主動學習是從事軟件開發(fā)人員的基本能力和素質,而研究性教學正是培養(yǎng)學生這種自主學習能力的理想方法。當然,研究性學習給學生帶來了學習的樂趣、動力,也帶來了挑戰(zhàn)。要實現研究性教學,就必須實現角色的轉變,充分認識師生合作的重要性。長期以來,在教與學、師與生的關系中,始終存在這樣的誤區(qū):課堂教學布局以教師為中心,學生思維的培養(yǎng)是同向思維,學生的學習方式也是接受式,很少有體驗式學習,更沒有研究式學習。而學生也慣性地認為,老師先生于我,必先學于我,凡疑問只問老師。而從學習的走向和趨勢看:獲得知識本身已經不是最重要的了,重要的是如何獲得知識,這已上升為教師教學的出發(fā)點和最高目標。在學生思維方式的培養(yǎng)上,強調學習的平等性,注重激發(fā)學生的主動性思維,鼓勵學生質疑和刨根問底。教師給出問題,由學生與教師共同找出問題的解決方案而不是由教師提供現成的答案。教師與學生是合作伙伴的關系,是項目經理與程序員的關系,也是用戶和軟件工程師的關系。
綜上,研究性教學模式下,Java程序設計課程中教師的主要任務是:設計難度適中、有實際應用背景的開發(fā)項目;將項目的開發(fā)過程投影到課程的主要知識點中;幫助學生理清項目需求和解決思路,整合各個知識點中的實驗內容,形成項目框架;幫助學生分析可能遇到的問題,并共同討論解決的方案,建立解決問題的信心;向學生推薦相關的書刊、網址和論壇等;為學生做好各項服務,包括知識上的、思想上的和實踐上的。因此,研究性教學對教師的素質及能力的要求也相應提高。教師應在學生學習及項目開發(fā)的過程中當好指導者、激勵者和引路人的角色,這就要求教師應該具有一定的項目開發(fā)經驗,能夠從項目經理的角度對項目進行總體規(guī)劃;從程序員的角度對程序進行具體分析與評價;從用戶的角度來客觀評價軟件的人性化與實用性程度。否則,當遇到軟件開發(fā)的實際問題時將難以做到正確的指導。
2 Java課程研究性教學的實施
2.1 建設學習資源倉庫,提供多渠道知識來源
研究性教學的形式與內容是開放的。因此,優(yōu)質的教學資源是實施研究性教學的重要保障,筆者持續(xù)跟蹤Java語言發(fā)展的最新動態(tài),不斷豐富和補充Java課程的教學資源,以提供研究性教學需要的資料和信息。幾年來筆者建設了一個資源相對豐富的FTP服務器,為學生提供各種學習資源,包括各種參考書、視頻講解、項目文檔、問答記錄等,并推薦相關的著名論壇。
2.2 精心設計教學內容,項目驅動不斷演進
Java語言課程的學習重點是突出實際動手解決問題的能力,如果學生在學習過程中帶著具體問題、具體任務,那么學生的學習目的就很明確,知識點的應用場景就能得到實際的操練。因此,在教學過程中,筆者轉變了教學的總體思路,整理出切合實際的典型案例和項目,并使之成為貫穿整個教學的一條主線。這些案例都具有較強的實際應用價值,能夠模擬真實的環(huán)境,學生在分析案例、解決問題的過程中,會自然地與所學知識進行融合,而解決案例中較為復雜的問題,能夠突破學生原有的知識范圍,拓寬學生的知識領域,從而使學生學會綜合運用知識靈活地處理各種各樣的問題,提高項目的實際運作能力。這樣使學生在不離開學校的情況下能在短期內接觸并學習到一些不同類型的實際問題,以充實實踐經驗。
2.3 項目分解,迭代整合
Java語言課程不是單獨設課,其傳統(tǒng)實驗教學模式是根據課程安排,分章節(jié)、分知識點設計一些基礎性較強、突出驗證語言特性的實驗。這樣的實驗對鞏固知識點的掌握有利,但內容往往缺乏靈感,思維較單一,容易遏制學生們的創(chuàng)新思維。筆者采用項目為中心的實驗方式,把知識點融入到項目中,將項目分解到知識點的實驗中,這樣既解決了項目集中開發(fā)時間不足的問題,又有利于培養(yǎng)學生的大局觀,能使其從整體上把握系統(tǒng)的構建和設計,了解Java這一特定語言的組成規(guī)則和運轉規(guī)則,實現業(yè)務“零距離”,提高其工程性意識及工程性設計能力。隨著課程的進行,筆者指導學生不斷整合各個知識點的實驗,構建項目的多個版本,并持續(xù)融合新的實驗點,豐富項目的功能。根據Java程序設計課程的特點和實際情況,筆者在完成面向對象基礎知識之后,就開始了項目的實施過程。通過系統(tǒng)性的Java實驗,學生更容易領悟軟件工程的思想,也更容易獨立完成項目的設計與開發(fā)。
由于新設計的項目比單純實驗中的項目規(guī)模大得多,學生一時難以理解和接受,所以要較好地把握課堂實訓項目的難度,并對這些項目進行合理的分解,循序漸進地向學生講述需求分析、軟件設計及軟件開發(fā)過程。下面是一個項目設計的實例。endprint
項目名稱:即時通訊工具MyQQ。
項目需求描述:設計一個學校內部使用的簡易的通信工具MyQQ。
要求實現如下功能:人員列表(人員信息)已經存在于文件friends.txt中;人員有2種類型:學生、老師;他們分別顯示不同的信息,學生的信息有姓名、班級、電話,而老師的信息有姓名、所授課程、上課地點;文件保存格式:學生為人員類型、姓名、班級、電話,老師為人員類型、姓名、所授課程、上課地點。能發(fā)送消息,接收消息;能夠同時與多人聊天。
表1給出了項目MyQQ的知識點分解,而圖1給出了對應的類圖結構,在項目推進的過程中,要求學生自己繪制順序圖和交互圖,以便更清楚地理解項目中各個部分的協(xié)同工作過程。
以項目為中心的實驗教學在操作過程中會對學生進行多角度的培訓,包括項目可行性分析、需求分析、系統(tǒng)設計或是測試維護等方面能力的培養(yǎng)。這也在無形之中加深了學生在計算機程序設計中的軟件工程意識,將對日后企業(yè)項目的編碼設計產生積極的影響。
2.4 以小組為單位進行項目開發(fā)和評價
每個學生獨立完成項目雖然能鍛煉學生獨立承擔項目的能力,但極大地增加了教師的工作量。同時,不同的學生,能力高低不同,學習進度不同,所獲資源也不同,因此,對知識的認識層次也有差別。筆者將若干名學生分組,讓其協(xié)作完成一個項目,這樣,不僅可加強學生之間的交流、提高項目實施的成功率,還可增強學生的自信心。教學中筆者發(fā)現,通過學生之間的交流、溝通和爭議,不但能使資源共享,還能產生新的教育資源。因為,優(yōu)秀學生靈敏的悟性和良好的學習技巧,不同層次的學生提出的各種問題,學生的不同智慧,不同的思維方式等都可以成為小組內相互共享的學習資源。
在項目題目確定后,根據學生的選題情況進行分組,每組6~8人。然后,以小組分工協(xié)作的方式由組長協(xié)調方案(比如代碼編寫風格、注釋風格、版本控制等),并控制項目進度和完成質量。對于每個部分,組內同學先按照自己的理解提出設計方案,經過組內討論后再編碼,這樣可以避免重復工作。
當任務基本完成時,就進入結題評價階段。各小組在教師的指導下匯總整理項目資料,并制作演示文稿,準備項目展示和答辯。指導教師對研究成果進行評價,總的原則是肯定和鼓勵為主,重過程輕結果,并對項目的成果進行答辯,根據項目各個環(huán)節(jié)的完成情況進行打分。項目評價表如表2所示。
答辯的過程同時也是相互交流的過程,“獨學而無友,則孤陋而寡聞”。學生分享項目開發(fā)中遇到的困難和解決方案,可以鍛煉學生的文案組織能力和表達能力。通過相互交流,一方面通過展示項目成果形成競爭氛圍,另一方面也擴大了大家的知識面,增加了解決問題的經驗??梢哉f,持續(xù)不斷的交流是研究性學習一個必不可少的環(huán)節(jié),也是項目成功的重要保障。
2.5 建立以過程為中心的課程考核方式
以前,Java程序設計的考試是以閉卷的方式進行,以最后的試卷分來評定學生的期末成績,缺乏實驗教學的考核標準。這樣的分數只能反映出學生對知識點的掌握程度,卻不能很好地體現學生實際的編程能力和對問題的分析能力。所以,近兩年筆者一直在探索Java課程的考核方式,也取得了一些成效。將學生研究課題的完成質量、項目答辯成績、實驗完成情況作為考核的重點,以項目答辯結合平時實驗的考核情況代替閉卷考試,不但可以引導學生重視編程實踐,而且提高了學生學習的積極性和主動性。
3 結語
項目驅動的研究性教學是一個教學相長的過程,通過多輪教學實踐的摸索,筆者發(fā)現學生在層次上、知識的掌握度上、編程能力的高低上大相徑庭,所以項目難度和復雜度的選擇和設計要有一定的區(qū)分。同時,在項目推進的過程中,教師要扮演好項目經理的角色,給有潛力的學生增加需求,進一步完善項目。對于進度不同、項目難易程度不同,在考核時需要說明,在考核成績上要有所體現,激發(fā)優(yōu)秀學生的潛力并塑造學生的成就感。
當然,項目型驅動的實驗教學增大了教師的工作量,對教師的工程實踐能力也提出了更高的要求。在具體實施過程中,項目案例可以進行循序漸進的設計,不斷積累和完善。在實施過程中筆者也驚喜地發(fā)現,研究性教學激發(fā)了學生的求知熱情,不少同學提出了一些很有價值的想法甚至建議,展現了很強的創(chuàng)造性。他們在參與開發(fā)過程中查閱資料、自學有關理論、請教高年級同學,這表明學生渴望自主探索、自主發(fā)展,也渴望表達個性。另一方面,學生熱情和積極的參與也極大地推動了教師的教學熱情,增強了教師的改革意識和教學的創(chuàng)造性。因此,筆者認為,Java程序設計的項目驅動教學方法是一次成功的嘗試,在今后的教學實踐中需不斷完善,不斷增加新的項目案例,讓更多的學生從研究型教學實踐中獲益。
參考文獻:
[1]金義富,胡文泰,楊志華.地方院校計算機類專業(yè)人才培養(yǎng)模式探討[J].湛江師范學院學報,2001,22(6):100-103.
[2]王素文.大學教學中的研究性學習:特點與模式[J].教育發(fā)展研究,2007(12):29-32.
[3]屈波,程哲,馬忠.基于自主性學習和研究性教學的本科教學模式的研究與實踐[J].中國高教研究,2011(4):89-91.
[4]朱小英.Java實驗教學改革[J].考試周刊,2008(13):2-3.
[5]余遠富,王慶仁.高校研究性教學評價體系的構建[J].高等工程教育研究,2011(6):111-115.
(編輯:孫怡銘)endprint