張 力
(山東理工職業(yè)學(xué)院,濟寧 272000)
JAVA 是一種計算機的編程語言,具有效率高、覆蓋面廣、簡單易用等特點,不但可以用來進行桌面程序的開發(fā),還可以適用于與互聯(lián)網(wǎng)應(yīng)用的開發(fā),在當(dāng)前具有廣泛的應(yīng)用。在我國,隨著計算機和互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,JAVA 編程技術(shù)人員需求巨大,相關(guān)專業(yè)的就業(yè)前景很好,很多高校都開設(shè)了JAVA 語言相關(guān)課程。
《JAVA 程序設(shè)計基礎(chǔ)》是計算機軟件技術(shù)專業(yè)的一門核心基礎(chǔ)課程。學(xué)生打下穩(wěn)固的JAVA 基礎(chǔ),才能在Java Web 網(wǎng)站建設(shè)、Android 手機端開發(fā)、Hadoop 大數(shù)據(jù)處理等方面有上佳的表現(xiàn)。該課程的培養(yǎng)目標(biāo)旨在讓學(xué)生掌握JAVA基本語法知識、算法、面向?qū)ο笏枷搿UI、IO 流等,通過課堂理論和實踐教學(xué)提高學(xué)生的編程設(shè)計能力、動手能力、創(chuàng)造能力、解決問題以及工程應(yīng)用等能力,以滿足公司、企事業(yè)單位對軟件專業(yè)人才的能力要求。
(1)JAVA 課程的認知困境
JAVA 涉及的知識量大,理論性和實踐性又很強,所以被公認為最難學(xué)的編程語言。需要學(xué)習(xí)者具有較好的邏輯思維能力、嚴(yán)謹踏實的態(tài)度和抽象思維能力。這也是多年來JAVA 教學(xué)效果不理想的重要原因。
(2)教學(xué)方法有待改進和提高
高職高專院校中《JAVA 程序設(shè)計基礎(chǔ)》課程的教學(xué),雖然采用了目前較為普及項目化教學(xué),但是收效頗微。造成這種現(xiàn)象的主要因素是,采用單一的項目化教學(xué),削弱了學(xué)生對知識點的理解和掌握,再加上程序設(shè)計語言課大都比較枯燥,牽扯到語法、算法等知識,容易學(xué)到后面忘記前面。等到學(xué)期結(jié)束時,項目雖然實現(xiàn)了,但是學(xué)生一知半解,只能照圖索驥,不具備獨立完成項目的能力。
以上是目前高職高專學(xué)?!禞AVA 程序設(shè)計基礎(chǔ)》課程教學(xué)普遍存在的問題,對這些問題不研究解決方案,最終教學(xué)就難以取得預(yù)期目標(biāo),也難以培養(yǎng)具備核心競爭力的學(xué)生。
基于該課程教學(xué)方面存在的問題,著重采用以下幾種教學(xué)方法,以提高教學(xué)效果。
《JAVA 程序設(shè)計基礎(chǔ)》的第一堂課非常關(guān)鍵。首先采用演示法,將本學(xué)期要完成的幾個有意思的項目作品(比如推箱子游戲、貪吃蛇游戲等)展示給學(xué)生,讓學(xué)生自己在機子上操作。通過作品演示,學(xué)生們對學(xué)習(xí)本課程能夠做什么就一清二楚了。接下來用圖表展示要想實現(xiàn)這些作品需要學(xué)習(xí)哪些知識點;再用圖片或?qū)嵗故緦W(xué)會Java,可以從事Android 開發(fā),編寫手機APP;可以學(xué)習(xí)Java Web,建設(shè)動態(tài)網(wǎng)站等等。此時學(xué)生不僅對本課程有了清晰的認識,而且學(xué)習(xí)的積極性也被激發(fā)了出來。最后給出課程的考核辦法,讓學(xué)生知道怎樣才能在期末取得好的成績。
學(xué)生第一次接觸面向?qū)ο蟮木幊陶Z言,要想學(xué)好,必須深刻理解面向?qū)ο蟮幕靖拍?,比如類、封裝、繼承、多態(tài)、接口等。講課的時候,可以采用畫內(nèi)存圖的方法,讓學(xué)生從內(nèi)存的層面理解知識點。然后再給出適合的案例讓學(xué)生練習(xí),鞏固對知識點的理解。如在講解局部變量和成員變量的時候,以下面一段程序為例,帶領(lǐng)學(xué)生共同繪制此程序的內(nèi)存圖解,如圖1所示。通過畫內(nèi)存圖,學(xué)生不僅知道了局部變量和成員變量的異同點是什么,而且知道了為什么會存在這些異同點。使得學(xué)生對本知識點的理解更加深入、透徹,為后面熟練應(yīng)用知識點打下良好的基礎(chǔ)。
class Circle{
double radius;
public double calCircum(){
double circum=Math.PI*2*radius;
return circum;
}
public double calArea(){
double area=Math.PI*radius*radius;
return area;
}
}
class CircleDemo{
public static void main(String[] args){
Circle circle1=new Circle();
Circle circle2=new Circle();
circle1.radius=3.5d;
circle2.radius=2.7d;
System.out.println(“circle1周長為:”+circle1.calCircum());
System.out.println(“circle2面積為:”+circle2.area());
}
}
圖1 內(nèi)存圖解
學(xué)生理解了面向?qū)ο蟮幕靖拍钪?,教學(xué)重點就可以轉(zhuǎn)向項目化教學(xué)。通過實現(xiàn)計算器、文本編輯器、推箱子游戲、貪吃蛇游戲四個項目,綜合運用圖形用戶界面、IO 流、事件處理機制、異常處理等模塊的內(nèi)容。這里以推箱子游戲(狼推羊)為例,進行說明。推箱子游戲涉及到的主要內(nèi)容有二維數(shù)組、圖形界面設(shè)計、鍵盤方向鍵的事件處理。教師主要是帶領(lǐng)學(xué)生分析游戲初始界面如何布局?狼推羊走具體有多少種情況?如何記錄狼位置的變化?如何記錄多只羊位置的變化?如何記錄已經(jīng)進籠的羊的數(shù)量?邊分析邊實現(xiàn)?;竟δ軐崿F(xiàn)后,學(xué)生獨立完成選關(guān)、背景音樂等附加功能。
好的教學(xué)方法固然重要,但是仍需必要的教學(xué)手段加以輔助,以達到最好的教學(xué)效果。
編寫程序,最痛苦的莫過于修改錯誤,最幸福的莫過于成功的修改了錯誤。為了幫助學(xué)生更好的解決常見的錯誤,可以將這些錯誤的講解過程錄制成微視頻,共享到QQ 群或者微信群,方便學(xué)生下載學(xué)習(xí)。
所謂的授課文檔,即授課的全過程的描述文檔。包括本堂課所學(xué)知識點、教學(xué)案例、詳細的上機操作步驟、項目分析、涉及到的英文單詞。此文檔主要是幫助學(xué)生回憶課堂內(nèi)容,指導(dǎo)學(xué)生上機操作。
在教師機安裝視頻錄制軟件,將教師授課的全過程錄制成教學(xué)視頻,共享到百度云盤中,方便學(xué)生回看,以便更好的掌握課堂講授內(nèi)容。
第一堂課采用演示法演示本學(xué)期要完成的項目,讓學(xué)生了解了學(xué)習(xí)本門課程能夠做什么,學(xué)好這門課程以后能夠做什么,極大地激發(fā)了他們的學(xué)習(xí)興趣。學(xué)生眼中閃爍著求知的欲望,心中升起了滿滿的期待,正是這份期待支持著他們在日后的學(xué)習(xí)過程中闖過一道道難關(guān)。
由于JAVA 知識點多且不容易理解,學(xué)生大都一知半解或者知其然而不知其所以然。所以,只能夠照搬照抄,靈活運用知識點解決問題的能力有較大的欠缺。采用案例+畫內(nèi)存圖的方法學(xué)習(xí)知識點,能夠幫助學(xué)生從內(nèi)存的層面理解知識點,讓其知其然還要知其所以然。學(xué)生對知識點的理解達到融會貫通的程度,解決問題的時候,能夠舉一反三,聞一知十。
在學(xué)生對JAVA 知識點理解融會貫通的基礎(chǔ)上,再進行項目化練習(xí),不但能夠提高學(xué)生綜合運用知識點解決問題的能力,還進一步加深了學(xué)生對知識點的理解。項目化教學(xué)中涉及到的擴展內(nèi)容,需要學(xué)生通過自學(xué)來完成,這進一步增強了學(xué)生的自學(xué)能力。
采用上面的教學(xué)方法和教學(xué)手段授課后,學(xué)生利用JAVA 編程的興趣濃厚、知識點掌握扎實牢固、解決問題的能力有了較大的提升、自學(xué)能力大大增強。在遇到問題的時候,學(xué)生能夠通過查詢網(wǎng)絡(luò)、書籍,快速準(zhǔn)確的找到解決問題的辦法;涉及到新的知識點,能夠快速的理解并運用??偟膩碚f,學(xué)生達到了自我學(xué)習(xí)、自我提高的階段。