高國舉 黃河
關鍵詞:云計算技術;本科教學;教學模式;多元化
1引言
“云計算技術”屬于計算機領域中一門綜合性很強的專業課程,其基本知識點包括云計算定義、云交付模型、云部署模式、云計算機制、虛擬化技術、云計算數據中心、數據處理與并行編程、云安全、云計算應用等[1-2]。一方面,“云計算技術”課程涉及大量的前期基礎知識,如云計算數據中心網絡拓撲問題與“計算機網絡”課程息息相關、云計算內存虛擬化技術與“操作系統”課程密切相關、云計算存儲虛擬化技術與“計算機組成和原理”課程相關[3-4]:另一方面,該課程涉及很多前沿擴展技術[5-6],如大數據統計與測量技術(布隆過濾器、Count-Min和HyperLogLog等)、服務器外接存儲技術(DAS,NAS,IP/FC SAN等)、云安全與大數據隱私保護技術(K匿名、L多樣性、差分隱私等)。另外,該課程還要求學生具有強大的實踐動手能力,以搭建云計算平臺,從而實現云計算相關實驗(包括阿里云應用、Hadoop搭建、MapReduce操作、Spark應用等)。本課程的目的與任務是使學生通過本課程學習,從云計算的基本概念人手,由淺人深學習云計算的相關知識,掌握云計算關鍵技術和云部署模式,以及云計算機制等。本課程除了要求學生掌握云計算的基礎理論知識,還重點培養學生的分析與處理問題的能力,為今后更深入的學習打下基礎。
2教學現狀及存在的問題
教學實踐發現,“云計算技術”課程的教學主要存在以下3個問題。
(1)前期基礎要求較高。正如上文所述,“云計算技術”是一門綜合性非常強的課程,其涉及大量的前期基礎知識結構,包括計算機網絡拓撲(如Fat-tree)、存儲與容錯技術(如磁盤陣列)、外接存儲技術(如DAS,NAS,SAN)、內存虛擬化(如分段分頁技術)等。若學生沒有學習過相關的前導課程,則將很難透徹地學好“云計算技術”這門課程。不僅如此,該課程包含非常多的陌生概念和技術,如分布式鎖服務、虛擬化技術、分布式結構化數據表、分布式一致性算法(Paxos算法)、軟件定義網絡等,學生對相關概念的接觸較少,很難快速理解相關知識點,尤其是涉及分布式的相關概念。
(2)前沿擴展技術較多。正如課程上所介紹的,大數據是需求,云計算是手段,云計算與大數據密切相關。所以,該課程涉及很多針對大數據的前沿擴展技術,如網絡大數據測量技術可以解決大規模網絡中的DDoS攻擊檢測、掃描攻擊檢測等問題,其具體包括網絡流量大小測量、基數測量、持續性測量等測量任務,教師在課程教學中將著重介紹Google云計算架構包含的一些優化技術(BitMap、布隆過濾器、HyperLogLog等),另外,還會擴展介紹一些高效的網絡測量數據結構.包括Count-Min Sketch等:再如,在“云安全”章節將會介紹較多大數據隱私保護技術,具體包括大數據發布過程中涉及的K匿名、L多樣性匿名、T相近匿名等,大數據存儲過程中涉及的同態加密、大數據審計技術等,大數據挖掘過程中涉及的差分隱私(拉普拉斯機制和指數機制)、聯邦學習、安全多方計算等。因為涉及較多的前沿擴展技術,加大了學生的學習難度。
(3)實踐能力要求較強。由于云計算課程同時包括理論知識教學和實踐教學,該課程的實驗教學主要從2個方面開展。首先,教會學生如何使用常見的商業云計算平臺,并基于此完成相關的云計算任務:其次,引導學生自己動手搭建及配置云計算平臺,加深學生對相關云計算架構的理解。基于已有實驗課程經驗,筆者發現學生的實踐操作能力還有待加強,獨立解決問題的能力也需進一步提高,所以教師需要著重培養學生分析問題、解決問題、獨立思考的能力。
3“云計算技術”課程多元化教學模式的探索
結合“云計算技術”課程的特點與以往的教學經驗,筆者提出了多元化教學模式,主要從基本理論知識教學、實驗課程教學、前沿技術擴展教學3個維度對“云計算技術”課程的教學改革進行探索和實踐,以加深學生對基礎知識的理解.提高學生的實踐動手能力,同時拓寬學生的知識儲備和國際視野。
(1)基本理論知識教學。由于“云計算技術”課程涉及的基礎概念非常多,因此采用以教師為主導的啟發式講授教學法為主,以學生討論或者提問式教學為輔,同時結合課外自主學習的教學方法。一方面,為了增加課堂信息以應對該課程中大量的陌生概念,采用多媒體PPT的教學方法來講授,同時輔以板書形式加深學生理解。在此過程中,教師將首先通過簡單實例展示讓學生盡快了解云計算,從而激發學生對云計算的學習興趣,如在帶領學生學習Google云計算架構中關于布隆過濾器的知識之前,教師首先提出了一個有趣的概率例子,即“三門問題”,學生均積極參與該例子的討論,甚至于課間都會圍繞教師展開激烈的探討,這極大地激發了學生的學習熱情。另一方面,對于課程中關鍵性概念、設計思想方面的問題,教師將采用課堂討論的形式,通過引導學生主動思考來加深理解,從而達到舉一反三的目的,如在講授分布式操作系統Yarn時,教師會引導學生加入針對該架構的優缺點討論,從而提高學生的主動性和積極性。針對缺少前導課程的問題,教師力求以最短時間給學生補充相關知識點,包括“計算機網絡”“操作系統”“計算機組成原理”等課程的重點內容,旨在讓學生全面深入理解云計算的知識框架,達到融會貫通的目的。
(2)實驗課程教學。實驗教學主要以學生實踐動手為主,教師講授教學為輔,并結合討論與提問的教學模式。首先,教師向學生強調編程實踐的重要性,從根本思想上提升學生的學習興趣。接著,教師合理設計實驗內容,尤其是注重實驗內容的典型性和趣味性,讓實踐課程達到全面提高學生動手能力和解決實際問題能力的目的。最后,教師編寫相關的實驗手冊,既能引導學生的實驗步驟,又不至于讓學生簡單照著實驗步驟執行而缺少自己的思考。實驗教學的核心是培養學生的實踐編程能力,以及分析問題、解決問題、自主反思的能力。擬從3個方面展開實驗教學,首先是基于阿里云搭建Java Web開發環境,在此基礎上設計實現動態的項目(如設計可統計展示不同客戶端IP訪問次數的個性化界面),接著是基于VMWare部署Hadoop、配置并操作HDFS、設置SSH免密操作,在此基礎上編寫運行MapReduce程序(如文本中的詞頻統計),最后是基于VMWare環境搭建、配置、測試Spark,并且能基于Spark完成大數據分析處理。
(3)前沿擴展技術教學。“云計算技術”課程的特點是與前沿技術的結合非常緊密,為了開闊學生的思維和眼界,本課程將介紹較多的前沿擴展技術。在講解Google分布式結構化數據表Bigtable的性能優化時,教師將著重介紹布隆過濾器的相關內容,尤其是為了引出布隆過濾器的設計動機,教師將首先介紹BitMap結構,由于BitMap的空間效果仍然沒達到最好的效果,因此教師引出了性能較好的基于概率性的數據結構——布隆過濾器,并且進一步給學生講解布隆過濾器的優缺點,從而帶領學生一起討論布隆過濾器假陽性的分析過程。另外,教師還將給學生介紹Google云計算架構采用高效的大數據基數測量技術HyperLogLog算法,首先是介紹HyperLogLog算法的設計動機,通過擲硬幣這個滿足伯努利過程的簡單例子出發,帶領學生理解基本概念,引導學生思考該過程,并能分析出相關的理論界限。該部分主要采用“拋錨式”教學法,即在講授過程中基于簡單實例提出相關問題(如HyperLogLog為什么采用調和平均數而不是算術平均數),引導學生進一步思考,然后通過不斷深入介紹,讓學生由淺入深地理解HyperLogLog算法的本質。最后,通過課后作業的形式加深學生的理解,并且拋出Count-Min這個高效的網絡流量大小測量的概念,讓學生通過自己查找相關資料達到學習前沿技術的目的。同時,教師還將在講授云計算數據中心架構的過程中通過東西向流量問題引出SDN模型,在講解存儲虛擬化的過程中引出服務器外接存儲技術(DAS,NAS,IP/FC SAN)的概念,在講解云安全的過程中引出大數據隱私保護技術(K匿名、L多樣性、T相近、同態加密、差分隱私等)。
4結束語
通過本課程理論知識教學,學生能夠掌握云計算的基本概念、實現機制、分布式系統架構、虛擬化技術、云存儲與云安全等相關知識;通過實踐課程教學,學生不僅能夠掌握商業云平臺的運行模式和使用方式,而且可以自己動手搭建云計算架構,從而完成分布式計算任務(即MapReduce程序),進一步加強學生實踐動手能力與大數據分析處理能力:通過前沿擴展技術教學,學生不僅可以更好地理解云計算整體架構,而且可以開闊眼界,不至于閉門造車,從而進一步開啟科學的思維方式,增強不斷學習和適應計算機技術快速發展的能力。由此可見,本文提出的多元化教學模式可以切實提升“云計算技術”課程的教學效果。