在移動平臺軟件開發(fā)技術(shù)課程教學(xué)中,我們總結(jié)出了“漸進式案例驅(qū)動教學(xué)法”,以案例驅(qū)動教學(xué),由淺入深,由易到難,循環(huán)漸進,逐步深入,既直觀又有目的性,并結(jié)合“啟發(fā)式”和“互動式”教學(xué)方法,使學(xué)生積極思考問題,從而提高學(xué)生獨立分析問題、解決問題和主動探索知識的能力,也極大地激發(fā)了學(xué)生的學(xué)習(xí)熱情。
一引言
隨著IT產(chǎn)業(yè)的發(fā)展,國內(nèi)大中專院校普遍都開設(shè)了計算機相關(guān)專業(yè),近幾年出現(xiàn)了需求市場暫時性的飽和,特別是剛剛畢業(yè)的,沒有工作經(jīng)驗或僅具備入門級能力水平的IT人才略顯過剩。我學(xué)院屬于“三本”學(xué)校,生源質(zhì)量相對較差,面對存在巨大潛力的IT產(chǎn)業(yè),并沒有開設(shè)傳統(tǒng)的計算機專業(yè),而是把其中的一個教學(xué)重點放在移動平臺技術(shù)應(yīng)用上,實施特色教學(xué),針對就業(yè)市場的盲點有的放矢地培養(yǎng)人才。
然而要想達到理想的教學(xué)目的也并非易事,除社會上存在的培訓(xùn)班外,幾乎沒有正規(guī)院校開設(shè)這門課程,教學(xué)資源稀少,缺乏借鑒性經(jīng)驗。但在這種情況下,我們經(jīng)過兩年的嘗試基本取得了預(yù)期效果,經(jīng)課程組探索總結(jié)出這樣的教學(xué)方法,即漸進式案例驅(qū)動教學(xué)法。
移動平臺軟件開發(fā)技術(shù)這門課程主要目的是使學(xué)生掌握一門具體軟件技術(shù)(如Android或者IOS平臺),達到熟練應(yīng)用的程度,最終以獨立開發(fā)一個完整的應(yīng)用程序或者游戲娛樂軟件為考核標(biāo)準(zhǔn),但是理論上仍然屬于程序設(shè)計課程范疇。程序設(shè)計的常規(guī)教學(xué)法是從基本語法、語句開始介紹,講解每條語句時都會有相應(yīng)的舉例說明,隨著語句的增多,逐漸引入一些簡單的程序段。這種方法的好處是在概念上對程序設(shè)計語句有較清晰的認(rèn)識,容易掌握每條語句的語法規(guī)則,便于教師講解各種概念。但是這種傳統(tǒng)的教學(xué)模式有一個明顯的不足,即學(xué)生在學(xué)習(xí)過程中,只是被動地去理解和記憶教師介紹的各種語法知識和基本的語句概念,無法從綜合應(yīng)用的整體角度去理解每條語句的作用及應(yīng)用范圍,學(xué)生只見樹木、不見森林,課程最后編應(yīng)用程序時,學(xué)生往往無從下手。所以我們在教學(xué)中采用漸進式案例驅(qū)動教學(xué)法,以案例驅(qū)動教學(xué),有意識地舉一些綜合性的例子,由淺入深,由易到難,循環(huán)漸進,逐步深入,綜合比較,既直觀又有目的性,做到有的放矢,并結(jié)合“啟發(fā)式”和“互動式”教學(xué)方法,使學(xué)生積極思考問題,從而提高學(xué)生獨立分析問題、解決問題和主動探索知識的能力,也極大地激發(fā)了學(xué)生的學(xué)習(xí)熱情。
二教學(xué)案例
第一步,為了進一步吸引學(xué)生,用動畫模擬粒子效果實現(xiàn)一個煙花的效果,五彩紛紛,絢麗奪目。當(dāng)學(xué)生看到這個案例的運行效果后品頭論足的同時,會對這個燃放煙花的效果是用什么技術(shù)實現(xiàn)的、如何實現(xiàn)的等問題產(chǎn)生濃厚的興趣,將學(xué)生的好奇心和求知欲調(diào)動起來后,讓學(xué)生大膽想象和假設(shè)應(yīng)該是如何實現(xiàn)的。
第二步,給出這個案例需要的技術(shù)知識,畫布、畫筆、形狀繪制、線程技術(shù)、雙緩沖視圖類、簡單碰撞檢測等。簡單回顧已經(jīng)學(xué)習(xí)過的線程技術(shù),畫布、畫筆、多邊形形狀繪制等知識在本案例中的使用方式。引出本次課程需要掌握新內(nèi)容:認(rèn)識雙緩沖視圖類的使用和如何應(yīng)用線程技術(shù)和碰撞檢測實現(xiàn)一個動畫效果。
第三步,分解案例,對一個粒子動畫過程進行分析,并演示效果。
第四步,應(yīng)用動畫實現(xiàn)原理,通過動畫連環(huán)冊演示并講解在現(xiàn)實中動畫是如何在視覺中產(chǎn)生的,以及幀頻及速度對動畫效果的影響。把這個動畫產(chǎn)生的現(xiàn)實過程與技術(shù)實現(xiàn)過程對應(yīng),介紹技術(shù)使用方法和經(jīng)驗技巧。
第五步,代碼開發(fā)過程演示,讓學(xué)生親眼看著老師如何具體地應(yīng)用相關(guān)技術(shù)點協(xié)同實現(xiàn)這個動畫過程,并進一步說明,同時考慮編碼規(guī)范、代碼設(shè)計等需要注意的問題。代碼如下(篇幅有限,僅列出關(guān)鍵代碼):
1應(yīng)用程序啟動類(代碼略)
Android程序的入口類,繼承自Activity類,設(shè)置要
2繪制線程
//繪制線程類或者叫刷屏線程類,繼承自Thread線程類
public class DrawThread extends Thread {
……
//方法:線程的執(zhí)行方法,用于繪制屏幕和計算幀速率,主要功能是當(dāng)循環(huán)標(biāo)志位為真時
//反復(fù)執(zhí)行畫布的繪制工作,同時為保證線程同步應(yīng)用了加鎖和解鎖功能。
public void run() {
Canvas canvas = 1;//聲明一個Canvas對象
while (flag) {
canvas = surfaceHolder.lockCanvas(1);//通過為畫布加鎖獲取BallView的畫布對象
bv.doDraw(canvas); //調(diào)用BallView的doDraw方法進行繪制
if (canvas != 1) { //如果canvas不為空
surfaceHolder.unlockCanvasAndPost(canvas);//解鎖并將畫布對象傳回
}
}
Thread.sleep(sleepSpan); //線程休眠一段時間,這里的休眠時間是固定的,后期進//行代碼優(yōu)化時,應(yīng)該使用動態(tài)的休眠時間。
}
}
}
3小球視圖類(代碼略)
小球視圖類,創(chuàng)建小球?qū)ο蟪跏蓟∏驁D片資源和繪制自己的功能
4小球運動邏輯
/ /邏輯線程類或者叫計算線程類,繼承自Thread線程類
public class BallThread extends Thread {
……
public void run() {//方法:線程的執(zhí)行方法,負(fù)責(zé)根據(jù)物理公式計算小球的位置坐標(biāo)并修改//小球?qū)ο蟮南嚓P(guān)屬性
while (flag) {
current = System.nanoTime();//獲取當(dāng)前時間,單位為納秒
//獲取從玩家開始到現(xiàn)在水平方向走過的時間
double timeSpanX =(double) ((current - father. timeX) / 1000 / 1000 / 1000);
//處理水平方向上的運動
ball.x = (int) (ball.startX + ball.v_x * timeSpanX);
//處理豎直方向上的運動
if (ball.bFall) {//判斷球是否已經(jīng)移出擋板
……
第六步,布置課堂練習(xí)一,模仿剛剛老師寫的一個粒子的動畫案例,自己實現(xiàn)一遍。練習(xí)二,實現(xiàn)一個小球的從高處落下運動動畫。練習(xí)三,實現(xiàn)燃放煙花的效果。對于練習(xí)二和練習(xí)三,在老師的引導(dǎo)下(老師不做代碼示范)完成,同時老師需要隨時解答學(xué)生的提問,并在大多數(shù)學(xué)生完成的時候,給出老師的代碼示例,并根據(jù)輔導(dǎo)情況進行總結(jié)。
在巡回輔導(dǎo)的過程中,將制作的既快又比較有新意的程序,通過多媒體教學(xué)網(wǎng)絡(luò),播放給全班同學(xué)觀看。
三教學(xué)體會
大量的事實證明,如果一個人對某個事物沒有絲毫興趣,是很難全身心地去學(xué)習(xí)和探究該事物的。漸進式案例驅(qū)動教學(xué)法采用“先實例,后語法”的教學(xué)方式,在備課時結(jié)合教學(xué)內(nèi)容設(shè)計一些有趣的程序,上課首先讓學(xué)生觀看有趣的程序運行效果,有效地激發(fā)了學(xué)生的好奇心和求知欲,使學(xué)生產(chǎn)生強烈的學(xué)習(xí)欲望,然后分析案例的實現(xiàn)方法,進而引出案例中用到的技術(shù)及功能。
在漸進式案例驅(qū)動教學(xué)法這種教學(xué)嘗試中有如下體會:
第一,有助于培養(yǎng)學(xué)生的觀察、思維等能力。案例教學(xué)方法在充分調(diào)動學(xué)生主動學(xué)習(xí)積極性的前提下,引入并講授新知識、新方法,這有助于培養(yǎng)學(xué)生的思維能力、觀察力、想象力及創(chuàng)新意識。
第二,案例的設(shè)計是關(guān)鍵。案例要有趣,又要與教學(xué)內(nèi)容結(jié)合,可以結(jié)合學(xué)生已學(xué)習(xí)過的內(nèi)容準(zhǔn)備小綜合案例,還能起到溫故而知新的作用。
第三,本教學(xué)方法可以更好地適應(yīng)不同程度的學(xué)生。在傳統(tǒng)的程序設(shè)計語言教學(xué)中,在講過語句規(guī)則之后,給出一個一般只含有課本上已學(xué)過的簡單語句的簡單實例,僅僅是說明其語法及功能,程序本身往往沒有多大的實用性及有趣性,而在本教學(xué)方法中,為了程序有趣,用到了一些教材外的知識,使得學(xué)習(xí)能力較強的并且對此感興趣的同學(xué)可以學(xué)到更多的知識。
第四,本教學(xué)方法可以使學(xué)生更快、更深入地掌握整個技術(shù)框架。只學(xué)得一個個孤立的知識,很難達到綜合應(yīng)用的能力,必須在實踐環(huán)境中更快、更好地掌握技術(shù)并獲得解決實際問題的能力。
第五,案例教學(xué)法可以大大提高課堂教學(xué)效率。首先,由于這種教學(xué)方法是以激發(fā)學(xué)生的學(xué)習(xí)興趣為起點。其次,由于每個實例中不僅有要講的新的技術(shù)知識,還含有豐富的各種實用案例的基本設(shè)計思想,這使得在寶貴的課堂教學(xué)時間里,使學(xué)生學(xué)到更多的有實用價值的知識與設(shè)計方法,提高學(xué)生的設(shè)計能力。
在教學(xué)過程中,采用漸進式案例驅(qū)動教學(xué)法具有很強的引導(dǎo)性和擴展性,將理論與實踐有機地結(jié)合起來,有意識地激發(fā)學(xué)生的學(xué)習(xí)興趣,增強學(xué)生學(xué)習(xí)的主動性,通過綜合比較,學(xué)生可以很容易地、全面地掌握所學(xué)知識,提高解決實際問題的能力。教師在本教學(xué)方法中由知識的傳授者、灌輸者轉(zhuǎn)變?yōu)閷W(xué)生主動學(xué)習(xí)的幫助者、促進者,我們使用此種方法取得了很好的教學(xué)效果,深受學(xué)生的歡迎。
參考文獻
[1]李寧.Android應(yīng)用開發(fā)實踐[M].機械工業(yè)出版社,2012,1.
[2]余志龍.GoogleAndroidSDK開發(fā)范例大全(第三版)[M].人民郵電出版社,2011.11.
[3]郝玉龍..Android程序設(shè)計基礎(chǔ)[M].清華大學(xué)出版社,2011.10.