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