許德武
(浙江師范大學(xué) 經(jīng)濟(jì)與管理學(xué)院,浙江 金華321004)
現(xiàn)在計算機(jī)專業(yè)的軟件開發(fā)類人才的培養(yǎng)存在著嚴(yán)重的缺陷,一方面是學(xué)生感覺學(xué)習(xí)的課程是孤立的,與其他課程關(guān)聯(lián)性不強(qiáng),即使學(xué)習(xí)了好幾門程序設(shè)計類課程也沒有學(xué)會編程,遇到一個開發(fā)管理信息系統(tǒng)的問題還是束手無策,不能很好的解決[1-3]。另一方面是用人單位感覺應(yīng)屆畢業(yè)生沒有編程能力、更沒有做項目的經(jīng)驗(yàn),如果招聘應(yīng)屆生,學(xué)生上手很慢,還需要對其再花費(fèi)額外的培訓(xùn)成本,所以只喜歡招聘有工作經(jīng)驗(yàn)的往屆畢業(yè)生,這也是應(yīng)屆畢業(yè)生很難就業(yè)的主要原因之一。面對這種局面,作為教育工作者,我們需要深刻的反思在教育實(shí)施過程中存在的種種問題:為什么我們的教學(xué)內(nèi)容滯后于社會上用人單位的需求?為什么學(xué)生認(rèn)真地學(xué)習(xí)了一門課,但最后卻只是記住了一些語法等內(nèi)容,不知道能具體做什么?為什么學(xué)生學(xué)習(xí)了好幾種程序設(shè)計語言和數(shù)據(jù)庫,甚至是畢業(yè)了,還是不會開發(fā)小型管理信息系統(tǒng)?……面對種種的問題,需要對現(xiàn)行的計算機(jī)專業(yè)的教學(xué)思路進(jìn)行調(diào)整。本文所說的“項目”均是指用計算機(jī)編程語言開發(fā)的“計算機(jī)軟件”[4-5]。
分析目前的教學(xué)現(xiàn)狀,存在的問題很多,造成這種局面的原因也很多,例如很多教師是從某所高校畢業(yè)就直接進(jìn)入高校教書,雖然學(xué)歷很高,理論水平也很好,但是沒有在公司工作過的經(jīng)歷,自然開發(fā)“系統(tǒng)”的經(jīng)驗(yàn)也不足;還有就是實(shí)驗(yàn)教師的教學(xué)工作量計算不合理,老師設(shè)計的實(shí)驗(yàn)題目缺乏實(shí)用性等等,究其原因很重要的一點(diǎn)是大部分教師“重理論教學(xué),輕實(shí)驗(yàn)教學(xué)”導(dǎo)致的,忽略了對學(xué)生動手能力的培養(yǎng)。要加強(qiáng)學(xué)生的動手能力,要從加強(qiáng)實(shí)驗(yàn)教學(xué)入手,讓學(xué)生成為課堂的主角,教師只起到輔助、提醒的作用。為了解決這個問題,我們一方面建議增加實(shí)驗(yàn)課的課時,另一方面需要對實(shí)驗(yàn)內(nèi)容進(jìn)行調(diào)整?,F(xiàn)在,很多身處教學(xué)一線的老師提出了新的教學(xué)改革方案,例如有的老師提出向高年級的學(xué)生設(shè)計綜合性實(shí)驗(yàn),即先設(shè)計出一個較大的系統(tǒng)(即項目),再根據(jù)教學(xué)內(nèi)容把這個項目分解成幾個相應(yīng)的模塊,根據(jù)系統(tǒng)前后臺的功能把相關(guān)的一門或幾門課程的知識點(diǎn)組合起來講解,學(xué)生就會感到這種講課方式具有一定的實(shí)用性和趣味性,學(xué)生就會主動學(xué)習(xí),達(dá)到事半功倍的效果[6-7]。但是這個方法也存在一定的局限性,即在低年級的學(xué)生中沒辦法展開。也有老師在實(shí)驗(yàn)中引入某些實(shí)用性更強(qiáng)的實(shí)例,再根據(jù)這些實(shí)例來講解相應(yīng)知識點(diǎn),促進(jìn)培養(yǎng)學(xué)生解決現(xiàn)實(shí)生活中的實(shí)際問題的能力和興趣,但是這種方法存在不能解決的致命弱點(diǎn),那就是各個小案例之間沒有關(guān)聯(lián),學(xué)生對各個知識點(diǎn)缺乏一個整體的認(rèn)識,所以“項目分解教學(xué)法”就能很好地解決這一問題,它可以針對某一門課進(jìn)行理論教學(xué)和實(shí)驗(yàn)教學(xué)內(nèi)容的設(shè)計,并以此為依據(jù)展開教學(xué)。
所謂“項目分解教學(xué)法”就是教師在設(shè)計理論教學(xué)和實(shí)驗(yàn)教學(xué)的時候要針對各門程序設(shè)計類課程的教學(xué)內(nèi)容和重點(diǎn),每門課的理論教學(xué)案例和實(shí)驗(yàn)內(nèi)容就針對一個大的項目展開,設(shè)計的項目要有針對性和整體性,再根據(jù)每周的知識點(diǎn),把這個項目分解成各個小的單元,雖然看似每周的教學(xué)內(nèi)容和實(shí)驗(yàn)內(nèi)容是孤立的,實(shí)際上卻存在一定的內(nèi)在的關(guān)聯(lián)。教師在安排每周的教學(xué)內(nèi)容和實(shí)驗(yàn)內(nèi)容的時候都讓學(xué)生有針對性的練習(xí),一個學(xué)期下來,通過最后2 ~3 次實(shí)驗(yàn)的整合,把平時完成的實(shí)驗(yàn)內(nèi)容進(jìn)行有效的整合、拼裝,最后完成一個較大的項目。通過這種方法的實(shí)驗(yàn)練習(xí),能夠使學(xué)生對程序設(shè)計語言的學(xué)習(xí)重心不再僅僅局限于簡單的語法學(xué)習(xí),而是將注意力轉(zhuǎn)移到分析問題、解決問題的能力上來,提高項目開發(fā)的能動性和積極性,增加項目開發(fā)的經(jīng)驗(yàn)[8]。
根據(jù)我院的課程設(shè)置,程序設(shè)計類課程主要包括ASP.Net 應(yīng)用程序開發(fā)、JavaEE 高級編程、網(wǎng)站規(guī)劃與Web 應(yīng)用程序設(shè)計、VB 程序設(shè)計、高級語言程序設(shè)計、面向?qū)ο蟪绦蛟O(shè)計——C + +、面向?qū)ο蟪绦蛟O(shè)計——Java、數(shù)據(jù)庫原理及應(yīng)用、網(wǎng)絡(luò)數(shù)據(jù)庫技術(shù)等課程。由于Java 語言的發(fā)展趨勢非常迅猛,幾乎成了“網(wǎng)絡(luò)編程的世界語”,應(yīng)用范圍也越來越廣,同時根據(jù)實(shí)際的教學(xué)需求、實(shí)踐的方便及學(xué)生的要求,我選擇“面向?qū)ο蟪绦蛟O(shè)計——Java”作為本項目的具體研究對象,舉兩個實(shí)驗(yàn)教學(xué)項目的例子進(jìn)行分解,供學(xué)生在上機(jī)實(shí)驗(yàn)的時候練習(xí)。
按照以往的教學(xué)經(jīng)驗(yàn),首先介紹Java 的集成開發(fā)環(huán)境、變量定義及表達(dá)式,再介紹三種流程控制語句及常用算法,介紹一些面向?qū)ο蟮某绦蛟O(shè)計方面的內(nèi)容,然后再介紹流和文件系統(tǒng)、圖形用戶界面設(shè)計,最后介紹異常處理和多線程。如果是高年級的學(xué)生可以適當(dāng)增加數(shù)據(jù)庫編程、網(wǎng)絡(luò)編程和多媒體編程等高級編程方面的內(nèi)容。如果按照這套流程講下來,學(xué)生會覺得和學(xué)其他程序設(shè)計語言一樣,沒什么新意,老師總是圍繞著概念、算法反復(fù)舉例子,在學(xué)生看來也只是對這些理論進(jìn)行驗(yàn)證,但是學(xué)這些東西到底有什么用呢?學(xué)生會覺得困惑[9]。如果持續(xù)維持這種狀態(tài),學(xué)生很快會失去興趣,繼而失去了學(xué)習(xí)的動力。
由于“項目驅(qū)動”的教學(xué)方式相對傳統(tǒng)教學(xué)而言更具備系統(tǒng)化,個別知識點(diǎn)甚至打亂了原有教材的知識體系,解決這個問題的有效辦法就是要在構(gòu)建好的案例程序庫中選取相應(yīng)的案例,并根據(jù)該案例來設(shè)計相關(guān)的任務(wù),并與學(xué)生共同探討學(xué)習(xí)。所以為了讓學(xué)生更好地掌握教材上的知識點(diǎn),上理論課的時候可以講解一些“小案例”來輔助學(xué)生融會貫通課本上的基礎(chǔ)知識。在日常的實(shí)驗(yàn)教學(xué)中,根據(jù)各章的內(nèi)容,建立了如表1 的案例庫,以供學(xué)生上機(jī)實(shí)驗(yàn)時使用。該案例庫首先圍繞著“五子棋游戲”展開,在此基礎(chǔ)上增加一些游戲中沒有涉及到的“小案例”。經(jīng)過這樣一門課程的一個學(xué)期的上機(jī)實(shí)驗(yàn)練習(xí),學(xué)生基本掌握了“五子棋游戲”的開發(fā),會有一定的成就感[10]。
采用“項目分解法”進(jìn)行教學(xué),首先就是要培養(yǎng)學(xué)生的興趣,讓學(xué)生對學(xué)完本門課程能實(shí)現(xiàn)一個什么樣的項目有一個整體了解,從而感覺學(xué)有所用。然后具體分析調(diào)用相應(yīng)的模塊實(shí)現(xiàn)了什么功能?主要用到的了教程的什么知識點(diǎn)?是如何實(shí)現(xiàn)的?最后回到教材對一般的語法和規(guī)則應(yīng)該怎么做?再把拆分好的模塊與書中的章節(jié)進(jìn)行緊密的銜接,進(jìn)行講解。這樣的方法可以讓學(xué)生不再覺得程序設(shè)計的枯燥,知道這些知識將有什么具體的作用,所以更容易讓學(xué)生接受,讓學(xué)生明白通過這門課程的學(xué)習(xí)可以做出什么樣的系統(tǒng)。本論文提出在“面向?qū)ο蟪绦蛟O(shè)計——Java”教學(xué)過程中采用的“項目分解教學(xué)法”,所強(qiáng)調(diào)的是在本課程的整個實(shí)踐教學(xué)過程中只設(shè)置一個“項目”,這就對“項目”的質(zhì)量要求更高,要求該案例必須幾乎能夠包含全部主要知識點(diǎn)。同時,由于實(shí)驗(yàn)教學(xué)過程總是由淺入深、循序漸進(jìn)的,所以該案例的實(shí)施過程還應(yīng)該能夠按照實(shí)驗(yàn)教學(xué)內(nèi)容進(jìn)行合理的劃分,使之對應(yīng)于每章甚至每節(jié)課的內(nèi)容,從而使學(xué)生達(dá)到邊學(xué)邊練的目的[11-13]。
表1 章-知識點(diǎn)-項目案例庫對照表
根據(jù)Java 課程的特點(diǎn)和實(shí)驗(yàn)教學(xué)大綱的要求,我們選擇難度適中、應(yīng)用非常廣泛的“管理信息系統(tǒng)”類項目為綜合案例,講解用“面向?qū)ο蟪绦蛟O(shè)計——Java”對系統(tǒng)進(jìn)行設(shè)計、分解、知識講授、實(shí)驗(yàn)驗(yàn)證的全過程。在此,以“商品進(jìn)銷存管理系統(tǒng)”為邏輯主線設(shè)計“綜合案例”,該“綜合案例”貫穿于教學(xué)過程的始終,含有若干典型案例與教學(xué)內(nèi)容相匹配。我們再根據(jù)各章的知識點(diǎn)把本系統(tǒng)分解成以下幾個功能模塊,分別為用戶登錄、注冊、修改與查詢、統(tǒng)計、信息批量輸入輸出、網(wǎng)絡(luò)聊天、幫助與退出等。每個教學(xué)單元與其功能對應(yīng)的具體安排如表2 所示。
按照表1 和表2 對兩個完整的“項目”進(jìn)行“分解”,再根據(jù)每個“子項目”的難易程度進(jìn)行課時上的安排,而且要與上理論課的教學(xué)進(jìn)度、教學(xué)內(nèi)容要保持一致,所以這兩方面的步調(diào)控制還是有些難度的,這就要求教師在進(jìn)行“項目分解”的時候要對理論課和實(shí)驗(yàn)課所用的“項目”都有很好的把握,否則很容易導(dǎo)致教學(xué)進(jìn)度和實(shí)驗(yàn)進(jìn)度不統(tǒng)一的情況出現(xiàn),最后適得其反[14-15]。根據(jù)這個方法進(jìn)行推廣,逐步把程序設(shè)計類課程都做成首先設(shè)計綜合案例,再根據(jù)章節(jié)、知識點(diǎn)進(jìn)行分解的教學(xué)模式。使學(xué)生每學(xué)完一門課就能做一個“項目”出來,項目的大小可以根據(jù)學(xué)生的年紀(jì)高低、專業(yè)水平來定,水平高的同學(xué)可以逐步完善和提高項目的實(shí)用性以及規(guī)模。
“項目分解教學(xué)法”的基本思路是提出問題、分解問題、掌握知識點(diǎn)、解決問題,符合學(xué)生的認(rèn)知規(guī)律,對于提高學(xué)生的學(xué)習(xí)效率有很大的幫助。本項目以“面向?qū)ο蟪绦蛟O(shè)計——Java”為研究對象,經(jīng)過教師的教學(xué)反饋、學(xué)生調(diào)查,我們需要逐步完善“項目”的規(guī)模,項目太大、太小,功能太多、太少,涉及的知識點(diǎn)太深、太淺都不合適。同時,在“項目”的分解問題上也多下功夫,否則不適合每周、每章的教學(xué)內(nèi)容,教學(xué)效果得不到保障,而且如果上理論課和實(shí)驗(yàn)課是兩個甚至是多個“項目”,那么更要注意提高這些“項目”的分解質(zhì)量,要符合實(shí)驗(yàn)教學(xué)進(jìn)度和實(shí)驗(yàn)教學(xué)大綱的要求,做到協(xié)調(diào)一致[16-17]。
表2 項目模塊分解-知識點(diǎn)對應(yīng)表
教師在“項目分解教學(xué)法”執(zhí)行的過程中首先要充分了解學(xué)生所具備的專業(yè)知識,例如學(xué)習(xí)了哪些前序課程?后續(xù)課程有哪些?能完成多大規(guī)模的“項目”等等。教師要對“項目”開發(fā)有很深的功底,能夠很準(zhǔn)確的把握項目的難度,對學(xué)生在實(shí)驗(yàn)過程中遇到不能解決的問題很快幫助解決,所以這種教學(xué)方式雖然表面上看學(xué)生參與動手研發(fā)的部分很多,但是實(shí)際上對教師的專業(yè)素質(zhì)要求更高,需要教師有很廣博的專業(yè)知識和大量的項目開發(fā)經(jīng)驗(yàn),同時也要有大量的“項目”積累組成項目庫,能夠提供多個“項目”供學(xué)生選擇。這就要求教師首先要提高自己的專業(yè)技能和軟件開發(fā)方面的技巧,不能只掌握書本上的語法知識,要具備一定的實(shí)際開發(fā)經(jīng)驗(yàn),所以這種教學(xué)方法不但沒有減輕教師的工作量,反而提高了對教師的要求。而且在每個“子項目”開發(fā)的過程中學(xué)生可以組成開發(fā)小組,互相討論、設(shè)計教師分派的任務(wù),由基礎(chǔ)好、水平高的同學(xué)帶動編程能力相對較弱的同學(xué),形成團(tuán)隊,提高合作意識和團(tuán)隊精神,增進(jìn)同學(xué)之間的友誼。
本研究對“項目分解法”教學(xué)運(yùn)用于程序設(shè)計類課程的實(shí)驗(yàn)教學(xué)方面進(jìn)行深入的探討,總結(jié)出程序設(shè)計類課程教學(xué)中運(yùn)用案例教學(xué)的特點(diǎn)和具體操作方法,以此給能夠運(yùn)用“項目分解法”教學(xué)的相關(guān)學(xué)科以啟示,通過這一研究來培養(yǎng)學(xué)生分析問題的能力,加深對以前學(xué)習(xí)的知識的理解,從而提高學(xué)生做大項目的能力,增加成就感,提高學(xué)習(xí)興趣,增加就業(yè)競爭力。
[1] 馬玉潔.基于自主學(xué)習(xí)的計算機(jī)基礎(chǔ)教學(xué)改革研究[J]. 商丘師范學(xué)院學(xué)報,2011(3):119-122,125.
[2] 張 琳. 大學(xué)計算機(jī)基礎(chǔ)課程教學(xué)模式研究[J]. 計算機(jī)教育,2009(7):88-90.
[3] 馮博琴.計算機(jī)基礎(chǔ)教育新階段的教學(xué)改革研究[[J].中國大學(xué)教學(xué),2004(9):7-9.
[4] 高麗平,劉 姝.大學(xué)計算機(jī)基礎(chǔ)課程體系結(jié)構(gòu)改革及分層次教學(xué)[J].計算機(jī)教育,2011(16):44-47.
[5] 劉 雙.“案例教學(xué)”若干問題的辨析[J]. 教學(xué)與管理,2003(6):31-32.
[6] 解永剛.關(guān)于VisualFoxPro 的案例教學(xué)方法[J].昆明大學(xué)學(xué)報,2003(1):59-60.
[7] 黃艷峰.在Java 語言中實(shí)施“案例教學(xué)”的研究與探索[J].電腦知識與技術(shù),2010,6(5):1148-1149.
[8] 張 昕. 案例驅(qū)動教學(xué)模式在《數(shù)據(jù)庫原理》實(shí)踐教學(xué)中的運(yùn)用[J].電腦知識與技術(shù),2008,3(6):1246-1247.
[9] 熊春榮.“C 語言程序設(shè)計”課程案例驅(qū)動教學(xué)模式的研究與實(shí)踐[J],玉林師范學(xué)院學(xué)報(自然科學(xué)),2010,31(5):119-121.
[10] 肖 明. 案例教學(xué)法在“C + + 語言程序設(shè)計”教學(xué)中的應(yīng)用[J].計算機(jī)教育,2010(6):83-86.
[11] 雷東升,李揮劍.《C 語言程序設(shè)計》課程案例式教學(xué)模式的探討[J].北京交通管理干部學(xué)院學(xué)報,2006,16(4):38-40.
[12] 張民杰.案例教學(xué)法——理論與實(shí)務(wù)[M]. 北京:九州出版社,2006.
[13] 余文森,林高明.經(jīng)典教學(xué)法50 例[M].福州:福建教育出版社,2010.
[14] 鄭金洲.案例教學(xué)指南[M].上海:華東師范大學(xué)出版社,2000.
[15] 孫維煌,劉 杰.C#案例開發(fā)[M].北京:中國水利水電出版社,2005.
[16] 徐延平.案例教學(xué)及其運(yùn)用[D].長沙:湖南師范大學(xué),2002.
[17] 王 新. 大學(xué)計算機(jī)基礎(chǔ)課程教學(xué)改革[J]. 計算機(jī)教育,2008(8):106-107.