馮玉翔,楊懷玉,左保河
(華南理工大學(xué) 軟件學(xué)院,廣東 廣州 510640)
Windows10是微軟公司發(fā)布的最新操作系統(tǒng)版本,該操作系統(tǒng)能夠?yàn)椴煌挠布O(shè)備提供統(tǒng)一的平臺,包括pc機(jī)、平板電腦、智能手機(jī)、游戲機(jī)Xbox、微軟智能眼鏡HoloLens等,而通用Windows平臺Universal Windows Platform(UWP)則是能夠配合Windows10操作系統(tǒng)的統(tǒng)一硬件平臺概念的應(yīng)用架構(gòu)。
UWP應(yīng)用(UWP app)是在UWP應(yīng)用架構(gòu)上開發(fā)的新一代Windows應(yīng)用程序。利用UWP應(yīng)用架構(gòu)的統(tǒng)一硬件平臺特性,從最簡單的物聯(lián)網(wǎng)設(shè)備到最復(fù)雜的數(shù)據(jù)中心服務(wù)器,利用UWP開發(fā)的應(yīng)用程序都可以在任何支持Windows10的硬件平臺上運(yùn)行。為了進(jìn)一步提高應(yīng)用程序?qū)τ诓煌愋驮O(shè)備的適應(yīng)性,UWP應(yīng)用還引入了自適應(yīng)控件和多種輸入方式。這樣應(yīng)用的界面設(shè)計就能夠自動基于不同設(shè)備的屏幕大小自行調(diào)整,并能接收來自不同硬件的輸入(如pc機(jī)的鍵盤鼠標(biāo)、筆記本電腦的觸摸板、游戲機(jī)的控制器等)。
軟件開發(fā)類課程需要與時俱進(jìn),滿足社會對軟件工程師的需求,培養(yǎng)學(xué)生的動手能力,提高其專業(yè)方向的就業(yè)競爭力。目前很多高校的Windows編程類課程已經(jīng)將教學(xué)內(nèi)容隨著微軟開發(fā)平臺的進(jìn)步升級到UWP應(yīng)用開發(fā)技術(shù),但UWP應(yīng)用的新特性帶來巨大進(jìn)步的同時,也要求學(xué)生在學(xué)習(xí)UWP編程時既要掌握較為復(fù)雜集成開發(fā)環(huán)境(IDE)的各種功能,又要掌握UWP應(yīng)用開發(fā)與傳統(tǒng)Windows應(yīng)用開發(fā)不同的特性。另外,為了讓學(xué)生掌握完整的軟件項(xiàng)目開發(fā)能力,軟件開發(fā)類課程的教學(xué)目標(biāo)應(yīng)當(dāng)設(shè)置為貼合真實(shí)商業(yè)需求的完整商業(yè)軟件系統(tǒng)。這樣就使學(xué)生要通過課程教學(xué)掌握從合理設(shè)計UI到應(yīng)用程序架構(gòu)的多方面開發(fā)技能。與以前的Windows平臺開發(fā)類課程相比,升級后的微軟Windows10平臺下的UWP架構(gòu)應(yīng)用開發(fā)課程具有涉及知識點(diǎn)多、對實(shí)際動手能力要求高的特點(diǎn)。
傳統(tǒng)的“課堂講授+實(shí)驗(yàn)+大作業(yè)”的教學(xué)模式在這類強(qiáng)調(diào)實(shí)踐的高級編程課程中普遍效果不佳[1],存在幾個問題。
(1)在知識點(diǎn)的教學(xué)環(huán)節(jié),UWP架構(gòu)應(yīng)用開發(fā)涉及的知識點(diǎn)較多且較零散,如自適應(yīng)的界面設(shè)計中各種控件的使用、物理設(shè)備的各種硬件使用、數(shù)據(jù)庫的使用和優(yōu)化等。在傳統(tǒng)教學(xué)模式中,教師在課堂教學(xué)環(huán)節(jié)中對上述零散的知識點(diǎn)所涉及的理論知識進(jìn)行講解。雖然課堂教學(xué)所占比重較大,但是在UWP架構(gòu)應(yīng)用開發(fā)中涉及的知識點(diǎn)太多太零散,導(dǎo)致課堂教學(xué)效果不佳。學(xué)生既難以記住大量的知識點(diǎn),又無法將所學(xué)的零散知識點(diǎn)串聯(lián)起來應(yīng)用到真實(shí)項(xiàng)目開發(fā)編程中。
(2)在知識點(diǎn)支撐實(shí)驗(yàn)的驗(yàn)證環(huán)節(jié),傳統(tǒng)教學(xué)模式中,為了幫助學(xué)生掌握零散知識點(diǎn),通常在實(shí)驗(yàn)教學(xué)環(huán)節(jié)中要求學(xué)生針對每個知識點(diǎn)完成相應(yīng)的驗(yàn)證實(shí)驗(yàn),但在UWP架構(gòu)應(yīng)用開發(fā)中、在Visual Studio工具平臺下,即使是一個簡單的helloworld應(yīng)用,也無法只寫幾行代碼就實(shí)現(xiàn)出來。學(xué)生必須操作Visual Studio工具,經(jīng)過大量步驟完成一個相對完整的項(xiàng)目,才能看到運(yùn)行效果,這就要求學(xué)生必須要具備較完整的利用IDE開發(fā)軟件項(xiàng)目的技能,完成單個知識點(diǎn)的驗(yàn)證實(shí)驗(yàn)。目前高校開設(shè)的這類課程通常都是面向大規(guī)模的學(xué)生,其中必然存在動手能力弱、開發(fā)基礎(chǔ)差的學(xué)生群體。對于這類學(xué)生而言,可能僅僅是在操作系統(tǒng)配置、IDE環(huán)境搭建、數(shù)據(jù)庫安裝、app項(xiàng)目創(chuàng)建過程中出現(xiàn)一點(diǎn)小問題,就可能無法在指定的實(shí)驗(yàn)時間內(nèi)完成要求的驗(yàn)證實(shí)驗(yàn)任務(wù),甚至?xí)寣W(xué)生產(chǎn)生嚴(yán)重的挫敗感,失去對本課程、對編程的興趣。
(3)在基于真實(shí)商業(yè)需求的大作業(yè)環(huán)節(jié),傳統(tǒng)教學(xué)模式下的最后一個教學(xué)環(huán)節(jié)是大作業(yè)的完成,即設(shè)置一個貼合真實(shí)商業(yè)需求的完整應(yīng)用系統(tǒng)作為大作業(yè)目標(biāo),促使學(xué)生掌握完整的商業(yè)項(xiàng)目開發(fā)技能,但是一個完整的真實(shí)商業(yè)應(yīng)用系統(tǒng)通常涉及從前端到后臺的多項(xiàng)開發(fā)技術(shù),如果學(xué)生在知識點(diǎn)支撐的實(shí)驗(yàn)完成中存在問題,通常就會導(dǎo)致學(xué)習(xí)進(jìn)度跟不上、喪失信心,最終無法完成一個具體的應(yīng)用項(xiàng)目。
傳統(tǒng)的“課堂講授+實(shí)驗(yàn)+大作業(yè)”教學(xué)模式對于基礎(chǔ)編程技術(shù)類課程的教學(xué)是能夠適應(yīng)的,但在類似UWP架構(gòu)應(yīng)用開發(fā)這類高級開發(fā)類課程中的應(yīng)用教學(xué)效果不佳,因此需要一種新的完整的教學(xué)實(shí)驗(yàn)體系提高這類課程的教學(xué)質(zhì)量?;贛OOC的教學(xué)形式能較好地解決高級開發(fā)類課程中理論教學(xué)存在的問題,而遞進(jìn)式的小實(shí)驗(yàn)體系則能提高這類課程的實(shí)驗(yàn)教學(xué)效果。
傳統(tǒng)的理論教學(xué)模式主要以傳授知識為指向,教師講、學(xué)生聽,教師問、學(xué)生答,學(xué)生始終定位在被動接受知識的位置上,同時,這種教學(xué)模式還嚴(yán)重缺乏師生、學(xué)生之間的互動。隨著時間的推移,學(xué)生很難培養(yǎng)出自主學(xué)習(xí)的習(xí)慣,并有很大可能喪失對編程的學(xué)習(xí)興趣。學(xué)習(xí),特別是編程技術(shù)的學(xué)習(xí),是一項(xiàng)積極的知識構(gòu)建過程,而不是被動接受知識的過程。
利用MOOC的教學(xué)模式能夠?qū)W(xué)生由被動接受知識轉(zhuǎn)化為主動獲取知識,從而培養(yǎng)學(xué)生對所講授學(xué)科主要問題進(jìn)行思考與分析的能力,調(diào)動學(xué)生的學(xué)習(xí)興趣,使學(xué)生由被動接受知識變?yōu)橹鲃荧@取知識。新的理論教學(xué)模式主要通過減弱理論教學(xué)所占的比重,從而將更多的教學(xué)學(xué)時投入學(xué)生實(shí)踐開發(fā)、師生互動討論中[2],即通過將課程體系中的主要知識點(diǎn)錄制為時長較短的視頻,允許學(xué)生課前預(yù)習(xí)、課后復(fù)習(xí),從而在提高理論教學(xué)效果的前提下,減少教師在課堂上講課花費(fèi)的時間。
基于MOOC的理論教學(xué)模式主要由以下3部分組成。
1)課前預(yù)習(xí)和自學(xué)。
UWP平臺下的各類概念和語法規(guī)則繁多,這些知識點(diǎn)是學(xué)習(xí)UWP應(yīng)用開發(fā)的基礎(chǔ)知識,本身沒有學(xué)習(xí)難點(diǎn),適合學(xué)生在線自學(xué)完成,因此,可以將這些基礎(chǔ)知識提煉、分解為眾多細(xì)微的知識點(diǎn),如page navigation是UWP應(yīng)用開發(fā)中的常見功能,可以將page navigation的原理、基本實(shí)現(xiàn)方法的講解錄制為一個短視頻,再配合相應(yīng)的習(xí)題以及其他相關(guān)的參考文獻(xiàn),構(gòu)成MOOC教學(xué)模式下的課前預(yù)習(xí)系統(tǒng)。
在實(shí)際教學(xué)中,學(xué)生可以自行安排時間觀看預(yù)習(xí)文檔和教學(xué)視頻,完成預(yù)習(xí)任務(wù)。對于預(yù)習(xí)中遇到的難點(diǎn)問題,學(xué)生可以在線討論。對于重點(diǎn)問題可以向教師反饋,形成重點(diǎn)問題集,以便教師完善課堂教學(xué)內(nèi)容。
2)課堂互動式教學(xué)。
在課前預(yù)習(xí)和自習(xí)的環(huán)節(jié)中,學(xué)生根據(jù)教師的預(yù)習(xí)任務(wù)完成知識點(diǎn)學(xué)習(xí),并對學(xué)習(xí)中的重難點(diǎn)問題進(jìn)行反饋。教師依據(jù)反饋信息,完善教學(xué)視頻,梳理知識點(diǎn)脈絡(luò),設(shè)計課堂教學(xué)內(nèi)容。在互動式課堂教學(xué)中,教師應(yīng)避免直接講授,而是主要以技術(shù)案例作為媒介引導(dǎo)學(xué)生發(fā)現(xiàn)、討論、領(lǐng)會和用自己的語言表達(dá)新的知識。此外,教師收集學(xué)習(xí)難點(diǎn),對學(xué)生遇到的普遍難題進(jìn)行統(tǒng)一講解。在新的教學(xué)模式下,學(xué)生將進(jìn)行團(tuán)隊(duì)式的學(xué)習(xí)、討論與合作。教師根據(jù)每堂課的知識點(diǎn)設(shè)計編程案例,學(xué)生以團(tuán)隊(duì)為單位進(jìn)行思考、討論,得到解決方案,必要時也可以對解決方案進(jìn)行現(xiàn)場展示并與其他團(tuán)隊(duì)相互評價。這樣的教學(xué)過程,不僅能夠鞏固學(xué)生課前預(yù)習(xí)的知識點(diǎn),加深學(xué)生對知識點(diǎn)的理解,而且可以培養(yǎng)學(xué)生的軟件工程思維能力,提高創(chuàng)新能力,同時,在案例展示和同行評審過程中,學(xué)生的團(tuán)隊(duì)精神和團(tuán)隊(duì)組織能力以及語言表達(dá)能力能得到很好的鍛煉,這對學(xué)生的長遠(yuǎn)發(fā)展都是很有幫助的。
3)課后在線研討、作業(yè)和測試。
UWP應(yīng)用開發(fā)課程注重實(shí)踐,因此,培養(yǎng)學(xué)生的軟件工程思維和系統(tǒng)架構(gòu)及開發(fā)能力至關(guān)重要,必須利用課后的教學(xué)手段配合課堂教學(xué)環(huán)節(jié)。學(xué)生可以利用MOOC平臺在課后提交編程結(jié)果或?qū)φn堂上的案例有疑問的地方在線與同學(xué)和老師進(jìn)行研討。
由于課程內(nèi)容繁多、知識復(fù)雜,課后完成一定量的作業(yè)可以有效地鞏固本堂課所學(xué)知識。作業(yè)以討論題、設(shè)計題為主,采用線上提交的方式。教師統(tǒng)計學(xué)生作業(yè)與測試的正確率、成績等信息,為教學(xué)質(zhì)量的評估和教學(xué)方法的改進(jìn)提供參考依據(jù)。教師可以及時查看學(xué)生的作業(yè)情況,在線發(fā)布作業(yè)答案并幫助學(xué)生答疑。在課后,教師還可以補(bǔ)充一些微軟Windows應(yīng)用開發(fā)方面的最新動態(tài)與學(xué)習(xí)資料,供學(xué)生了解技術(shù)前沿與開闊視野。
由于UWP應(yīng)用開發(fā)所要求的編程技能較多,基礎(chǔ)較差的學(xué)生在單次實(shí)驗(yàn)課中很難完成一個完整的項(xiàng)目來驗(yàn)證單個知識點(diǎn),但如果拖延到實(shí)驗(yàn)課后,則極易出現(xiàn)抄襲、偷懶等問題,而單個實(shí)驗(yàn)沒有完成所造成的編程能力缺失,又會最終導(dǎo)致學(xué)生無法完成更為復(fù)雜、完整的大作業(yè)項(xiàng)目。針對這些問題,可以采用遞進(jìn)式小實(shí)驗(yàn)體系。
(1)將一個完整的移動應(yīng)用策劃開發(fā)過程,分解為覆蓋各個知識點(diǎn)的小實(shí)驗(yàn),每次實(shí)驗(yàn)只針對很小部分的編程知識和能力,加快單次實(shí)驗(yàn)時間,幫助學(xué)生建立信心。
(2)在每個小實(shí)驗(yàn)中,提供已完成框架性內(nèi)容的實(shí)驗(yàn)材料。實(shí)驗(yàn)體系中的大部分小實(shí)驗(yàn),由教師完成框架性內(nèi)容,只留下核心的部分由學(xué)生完成。UWP應(yīng)用編程通常都需要很多框架支持的內(nèi)容:窗體、界面的設(shè)計,類庫的引用等。這些部分不是必需的,但是比較繁雜,對于入門階段的學(xué)生來說,費(fèi)時費(fèi)力。在設(shè)計實(shí)驗(yàn)時,完成這些內(nèi)容,讓學(xué)生可以用較少時間掌握核心部分的技能。
(3)小實(shí)驗(yàn)有機(jī)組合為一個完整的應(yīng)用。體系中的小實(shí)驗(yàn)之間存在關(guān)聯(lián),每個小實(shí)驗(yàn)的編程結(jié)果可以作為下一個小實(shí)驗(yàn)的起點(diǎn),學(xué)生在輕松完成多個小實(shí)驗(yàn)之后,就相當(dāng)于完成了一個完整的真實(shí)應(yīng)用的實(shí)驗(yàn)成果。在此基礎(chǔ)上,學(xué)生就能夠較為容易地達(dá)到大作業(yè)的復(fù)雜要求。
以基于瀏覽器的Web應(yīng)用開發(fā)技術(shù)為例,該技術(shù)實(shí)用性強(qiáng),需要的編程技能較多,作為一個完整的實(shí)驗(yàn)要求,對于基礎(chǔ)較差的學(xué)生來說難以實(shí)現(xiàn),但采用遞進(jìn)式的小實(shí)驗(yàn)體系可以將其構(gòu)建為一組序列化的實(shí)驗(yàn)設(shè)計,就能使學(xué)生快速地掌握一個應(yīng)用的完整開發(fā)技巧[3]。
實(shí)驗(yàn)1:完成一個簡單的靜態(tài)網(wǎng)頁helloworld設(shè)計,掌握自適應(yīng)的UI設(shè)計。
實(shí)驗(yàn)2:將實(shí)驗(yàn)1成果部署到服務(wù)器中發(fā)布,掌握Web服務(wù)器的使用和管理。
實(shí)驗(yàn)3:將實(shí)驗(yàn)2的成果添加對用戶動作的響應(yīng),理解服務(wù)器運(yùn)行的機(jī)制。
實(shí)驗(yàn)4:將數(shù)據(jù)庫訪問章節(jié)對應(yīng)的最終實(shí)驗(yàn)成果移植到實(shí)驗(yàn)3的結(jié)果中,使之能完成數(shù)據(jù)庫中一張數(shù)據(jù)表的增、刪、改、查操作,掌握前后端之間的通信原理。
實(shí)驗(yàn)5:完成兩個page,并在兩者之間實(shí)現(xiàn)信息傳遞。掌握page navigation以及傳遞參數(shù)的技術(shù),并理解session的概念。
實(shí)驗(yàn)6:將實(shí)驗(yàn)4、5的結(jié)果整合到一個應(yīng)用中,掌握應(yīng)用管理機(jī)制。
實(shí)驗(yàn)7:在實(shí)驗(yàn)6的結(jié)果中添加登錄、管理等功能,豐富功能內(nèi)容,使之成為一個應(yīng)用并發(fā)布。
團(tuán)隊(duì)合作的形式將貫穿整個課程。團(tuán)隊(duì)合作方式不只是簡單地鍛煉學(xué)生的相互協(xié)作能力, 更多地是為了模擬實(shí)際項(xiàng)目開發(fā)小組的團(tuán)隊(duì)分工與合作, 從最根本開始樹立軟件開發(fā)中的一個重要思想——團(tuán)隊(duì)意識。
在項(xiàng)目的需求分析階段就改變以往的教師分派工作任務(wù)的形式,模擬商業(yè)運(yùn)作。教師在此過程中充當(dāng)“目標(biāo)客戶”,給學(xué)生提出具體的任務(wù)需求,而后組織學(xué)生團(tuán)隊(duì)進(jìn)行交流討論。針對學(xué)生自身充分挖掘和記錄3類問題: “我能解決什么”“我可能解決什么”“我不能解決什么”,在此基礎(chǔ)上,對項(xiàng)目需求進(jìn)行分解和處理,后續(xù)的項(xiàng)目內(nèi)部管理、項(xiàng)目成果展示及評價都將按團(tuán)隊(duì)的形式完成,課程的評價考核體系也應(yīng)當(dāng)圍繞團(tuán)隊(duì)來完成。
(1)能夠?qū)崿F(xiàn)MOOC平臺自動批改的客觀題,考查編程技能、設(shè)計技能等的主觀題,均可以圍繞團(tuán)隊(duì)來完成。在各學(xué)生完成主觀題并提交之后,團(tuán)隊(duì)內(nèi)部相互批改作業(yè)。這種方式要求學(xué)生理解對方的程序,從而既可以從別人的錯誤中加強(qiáng)自身對編程知識點(diǎn)的掌握,又可以體會到良好代碼風(fēng)格的重要性。
(2)以團(tuán)隊(duì)為單位的章節(jié)實(shí)驗(yàn)或大作業(yè)可以借鑒同行評審的形式,在學(xué)生或?qū)W生團(tuán)隊(duì)之間進(jìn)行點(diǎn)評、討論、分享[4]。每個團(tuán)隊(duì)需要對自身的成果進(jìn)行演講和答辯,其他團(tuán)隊(duì)在聽取演講和提問回答環(huán)節(jié)后,進(jìn)行團(tuán)隊(duì)之間的互評。
(3)從以往的教學(xué)經(jīng)驗(yàn)來看,開發(fā)類課程容易出現(xiàn)開發(fā)團(tuán)隊(duì)中的部分學(xué)生因?yàn)榧夹g(shù)基礎(chǔ)或?qū)W習(xí)熱情等方面的因素在整個學(xué)習(xí)過程中,投入時間、精力較少,導(dǎo)致同團(tuán)隊(duì)的其他學(xué)生工作任務(wù)相對加重,或者該學(xué)生利用同組其他同學(xué)的成果獲得高于其水平和工作量的分?jǐn)?shù)的情況,因此,在評價考核中,應(yīng)針對整個團(tuán)隊(duì)進(jìn)行評價給分。團(tuán)隊(duì)獲得整體分?jǐn)?shù)后,在團(tuán)隊(duì)內(nèi)部進(jìn)行討論協(xié)調(diào),將總分以內(nèi)部討論結(jié)果的比例分給各團(tuán)隊(duì)成員,對團(tuán)隊(duì)成員所作的貢獻(xiàn)比例進(jìn)行更為精確的評價和確認(rèn)。
微軟Windows10平臺下的UWP架構(gòu)應(yīng)用開發(fā)是一門典型的高級開發(fā)類課程,課程涉及較多的知識點(diǎn)和編程技能,還需要使用多種微軟系統(tǒng)平臺和工具軟件。課程的最終目標(biāo)是完成一個復(fù)雜的完整的應(yīng)用系統(tǒng),因此,課程難度較大,對學(xué)生要求較高。傳統(tǒng)的教學(xué)模式很難獲得良好的教學(xué)效果,基于MOOC和遞進(jìn)式小實(shí)驗(yàn)體系的課程建設(shè)方案能較好地適應(yīng)這類課程的特點(diǎn),利用MOOC形式能提高理論教學(xué)效果,而利用遞進(jìn)式的小實(shí)驗(yàn)體系也能夠使學(xué)生相對容易地掌握完整的應(yīng)用開發(fā)技能。