韓慧 王春玲 孫俏 陳志泊
摘要:在Java理論課程教學方法的研究與實踐方面,提出推行“學生為主體,教師為主導”的研究型課堂教學模式、進行對比教學、引入Java的新動向和新應用等措施激發(fā)學生的學習積極性;在實驗課程教學方法的研究與實踐方面,介紹如何設計由簡到繁、具有原創(chuàng)性的實驗,鼓勵學生從不同的角度思考問題和實現(xiàn)任務,培養(yǎng)學生的自主學習能力;在考試模式的研究與實踐方面,探討如何采用合理的考試模式、體現(xiàn)過程考核的重要性、優(yōu)化考試內容等,更加合理地評價學習效果。
關鍵詞:Java程序設計;對比教學;啟發(fā)式教學;類庫學習
0、引言
現(xiàn)階段,Java程序設計在教學方法和考試模式方面存在一些不足之處。在教學方法上,授課方式還是采用以教師為主體的教學模式,教師沒有引導學生積極主動地參與到課堂教學活動中,容易導致學生被動接受和不善于思考,從而降低學生的學習主動性和積極性;教師在授課過程中與學生的討論和溝通不夠,導致教師不了解學生對所學知識點的掌握程度;課程與發(fā)展前沿、應用領域的結合不夠緊密,導致學生對所學課程的應用不明確;在實驗環(huán)節(jié)中,實驗的設置通常是一個實驗對應一個章節(jié)的知識點,跨章節(jié)的綜合實驗較少,導致學生在面對大的任務時沒有思路,不知從哪方面人手,無法將所學內容自如地應用到實際領域中。在考試模式方面,紙制試卷考核和機考方式各有優(yōu)勢和不足。
針對上述問題,筆者從理論課程教學、實驗課程教學和考試模式3個方面,探討如何整合和優(yōu)化Java程序設計課程的教學方法和考試模式,使其更為合理,從而有效激發(fā)學生的學習積極性,培養(yǎng)學生主動思考和解決問題的能力以及創(chuàng)新和實踐能力。
1、理論課程教學方法的研究與實踐
1.1 推行“學生為主體。教師為主導”的研究型課堂教學模式
現(xiàn)有的教學方法還是以教師講授為主,容易導致學生學習興趣不高,因此必須改革傳統(tǒng)的教學方法,推行“學生為主體,教師為主導”的研究型課堂教學模式。教師授課不能只局限于讓學生學會表面內容,從而停留在簡單使用的階段。教師在課堂上要采用啟發(fā)式教學方式,多問為什么,培養(yǎng)學生主動思考問題的意識,引導學生理解課程知識點深層次的內容。對于每一個知識點,教師需要精心設置一系列巧妙的環(huán)環(huán)相扣的問題,增強教學過程的趣味性,使學生積極地參與其中,在互問互答中自覺、主動地掌握所學知識。例如,學生在學習TreeSet
……
TreeSet
//tree調用add( )方法依次添加多個字符串
tree.add("milk");
tree.add("coffee");
tree.add("apple");
tree.addCegg");
tree.add("noodle");
//使用Iterator
Iterator
while(t,hasNextO)
{
String s=t.next0;
System.out.println(s);
}
……
上述程序可以將多個字符串按照字典序由小到大輸出,即apple coffee eggmilknoodle。學生基本都能編寫上述程序,但是教師不能到此止步,還應繼續(xù)提問:為什么tree對象中的各個字符串可以按照字典序輸出?然后由此繼續(xù)討論,引出tree的結構是如圖1所示的平衡排序二叉樹(序號①~⑤表示tree添加各個節(jié)點的先后順序)。
圖1中,任一節(jié)點的左子樹(左分支)都比該節(jié)點小,右子樹(右分支)都比該節(jié)點大。讀取時,要從根節(jié)點“milk”開始,向下遍歷到最底層的左子樹節(jié)點“apple”,之后按照圖1中虛線的方向順序讀取,再按照實線的方向順序讀取,最終將字符串按照字典序讀取出來。
該例子不僅讓學生學會如何進行程序設計,還能讓學生了解底層的原理,增強學生主動思考的意識。因此,教師需精心選擇知識模塊,引導學生最大限度地參與課程的各個環(huán)節(jié),包括授課材料的搜集、討論、篩選、講解以及問題的釋疑、分析總結等,充分調動學生的學習積極性和主動性。
1.2 進行對比教學,加強學習效果
(1)注重Java語言和先修課c++的對比教學,重點講解兩者之間不同的知識點,讓學生在深刻理解Java的同時,更好地鞏固c++相關原理。
①基礎語法部分。教師可以重點講解Java與C++處理數(shù)組的不同方式。C++把數(shù)組作為基本變量,在聲明數(shù)組的同時為其開辟內存空間,并且數(shù)組的長度不能改變;而Java將數(shù)組作為一種特殊的類處理,使用new運算符為其開辟內存空間,并且數(shù)組的長度可變,令編程更加靈活。此外,與c++不同,Java中的基本類型變量(如int,float,double,char等)都有對應的封裝類,即Java中的一切都可以當做類處理,因此Java更符合面向對象的思想,是更純粹的面向對象編程語言。
②面向對象原理部分。教師可以重點講解lava與C++關于繼承的不同處理機制。Java支持單重繼承,即一個子類只能有一個父類,其優(yōu)點是程序結構比c++簡單、代碼的可靠性高,缺點是有些情況下不能像c++的多重繼承那樣將問題的復雜性表達完整。為了克服單重繼承的不足,Java提出了接口(interface)的概念(其中只包含抽象方法和常量),一個類可以通過實現(xiàn)多個接口模擬多重繼承。教師還可以將Java中的接口與c++中包含虛函數(shù)和常量的類進行對比講解,使學生更容易掌握和理解。
(2)給定任務,鼓勵學生從不同的角度思考和實現(xiàn),并且將實現(xiàn)的結果進行對比。例如,對于正整數(shù)36168,從個位開始,依次輸出每個數(shù)位上的數(shù)字。
對于上述問題,可以使用普通變量對10求余的方法實現(xiàn),如下所示:
intx:
x=reader.nextInt( );//從鍵盤上輸入一個正整數(shù)x
do{ //通過循環(huán)中的求余和除法操作可以按順序輸出個位、十位……上的數(shù)
System.out.print(x%10+”);
x=x/10:
}while(x>O);
此外,使用字符串類(String)也可以實現(xiàn),如下所示:
inti:
String s=reader.nextLineO;//從鍵盤上輸入一個正整數(shù),將其作為字符串處理
char a[ ]=s.toCharArray( );//將字符串s轉換為字符數(shù)組a,a[0]存放個位數(shù),依此類推
for(i=O;i System.out.print(a[i]+""); 上述兩種方法都可以輸出“86163”,但是實現(xiàn)的角度不同,前者使用基礎語法部分中求余的概念,后者使用常用類中的String類。通過從多種角度思考問題,學生開闊了思路,將所學知識融會貫通,加強了學習效果。 1.3 在課程中引入Java的新動向和新應用 現(xiàn)階段,教師將授課重點放在對Java語法和程序設計原理的講解上,所用案例多數(shù)都是與具體知識點對應的小例子,與Java的發(fā)展前沿、應用領域結合得不夠緊密,導致學生對所學課程的作用不甚了解。教師在授課時應該將理論聯(lián)系實際,從后續(xù)課程和就業(yè)市場中提煉需求,將Java的新動向、新應用、新特性及其與業(yè)界的銜接等轉變?yōu)槭谡n重點。例如,教師在講授某個知識點時,以一個實際的應用項目為依托,向學生介紹對應知識點在項目中的具體體現(xiàn),讓學生體會Java與應用的密切關系,提高學習興趣,而且相信自己學完該課程之后,也能做出可以應用于實際的項目,大大增強自信心和提高學習積極性。 2、實驗課程教學方法的研究與實踐 2.1 精心設計實驗內容,提高學生實踐能力 Java實驗課程是鍛煉學生將所學知識點進行綜合運用,提高其動手能力和實踐能力的有效途徑之一,因此,如何針對學生特點設計合理的實驗內容,有效地幫助學生鞏固所學知識非常關鍵。 (1)實驗課程中存在的一個顯著問題是學生面臨所給任務時,不知從哪方面人手,無法將所學內容自如地應用到實際領域中。針對這一問題,教師可以設計閱讀為主型實驗和編程為主型實驗,由簡到難,循序漸進地提高學生的程序設計能力。首先,學生做閱讀為主型實驗,給出部分源代碼,學生填寫剩余的源代碼,培養(yǎng)閱讀和理解源程序的能力,從而掌握其中涉及知識點的含義和用法;然后,學生做編程為主型實驗,只給出任務描述,學生獨立完成實驗的設計和實現(xiàn),加強實踐能力。 (2)學生面臨所給任務時,不愿意主動思考問題,而是希望從網(wǎng)絡或者其他途徑找到現(xiàn)成的解決方法。針對這一問題,教師在設計實驗時要注意題目的原創(chuàng)性,令學生不能從網(wǎng)絡上直接找到答案,即使能找到代碼也必須作出較大修改,才能完成任務。例如,猜數(shù)游戲是一個經(jīng)典實驗案例,筆者在原案例基礎上附加個性化前臺界面、隨機退出游戲機制、重復玩游戲機制。學生無法找到完全符合的代碼,必須主動思考才能實現(xiàn)任務。 (3)設計合理的跨章節(jié)綜合實驗,或者以項目為依托,將其劃分為不同的功能模塊,讓學生以分組的形式完成其中一個模塊的設計與實現(xiàn)。另外,每組不能只考慮自己的模塊,還需要考慮和其他模塊的連接和協(xié)調,這樣才能將各模塊有效地整合在一起。因此,這樣的實驗內容可以鍛煉學生的創(chuàng)新思維和團隊協(xié)作能力。 2.2 加強類庫學習,培養(yǎng)學生的自主學習能力 Java提供的類庫性能穩(wěn)定、效率高、具有很好的重用性。Java語言的各個重要知識點,如常用類、異常處理、輸入/輸出流、多線程、網(wǎng)絡編程等在類庫中都有對應的包(package),因此類庫的學習和使用非常重要。由于課時和篇幅的限制,理論課程和教材只能對類庫中一部分類的特性和方法進行介紹,其余的要靠學生自主學習。 針對上述問題,教師可以設計一些實驗,其中的部分代碼需要理論課程或者教材中未講到的類實現(xiàn)。我們鼓勵學生通過這些實驗自主學習類庫內容,并且結合Java運行平臺的聯(lián)機幫助或搜索引擎等資源,將自學內容應用到實際問題中。例如,對于輸入/輸出流中的對象流,教材中只講解將已知數(shù)量的對象信息寫入文件和從文件讀出的操作。筆者在設計這一部分實驗時,要求學生對未知數(shù)量的對象信息進行輸入和輸出。學生通過自主學習完成任務后,學習興趣和自信心大大增強。 3、考試模式的研究與實踐 我們在教學過程中研究適合Java程序設計課程的科學的考試模式,注重過程考核和學生能力的評價,優(yōu)化考試內容,以更加有效地檢驗學生的學習效果。 (1)選取合理的考試模式。北京林業(yè)大學對于Java程序設計的考試模式是在2011年之前采用紙質試卷考核方式,2011年之后采用機考方式。兩種考試模式各有優(yōu)勢和不足,前一種考試模式可以有效、細致地考查學生對所學理論知識點的掌握程度,但是無法合理地考查學生在規(guī)定時間內的程序設計能力;后一種考試模式注重考查學生在規(guī)定時間內的編程、調試、糾錯、優(yōu)化等能力,但是考查的知識點不夠全面。因此,教師需要結合兩種考試模式的優(yōu)點,對學生的學習效果進行全面考查。 (2)注重過程考核。現(xiàn)階段的課程考核方式是考勤+實驗+期末成績。除了傳統(tǒng)的考核方式,教師還應適當增大階段化學習效果在考試評價中所占的比例,注重過程考核。例如,考查學生主動參與教學環(huán)節(jié)的程度、利用工具和綜合創(chuàng)造等技能、創(chuàng)新意識和分工協(xié)作能力、分組成員在團隊中的工作量以及增加階段化在線測試的次數(shù)等。 (3)優(yōu)化考試內容?,F(xiàn)有的考試內容通常是一道試題反映一個或者一部分知識點,教師應該精心設計考試內容,使其能夠貫穿多個知識點,反映出Java語言的精髓。此外,適當增加能夠體現(xiàn)Java新特性、與產(chǎn)業(yè)界緊密相關的試題,考查學生的綜合應用能力。 4、結語 除了上述考試方法與考試模式的研究與實踐外,教師還應該將教學與科研相結合,對于有興趣和學有余力的學生,要引導他們擴展知識量,學習課程以外的內容。例如,教師可以設計附加實驗,讓有能力的學生完成必做實驗之后,再做有一定難度的附加實驗;鼓勵學生參加有影響力的計算機程序設計大賽,通過富有挑戰(zhàn)性的題目,培養(yǎng)學生的團隊合作精神和創(chuàng)新意識;鼓勵學生積極申報大學生創(chuàng)新創(chuàng)業(yè)訓練計劃項目或參與教師的科研項目,將Java作為有效工具真正應用到實際領域中,促進學生實踐能力和創(chuàng)新性思維的培養(yǎng),提高學生的應用能力,最終在實際應用中檢驗教師的教學效果和學生的學習成果,實現(xiàn)理論與實踐的有效結合。