吳庭芳

摘要:算法設計與分析是計算機相關專業的核心課程之一,但在課程教學實踐中,存在課堂教學方式單一、缺乏實踐環節、教學內容未與時俱進等問題。鑒于此,結合算法設計與分析課程的特點和教學經驗,從該課程的理論教學、實踐教學和自主研學三個方面進行改革探討,提出一些具體的教學改革措施,構建基于理論教學、實踐教學和自主研學“三位一體”的算法設計與分析課程新型教學模式,從而激發學生學習的主觀能動性,提高課程教學效能。
關鍵詞:高校課程;算法設計與分析;教學模式;教學改革;三位一體
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2021)04-0138-03
Abstract: The Design and Analysis of Algorithms is one of the core courses of Computer Science and related majors, but in the teaching practice of this course, there are several problems including lack of ample teaching methods, lack of practice, and lack of up-to-date teaching content. In view of these problems, based on the characteristics and teaching experience of the Design and Analysis of Algorithms course, this paper discusses three aspects: theoretical teaching, practical teaching, and self-directed research study, puts forward some specific measures of teaching innovation, and constructs a novel teaching mode of the Design and Analysis of Algorithms course based on the “three-in-one” of theoretical teaching, practical teaching, and self-directed research study, aiming to stimulate students subjective initiative for learning and improve the teaching efficiency of the course.
Key words:college course; the design and analysis of algorithms; teaching mode; teaching innovation; three-in-one
1 引言
在信息技術蓬勃發展的今天,算法被公認為是計算機科學的核心和基石;在當今人工智能迅速崛起的時代,算法更是扮演著關鍵角色[1]。算法設計與分析就是研究如何利用算法思維解決實際問題,并通過算法分析來分析解決同一問題的多種算法效率的一門課程,是國內外各高等院校計算機專業的核心課程之一[2]。該課程旨在通過學習算法設計與分析的基本理論與方法,培養算法設計和算法分析的能力,為學生應用算法解決實際問題奠定基礎。
算法設計與分析課程具有很強的理論性和實踐性,教學內容抽象深度而又復雜,涉及許多數學基礎知識,難于理解和掌握,導致學生普遍反映難學,教師反映難教[3]。因此,如何提高算法設計與分析課程的教學效果,加強學生理論學習和實踐能力相結合,是教師在教學實踐中必須思考和探索的問題。本文針對算法設計與分析課程教學中存在的主要問題,結合該課程的特點和教學經驗,研究與探討了基于理論教學、實踐教學和自主研學“三位一體”的算法設計與分析課程新教學模式。
2 算法設計與分析課程教學的現狀及問題
通過分析研究之前自身的教學經歷和查閱相關資料,筆者總結出算法設計與分析課程教學過程中主要存在如下問題[4-5]:
(1)課堂教學方式單一:教師講,學生聽,學生被動
目前,算法設計與分析課程的教學方式大多數仍采用傳統的課堂講授方式,即“教師講、學生聽”,教師通過灌輸的形式將知識傳授給學生,學生被動地學習和接受,缺乏自己獨立思考的過程。這種教學模式不能很好地使學生真正理解算法的設計思想,無法達到舉一反三的效果,而且難以調動學生學習的積極性和主動性,不利于培養學生的算法思維。
(2)缺乏實踐環節
算法設計與分析課程主要以理論教學為主,實踐教學薄弱乃至空白,而該課程又是一門實踐性極強的課程。以筆者所在的蘇州大學計算機科學與技術學院為例,算法設計與分析課程沒有安排實踐教學環節,學生動手編程的機會太少,實踐能力較弱,學生即使理解了算法的設計思想,但距離編寫出相應的程序代碼和實現具體應用還存在一定差距。另外,缺少上機實踐又反過來影響了學生對于課程理論知識的理解。
(3)教學內容未與時俱進
當前,算法設計與分析課程的學時數不斷縮減,比如筆者所講授的算法設計與分析課程的理論教學只有36學時,而課程理論講解本身就會占用相當長的時間,教師為保證完成教學大綱規定的教學內容,在授課過程中較少提及一些延伸內容。在當前人工智能發展如火如荼,各類先進高效的算法層出不窮,算法設計與分析課程的教學內容也應該與時俱進,將理論和實際應用緊密結合,從而激發學生的學習興趣。
鑒于算法設計與分析課程教學實踐中存在的問題,有必要對現有的教學模式進行改革,為激發學生學習的主觀能動性和提高課程教學質量探索出切實可行的新型教學模式。
3 “三位一體”的算法設計與分析新型教學模式構建
綜合算法設計與分析課程的特點和上述教學過程中存在的問題及原因,筆者結合自己在實際教學中的經驗,將從理論教學、實踐教學和自主研學三個方面對算法設計與分析課程的教學改革進行探索和實踐,構建基于理論教學、實踐教學和自主研學的“三位一體”新型教學模式,其框架如圖1所示。
圖 1? 算法設計與分析“三位一體”教學模式框架圖
3.1 理論教學方式改革
鑒于傳統的講授型教學方式難以調動學生學習的積極性和主動性,在算法設計與分析課程的教學過程中,引入研討式教學方式和翻轉課堂教學方式,提高該課程的教學效能。
(1)研討式教學方式
研討式教學方式是指由教師指導學生選擇比較感興趣、課程中的重難點內容作為研討內容,然后教師與學生在課堂討論前查閱要討論的問題的相關文獻資料;在課堂討論中,以學生為主角,學生介紹各自對問題的看法和研究心得,然后互相補充或質疑,展開討論;教師是課堂討論的組織者和參與者,引導學生在討論中提出問題或者回答問題,并根據學生的發言適時糾正或補充學生的觀點;在課堂討論結束后,教師需要對學生的討論進行評價和總結[6]。例如,在算法設計與分析課程的教學中,講述完回溯法和分支限界的基本思想和基本步驟之后,需要加強兩個算法之間的比較,這時可以采用研討式教學方式,讓學生對回溯法和分支限界法之間的相同點和不同點、如何應用于同一個問題、以及它們的時間復雜性等進行討論和交流。這種研討式教學方式有利于促進學生學習的積極性和主動性,鍛煉了學生的膽量和表達能力,同時也進一步鞏固和深入學習了課堂上講授的理論知識。
(2)翻轉課堂教學方式
翻轉課堂教學方式是指學生在課前通過教師提供的教材、課件、教學視頻等學習資源,主動學習老師即將講解的內容,并通過QQ群、微信群等網絡互動平臺對學習中產生的問題與教師和其他同學進行討論交流;在課堂中,教師通過提問、測驗等方式檢驗學生課前自主學習的效果,并根據學習效果,將更多的時間用于重點講解學生反映不懂或不會的問題[7]。比如,在講授算法設計與分析課程中的動態規劃算法時,首先講述動態規劃算法應用于鋼條切割問題,重點突出如何找出最優解的結構特征和建立最優解遞推方程,然后讓學生在課后自主學習動態規劃算法在最長公共子序列問題中的應用,并讓學生在課堂上講解動態規劃算法如何求解最長公共子序列,最后教師針對學生在講解過程中存在的共性問題進行深入探討。翻轉課堂教學模式中,學生成為學習的主動研究者,而教師則成為學生學習的引導者和協助者,從而提高學生學習知識的積極性,有利于充分發揮課堂以學生為中心的作用。
通過在算法設計與分析課程的理論教學中引入研討式教學方式和翻轉課堂教學方式,能夠與傳統的講授型教學方式形成良好的互補。
3.2 實踐教學方式探索
算法設計與分析課程是一門理論與實踐結合的課程,學生需要通過大量動手編程,將課堂上學習的算法轉換成程序來求解實際問題,從而加深對理論知識的理解[8]。針對算法設計與分析課程缺乏動手實踐的問題,引入項目驅動型實踐教學和ACM-ICPC模式實踐教學,強化課程實踐教學環節。
(1)項目驅動型實踐教學
項目驅動型實踐教學是指以實際應用的項目為實踐教學內容主體,學生為項目執行過程主體,完成項目的分析、設計和實現,而教師在項目執行過程中作為輔助體,起到引導和歸納的作用[9]。與傳統實踐教學大多采用驗證各章節理論知識的教學型實驗不同,項目驅動型實踐教學需要設計功能較多、范圍較大的實際項目,涉及多個知識點,這些實驗具有較強的綜合性和設計性。項目驅動型實踐教學方式在算法設計與分析課程中的應用如下:首先,針對課程中單個或者多個相關聯的知識點,設計出一個實際項目案例,比如生物信息學中的蛋白質同源性分析,涉及如何尋找兩個蛋白質序列的最長公共子序列的問題,這樣可以將該問題作為動態規劃算法的一個應用實例;然后,學生以分組的形式分工合作,對項目進行分析討論、設計,完成代碼的編寫和調試,并撰寫項目報告;最后,教師從問題分析、算法設計和算法程序實現方面對項目進行分析和評價。
(2)ACM-ICPC模式實踐教學
ACM-ICPC是由國際計算機協會主辦的國際大學生程序設計競賽,以高級程序設計語言為依托,以算法設計為重點,旨在綜合考查學生分析問題和解決問題的能力[10]。ACM-ICPC競賽涉及的算法知識點主要包括各類排序算法、分治法、動態規劃算法、貪心算法等,這些考查知識點與算法設計與分析課程的教學內容極度契合。因此,將ACM-ICPC競賽模式引入到算法設計與分析課程的實踐教學環節,能夠極大地提升學生應用所學算法解決實際問題的意識和能力,有利于提高學生的學習興趣和參與競賽的熱情[11]。筆者所在的蘇州大學計算機科學與技術學院專門成立了蘇州大學ACM-ICPC集訓隊,在亞洲區域競賽中多次獲得金牌、銀牌等,取得了突出成績。蘇州大學ACM-ICPC集訓隊每年利用寒暑假期進行為期半個月的算法程序設計培訓,可以借此契機,鼓勵學生課后參與到ACM-ICPC 培訓。此外,教師還可以利用ACM-ICPC的在線評測系統布置算法編程試題,并設定提交時間,增加學生動手實踐的機會。
通過引入項目驅動型實踐教學和ACM-ICPC模式實踐教學,能夠極大地彌補算法設計與分析課程實踐教學的不足,使學生動手實踐能力在課后得到充分鍛煉。
3.3 自主研學方法探索
算法設計與分析課程具有內容抽象、知識范圍廣、實踐性強等特點,只依靠課堂教學中有限的學時是遠遠不夠的,學生的自主學習也極其重要。因此,教師應鼓勵學生課后充分利用在線學習資源進行自學。
(1)網絡教學資源自主學習
隨著我國高等教育信息化程序越來越高,特別是“互聯網+教育”行動的推動,開放網絡教學資源與網絡學習平臺迅速發展,比如慕課、學堂在線、微課等。這些開放網絡教學資源內容豐富,資源質量較高,而且資源的使用不受時間和空間限制,增加了學生學習的靈活自主性[12]。因此,教師應充分利用豐富的網絡教學資源和網絡學習平臺,為學生甄選出高質量的學習資源,以利于學生課后通過這些學習資源復習鞏固所學內容,并根據自己感興趣的與課程相關的前沿知識進行拓展性學習。關于算法設計與分析課程的網絡教學資源,筆者向學生推薦較多的是北京大學屈婉玲教授在慕課平臺上開設的算法設計與分析課程。
(2)LeetCode在線編程訓練
LeetCode是一個免費在線編程平臺,為學生提供一個開放的、自主學習的實踐環境。LeetCode提供大量數據結構和算法設計的題目,以供學生練習或競賽,能夠有效地提高學生的編程思維和編程技巧。此外,LeetCode還為每道編程題的難易程度和成功率進行了準確的統計,并且可以顯示學生提交程序代碼的運行時間和排名,使學生可以了解自己程序的運行效率,激發學生動手編程和自主學習的熱情。為了增加學生的編程實踐經驗,除了布置一些編程作業之外,筆者鼓勵學生利用空余時間到LeetCode上通過做題進行鍛煉,并鼓勵學生分享自己做題的思路和解法以及編程的心得體會。
通過學生在課后利用優質的在線學習資源進行自主學習,與課堂教學形成優勢互補,使得學生的算法設計與分析課程的學習進行得更為完整、全面。
4 結束語
根據算法設計與分析課程的特點和教學過程中存在的主要問題及原因,結合教學經驗,本文從理論教學、實踐教學和自主研學三個方面進行了探討,構建了基于理論教學、實踐教學和自主研學“三位一體”的算法設計與分析課程的新型教學模式,此教學模式將充分調動學生學習的主觀能動性,提升學生的動手實踐能力和知識應用能力,提高課程教學質量。在今后的課程教學過程中,將會對各種教學改革措施進行實踐檢驗,也希望此研究拋磚引玉,以期為提高算法設計與分析課程的教學質量提供有價值的借鑒與參考。
參考文獻:
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 等著. 算法導論(第三版)[M]. 殷建平,徐云,王剛,等譯. 北京:機械工業出版社,2013:2-7.
[2] 教育部高等學校計算機科學與技術教學指導委員會..高等學校計算機科學與技術專業人才專業能力構成與培養[M].北京:機械工業出版社,2010.
[3] 秦董洪,陳智勇.算法設計與分析課程教學研究[J].計算機教育,2013(11):98-101.
[4] 南姣芬,楊文雅,李紅嬋,等.《算法設計與分析》教學過程中的思考[J].教育現代化,2019,6(35):189-190.
[5] 李晉麗,孫春娟,張學波.多措并舉提升算法設計與分析課程教學質量[J].電腦知識與技術,2019,15(10):111-113.
[6] 艾明晶.大學計算機課程的研討式教學模式探索[J].計算機教育,2019(4):56-60.
[7] 蘇鵬,劉源.“算法設計與分析”課程的“翻轉課堂”教學模式研究[J].科技視界,2018(7):58-59,39.
[8] 季曉慧,姚國清,張玉清,等.計算思維與實踐編程能力培養并重的算法設計與分析教學[J].電腦知識與技術,2020,16(4):70-71.
[9] 林劼,戴波.項目驅動型算法設計與分析課程教學方法[J].計算機教育,2014(9):69-71,93.
[10] 敬超,范培.基于ACM/ICPC程序設計競賽驅動的信息類專業計算思維課程改革探討[J].電腦知識與技術,2019,15(33):94-95.
[11] 韓麗霞,畢方明.基于ACM-ICPC模式的《算法設計與分析》課程改革與實踐[J].現代計算機(專業版),2019(3):78-80.
[12] 曲祥雯.高校計算機教學中網絡資源的運用[J].計算機產品與流通,2019(12):223.
【通聯編輯:王力】