唐 兵 張 黎
(湖南科技大學(xué)計算機(jī)科學(xué)與工程學(xué)院,湖南 湘潭 411201)
近年來,Android軟件開發(fā)工程師的就業(yè)前景非常好,國內(nèi)外各大高校逐步引入了Android程序設(shè)計相關(guān)的課程,同時Android與移動智能終端相關(guān)的科研也慢慢開展。作為一門新興課程,其教學(xué)方法的研究和實踐還處于探索階段。常規(guī)的教學(xué)模式以理論課為主,上機(jī)實驗課為輔,由于Android的實踐性較強(qiáng),這樣的教學(xué)模式存在諸多弊端,學(xué)生自我探索和訓(xùn)練也面臨各種困難。現(xiàn)有的一些基于案例和項目驅(qū)動的教學(xué)方法,雖然在一定程度上對于提高學(xué)生動手能力有一定的幫助,但仍存在著教學(xué)案例不太合理,一個案例只對應(yīng)某一知識點,且案例太小,一旦面對大型的Android項目時且APP需要上線,學(xué)生不能獨立從事開發(fā)任務(wù)。當(dāng)前的Android培養(yǎng)模式,與市場與實際脫節(jié)較嚴(yán)重,不能滿足學(xué)生就業(yè)的需要,對學(xué)生就業(yè)質(zhì)量也有影響,教學(xué)案例沒有融入當(dāng)前“互聯(lián)網(wǎng)+”和基于云計算的移動互聯(lián)網(wǎng)創(chuàng)業(yè)環(huán)境,案例過于老舊,很多缺乏網(wǎng)絡(luò)編程相關(guān)案例。這樣,Android程序設(shè)計的教學(xué)問題就成了當(dāng)前一個比較緊迫的任務(wù)。本項目提出基于項目驅(qū)動的移動智能終端應(yīng)用開發(fā)教學(xué)模式,通過設(shè)計豐富的項目案例,結(jié)合互聯(lián)網(wǎng)創(chuàng)業(yè),并開展相應(yīng)的教學(xué)實踐,研究成果將能夠幫助學(xué)生提高Android開發(fā)能力,讓學(xué)生更有效地把握大型Android項目,為學(xué)生基于Android的移動互聯(lián)網(wǎng)創(chuàng)新創(chuàng)業(yè)帶來幫助,開發(fā)完整的APP且能參與各種科技創(chuàng)新競賽,能有效的激勵學(xué)生的自主學(xué)習(xí)意識,滿足個性化的需求,提高學(xué)生的實踐能力和工程能力,具有重要的現(xiàn)實意義。
手機(jī)和移動互聯(lián)網(wǎng)的普及將我們帶入一個移動狀態(tài)下的在線互動時代。根據(jù)數(shù)據(jù)調(diào)查顯示,我國手機(jī)網(wǎng)民規(guī)模早已位居世界第一位,中國的移動互聯(lián)網(wǎng)市場進(jìn)入了快速發(fā)展的黃金階段。隨著移動互聯(lián)網(wǎng)的業(yè)務(wù)的不斷豐富,人們可隨時隨地通過手機(jī)、平板等移動設(shè)備快速獲得資訊服務(wù)、電子支付、網(wǎng)上購物、社交服務(wù)、智慧出行等各項方便快捷的服務(wù),各種創(chuàng)新的應(yīng)用正深刻地影響著我們的生活,如QQ、微信、支付寶、滴滴、淘寶、美團(tuán)、美圖秀秀、網(wǎng)易云音樂、摩拜等APP,已成為我們生活中不可獲取的一部分。中國移動互聯(lián)網(wǎng)的迅猛發(fā)展,一方面得益于國家政策的層面,大力推行“互聯(lián)網(wǎng)+”;另一方面是國家基礎(chǔ)網(wǎng)絡(luò)的提升,4G/5G及家庭網(wǎng)絡(luò)的提速,人們可實現(xiàn)隨時隨地上網(wǎng);另一方面是市場的驅(qū)動,各種智能終端的應(yīng)用開發(fā),其開發(fā)成本非常低,這也在一定程度上導(dǎo)致了各種APP不斷出現(xiàn)并推向市場。
2007年,Google公司對外發(fā)布了基于Linux內(nèi)核的新型智能終端操作系統(tǒng)Android。該系統(tǒng)可廣泛應(yīng)用于平板電腦、智能手機(jī)、智能電視等。與蘋果公司的智能移動終端平臺iOS相比,Android具有開放性,獲得了終端硬件制造商、運營商的支持,開發(fā)門檻更低。Android系統(tǒng)在智能手機(jī)市場中處于絕對主導(dǎo)地位,占據(jù)的全球智能手機(jī)份額遠(yuǎn)超蘋果的iOS。Android軟件開發(fā)工程師的需求與日俱增,Android應(yīng)用程序開發(fā)的就業(yè)前景非常好。正是在這種大好形勢下,國內(nèi)外各大高校在逐步引入Android相關(guān)的移動智能終端開發(fā)課程,以就業(yè)為導(dǎo)向,如何能使學(xué)生快速熟練的掌握Android應(yīng)用開發(fā)的技能,培養(yǎng)滿足企業(yè)需求的Android開發(fā)工程師,是高校Android相關(guān)課程教學(xué)迫切需要解決的問題。
Android應(yīng)用程序開發(fā)作為一門新興課程,其教學(xué)方法的研究和實踐還處于探索階段。首先是理論課,主要以教師在課堂講授為主,內(nèi)容圍繞著Android各知識點展開,然后配合機(jī)房的實驗課,以學(xué)生編程為主,老師做實驗指導(dǎo),內(nèi)容圍繞理論課上的關(guān)鍵知識點來展開。這樣的程序開發(fā)類課程的傳統(tǒng)教學(xué)模式存在的諸多的弊端有以下幾點。
(1)無法滿足學(xué)生的個性化需要。教師按照教學(xué)的進(jìn)度,組織課堂教學(xué)。在理論課上講授知識點,實踐課上學(xué)生完成“圍繞知識點而設(shè)計的實驗”。整個過程完全在教師的統(tǒng)一掌控下開展。老師沒有充分考慮學(xué)生之間接受能力的差異及水平的差異,所有的學(xué)生編寫完成一樣的程序作業(yè)或任務(wù),無法滿足學(xué)生個性化需要、達(dá)到因材施教。
(2)課堂教學(xué)的效率不高。由于學(xué)時學(xué)分等政策原因,不能完全取消理論課教學(xué)而僅保留實驗課。而程序設(shè)計課程注重學(xué)生實踐動手能力的培養(yǎng),學(xué)生需要的是程序開發(fā)和調(diào)試的過程中解決問題的能力,這就要求課堂教學(xué)應(yīng)以交流、探討、解決問題為主。然而傳統(tǒng)的教學(xué)以“填鴨式”的傳授知識為主,并不會講解程序開發(fā)中的技巧,且受教室的場地約束,在課堂教學(xué)中也不便于去展示程序開發(fā)中的技巧,老師講解的知識點,學(xué)生不能立刻去嘗試,得等到課后或者上機(jī)實驗課才能去嘗試。真正在上機(jī)實驗時,學(xué)生又經(jīng)常碰到問題,有些是課堂老師講過的,但是學(xué)生又忘記了,因此老師又要花較多時間來對知識點進(jìn)行重復(fù)。
(3)不利于培養(yǎng)學(xué)生的實踐能力和自主學(xué)習(xí)能力。傳統(tǒng)的一對多問題講解和“填鴨式”的教學(xué)使學(xué)生養(yǎng)成了嚴(yán)重的思維惰性。這就導(dǎo)致了很多學(xué)生是被動的接受知識,練習(xí)式甚至是驗證式的完成老師安排的實踐任務(wù),學(xué)生不善于鉆研和探索,不具備分析問題、解決問題的能力,同時還不具備自主學(xué)習(xí)能力。然而這些能力都是程序員所必須具備的。
(4)部分教師雖然在課堂教學(xué)中采用了案例教學(xué),但這些案例往往是對特定知識點的練習(xí),與實際的項目開發(fā)相差很大,學(xué)生畢業(yè)后遇到項目開發(fā)時不能正確分析具體問題;課后編程作業(yè)或編程實驗雖然在一定程度上鍛煉學(xué)生的編程能力,但這些題目往往是針對某個特定的知識點,過于簡單,導(dǎo)致很多學(xué)生編程作業(yè)完成得很好,但實踐能力卻得不到提升。
由于立足于“應(yīng)用程序開發(fā)”,Android應(yīng)用開發(fā)課程的教學(xué)目標(biāo)主要是講授調(diào)用Android操作系統(tǒng)應(yīng)用框架層提供的API、四大組件及相關(guān)Java類庫的方法,課程目標(biāo)是培養(yǎng)學(xué)生開發(fā)Android應(yīng)用程序和實際工程項目的能力。從授課的內(nèi)容來講,難度不是很大,但是問題在于學(xué)生“聽得懂”只是教學(xué)目標(biāo)的第1步,如何“學(xué)得活、做得出”才是難點所在。Android作為一門極其注重動手實踐能力的課程,傳統(tǒng)的“老師講、學(xué)生聽”的教學(xué)方法只能夠達(dá)到第1步,但是在加深學(xué)生對知識的理解,靈活應(yīng)用方面則效果較差,即使配合實驗課,也因為學(xué)時限制和教學(xué)進(jìn)度安排等因素,導(dǎo)致學(xué)生只能完成一些簡單的原理驗證性實驗,這對提高學(xué)生動手實踐能力的作用不是很大。
黃鏘等提出了以學(xué)生為實踐主體,直接進(jìn)行項目實訓(xùn)的一種教學(xué)方法,將課程知識內(nèi)容進(jìn)行分解和轉(zhuǎn)化,通過項目的形式組織和開展教學(xué),將師生融為一個團(tuán)隊,一起來完成一個完整項目。以項目為導(dǎo)向,與傳統(tǒng)的理論講授模式不同,它可以使學(xué)生在動手實踐的過程中,邊學(xué)邊做,鍛煉學(xué)生的實際編程能力,體會軟件開發(fā)的全過程。從而,學(xué)生能夠積累軟件開發(fā)的技能和經(jīng)驗。眾多研究也表明,基于項目導(dǎo)向的教學(xué)方法,是非常適合于Android應(yīng)用開發(fā)的。
近幾年來,國內(nèi)外高校不斷探索軟件工程和程序設(shè)計類相關(guān)課程的教學(xué)研究工作,主要通過引入了CDIO的思想。CDIO的意思是構(gòu)思(Conceive)、設(shè)計(Design)、實施(Implement)和運行(Operate),它強(qiáng)調(diào)以產(chǎn)品、生產(chǎn)流程和系統(tǒng)從研發(fā)到運行的生命周期為載體。通過系統(tǒng)的產(chǎn)品設(shè)計,培養(yǎng)學(xué)生的個人專業(yè)技能、團(tuán)隊協(xié)作和溝通技能、職業(yè)技能,培養(yǎng)在企業(yè)和社會環(huán)境下,對產(chǎn)品和系統(tǒng)進(jìn)行構(gòu)思、設(shè)計、實施、運行等的綜合能力素質(zhì)。對于軟件開發(fā)來講,模擬企業(yè)工作環(huán)境和工作方法,更加貼近企業(yè)中軟件產(chǎn)品生產(chǎn)開發(fā)流程,對于學(xué)生未來踏入職場是非常有益的。其核心思想特別強(qiáng)調(diào)了以項目驅(qū)動的方式,來培養(yǎng)和提高學(xué)生軟件開發(fā)的實踐動手能力。雖然目前的這些研究工作對軟件工程和程序設(shè)計類相關(guān)課程的教學(xué)方法改革進(jìn)行了一些實踐與探索,但仍然缺乏有效的教學(xué)資源、教學(xué)案例、教學(xué)手段來幫助學(xué)生快速深入地理解和掌握軟件設(shè)計的理論、技術(shù)及開發(fā)技巧,并切實培養(yǎng)和提高他們軟件開發(fā)的實踐動手能力。宋佳喜等提出了基于CDIO理念的Android應(yīng)用程序開發(fā)教學(xué)改革,引入了CDIO工程教育理念,以眾多小案例進(jìn)行授課,但是所選取的案例過于簡單,對于大型的Android項目,學(xué)生還是不能很好的把握,且所選擇的案例與當(dāng)前的“互聯(lián)網(wǎng)+”時代脫節(jié)。如何選擇較好的案例這是一個重要的問題,好的案例能夠引起學(xué)生的極大興趣。
綜上所述,雖然現(xiàn)有的一些基于案例和項目驅(qū)動的Android教學(xué)方法或經(jīng)驗是可以借鑒的,雖然在一定程度上對于提高學(xué)生動手能力有一定的幫助,但仍存在著教學(xué)案例不太合理,一個案例只對應(yīng)某一知識點,且案例太小,一旦面對大型的Android項目時,學(xué)生不能獨立從事開發(fā)任務(wù),技術(shù)不夠扎實。當(dāng)前的培養(yǎng)模式,不能滿足學(xué)生就業(yè)的需要,對學(xué)生就業(yè)質(zhì)量也有影響,同時對于學(xué)生創(chuàng)業(yè)也沒有較大幫助,所開發(fā)的是小例子、小玩具而不是完整的可以拿得出的產(chǎn)品。由于課程先后順序的原因,所開發(fā)的APP如果需要網(wǎng)絡(luò)功能,先修課程需要涉及Web開發(fā)和網(wǎng)絡(luò)通信,而現(xiàn)實情況是很多學(xué)校在課程先后順序設(shè)置上存在不合理,導(dǎo)致Android教學(xué)中往往將Android網(wǎng)絡(luò)編程這個知識點跳過或者降低要求。
針對Android程序設(shè)計知識結(jié)構(gòu)的特點,形成有效的基于項目案例的訓(xùn)練模式,讓學(xué)生通過系統(tǒng)學(xué)習(xí)和訓(xùn)練來掌握Android程序設(shè)計的基本技能,有效地提高用Android程序開發(fā)大型項目的能力,為創(chuàng)新創(chuàng)業(yè)帶來一定幫助。要達(dá)到上述目標(biāo),我們認(rèn)為應(yīng)該要設(shè)計合理的項目案例,且要將分組協(xié)作項目開發(fā)思想在教學(xué)中落到實處。
項目案例應(yīng)融入當(dāng)前“互聯(lián)網(wǎng)+”和基于云計算的移動互聯(lián)網(wǎng)創(chuàng)業(yè)環(huán)境,案例不能過于老舊。利用阿里云、騰訊云等公有云和SaaS軟件服務(wù)開放平臺,搭建Android后臺架構(gòu),是一大流行趨勢,而學(xué)生普遍對此知識比較缺乏。不僅是為了學(xué)習(xí)Android編程,更重要的是能夠運用所學(xué)知識能夠分析和解決大型Android項目,能夠為基于移動互聯(lián)網(wǎng)的創(chuàng)業(yè)帶來一定幫助,所開發(fā)的作品能迅速參加各類學(xué)生創(chuàng)新創(chuàng)業(yè)作品大賽。
(1)教學(xué)方式。
總的思路是“輕理論、重實踐”,實驗課應(yīng)占據(jù)更多的課時,以隨堂實驗和課程設(shè)計相結(jié)合。教學(xué)內(nèi)容不僅包含Android中的基本知識點,還要介紹一些與應(yīng)用相關(guān)的高級知識(如網(wǎng)絡(luò)編程、地圖類、GPS定位、消息推送、多媒體、驗證碼相關(guān)開發(fā)知識點)。其次是項目案例的介紹。針對每一個知識點,應(yīng)該選擇有代表性并且對學(xué)生有一定的實用價值的案例,講解案例中需要由學(xué)生去完成的模塊,并介紹實現(xiàn)的方法及思路,以吸引學(xué)生的注意力和提高學(xué)生的興趣,項目案例要豐富而且不枯燥,需要與時俱進(jìn),結(jié)合社會上的熱點話題及共享經(jīng)濟(jì)和O2O等熱門應(yīng)用。
(2)案例設(shè)計。
教學(xué)內(nèi)容不僅要讓學(xué)生學(xué)會Android程序設(shè)計的基本方法和Activity、Service、Content Provider、Broadcast Receiver、Intent等組件及API,更要讓學(xué)生具備程序思維,能夠根據(jù)生活中碰到的實際需求,最終轉(zhuǎn)化為產(chǎn)品,實現(xiàn)現(xiàn)實生活中的各種手機(jī)和平板APP。此外,重點突出以創(chuàng)業(yè)為導(dǎo)向的大型Android工程項目案例設(shè)計,設(shè)計典型的互聯(lián)網(wǎng)O2O、移動社交、智慧生活、個性化服務(wù)及物聯(lián)網(wǎng)項目案例,利用阿里云、騰訊云、Bomb移動后端云、極光推送、環(huán)信即時通信云、百度地圖、科大訊飛等平臺,方便地搭建Android后臺,充分利用模塊化開發(fā)的思想。每個案例應(yīng)由老師完成整體框架,同時設(shè)計若干個訓(xùn)練模塊。項目訓(xùn)練模塊需要由學(xué)生親自去參與,補(bǔ)充相應(yīng)的代碼,完成一定的工作,實現(xiàn)預(yù)定的功能,最終生成一個復(fù)雜的完整的APP。
(3)分組協(xié)作項目開發(fā)。
以GitHub為基礎(chǔ),鍛煉學(xué)生良好的項目協(xié)作開發(fā)能力,利用GitHub進(jìn)行代碼托管和版本維護(hù)。大型Android項目往往需要多人參與,各有分工,如產(chǎn)品經(jīng)理、前端UI、后臺服務(wù)、測試、架構(gòu)師等多個部分。從功能來劃分的話,一個項目需實現(xiàn)多個功能,功能可進(jìn)行劃分且并行化地去開發(fā)。通過GitHub,采用分組的方式,組織4-5人為一個開發(fā)小組,一個小組完成一個案例,在老師提供的整體框架基礎(chǔ)上,每位組員完成其中的若干個模塊,且鼓勵學(xué)生自由發(fā)揮,補(bǔ)充新功能和新模塊。通過給學(xué)生提供分組協(xié)作項目開發(fā)真實環(huán)境,通過學(xué)生代碼提交的情況及項目執(zhí)行情況對學(xué)生的成績進(jìn)行評定,評定的方式更加客觀,完全憑項目的貢獻(xiàn)量和代碼的提交量來打分,給學(xué)生壓力,真正提高學(xué)生的實踐能力。
本文分析了高校開展基于Android的移動智能終端課程及教學(xué)存在的問題,闡述了基于項目驅(qū)動的Android教學(xué)方式和方法,通過設(shè)計與時俱進(jìn)的案例,為學(xué)生設(shè)計項目訓(xùn)練模塊,基于GitHub引導(dǎo)學(xué)生進(jìn)行項目協(xié)作開發(fā),讓學(xué)生真正掌握Android程序設(shè)計的知識點和基本技能,提高開發(fā)大型Android移動端項目的能力。
[1] 黃鏘.項目導(dǎo)向的安卓課程教學(xué)探討[J].電腦知識與技術(shù),2014,10(17):4078-4089.
[2] 李躍飛.基于CDIO模式的翻轉(zhuǎn)課堂教學(xué)改革的探索與思考——以《Android程序設(shè)計》課程為例[J].信息化教育,2015,(9):182-183.
[3] 郝強(qiáng).探索《Android手機(jī)程序設(shè)計》教學(xué)中的CDIO教學(xué)模式[J].現(xiàn)代工業(yè)經(jīng)濟(jì)和信息化,2014,(6):81-82.
[4] 姚培娟,張志利.基于案例教學(xué)的《Android應(yīng)用程序設(shè)計》的課程教學(xué)研究與實踐[J].軟件導(dǎo)刊,2015,(5):6-7.
[5] 何毅,張坤.基于Android應(yīng)用開發(fā)的項目開發(fā)與案例精講[J].大學(xué)教育,2013,(7):83-84.
[6] 宋喜佳,楊亮,劉偉,馮學(xué)妮.基于CDIO理念的Android應(yīng)用程序開發(fā)教學(xué)改革[J].計算機(jī)教育,2015,(10):39-41.