1 引言
眾所周知,Java是20世紀(jì)90年代初推出的一種純面向?qū)ο缶幊陶Z言工具,自從它面世以來,已經(jīng)獲得了業(yè)界的一致推崇,由于它的可移植性、跨平臺(tái)性等優(yōu)點(diǎn),在基于因特網(wǎng)的系統(tǒng)開發(fā)中得到了廣泛應(yīng)用,所以,Java又有“網(wǎng)絡(luò)程序設(shè)計(jì)語言”一說。目前,Java的應(yīng)用領(lǐng)域可以分為J2SE、J2EE、J2ME三個(gè)方面,J2SE是Java標(biāo)準(zhǔn)開發(fā)版本,J2EE是企業(yè)完全版本,J2ME是移動(dòng)設(shè)備開發(fā)版本,高校的教學(xué)幾乎全部集中在J2SE這個(gè)方面,其他兩個(gè)應(yīng)該是項(xiàng)目實(shí)際開發(fā)、提高部分。筆者自1998年就開始在本校從事Java的教學(xué)工作,期間經(jīng)歷了Java不同版本的升級(jí),從JDK1.0到現(xiàn)在的JDK1.5,教學(xué)工具也不斷地更換,比如早期的JBuilder3.0到現(xiàn)在的JBuilder2006,采用的教材也幾乎是年年更新,從早期清華大學(xué)出版社出版的王克宏教授主編的《Java語言程序設(shè)計(jì)基礎(chǔ)》,到現(xiàn)在機(jī)械工業(yè)出版社的《Java程序設(shè)計(jì)教程》,同時(shí)有幸接觸到英國Aston 大學(xué)的Java課程的講義,經(jīng)過檢查過去多年的教學(xué)經(jīng)驗(yàn)與教學(xué)手段,與國外大學(xué)的同一課程進(jìn)行比較,希望能總結(jié)出一些好的經(jīng)驗(yàn)及教學(xué)模式。
2 教學(xué)周期的差異
由于計(jì)算機(jī)市場對Java編程人員的大量需求,學(xué)生學(xué)習(xí)Java語言的興趣逐年遞增,一方面督促老師自己不斷地?cái)z取新的知識(shí)對自己升級(jí)換代,另一方面學(xué)生數(shù)目的增大,面對大量增加的選課學(xué)生,老師也應(yīng)該了解他們的學(xué)習(xí)目的,才能做到有的放矢。由于學(xué)校課程設(shè)置的安排,深圳大學(xué)的Java課程是在“面向?qū)ο蟪绦蛟O(shè)計(jì)(C++)”之后開設(shè)的,所以在教學(xué)的過程中經(jīng)常會(huì)碰到同學(xué)提出“Java到底有什么用?”,“我已經(jīng)學(xué)了C++,還要不要學(xué)Java???”,“Java怎么感覺與C++有很大的不同?”,“我想做一些數(shù)據(jù)庫管理的事情,該學(xué)Java的哪些內(nèi)容”等等諸如此類的問題。針對這些問題,我們在教學(xué)中就應(yīng)該事先清楚自己的教學(xué)目的是什么。由于本校Java課程是面向全院的選修課,整個(gè)課程的教學(xué)周期為一學(xué)期,學(xué)時(shí)相當(dāng)有限,造成教學(xué)任務(wù)繁重,各章節(jié)就不能完全進(jìn)行細(xì)化,很多東西在課堂上講完并演示過對應(yīng)的例題后部分學(xué)生仍然一知半解,需要課后再花一定的時(shí)間對課堂上所講的知識(shí)進(jìn)行消化、吸收。對照國外的Java教學(xué),由于他們整個(gè)Java的課程設(shè)置為一年,比如分為Java程序設(shè)計(jì)基礎(chǔ)知識(shí)部分與Java程序設(shè)計(jì)高級(jí)部分,在基礎(chǔ)知識(shí)部分,著重介紹Java的特點(diǎn)、與其他編程語言的區(qū)別,在學(xué)生有了基本概念之后,再進(jìn)行語法知識(shí)的介紹。在英國,除了課堂上老師授課之外,課程設(shè)置里還專門安排了一個(gè)叫tutorial的授課安排,相當(dāng)于課堂討論課。老師預(yù)先給出教學(xué)中的重點(diǎn)、難點(diǎn),同學(xué)們可根據(jù)自己的情況及時(shí)發(fā)言或討論,從中獲得自己想要的東西。在師生之間的這種交流過程中,老師不僅可以了解學(xué)生的學(xué)習(xí)情況,還可以根據(jù)學(xué)生反饋來進(jìn)行教學(xué)改進(jìn)。這樣經(jīng)過一個(gè)學(xué)期對Java基礎(chǔ)知識(shí)的掌握后,才開始下一個(gè)學(xué)期的高級(jí)部分的學(xué)習(xí)??偠灾?,針對目前Java編程人員需求量大的情況,高校決不能扮演Java編程速成班的角色,我們應(yīng)該踏踏實(shí)實(shí)地按照一個(gè)原則:好的編程人員是要有一個(gè)完整的培訓(xùn)、學(xué)習(xí)周期。循序漸進(jìn)、由淺入深,才是我們的教學(xué)原則。由此,如何在Java的課程設(shè)置中確定一個(gè)合適的教學(xué)周期,是值得我們商榷的,國外的教學(xué)例子值得我們參考。
3 教學(xué)大綱與教學(xué)內(nèi)容的不同
高校的課程設(shè)置,教學(xué)大綱是必不可少的,合理地制訂教學(xué)大綱并貫徹執(zhí)行是教學(xué)成功的一個(gè)保障,下面給出我校Java課程教學(xué)大綱與Aston大學(xué)教學(xué)大綱的內(nèi)容,如表1所示。
表1 國內(nèi)外大學(xué)的Java教學(xué)比較
通過表1可以看出,由于學(xué)時(shí)的安排與重視程度的不同,同一門課程,深圳大學(xué)與英國的Aston大學(xué)的區(qū)別還是比較大的,由于講授學(xué)時(shí)的限制,在某些章節(jié)的講述過程中,比如類、對象、接口與包,深圳大學(xué)大約是4個(gè)學(xué)時(shí),感覺上講解不是很透,學(xué)生還需課外花費(fèi)一定的時(shí)間去進(jìn)行補(bǔ)充、提高,而Aston
大學(xué)把該部分的內(nèi)容分得很細(xì),為了讓學(xué)生樹立面向?qū)ο蟮母拍?,采用了以下順序進(jìn)行介紹:
a.面向?qū)ο蟪绦蛟O(shè)計(jì)的概念
b.面向?qū)ο蟪绦虻募軜?gòu)
c.類的繼承、子類父類的概念
d.類的多態(tài)性、集合的概念
e.方法重載與重定義、抽象方法與抽象類
f.接口與包的應(yīng)用
這樣一來,學(xué)生的概念很清晰,并伴以合適的例題進(jìn)行講解,學(xué)生在課堂上的收獲很大,同時(shí)也培養(yǎng)了學(xué)生進(jìn)一步學(xué)習(xí)的興趣,當(dāng)然,需要的講解課時(shí)也隨之增多。
當(dāng)前我國高校面向?qū)ο蟮木幊誊浖蟛糠诌€是以C++作為講授內(nèi)容的,學(xué)生如果能掌握C++的概念當(dāng)然會(huì)明白面向?qū)ο蟮母拍睿?,C++的應(yīng)用還是微軟的天下,其不開源的理念及大量的MFC的應(yīng)用,仍是橫在學(xué)生面前的一條鴻溝,而Java語言的開源性促使其蓬勃發(fā)展,也使得原來大量的C++軟件人員轉(zhuǎn)到該領(lǐng)域,所以,目前Java的教學(xué)也越來越引起高校的重視,但是如何制定相應(yīng)的教學(xué)大綱與教學(xué)內(nèi)容,是擺在我們面前的一個(gè)急需解決的問題。
4 教學(xué)手段的比較
前面討論了深圳大學(xué)與Aston大學(xué)教學(xué)內(nèi)容上的一些差別,那么在教學(xué)手段上二者有什么不同呢?與過去的一根粉筆打天下的教學(xué)手段相比較,現(xiàn)在已經(jīng)有了明顯的進(jìn)步,基本上所有的教室均實(shí)現(xiàn)了多媒體教學(xué)的手段,從硬件上來說,與國外已經(jīng)沒有差別,甚至在軟件升級(jí)換代的周期上還優(yōu)于國外,這里,作者想從以下幾個(gè)方面來談?wù)剣鴥?nèi)與國外教學(xué)手段上的不同。
4.1 教材上的差別
Java教材從早期清華大學(xué)出版社的《Java語言程序設(shè)計(jì)基礎(chǔ)》,《Java語言程序設(shè)計(jì)教程》,到現(xiàn)在機(jī)械工業(yè)出版社的《Java程序設(shè)計(jì)教程》,整個(gè)感覺教材的要求是越來越高,但總是落后國外大學(xué)一步。比如Aston大學(xué)選用的是《An Introduction to Programming and Object-Oriented Design Using Java》及《Java, Java, Java Object-Oriented Problem Solving 2e》,由于我們采用的是中文教材,目前市面上大部分Java教材都是編譯或編著,從周期上來看,肯定與別人有一個(gè)時(shí)差,所以,在上課的同時(shí),我們總是建議學(xué)生課外去閱讀一些原版的Java英文教材,以獲得一些最新的知識(shí),比如早期的Java經(jīng)典著作《Thinking in Java》。除此之外,老師和學(xué)生應(yīng)該多瀏覽Java的專業(yè)網(wǎng)站以獲得關(guān)于Java的新發(fā)展、新動(dòng)態(tài)。
4.2 教學(xué)內(nèi)容的比較
我們在程序設(shè)計(jì)課程的講授過程中,在實(shí)例講解時(shí),往往是按照章節(jié)來進(jìn)行,各章節(jié)之間缺乏關(guān)聯(lián),這樣學(xué)生在學(xué)習(xí)的過程中很難做到理解上承前啟后,思維是一段一段的。比如,在講解對象與繼承這兩個(gè)概念時(shí),我們原來經(jīng)常采用的實(shí)例是:
a. 對象講解:
public class A {
return_Type some_Method() {….}
Typevariables_Defined;
}
b. 繼承講解:
public class B extends A {
return_Type some_Method() {…}
Typevariables_Defined;
}
在這個(gè)過程中,類A作為類的定義的一個(gè)案例,而類B作為繼承的一個(gè)案例,從某個(gè)角度來看,概念是講清楚了,但是類名是很抽象的,學(xué)生不一定會(huì)與生活中具體的對象進(jìn)行聯(lián)想,另外,繼承的概念也是從抽象的類名來展開的,沒有實(shí)際的意義,也是很抽象的,這樣,教學(xué)的效果可想而知了。我們再來看一下Aston大學(xué)在對象與繼承概念上的例子:
a.對象講解:
public class Item {
private String title;
private int playingTime;
private boolean gotIt;
private String comment;
// constructors and methods omitted.
}
b.繼承講解:
public class CD extends Item {
private String director;
// constructors and methods omitted.
}
它采用的是一個(gè)信息分類的例子來作比較,而這類情況同學(xué)們在現(xiàn)實(shí)生活中會(huì)經(jīng)常碰到,理解也不難,比如,現(xiàn)在要把一大類的光盤進(jìn)行分類,首先我們要抽象出VCD及CD的共性來得出一個(gè)基本的類Item,在此基礎(chǔ)上可以對它進(jìn)行繼承得出一個(gè)子類CD,很形象。而且,在今后章節(jié)的講解過程中,并沒有拋棄原來的例子,而是在其基礎(chǔ)上進(jìn)行擴(kuò)充,就好比一個(gè)簡單的例子,經(jīng)過滾雪球的方式,知識(shí)的不斷積累,功能不斷完善,擴(kuò)充的內(nèi)容也越來越多,保持前后知識(shí)點(diǎn)的關(guān)聯(lián)性,增加學(xué)生的興趣!
4.3 教學(xué)工具的比較
教學(xué)工具的選用對學(xué)生的影響也是相當(dāng)大的,不同學(xué)校由于條件的限制(比如版權(quán)、習(xí)慣等)可能采用的Java教學(xué)工具有所不同。我們早期采用的是JDK1.0字符界面工具來進(jìn)行講授,用JDK進(jìn)行教學(xué),好處是學(xué)生能掌握常用的命令行指令的使用及編譯環(huán)境的配置,對今后在非Windows操作系統(tǒng)下進(jìn)行編程會(huì)有一定的幫助,但是在線幫助就很煩瑣。目前我們的教學(xué)工具已經(jīng)是JBuilder2006(正版),它集成了J2SE、J2EE、J2ME三個(gè)編程環(huán)境,交互性好,但是運(yùn)行環(huán)境要求比較苛刻,同時(shí)正版的費(fèi)用也比較高,而開源免費(fèi)的開發(fā)工具有JCreator、Sun公司的NetBeans等,Aston大學(xué)的教學(xué)工具采用的是JCreator,該軟件運(yùn)行時(shí)占用內(nèi)存少,對系統(tǒng)要求不是很高,被配置較低的一些用戶所喜愛,當(dāng)然,從Java編程提高的角度來看,我們建議有條件的話還是采用JBuilder比較好。一方面它對代碼的語法的實(shí)時(shí)檢測減少了出錯(cuò)的幾率;另一方面其完備的文擋幫助對學(xué)好Java來說也是一個(gè)好的幫手;再者,Java目前的從業(yè)者推薦的使用開發(fā)工具也是JBuilder,對提高學(xué)生的開發(fā)能力是有所幫助的。
5. 結(jié)論
本文針對深圳大學(xué)與英國Aston大學(xué)的Java課程在教學(xué)周期、教學(xué)內(nèi)容、教學(xué)手段等方面作了簡單的比較,通過比較與分析,可以得出的結(jié)論是:
(1)對該課程的重視程度我們還不及國外的大學(xué),可以從教學(xué)課時(shí)的分布上看出這一問題。
(2)教學(xué)內(nèi)容上面我們做得比較粗,國外做得比較細(xì),這主要體現(xiàn)在案例的取舍及前后相關(guān)聯(lián)方面。它讓我們認(rèn)識(shí)到需要在教學(xué)內(nèi)容上總結(jié)經(jīng)驗(yàn),抓住重點(diǎn),提高學(xué)生的學(xué)習(xí)興趣。
(3)教學(xué)工具我們并不落后于國外,如何引導(dǎo)學(xué)生利用先進(jìn)的開發(fā)工具掌握新知識(shí)、新的發(fā)展動(dòng)態(tài)是擺在我們面前新的課題。
本文只是單純將Java課程與國外大學(xué)的Java課程作了些比較,得出的結(jié)論可能會(huì)有失偏頗,隨著IT業(yè)的發(fā)展,科技無國界,其他的課程也會(huì)面臨同樣的問題,希望能對我國高校中的軟件課程的設(shè)置有所裨益。