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