李金芝 謝江安 楊 倩 彭 娟
(1.重慶工程學院 重慶巴南 400056;2.重慶郵電大學 重慶南岸 400065)
數據結構與算法課程是計算機學科的一門核心基礎課,不僅在整個課程體系中起到承上啟下的作用,而且也是研究生入學考試、公司招聘筆試的常考科目。課程主要介紹如何合理地組織、存儲和處理數據,以及如何正確地設計算法并對算法性能進行分析和評價。本課程相關理論知識仍然是諸多前沿研究領域的重要基礎,同時,這些理論知識也面臨著大數據時代提出的諸多新問題與新挑戰[1]。為滿足社會的用人需求,教師在教學工作中需要兼顧基礎知識與學科前沿、理論與實踐并重。從應用型本科高校的人才培養理念出發[2],結合我校的實際情況,本文開展“以學為中心”的數據結構與算法教學改革的探討。
數據結構與算法課程中的算法多由C 語言來描述,而C 程序設計課程一般也作為本課程的先導課程開設。但學生剛剛開始接觸程序設計語言,使用不夠熟練。尤其是本課程中經常使用的多重循環、指針和結構體等知識更是C 語言的難點。先導課程學習不扎實,給本課程的教學埋下了隱患。
數據結構與算法是一門理論與實踐并重的課程,要求學生要能夠使用所學知識分析、解決問題。我校數據結構與算法課程共設64 課時,分為理論(48 課時)+實踐(16 課時)。由于課上時間有限,部分實踐任務需要學生課后完成。但是部分基礎薄弱和自制力較差的同學很難自主完成,這就導致理論課中的算法變成“紙上談兵”。學生無法做到知行合一,就會逐漸對課程失去興趣。
以教為中心的授課方式,弱化了學生的主體地位[3],影響學生學習的主動性和積極性。在教法上,一般使用晦澀難懂的抽象數據類型講解原理,學生難以理解,更無法與具體應用聯系起來。在內容上,教材中基礎數據結構和算法知識未與前沿技術相結合,所教知識與社會實際需求脫節。
“以學為中心”的教育理念最初由教育家JohnDewey 和JeanPiaget 等人提出,倡導學生是課堂的主體,教師是課堂的主導[4]。在課堂上,教師作為引導者,引導學生通過積極自主探索、小組協作等方式建立舊識與新知之間的聯系,并應用新知解決問題、實現創新。
數據結構與算法課程的內容分為概論、結構、算法三大模塊,細化為10 個子模塊(概論、線性表、棧和隊列、串、多維數組和廣義表、樹和二叉樹、圖、查找、內部排序)。為解決本課程現存問題,實現培養學生分析問題、解決問題能力的目標,同時鍛煉學生的動手能力和團隊協作能力,我們嘗試從“舊識、應用、新知、實踐”四個方面對教學內容進行重組。圖1 以本課程第3 章第1 節教學內容為例,詳解了教學內容改革思路。

圖1 第3.1 節教學內容改革思路
舊識:為解決學生先導課程學習不扎實問題,適當復習本課程需要使用到的先導課程知識。幫助學生建立起先導課程與本課程的內在聯系,為學生學好本課程奠定基礎。
應用:為激發學生學習興趣,將抽象的理論知識形象化,從學生日常接觸的應用或者當前熱點應用出發,教師提出疑問,引發學生思考。
新知:為解決疑問,引導學生進行小組合作探究。不用局限于教材,允許學生通過網絡、視頻、論壇等各種渠道收集資料尋找解決方案。通過歸納總結內化原理,最終回歸教材。
實踐:尊重學生個體差異,設計階梯式的實踐目標。為基礎薄弱的同學建立自信,也為基礎扎實的同學提供拓展空間,讓不同層次的學生都能有所收獲。
傳統的數據結構與算法課堂的大量的時間被理論內容占用,學生實踐時間少,并且采用“教師講、學生聽”的教學模式,學生處于被動學習狀態。為突破傳統課堂在時間和空間上的限制,提高課堂教學的效率,同時,促使學生根據自身情況利用碎片化時間主動學習,本課程嘗試使用線上線下相結合的教學模式(如圖2 所示)。

圖2 線上線下相結合教學模式
1.線下教學
課前,教師在對教學內容和學情分析的基礎上,設置合理的教學目標。課上按照“以學為中心”的教學理念,首先,選取恰當的方式創設情境,引起學生的興趣。其次,提出問題,鼓勵學生合作探究,讓學生充分參與課堂。再次,教師在學生自主探究的過程中加以引導,隨機抽取小組分享解決問題的思路和途徑。最后,學生進行反思,教師對本次課程進行總結。課后,教師根據多元考核評價結果和教學反思完善教學設計。
2.線上教學
線上教學借助雨課堂、網絡教學平臺等信息技術手段開展。課前通過雨課堂發布學習清單,為學生提供清晰的學習路徑;同時,發布小組任務,以任務為驅動督促學生完成課前學習。課上通過雨課堂進行考勤、隨機點名和隨堂測試。利用雨課堂的“彈幕”和“不懂”功能,提高學生的參與度和積極性,加強師生互動。課后通過雨課堂推送PPT、拓展任務和問卷調查,幫助學生總結和復習。
針對我校實際學情,團隊開發了數據結構與算法在線開放課程,以微視頻的方式呈現課程的重要知識點,并配套單元測試和章節測試。微視頻發布在網絡教學平臺,為學生預習和復習提供了良好的支持。網絡教學平臺也提供了討論區,供師生、生生之間開展線上討論和答疑,將教學延伸至課外。
傳統的課程考核方式過分關注靜態的、可量化的學習成果,忽略過程性評價,不利于學生全面發展[5]。為解決課程考查內容不全面的問題,筆者嘗試改革考核方式(如表1 所示)。

表1 課程考核指標明細
課堂互動:課堂上通過雨課堂開展搶答、隨堂測驗、簽到等活動,并將雨課堂中記錄的出勤和測驗數據作為平時成績。以此來檢驗學生對授課內容的掌握程度,督促學生查缺補漏,幫助教師及時掌握教學目標達成程度。
小組協作:按照“組內異質,組間同質”[6]的原則將3~5人分為一組,模擬企業考核制度,實施組內自評、組間互評和教師測評的方式考核小組協作成績,以增強學生的責任意識和團隊合作能力。
實驗:本課程設計6 次實驗,在考核時不僅關注學生的實驗結果,更關注學生實驗過程。以小組協作方式完成實驗,并采取翻轉課堂的方式,隨機抽取小組及小組成員講解實驗原理、實驗中遇到的問題及解決方案。通過實驗過程+實驗結果+翻轉課堂的方式綜合評價實驗成績。
期末考試:試卷包含選擇、判斷、簡答、應用和算法設計5 種題型。以選擇、判斷和簡答題考核學生對本課程基本概念的掌握情況、以應用題考查學生對常用算法的應用情況,以算法設計題考查學生靈活運用所學知識解決問題的能力。
采取“課堂互動+小組協作+實驗+期末考試”的考核方式,既能對學生的表現進行更全面的評價,又能在教學過程中及時了解學情。教師基于學情適時調整教學策略,積極引導和激勵學生,師生共同進步,才能真正實現教學相長。
從“以教為中心”向“以學為中心”的轉變是我國高校教育發展的必然趨勢,為建立適合不同層次和不同專業特點的“以學為中心”的教學新模式,教師必須經過不斷的內化和自我探索。本文針對我校數據結構與算法課程在教學中出現的問題,從教學內容、教學方法和課程考核三個方面提出改革思路,充分尊重學生主體地位和個體差異,取得較好的教學效果,可為數據結構與算法教學提供參考。