許德武
(浙江師范大學 經(jīng)濟與管理學院,浙江 金華321004)
現(xiàn)在計算機專業(yè)的軟件開發(fā)類人才的培養(yǎng)存在著嚴重的缺陷,一方面是學生感覺學習的課程是孤立的,與其他課程關聯(lián)性不強,即使學習了好幾門程序設計類課程也沒有學會編程,遇到一個開發(fā)管理信息系統(tǒng)的問題還是束手無策,不能很好的解決[1-3]。另一方面是用人單位感覺應屆畢業(yè)生沒有編程能力、更沒有做項目的經(jīng)驗,如果招聘應屆生,學生上手很慢,還需要對其再花費額外的培訓成本,所以只喜歡招聘有工作經(jīng)驗的往屆畢業(yè)生,這也是應屆畢業(yè)生很難就業(yè)的主要原因之一。面對這種局面,作為教育工作者,我們需要深刻的反思在教育實施過程中存在的種種問題:為什么我們的教學內(nèi)容滯后于社會上用人單位的需求?為什么學生認真地學習了一門課,但最后卻只是記住了一些語法等內(nèi)容,不知道能具體做什么?為什么學生學習了好幾種程序設計語言和數(shù)據(jù)庫,甚至是畢業(yè)了,還是不會開發(fā)小型管理信息系統(tǒng)?……面對種種的問題,需要對現(xiàn)行的計算機專業(yè)的教學思路進行調(diào)整。本文所說的“項目”均是指用計算機編程語言開發(fā)的“計算機軟件”[4-5]。
分析目前的教學現(xiàn)狀,存在的問題很多,造成這種局面的原因也很多,例如很多教師是從某所高校畢業(yè)就直接進入高校教書,雖然學歷很高,理論水平也很好,但是沒有在公司工作過的經(jīng)歷,自然開發(fā)“系統(tǒng)”的經(jīng)驗也不足;還有就是實驗教師的教學工作量計算不合理,老師設計的實驗題目缺乏實用性等等,究其原因很重要的一點是大部分教師“重理論教學,輕實驗教學”導致的,忽略了對學生動手能力的培養(yǎng)。要加強學生的動手能力,要從加強實驗教學入手,讓學生成為課堂的主角,教師只起到輔助、提醒的作用。為了解決這個問題,我們一方面建議增加實驗課的課時,另一方面需要對實驗內(nèi)容進行調(diào)整。現(xiàn)在,很多身處教學一線的老師提出了新的教學改革方案,例如有的老師提出向高年級的學生設計綜合性實驗,即先設計出一個較大的系統(tǒng)(即項目),再根據(jù)教學內(nèi)容把這個項目分解成幾個相應的模塊,根據(jù)系統(tǒng)前后臺的功能把相關的一門或幾門課程的知識點組合起來講解,學生就會感到這種講課方式具有一定的實用性和趣味性,學生就會主動學習,達到事半功倍的效果[6-7]。但是這個方法也存在一定的局限性,即在低年級的學生中沒辦法展開。也有老師在實驗中引入某些實用性更強的實例,再根據(jù)這些實例來講解相應知識點,促進培養(yǎng)學生解決現(xiàn)實生活中的實際問題的能力和興趣,但是這種方法存在不能解決的致命弱點,那就是各個小案例之間沒有關聯(lián),學生對各個知識點缺乏一個整體的認識,所以“項目分解教學法”就能很好地解決這一問題,它可以針對某一門課進行理論教學和實驗教學內(nèi)容的設計,并以此為依據(jù)展開教學。
所謂“項目分解教學法”就是教師在設計理論教學和實驗教學的時候要針對各門程序設計類課程的教學內(nèi)容和重點,每門課的理論教學案例和實驗內(nèi)容就針對一個大的項目展開,設計的項目要有針對性和整體性,再根據(jù)每周的知識點,把這個項目分解成各個小的單元,雖然看似每周的教學內(nèi)容和實驗內(nèi)容是孤立的,實際上卻存在一定的內(nèi)在的關聯(lián)。教師在安排每周的教學內(nèi)容和實驗內(nèi)容的時候都讓學生有針對性的練習,一個學期下來,通過最后2 ~3 次實驗的整合,把平時完成的實驗內(nèi)容進行有效的整合、拼裝,最后完成一個較大的項目。通過這種方法的實驗練習,能夠使學生對程序設計語言的學習重心不再僅僅局限于簡單的語法學習,而是將注意力轉移到分析問題、解決問題的能力上來,提高項目開發(fā)的能動性和積極性,增加項目開發(fā)的經(jīng)驗[8]。
根據(jù)我院的課程設置,程序設計類課程主要包括ASP.Net 應用程序開發(fā)、JavaEE 高級編程、網(wǎng)站規(guī)劃與Web 應用程序設計、VB 程序設計、高級語言程序設計、面向對象程序設計——C + +、面向對象程序設計——Java、數(shù)據(jù)庫原理及應用、網(wǎng)絡數(shù)據(jù)庫技術等課程。由于Java 語言的發(fā)展趨勢非常迅猛,幾乎成了“網(wǎng)絡編程的世界語”,應用范圍也越來越廣,同時根據(jù)實際的教學需求、實踐的方便及學生的要求,我選擇“面向對象程序設計——Java”作為本項目的具體研究對象,舉兩個實驗教學項目的例子進行分解,供學生在上機實驗的時候練習。
按照以往的教學經(jīng)驗,首先介紹Java 的集成開發(fā)環(huán)境、變量定義及表達式,再介紹三種流程控制語句及常用算法,介紹一些面向對象的程序設計方面的內(nèi)容,然后再介紹流和文件系統(tǒng)、圖形用戶界面設計,最后介紹異常處理和多線程。如果是高年級的學生可以適當增加數(shù)據(jù)庫編程、網(wǎng)絡編程和多媒體編程等高級編程方面的內(nèi)容。如果按照這套流程講下來,學生會覺得和學其他程序設計語言一樣,沒什么新意,老師總是圍繞著概念、算法反復舉例子,在學生看來也只是對這些理論進行驗證,但是學這些東西到底有什么用呢?學生會覺得困惑[9]。如果持續(xù)維持這種狀態(tài),學生很快會失去興趣,繼而失去了學習的動力。
由于“項目驅動”的教學方式相對傳統(tǒng)教學而言更具備系統(tǒng)化,個別知識點甚至打亂了原有教材的知識體系,解決這個問題的有效辦法就是要在構建好的案例程序庫中選取相應的案例,并根據(jù)該案例來設計相關的任務,并與學生共同探討學習。所以為了讓學生更好地掌握教材上的知識點,上理論課的時候可以講解一些“小案例”來輔助學生融會貫通課本上的基礎知識。在日常的實驗教學中,根據(jù)各章的內(nèi)容,建立了如表1 的案例庫,以供學生上機實驗時使用。該案例庫首先圍繞著“五子棋游戲”展開,在此基礎上增加一些游戲中沒有涉及到的“小案例”。經(jīng)過這樣一門課程的一個學期的上機實驗練習,學生基本掌握了“五子棋游戲”的開發(fā),會有一定的成就感[10]。
采用“項目分解法”進行教學,首先就是要培養(yǎng)學生的興趣,讓學生對學完本門課程能實現(xiàn)一個什么樣的項目有一個整體了解,從而感覺學有所用。然后具體分析調(diào)用相應的模塊實現(xiàn)了什么功能?主要用到的了教程的什么知識點?是如何實現(xiàn)的?最后回到教材對一般的語法和規(guī)則應該怎么做?再把拆分好的模塊與書中的章節(jié)進行緊密的銜接,進行講解。這樣的方法可以讓學生不再覺得程序設計的枯燥,知道這些知識將有什么具體的作用,所以更容易讓學生接受,讓學生明白通過這門課程的學習可以做出什么樣的系統(tǒng)。本論文提出在“面向對象程序設計——Java”教學過程中采用的“項目分解教學法”,所強調(diào)的是在本課程的整個實踐教學過程中只設置一個“項目”,這就對“項目”的質(zhì)量要求更高,要求該案例必須幾乎能夠包含全部主要知識點。同時,由于實驗教學過程總是由淺入深、循序漸進的,所以該案例的實施過程還應該能夠按照實驗教學內(nèi)容進行合理的劃分,使之對應于每章甚至每節(jié)課的內(nèi)容,從而使學生達到邊學邊練的目的[11-13]。

表1 章-知識點-項目案例庫對照表
根據(jù)Java 課程的特點和實驗教學大綱的要求,我們選擇難度適中、應用非常廣泛的“管理信息系統(tǒng)”類項目為綜合案例,講解用“面向對象程序設計——Java”對系統(tǒng)進行設計、分解、知識講授、實驗驗證的全過程。在此,以“商品進銷存管理系統(tǒng)”為邏輯主線設計“綜合案例”,該“綜合案例”貫穿于教學過程的始終,含有若干典型案例與教學內(nèi)容相匹配。我們再根據(jù)各章的知識點把本系統(tǒng)分解成以下幾個功能模塊,分別為用戶登錄、注冊、修改與查詢、統(tǒng)計、信息批量輸入輸出、網(wǎng)絡聊天、幫助與退出等。每個教學單元與其功能對應的具體安排如表2 所示。
按照表1 和表2 對兩個完整的“項目”進行“分解”,再根據(jù)每個“子項目”的難易程度進行課時上的安排,而且要與上理論課的教學進度、教學內(nèi)容要保持一致,所以這兩方面的步調(diào)控制還是有些難度的,這就要求教師在進行“項目分解”的時候要對理論課和實驗課所用的“項目”都有很好的把握,否則很容易導致教學進度和實驗進度不統(tǒng)一的情況出現(xiàn),最后適得其反[14-15]。根據(jù)這個方法進行推廣,逐步把程序設計類課程都做成首先設計綜合案例,再根據(jù)章節(jié)、知識點進行分解的教學模式。使學生每學完一門課就能做一個“項目”出來,項目的大小可以根據(jù)學生的年紀高低、專業(yè)水平來定,水平高的同學可以逐步完善和提高項目的實用性以及規(guī)模。
“項目分解教學法”的基本思路是提出問題、分解問題、掌握知識點、解決問題,符合學生的認知規(guī)律,對于提高學生的學習效率有很大的幫助。本項目以“面向對象程序設計——Java”為研究對象,經(jīng)過教師的教學反饋、學生調(diào)查,我們需要逐步完善“項目”的規(guī)模,項目太大、太小,功能太多、太少,涉及的知識點太深、太淺都不合適。同時,在“項目”的分解問題上也多下功夫,否則不適合每周、每章的教學內(nèi)容,教學效果得不到保障,而且如果上理論課和實驗課是兩個甚至是多個“項目”,那么更要注意提高這些“項目”的分解質(zhì)量,要符合實驗教學進度和實驗教學大綱的要求,做到協(xié)調(diào)一致[16-17]。

表2 項目模塊分解-知識點對應表
教師在“項目分解教學法”執(zhí)行的過程中首先要充分了解學生所具備的專業(yè)知識,例如學習了哪些前序課程?后續(xù)課程有哪些?能完成多大規(guī)模的“項目”等等。教師要對“項目”開發(fā)有很深的功底,能夠很準確的把握項目的難度,對學生在實驗過程中遇到不能解決的問題很快幫助解決,所以這種教學方式雖然表面上看學生參與動手研發(fā)的部分很多,但是實際上對教師的專業(yè)素質(zhì)要求更高,需要教師有很廣博的專業(yè)知識和大量的項目開發(fā)經(jīng)驗,同時也要有大量的“項目”積累組成項目庫,能夠提供多個“項目”供學生選擇。這就要求教師首先要提高自己的專業(yè)技能和軟件開發(fā)方面的技巧,不能只掌握書本上的語法知識,要具備一定的實際開發(fā)經(jīng)驗,所以這種教學方法不但沒有減輕教師的工作量,反而提高了對教師的要求。而且在每個“子項目”開發(fā)的過程中學生可以組成開發(fā)小組,互相討論、設計教師分派的任務,由基礎好、水平高的同學帶動編程能力相對較弱的同學,形成團隊,提高合作意識和團隊精神,增進同學之間的友誼。
本研究對“項目分解法”教學運用于程序設計類課程的實驗教學方面進行深入的探討,總結出程序設計類課程教學中運用案例教學的特點和具體操作方法,以此給能夠運用“項目分解法”教學的相關學科以啟示,通過這一研究來培養(yǎng)學生分析問題的能力,加深對以前學習的知識的理解,從而提高學生做大項目的能力,增加成就感,提高學習興趣,增加就業(yè)競爭力。
[1] 馬玉潔.基于自主學習的計算機基礎教學改革研究[J]. 商丘師范學院學報,2011(3):119-122,125.
[2] 張 琳. 大學計算機基礎課程教學模式研究[J]. 計算機教育,2009(7):88-90.
[3] 馮博琴.計算機基礎教育新階段的教學改革研究[[J].中國大學教學,2004(9):7-9.
[4] 高麗平,劉 姝.大學計算機基礎課程體系結構改革及分層次教學[J].計算機教育,2011(16):44-47.
[5] 劉 雙.“案例教學”若干問題的辨析[J]. 教學與管理,2003(6):31-32.
[6] 解永剛.關于VisualFoxPro 的案例教學方法[J].昆明大學學報,2003(1):59-60.
[7] 黃艷峰.在Java 語言中實施“案例教學”的研究與探索[J].電腦知識與技術,2010,6(5):1148-1149.
[8] 張 昕. 案例驅動教學模式在《數(shù)據(jù)庫原理》實踐教學中的運用[J].電腦知識與技術,2008,3(6):1246-1247.
[9] 熊春榮.“C 語言程序設計”課程案例驅動教學模式的研究與實踐[J],玉林師范學院學報(自然科學),2010,31(5):119-121.
[10] 肖 明. 案例教學法在“C + + 語言程序設計”教學中的應用[J].計算機教育,2010(6):83-86.
[11] 雷東升,李揮劍.《C 語言程序設計》課程案例式教學模式的探討[J].北京交通管理干部學院學報,2006,16(4):38-40.
[12] 張民杰.案例教學法——理論與實務[M]. 北京:九州出版社,2006.
[13] 余文森,林高明.經(jīng)典教學法50 例[M].福州:福建教育出版社,2010.
[14] 鄭金洲.案例教學指南[M].上海:華東師范大學出版社,2000.
[15] 孫維煌,劉 杰.C#案例開發(fā)[M].北京:中國水利水電出版社,2005.
[16] 徐延平.案例教學及其運用[D].長沙:湖南師范大學,2002.
[17] 王 新. 大學計算機基礎課程教學改革[J]. 計算機教育,2008(8):106-107.