摘 要: “算法設計與分析”是計算機科學與技術專業的一門核心課程,是一門理論與實踐相結合的課程。傳統教學中,該課程主要以教師課堂授課,學生聽講為主,對于基礎參差不齊的學生,其授課效果大打折扣。為此提出在算法設計與分析課程的教學過程中,采用翻轉課堂代替傳統課堂,強調以學生為主體,調動學生的學習積極性,不搞一刀切模式,以問題為導向,引導學生自主學習,課堂互動解疑。文章就教學目標、教學內容、翻轉課堂、考核形式四個方面提出了策略。教學實踐證明,該教學方法可以明顯提高教學效果。
關鍵詞: 翻轉教學; 翻轉課堂; 算法設計與分析; 課程改革
中圖分類號:G40 文獻標志碼:A 文章編號:1006-8228(2014)11-59-03
Research on application of flipped teaching in algorithm design and analysis
Gao Liping, Liu Ya, Peng Dunlu, Chen Qingkui, Cao Chunping
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China)
Abstract: Algorithm design and analysis is one of the core courses of computer science specialty, which combines theory and practice. During the traditional teaching process, teachers are teaching while students are listening on the class. For students in different levels, this teaching mode cannot achieve excellent results. Flipped classroom is introduced in this paper to replace the traditional classroom in the teaching process. The students are emphasized as the center of the teaching process. The students" enthusiasm is mobilized. "One size fits all model" is given up. Take the problems as orientation, the students are guided to learn by themselves and interact. Strategies in four aspects including the teaching objectives, teaching contents, flipped classroom and assessment form are proposed. The teaching results show that the teaching methods can improve the teaching effect greatly.
0 引言
“算法設計與分析”[1-3]是計算機相關專業研究生的核心課程之一,這門課程的學習一方面可以鞏固之前數據結構、高級程序設計、離散數學等課程的學習內容,另外一方面也培養了學生自主抽象問題、解決問題的能力,是學生從事相關行業工作的知識儲備中不可缺少的部分[4-5]。然而,傳統的教學過程中,主要以教師課堂授課,學生聽講為主,對于基礎參差不齊的學生來說,授課效果大打折扣。
翻轉課堂教學法是近年流行的一種新型教學方法[6-7],在國內外很受追捧,從基礎教育到高等教育,都涌現出不少成功案例[8-9]。所謂翻轉課堂,就是教師創建視頻,學生在家中或課外觀看視頻中教師的講解,回到課堂上師生面對面交流和完成作業這樣一種教學形態[8]。這種教學方法克服了傳統教學中教師為主學生為輔的模式中的弊端,教學方式更為靈活,學生可根據自己已有的基礎條件,選擇適合自己的章節進行學習,并可以自主控制學習的進度。課堂變成了交流和解答問題的平臺,比傳統教學模式增加了互動環節,因此可以達到更好的教學效果。
在算法設計與分析課程中采用翻轉法教學,強調以學生為主體,調動學生的學習積極性,不搞一刀切模式,以問題為導向,采取課堂互動,解疑原則,可以大大改善傳統教學模式下的教學效果。使學生學有所學,同時也能消除教師在選擇教學素材上因為學生基礎水平不同而無從安排的困惑。
1 翻轉法教學
1.1 學生特點分析
首先,現代學生在學習、消費、社交等方面,與以往學生有著巨大差異,他們是數碼達人、天生的“互聯網”和游戲愛好者,他們更有個性,更愿意主動“動手嘗試”,而不是“被動聽講”。他們保持注意力的時間較短,傾向于碎片化內容。他們更喜歡簡潔、清晰、準確、精煉的信息。傳統課堂教師授課為主,學生聽講為輔,以教師為引導的教學方式已經不適應新時代學生。
此外,由于本校研究生中很大一部分比例是其他相關專業轉過來的學生,這部分學生中有些甚至未接觸過數據結構這一算法的前導課程。學生基礎參差不齊,教師為了能夠照顧到所有學生的情況,往往在教材選擇及課程安排上表現遲疑。選的內容簡單了,有基礎的學生學不到新知識;選的內容難了,沒有基礎的學生又像是在聽“天書”。
另外,由于算法設計與分析課程是全校選修課,選課的學生除了計算機相關專業的學生外,還有來自光電工程,機械工程,出版印刷等專業的學生,如何協調這些不同專業學生之間的基礎差異及目標差異,也是這門課程能否取得較好的教學效果的關鍵。
1.2 翻轉課堂的優點
傳統教學強調:學習知識在課堂,內化知識在課外。課堂內進行新課導入,知識講解,布置作業。而翻轉課堂則強調學習知識在課外,內化知識在課堂。課堂外進行自主學習,自定進度,整理收獲,提出問題;課堂內則進行展示交流,協作探究,科學實驗,完成作業,教師巡視,并進行一對一個性化指導。傳統課堂與翻轉課堂的對比分析如表1。
表1 傳統課堂與翻轉課堂的對比分析
[\&傳統課堂\&翻轉課堂\&教師\&知識傳授者、課堂管理者\&學習指導者、促進者\&學生\&被動接受者\&主動研究者\&教學形式\&課堂講解+課后作業\&課前學習+課堂研究\&課堂內容\&知識講解傳授\&問題研究\&技術應用\&內容展示\&自主學習、交流反思、協作討論工具\&評價方式\&傳統紙質測試\&多角度、多方式\&]
翻轉課堂具有以下優點。
⑴ 翻轉讓學生自己掌握學習
翻轉課堂后,利用教學視頻,學生能夠根據自身情況來安排和控制自己的學習。學生在課外或者回家看教師的視頻講解,完全可以在輕松的氛圍中進行,而不必像在課堂上教師集體教學那樣緊繃神經,擔心遺漏什么,或因為分心而跟不上教學節奏。學生觀看視頻的節奏快慢全在自己掌握。懂了則快進跳過,沒懂則倒退反復觀看,也可停下來仔細思考或筆記,甚至還可以通過聊天軟件向老師和同伴尋求幫助。
⑵ 翻轉增加了學習中的互動
翻轉課堂的最大好處在于全面提升了課堂的互動,具體表現在教師和學生之間以及學生與學生之間。由于教師的角色已經從內容的呈現者轉變為學習的教練,這讓教師有時間與學生交談,回答學生的問題,參與到學習小組,對每個學生的學習進行個別指導。當學生在完成作業時,教師會注意到部分學生為相同的問題所困擾,于是組織這部分學生成立輔導小組,往往會為這類有相同疑問的學生舉行小型講座。小型講座的好處在于當學生遇到難題準備請教時,教師能及時地給予指導。
2 翻轉教學在算法設計與分析課程中的應用初探
2.1 課程教學目標
研究生算法設計與分析這門課程的教學目標是:使學生掌握計算機應用中經常出現的一些實際問題的求解算法;使學生掌握常用的算法分析與設計的基本原理與技術;使學生具備能針對所給實際問題來設計和實現算法,以及評價算法的能力;培養學生對于所要解決的問題,總是努力去設計出盡可能好的算法的良好習慣。課程教學具體目標如下。
⑴ 鞏固之前基礎知識
針對學生基礎薄弱的情況,設計相應的學習環節,包括:數據結構中的線性結構/非線性結構、棧和隊列、二叉樹、圖等基本概念及算法,對程序設計與算法設計之間的知識進行銜接。讓基礎差的學生能夠補充應有的基礎知識。
⑵ 培養學生基本算法設計原理及方法
要求學生掌握各種基本和經典的算法,如排序算法、圖的搜索算法、組合算法、數值計算算法、遞推法、枚舉法、分治法、貪婪法、動態規劃、回溯法等。通過基礎算法的學習,培養學生基本的算法設計與分析的能力。
⑶ 培養學生自主解決問題的能力
通過對常用的、有代表性的算法的研究,讓學生理解并掌握算法設計的基本技術。培養學生分析算法復雜度的初步能力,鍛煉其邏輯思維能力和想象力,并使之了解算法理論的發展。鼓勵學生運用算法知識解決各自學科的實際問題,培養學生的獨立科研的能力和理論聯系實踐的能力。
⑷ 重視學生發散式思維的培養
培養和拓展學生的發散式思維,做到“一個問題,多種求解”,可以啟迪學生智力,提高學生舉一反三,對比分析,靈活應變,多方位思考及想象創新能力。
⑸ 重視新興技術及算法的傳授
針對目前流行的新興算法(例如:并行算法、變現檢索算法、遺傳算法、蟻群算法、布谷鳥搜索算等),結合算法應用,對算法原理及其實現方法進行介紹,并引導學生通過這些算法來解決實際的問題。使研究生具備解決新問題的能力。
2.2 課程教學內容
算法設計與分析課程主要介紹計算機程序設計中常見的非數值算法設計策略,具有一定的深度和廣度。內容包括:算法分析的基本概念、基本設計技巧、分治法、動態規劃法、貪心法、圖的遍歷方法、回溯法,以及隨機算法、近似算法、遺傳算法、搜索引擎算法、壓縮算法等。我們根據算法設計與分析的教學目標,本著“設計與分析并重,理論與實踐結合,經典與現代互補”的原則,進行教學內容的選取。具體有以下幾個方面。
⑴ 算法概述。主要介紹算法基本概念,算法復雜度的基本概念及時間復雜度的計算方法。
⑵ 算法基本設計技巧。主要介紹算法設計與分析的基本步驟,其中包括:數學模型構建、“自頂向下、逐步求精”的算法設計過程、循環和遞歸的設計要點、數據結構的選擇及應用,以及函數漸進分析及算法復雜性度量等內容。
⑶ 分治法。主要介紹分治法基本思想,二分搜索技術,大整數乘法,矩陣乘法,棋盤覆蓋,合并排序,快速排序,線性時間選擇,最接近點對問題,循環賽日程表等。
⑷ 動態規劃。主要介紹動態規劃的基本要素,矩陣連乘,最長公共子序列,最大子段和,凸多邊形最優三角剖分,多邊形游戲,圖像壓縮,電路布線,流水作業調度,0-1背包問題,最優二叉搜索樹等。
⑸ 貪心算法。主要介紹貪心算法的基本要素,活動安排問題,最優裝載,哈夫曼編碼,單源最短路徑,最小生成樹,多機調度等。
⑹ 回溯法。主要介紹回溯法的算法框架、符號,三角形問題,n個皇后問題,最大團問題,圖的m著色問題,旅行售貨員問題,圓排列問題,連續郵資問題,電路板排列問題等。
⑺ 分支限界法。主要介紹分支限界的基本思想,單源最短路徑,布線問題,0-1背包問題,批處理作業調度問題等。
⑻ 新技術介紹。介紹本學科領域的最新進展,講述并行算法設計技術、概率算法、近似算法、遺傳算法、搜索引擎算法等。
2.3 翻轉教學方法
打破傳播課堂授課為主的傳授模式,強調學生自主學習和討論學習,以翻轉課堂取代傳統課堂,充分發揮學生學習的主動性和能動性,以下介紹具體步驟。
⑴ 準備教學視頻
翻轉課堂中的視頻不需要客串課程中所有的內容,只需要針對難點和重點部分進行專題講解即可。每一個視頻都是針對一個特定的算法,有較強的針對性,方便學生進行查找。視頻的長度也應該控制在學生注意力能比較集中的時間范圍內。例如:采用冒泡排序進行排序時,利用視頻可以讓學生更清楚地理解排序過程中兩個相鄰元素進行比較并相互交換的過程,從而更好地掌握“冒泡”的設計思想。
⑵ 構建視頻服務器
在校園網申請獨立的視頻服務器,要求有較大的存儲空間,能夠同時滿足100人在線的響應需求,保證視頻播放的速度。上傳文件和在線播放需要高帶寬和高容量硬盤的支持,硬盤需要10000萬轉的高速硬盤。通過磁盤陣列設置多個硬盤 ,同時需要100M獨享。
⑶ 搭建微教學網站
課堂授課的內容制作成視頻在課程網站上發布,方便學生進行課下學習。支持學生進行知識點和章節選擇,安排自己的學習計劃。除此之外,我們也注重加強互動教學環節。在課程網站上,開設論壇、答疑、作業、網絡考試、問卷調查等模塊,通過布置作業、讓學生提問、論壇討論等方式加強教師與學生之間,以及學生與學生之間的協作與交流。
⑷ 重構學習流程
通過“翻轉課堂”對學生的學習過程進行重構?!靶畔鬟f”是學生在課前進行的,教師不僅提供視頻,還可以提供在線的輔導;“吸收內化”是在課堂上通過互動來完成的,教師能夠提前了解學生的學習困難,在課堂上給予有效的輔導,同學之間的相互交流更有助于促進學生知識的吸收內化。
⑸ 新的復習檢測模式
視頻后面安排幾個小問題,以幫助學生及時進行檢測,并對自己的學習情況做出判斷。如果發現幾個問題回答的不好,學生可以回頭再學習一遍。例如,冒泡排序視頻結束之后,安排幾個具體的例子要求學生進行練習,按照冒泡排序的思想進行排序練習。
2.4 考核方法
考試的主要作用是對學生所學的知識進行評價反饋、檢測教學效果并督促學生認真學習、鞏固所學知識,同時也有利于教師發現教學中的問題,不斷地改進教學工作。傳統教學中的考核方式比較單一,僅根據期末考試的成績來對學生的學習進行衡量,不利于反映學生真實的學習效果。因此,本課程考核方式主要從兩方面做出改革和新嘗試。
⑴ 學生成績由平時成績、期末成績兩部分組成。其中平時成績占50%,期末成績占50%。學生的平時成績由三個因素決定:課堂表現(10%),作業(20%),實驗成績(30%)。
⑵ 鑒于目前網絡的發達,實驗成績以課堂“限時限域”為基礎,即要求學生在給定的時間地點完成相應的題目。這樣可以杜絕學生借助網絡資源直接拷貝一些現成的資源。
這種考核模式體現出考核過程的人性化,避免了傳統考核模式中“一刀切”的弊端,有利于提高學生學習的積極性,并強調學生的動手實踐能力。
3 總結
算法設計與分析課程是一門非常重要的計算機科學與技術專業的核心課程,具有理論與實踐并重、設計與分析并重的特點,是提高學生編程能力的關鍵課程。針對研究生教學中學生基礎參差不齊的情況,本文提出采用翻轉教學法代替傳統教學,以克服教師為主,學生為輔,所有學生接受統一教學內容的弊端,強調以學生為主體,由學生按照自身的情況來自主安排學習,并通過課堂交互方式與老師進行溝通。本文從教學目標、教學內容、翻轉課堂、考核形式四個方面提出了自己的見解和策略,并在教學過程中予以實踐。實踐證明,學生的學習積極性和教學效果都得到了極大提高。
進一步的研究工作將包括進行更多微視頻的制作,從而將原來PPT中的內容全部以微課堂的形式展現出來,并進一步擴大翻轉課堂在研究生教學中的適用范圍。
參考文獻:
[1] 呂國英,任瑞征,錢宇華.算法設計與分析(第2版)[M].清華大學出版
社,2009.
[2] 王曉東.計算機算法設計與分析[M].電子工業出版社,2003.
[3] Cormen,T.H.,潘金貴.算法導論[M].機械工業出版社,2001.
[4] 陳蕾,張怡婷,許建.基于創新能力培養的算法設計與分析課程教學
改革[J].計算機教育,2010.20:27-29
[5] 高尚.“算法設計與分析”課程改革初探[J].教改縱橫,2008.14:
37-38
[6] 張金磊,王穎,張寶輝.翻轉課堂教學模式研究[J].遠程教育雜志,
2012.4:46-51
[7] 曾明星,周清平,蔡國民,王曉波,顏一鳴,黃云,楊燕萍.軟件開發類課
程翻轉課堂教學模式研究[J].實驗室研究與探索,2014.33(2):203-209
[8] 曾明星,周清平,王曉波,蔡國民,董堅峰.軟件工程專業“翻轉課堂”云
計算教學平臺探討[J].現代教育技術,2013.23(8): 26-31
[9] 呂光.翻轉課堂教學模式在《居住空間設計》課程教學中的應用研究[J].
藝術科技,2014.4:10-13
Key words: flipped teaching; flipped classroom; algorithm design and analysis; curriculum reform