摘要:新疆高校的學(xué)生存在族別的多樣性、基礎(chǔ)理論水平層次的不等性、中小學(xué)階段接受教育時(shí)語(yǔ)言的異樣性等諸多問(wèn)題。如何在講授一門課后使不同水平的學(xué)生達(dá)到基本統(tǒng)一的教學(xué)目標(biāo),對(duì)教師能夠設(shè)計(jì)出面向?qū)ο蟮摹⒑侠淼恼n程實(shí)施模式提出了嚴(yán)峻的挑戰(zhàn)。文章詳細(xì)闡述了Java語(yǔ)言程序設(shè)計(jì)課程實(shí)驗(yàn)教學(xué)模式研究成果與教學(xué)各環(huán)節(jié)的實(shí)施模式。
關(guān)鍵詞:實(shí)驗(yàn)?zāi)J?面向?qū)ο?實(shí)施模式 多語(yǔ)種教學(xué)模式
文章編號(hào):1672-5913(2011)18-0078-03 中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:A
教學(xué)語(yǔ)言必須是工業(yè)界的主流語(yǔ)言,否則學(xué)生學(xué)非所用。迅速地開發(fā)具有實(shí)際用途的程序,有助于激發(fā)和保持學(xué)生的興趣。目前,國(guó)內(nèi)外很多高校已經(jīng)將Java列為教學(xué)語(yǔ)言。然而,面對(duì)Java日益龐大的體系結(jié)構(gòu)以及Java技術(shù)的飛速發(fā)展,如何在有限的學(xué)時(shí)內(nèi)有效地開展教學(xué)很值得研究。
為了提高學(xué)生利用Java解決實(shí)際問(wèn)題的能力和在就業(yè)市場(chǎng)中的競(jìng)爭(zhēng)力,我們利用5年時(shí)間,在精心研究國(guó)內(nèi)外Java程序設(shè)計(jì)課程實(shí)驗(yàn)的教學(xué)模式的前提下,結(jié)合新疆地區(qū)漢族、民族和民考漢學(xué)生的實(shí)際情況,總結(jié)出了一套比較適合于不同層次、不同民族學(xué)生的Java實(shí)驗(yàn)教學(xué)模式,并將其逐步應(yīng)用于不同班級(jí)的實(shí)驗(yàn)教學(xué)中,獲得了可喜的研究成果。
我們的主要研究成果為撐托Java實(shí)踐教學(xué)各個(gè)環(huán)節(jié)的一整套實(shí)驗(yàn)教學(xué)材料:Java語(yǔ)言程序設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(驗(yàn)證性+設(shè)計(jì)性);Java實(shí)驗(yàn)教學(xué)大綱(驗(yàn)證性、設(shè)計(jì)性);Java語(yǔ)言程序設(shè)計(jì)習(xí)題集;期末上機(jī)測(cè)試編程題目;民漢雙語(yǔ)實(shí)驗(yàn)教學(xué)網(wǎng)站。指導(dǎo)教材的內(nèi)容設(shè)置以逐步培養(yǎng)學(xué)生解決一般問(wèn)題的能力為前提,以提高學(xué)生解決綜合問(wèn)題的能力為最終目的。
1 研究的基本內(nèi)容
1.1 認(rèn)真編排實(shí)驗(yàn)內(nèi)容
考慮到我院是在大四第一學(xué)期開設(shè)Java課,如
何編排實(shí)驗(yàn)內(nèi)容值得研究。先做基礎(chǔ)實(shí)驗(yàn),是一種循序漸進(jìn)的方式,但比較老套,學(xué)生在已經(jīng)具備其他語(yǔ)言學(xué)習(xí)經(jīng)歷的前提下,比較容易失去學(xué)習(xí)動(dòng)力。先編圖形用戶界面的程序的做法從GUI和applet開始,似乎能夠引起學(xué)生的興趣,但這需要學(xué)生具備牢固的面向?qū)ο蟪绦蛟O(shè)計(jì)方面的知識(shí),并要求學(xué)生對(duì)Java事件處理模式有很好的理解,所以學(xué)生可能不太容易完全接受。必須有針對(duì)性地選擇實(shí)驗(yàn)內(nèi)容,對(duì)Java的基礎(chǔ)知識(shí)和高級(jí)應(yīng)用有一個(gè)折中處理是我們編排指導(dǎo)書時(shí)的一個(gè)出發(fā)點(diǎn)。一方面,使得學(xué)生能夠掌握必要的基礎(chǔ)知識(shí),為以后的進(jìn)一步學(xué)習(xí)打下扎實(shí)的基礎(chǔ);另一方面,由于其涉及部分高級(jí)知識(shí),為開發(fā)實(shí)用程序提供可能。
指導(dǎo)書包含了大量的圖示主要用于說(shuō)明程序輸出結(jié)果,學(xué)生可以通過(guò)這些圖示,更充分理解實(shí)驗(yàn)?zāi)康摹1緯€包含了大量的表格主要用于說(shuō)明每次實(shí)驗(yàn)中要用到的類以及消息功能,主要用于解決教材書中這方面的不足以及指引學(xué)生盡早入門,少走彎路。
從第1個(gè)實(shí)驗(yàn)開始就讓學(xué)生接觸到了類和對(duì)象的概念[1]。實(shí)驗(yàn)中將類和對(duì)象的實(shí)驗(yàn)移到前面的目的:使學(xué)生最初就能夠思考類和對(duì)象,弄清類和對(duì)象的實(shí)質(zhì)區(qū)別,有助于更徹底的掌握類和對(duì)象的概念。從第一個(gè)實(shí)驗(yàn)到第四個(gè)實(shí)驗(yàn)學(xué)生學(xué)習(xí)的是Java集成開發(fā)環(huán)境自身提供的類的使用方法。其中,實(shí)驗(yàn)1至實(shí)驗(yàn)4主要涉及到學(xué)生必須掌握的Java基礎(chǔ)知識(shí)。通過(guò)實(shí)驗(yàn),學(xué)生可以掌握J(rèn)ava應(yīng)用程序與小應(yīng)用程序在結(jié)構(gòu)和運(yùn)行方式上的區(qū)別;學(xué)習(xí)并掌握系統(tǒng)自身提供的常用類及消息的功能以及其使用方法;基本控制流語(yǔ)句的掌握;基本繪圖方法的掌握。為后面的實(shí)驗(yàn)打基礎(chǔ),前面的4個(gè)實(shí)驗(yàn)中用到圖形類(Graphics)、棧類(Stack類)、字符串類(String類)、日期類(Date類)和鍵盤輸入類(Scanner類),以及基本的流程控制語(yǔ)句。學(xué)生掌握如何定義現(xiàn)有類的對(duì)象并使用其提供的API后,從第5個(gè)實(shí)驗(yàn)開始就可以編寫自定義類了,并在后續(xù)的實(shí)驗(yàn)中繼續(xù)使用這些自定義類,完成更復(fù)雜的功能。
實(shí)驗(yàn)內(nèi)容的編排遵循了由淺入深、循序漸進(jìn)、由簡(jiǎn)到繁的原則,符合學(xué)生學(xué)習(xí)心理承受力。通過(guò)編排內(nèi)容連貫的實(shí)驗(yàn)和有趣的繪圖實(shí)驗(yàn),學(xué)生可以掌握比較難于掌握的Java的自定義類,類的實(shí)例對(duì)象、類的重用性等重要概念。如:從實(shí)驗(yàn)5開始,通過(guò)編排內(nèi)容連貫有趣的繪圖實(shí)驗(yàn),要求學(xué)生從編寫可繪制窗戶、門、房子等自定義類開始,要求學(xué)生利用類的代碼重用性,讓學(xué)生定義窗戶類,門類的多個(gè)實(shí)例對(duì)象來(lái)構(gòu)造有多個(gè)窗戶和門的一棟房子以及繪制位置不同的幾棟房子。讓學(xué)生在實(shí)驗(yàn)中切身體會(huì)一個(gè)復(fù)雜的對(duì)象其實(shí)是由很多獨(dú)立的小對(duì)象堆砌出來(lái)的道理。在后續(xù)的實(shí)驗(yàn)中通過(guò)讓門、窗戶和房子類繼承同一個(gè)抽象類的方式,讓學(xué)生在程序設(shè)計(jì)的過(guò)程中切身體會(huì)多態(tài)、抽象性等很重要但比較難理解的概念。這些概念的正確利用往往使得程序更接近于面向?qū)ο蟪绦蛟O(shè)計(jì)風(fēng)格和理念。通過(guò)實(shí)驗(yàn)7學(xué)生可以掌握J(rèn)ava的事件處理機(jī)制、圖形用戶界面的設(shè)計(jì)、多種布局管理器的使用,并為實(shí)驗(yàn)8做準(zhǔn)備。在實(shí)驗(yàn)8中通過(guò)增加按鈕組件,要求學(xué)生實(shí)現(xiàn)通過(guò)按鈕繪制房體,門和窗戶的程序,讓學(xué)生更加深入學(xué)習(xí)Java的事件處理機(jī)制、圖形用戶界面的設(shè)計(jì)、布局管理器的使用以及向量Vector類的使用。通過(guò)實(shí)驗(yàn)9和實(shí)驗(yàn)10掌握從文本文件加載數(shù)據(jù)——加工處理——輸出到文本文件的方法和步驟。進(jìn)一步說(shuō),通過(guò)實(shí)驗(yàn)9和10學(xué)生可以掌握從文本文件加載數(shù)據(jù)到Vector或數(shù)組等臨時(shí)儲(chǔ)存空間,然后經(jīng)過(guò)加工處理后將結(jié)果輸出到文本文件的方法和技術(shù)。
1.2 重視編程技巧與風(fēng)格的培養(yǎng)
掌握標(biāo)準(zhǔn)的設(shè)計(jì)模式,可以避免重復(fù)設(shè)計(jì)或盡可能少做重復(fù)設(shè)計(jì),極大地提高軟件的可復(fù)用性和靈活性,從而大大提高軟件開發(fā)效率。考慮到大部分學(xué)生基礎(chǔ)不牢,對(duì)面向?qū)ο蟮某绦蛟O(shè)計(jì)的理解薄弱,處理細(xì)節(jié)和矛盾的能力不足,缺少自主分析問(wèn)題、解決問(wèn)題的知識(shí)、能力和經(jīng)驗(yàn),因此在Java實(shí)踐教學(xué)中通過(guò)提供程序框架,讓學(xué)生填補(bǔ)實(shí)現(xiàn)代碼的方法。程序框架中提供相應(yīng)類和各個(gè)類中接口的定義和各個(gè)接口應(yīng)具備的功能說(shuō)明,使得學(xué)生從用戶的角度對(duì)要實(shí)現(xiàn)的項(xiàng)目產(chǎn)生直觀的認(rèn)識(shí),再讓學(xué)生自己完成具體實(shí)現(xiàn)。這種讓學(xué)生先當(dāng)用戶,體會(huì)用戶的需求,然后再當(dāng)設(shè)計(jì)者的方案不僅培養(yǎng)了學(xué)生獨(dú)立解決問(wèn)題的能力,也使其學(xué)習(xí)了Java框架中優(yōu)秀的編程技巧與風(fēng)格。
1.3 設(shè)計(jì)大作業(yè),強(qiáng)化實(shí)踐環(huán)節(jié)
在課程后期,學(xué)生有了一定的Java編程基礎(chǔ),欠缺的主要是實(shí)際的開發(fā)經(jīng)驗(yàn)和全面系統(tǒng)、深入的應(yīng)用所掌握的Java技術(shù)。解決的方法就是通過(guò)真實(shí)項(xiàng)目練習(xí),對(duì)所學(xué)知識(shí)進(jìn)行深化,然后通過(guò)項(xiàng)目來(lái)獲取實(shí)際開發(fā)的經(jīng)驗(yàn),盡快達(dá)到實(shí)際要求。
在設(shè)計(jì)性實(shí)驗(yàn)中有在線購(gòu)物網(wǎng)站、圖書管理系統(tǒng)、桌面紙牌游戲和網(wǎng)絡(luò)魔方游戲。考慮到大部分民漢學(xué)生對(duì)項(xiàng)目的規(guī)劃和設(shè)計(jì)還比較生疏,為了灌輸面向?qū)ο蟪绦蛟O(shè)計(jì)的核心思想及正確的編程方法,采取了“老師提供系統(tǒng)框架,學(xué)生填補(bǔ)實(shí)現(xiàn)代碼”的科學(xué)的實(shí)事求是的編程方法,使得學(xué)生在做大作業(yè)時(shí)能夠在有限的10個(gè)學(xué)時(shí)內(nèi),按時(shí)完成課程設(shè)計(jì)任務(wù)并掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)的基本理念。在設(shè)計(jì)性實(shí)驗(yàn)中,為了使得學(xué)生充分了解自己的進(jìn)展,我們規(guī)定了每一個(gè)學(xué)時(shí)中應(yīng)完成的內(nèi)容,并且不厭其煩地把每一個(gè)大作業(yè)都分成了幾大類,給出了各個(gè)類中應(yīng)該實(shí)現(xiàn)的方法,并且用偽代碼(漢語(yǔ))為每個(gè)類以及其中的方法的功能進(jìn)行了詳細(xì)的闡述,要求學(xué)生編寫相應(yīng)代碼。這種做法在現(xiàn)存的Java實(shí)驗(yàn)指導(dǎo)書中是少見的,但較符合我院學(xué)生的現(xiàn)狀,也較值得推廣。
1.4 推進(jìn)評(píng)價(jià)環(huán)節(jié)的改革
一門課程的教學(xué)效果決定了該門課程的成功與否。除了對(duì)教學(xué)環(huán)節(jié)和實(shí)踐環(huán)節(jié)的充分重視,評(píng)價(jià)環(huán)節(jié)亦會(huì)顯著地影響教學(xué)效果。學(xué)生的評(píng)價(jià)主要由五部分構(gòu)成:上機(jī)實(shí)驗(yàn)成績(jī)+課程設(shè)計(jì)成績(jī)+期末上機(jī)編程測(cè)試成績(jī)+上機(jī)考勤+期末筆試成績(jī)。這種通過(guò)不同環(huán)節(jié)評(píng)價(jià)學(xué)生的方式,能夠督促學(xué)生重視并參與所有教學(xué)過(guò)程。更加客觀地反映出學(xué)生的學(xué)習(xí)效果,對(duì)學(xué)生的評(píng)價(jià)也更加科學(xué)。
期末上機(jī)測(cè)試時(shí)為防止學(xué)生之間相互抄襲,測(cè)試題目盡量做到讓每個(gè)學(xué)生完成不同的題目。這種測(cè)試方法盡管使得老師出題目比較辛苦,但可以確保對(duì)每個(gè)學(xué)生的真實(shí)水平給出正確評(píng)價(jià)。期末上機(jī)測(cè)試編程題目要求中給出了程序的框架以及運(yùn)行結(jié)果圖表和詳盡的要求說(shuō)明,題目的編排盡量讓學(xué)生將平時(shí)所學(xué)知識(shí)充分挖掘出來(lái),發(fā)揮其真實(shí)的編程水平。
1.5 形成完整的實(shí)驗(yàn)教學(xué)輔助環(huán)節(jié)
為了使學(xué)生能夠盡快完成實(shí)驗(yàn)內(nèi)容,完成了民漢實(shí)驗(yàn)教學(xué)網(wǎng)站建設(shè),實(shí)驗(yàn)教學(xué)網(wǎng)站的內(nèi)容豐富、操作方便,把工作重點(diǎn)放到了網(wǎng)站內(nèi)容的建設(shè)上。網(wǎng)站中集成了與Java課程教學(xué)、實(shí)驗(yàn)教學(xué)有關(guān)的所有資料。包括每一個(gè)實(shí)驗(yàn)的標(biāo)準(zhǔn)源代碼,學(xué)生可以在后期的實(shí)驗(yàn)中看到前期實(shí)驗(yàn)的代碼,并從中找出自己的不足,逐步積累編程經(jīng)驗(yàn),還提供了很多的超鏈接,使學(xué)生能夠很快找到常用類及其消息的格式和功能說(shuō)明(對(duì)指導(dǎo)書中類的拓展),可以成為學(xué)生學(xué)習(xí)、鞏固和拓展Java常用類及其方法的得力助手。我們還將每個(gè)實(shí)驗(yàn)的字節(jié)碼文件嵌入到網(wǎng)站中,讓學(xué)生直接觀察實(shí)驗(yàn)結(jié)果,通過(guò)對(duì)實(shí)驗(yàn)結(jié)果的動(dòng)態(tài)操作,使得學(xué)生從感性上更明確實(shí)驗(yàn)?zāi)康暮蛯?shí)驗(yàn)要求,引發(fā)學(xué)生編程興趣。
2 實(shí)驗(yàn)成果
2.1 填充式實(shí)驗(yàn)?zāi)J?br/> 在設(shè)計(jì)性實(shí)驗(yàn)中,考慮到大部分學(xué)生對(duì)面向?qū)ο蟪绦蛟O(shè)計(jì)方法比較生疏,為了使學(xué)生盡快掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的核心思想及正確的編程方法,采取了“老師提供系統(tǒng)框架,學(xué)生填補(bǔ)實(shí)現(xiàn)代碼”的科學(xué)的實(shí)事求是的編程方法。這一實(shí)驗(yàn)?zāi)J皆诂F(xiàn)有的Java指導(dǎo)書中很少見,實(shí)踐證明該方法可以使學(xué)生盡早上路,少走彎路,輕松地掌握面向?qū)ο蟮某绦蛟O(shè)計(jì)的基本編程規(guī)范,并保證按時(shí)完成課程設(shè)計(jì)任務(wù)。
2.2 培養(yǎng)團(tuán)隊(duì)合作精神
軟件開發(fā)是一個(gè)團(tuán)隊(duì)協(xié)作[2]、共同設(shè)計(jì)的過(guò)程。在設(shè)計(jì)性實(shí)驗(yàn)的實(shí)施過(guò)程中,為了培養(yǎng)學(xué)生的團(tuán)隊(duì)合作精神,根據(jù)設(shè)計(jì)題目的要求,把學(xué)生分成組,根據(jù)
自己的興趣和特長(zhǎng)進(jìn)行分工,在完成所選擇設(shè)計(jì)題目的同時(shí),學(xué)會(huì)團(tuán)隊(duì)成員的協(xié)作。
在設(shè)計(jì)性實(shí)驗(yàn)的實(shí)施過(guò)程中,我們?yōu)榱伺囵B(yǎng)學(xué)生的團(tuán)隊(duì)合作精神,要求學(xué)生根據(jù)自己的興趣和愛好自由選擇設(shè)計(jì)題目[3]。一般情況下,每個(gè)班級(jí)會(huì)分成4個(gè)項(xiàng)目小組。然后根據(jù)學(xué)生平時(shí)實(shí)驗(yàn)成績(jī)指定4個(gè)項(xiàng)目組長(zhǎng)來(lái)組織和管理各個(gè)項(xiàng)目小組。組長(zhǎng)主要承擔(dān)小組人員的任務(wù)分配、組織組員進(jìn)行討論以及最后要提交的系統(tǒng)的測(cè)試和集成任務(wù)。開發(fā)過(guò)程中學(xué)生遇到問(wèn)題時(shí),由組長(zhǎng)組織組員進(jìn)行討論,大家共同解決設(shè)計(jì)中遇到的種種問(wèn)題,實(shí)在解決不了的方可要求指導(dǎo)老師的幫助。由于每組設(shè)計(jì)性實(shí)驗(yàn)的框架和每個(gè)類中要實(shí)現(xiàn)的API接口和系統(tǒng)的測(cè)試要求在指導(dǎo)書中說(shuō)明的都很清楚,可以確保每個(gè)同學(xué)都可以分到不同的設(shè)計(jì)任務(wù),并且對(duì)所要完成的任務(wù)在一開始就基本清楚。看著學(xué)生在設(shè)計(jì)性實(shí)驗(yàn)的設(shè)計(jì)階段中所付出的努力和在系統(tǒng)測(cè)試成功時(shí)如獲至寶的喜悅,心中總是為他們感到無(wú)比驕傲和自豪。分組實(shí)驗(yàn)也可以帶動(dòng)編程能力不太強(qiáng)的同學(xué),因?yàn)樵谒麄冇龅嚼щy時(shí)團(tuán)隊(duì)隊(duì)員之間的相互幫助和鼓勵(lì),給予他們力量和完成任務(wù)的信心。
2.3 用多語(yǔ)言進(jìn)行教學(xué)
針對(duì)不同學(xué)生需求,采用多語(yǔ)言進(jìn)行教學(xué),在他們掌握J(rèn)ava的同時(shí),培養(yǎng)漢語(yǔ)言學(xué)生使用外文資料的能力,提高民族學(xué)生通過(guò)漢語(yǔ)能夠較深層次地真正理解比較抽象的概念,又在恰當(dāng)時(shí)機(jī)采用維語(yǔ)對(duì)難以理解的專業(yè)概念進(jìn)行解釋。
3 應(yīng)用及總結(jié)
Java語(yǔ)言程序設(shè)計(jì)性實(shí)驗(yàn)指導(dǎo)書從2005年啟用到2011年全面推行以來(lái),學(xué)生雖然感到有難度,但通過(guò)指導(dǎo)老師的精心指導(dǎo),大部分同學(xué)順利完成了實(shí)驗(yàn)任務(wù),并普遍表示從中學(xué)到了很多編程經(jīng)驗(yàn)與編程思想。該Java實(shí)驗(yàn)指導(dǎo)書將會(huì)繼續(xù)應(yīng)用于以后的Java實(shí)驗(yàn)教學(xué)當(dāng)中。Java語(yǔ)言程序設(shè)計(jì)習(xí)題集已成為學(xué)生進(jìn)行考前復(fù)習(xí)的必備材料。Java語(yǔ)言程序設(shè)計(jì)測(cè)試題目已用于每學(xué)期的實(shí)驗(yàn)測(cè)試中,雖然測(cè)試題目有一定的難度,但學(xué)生普遍反映這些題目一定程度的訓(xùn)練了他們的邏輯思維能力和編程能力。Java語(yǔ)言教學(xué)網(wǎng)站發(fā)布到學(xué)院局域網(wǎng)供學(xué)生上機(jī)時(shí)使用,每堂課每個(gè)學(xué)生的平均點(diǎn)擊率不下5次。2008年驗(yàn)收成果時(shí),評(píng)審專家們對(duì)指導(dǎo)書給予了充分肯定和高度評(píng)價(jià)。下一步計(jì)劃正式出版該書,Java實(shí)驗(yàn)教學(xué)網(wǎng)站也將會(huì)發(fā)布到教務(wù)處提供的網(wǎng)絡(luò)教學(xué)綜合平臺(tái)供學(xué)生使用,我們還打算申請(qǐng)校級(jí)精品課程進(jìn)一步充實(shí)和完善Java實(shí)驗(yàn)教學(xué)材料和實(shí)驗(yàn)網(wǎng)站的建設(shè)。
總之,教師要按照本課程的實(shí)際教學(xué)特點(diǎn),實(shí)驗(yàn)中注重學(xué)生能力的培養(yǎng)、而不是簡(jiǎn)單的知識(shí)記憶,精心組織教學(xué)每個(gè)環(huán)節(jié)。實(shí)踐證明這種設(shè)計(jì)性實(shí)驗(yàn)的教學(xué)方式受到了學(xué)生的歡迎和支持。
參考文獻(xiàn):
[1] 王逢州. Java語(yǔ)言程序設(shè)計(jì)的教學(xué)研究與改革[J]. 電腦知識(shí)