呂 品,于文兵,汪 鑫
(1. 上海電機學院 電子信息學院 ,上海 201306;2. 上海電機學院 文理教學部,上海 201306)
數據結構是計算機學科相關專業本科生的一門專業基礎課,是培養學生數據抽象能力、計算思維能力與程序設計能力的一門重要課程[1-3]。數據結構課程學習效果的好壞不僅直接影響學生后續專業課程的學習,而且對應用型本科院校學生在程序設計類競賽、軟件服務外包競賽、數據挖掘競賽中取得優異成績起著關鍵性作用。
居然數據結構課程在應用型人才培養中具有十分重要的地位,但是,通過數據結構課程教學發現,學生在該課程上的學習存在嚴重的“馬太效應”。程序設計基礎好的學生對本課程的學習興趣隨著所學知識的增加變得越來越濃,自主學習欲望越來越強烈,抽象思維與編程能力逐步得到提升。然而,程序設計基礎薄弱的學生隨著課程學習內容難度的增加,無法通過自身編寫程序理解與運用課程中的知識點,學習興趣的嚴重挫敗導致自主學習欲望逐漸消失,從而為后續專業課程的學習埋下了“應用能力隱患”。
分析產生以上現象的原因,可能有4方面:①數據結構課程開設時間較早,學生的計算思維還未真正形成。相較于其他類型的高校,應用型本科院校計算機相關專業的數據結構課程通常提前在第2學期或第3學期開設。一個學期或兩個學期的程序設計學習時間對于大部分學生來講可能太短,學生對用程序實現自動計算的核心要素和學習方法掌握不牢。②數據結構的先修課程離散數學與數據結構同時開設,學生對符號語言的運用能力和邏輯推理能力沒有在先修課程中得到鍛煉,導致學生對抽象數據類型的理解存在困難。③數據結構的教學學時較其他類型高校短。數據結構現有教學學時為64學時,其中,理論48學時,課內實驗16學時。數據結構課程中的抽象數據類型和應用算法繁多,并且都是學生在后續專業課程中的先修知識。教師必須在有限的教學學時內,合理安排教學進度,完成教學內容,因此,教師沒有過多時間在課堂上為學生及時梳理課程中的重難點知識。④大部分學生自主學習意識淡薄。學習過程中懶于提出問題是學生自主學習意識淡薄的最主要表現,這與教師為完成教學任務而無法掌握每位學生的具體學習情況形成一對學與教的矛盾。
為了解決以上問題,讓學生較好地掌握數據結構課程中的理論知識和算法應用,提高學生在后續專業學習中的應用程序開發能力,可以在數據結構課程教學中融入線上學習的教學方法,并將線上學習成績作為課程考核的組成部分,使線上學習延伸數據結構的教學學時、記錄學生課外學習行為;幫助教師利用每個章節的線上學習行為數據,分析學生的學習情況,及時對學習不達標的學生提出學業預警,提供具體的學習資源和組織同伴之間的幫扶,讓每位學生在本課程的學習中得到個性化的學習支持和編程能力的提升。
數據結構線上學習平臺由一位已學過數據結構且成績優異的高年級學生和兩位沒有學習數據結構的低年級學生共同開發。開發工具采用開源的Moodle。Moodle是澳大利亞教師Martin Dougiamas開發的一個課程管理系統,在國際上有著廣泛的應用[4]。隨著國內教育信息化進程的加快和Moodle平臺插件使用資料的逐漸增多,越來越多的教師開始認識、了解并使用Moodle。Moodle不僅適合于在線學習,而且可以輔助課堂管理與教學。
開發數據結構線上學習平臺之前,向3位學生分析在數據結構課程教學中融入線上學習的原因,如數據結構課程知識點多、理論抽象,而學時有限,絕大多數學生沒有真正掌握高級語言程序設計基礎知識(數組、鏈表、結構體類型、基本的循環結構等);學生白天上課多,晚上沒有養成復習的習慣;學生沒有養成每天編寫程序的習慣;平時學生與教師的溝通少,教師無法及時監控每個學生的課程學習情況并對其進行有針對性的學習預警等,同時講解平臺需要具備的功能。這些想法得到了3位學生的認可,他們利用一個月的時間完成了此項任務。所有選修本課程的學生可通過包括移動終端在內的任何計算機設備登錄數據結構線上學習平臺,學生課后學習數據結構的地點與時間具有極大的彈性。截止2019年2月,該平臺已投入使用了兩個學期,記錄了兩個教學班共162位學生線上學習數據結構課程的行為數據。
數據結構線上學習平臺中教學資源的發布、學生學習行為數據的收集可分別由兩位低年級學生負責。由于這兩位低年級學生是學校編程社團中的重要成員,因此,他們參與此項活動能讓許多即將學習數據結構課程的學生了解到本課程在應用軟件開發中的重要性。
數據結構線上學習平臺主要包括2部分教學資源。一部分是按教材章節組織的課堂教學內容演示文稿和Word版本的核心算法分析;另一部分是涉及該章節重要知識點的測試題。每位學生只有在觀看完成課堂教學演示文稿的內容后才有權限進入測試環節。平臺規定演示文稿的觀看時間至少為15 min,以確保學生必須要進行課后自主復習。
為保證學生課后自主學習的時間與教師課堂授課內容的同步,平臺規定了每章節測試的截止日期。學生只要登錄該平臺,平臺就能自動收集學生線上學習數據,包括完成一次測試所花費的時間、每一小題的得分情況、同一測試重復練習的次數等。
教師在講授數據結構第一節課之前,指導學生導入所有選修該課程的學生基本信息,以確保每位學生能進入平臺,并指導學生導入本課程除測試練習之外的所有課堂教學資源。除此之外,教師要在每章節測試開始之后,定期觀察每位學生對知識的掌握情況,并動態調整下節課的課程教學內容與進度。當章節測試的截止時間到期后,教師要通過學生參與同一測試的次數掌握每一位學生學習本課程的態度;對照測試題涉及的知識點分析每位學生的薄弱環節;統計分析每位學生的測試成績,對測試成績未達到平均分的學生,通過郵件或QQ方式給予本章的學業預警;幫助有學業預警的學生分析學習中遇到的困難及存在的原因,并為其提供具體的學習資源和幫扶的同伴。
以數據結構第二章線性表的教學內容為例,教師對線上學習平臺的監控過程如下。
1) 針對授課知識點布置測試題。
教師根據教學大綱的要求,利用2學時講授完線性表的順序存儲結構與鏈式存儲結構后,針對這兩部分內容涉及的知識點,組織由10道選擇題構成的測試。這10道題既包括基本概念,又包括綜合應用,以檢測學生對這兩部分理論知識的掌握情況。每一道測試題10分,共100分。
2) 觀察學生的測試情況,調整教學內容。
從發布測試之日起,要求學生必須在兩周之內完成測試。教師從開啟測試之日起,每天定時觀察學生登錄線上平臺的學習情況,如學生學習課堂教學資源的時間與次數,在不同教學資源之間切換的頻繁程度。如果有學生完成了測試,觀察并記錄學生對知識點的掌握情況。2017—2018學年第2學期,有73名學生選修本課程。開啟本章測試的第2天,就有58名學生參與了測試,參與程度達到79%。在第一批參與測試的58名學生中,只有12名學生測試一次且以滿分通過,知識點掌握較好的比例僅為20%;其余學生中,有經過2次、3次或4次測試最終獲得滿分的,也有測試成績不合格的學生沒有進行下一輪測試。分析參與第一輪測試且未獲得滿分的46位學生發現,他們的共同錯誤主要體現在3方面:順序表的插入操作、線性表存儲結構的選擇以及線性單鏈表插入與刪除的綜合應用。
通過對線上平臺學生學習數據的了解,教師能夠基本掌握學生的學習態度、學生沒有掌握的共性問題,于是,在章節后續的課堂教學中,可以有意識地詳細講解學生出錯的共性問題,淡化學生掌握較好的內容。
3) 提供個性化學習支持與幫扶。
通過定期了解學生線上學習情況,教師已大致掌握學生的整體學習態度、學習能力與學習成績分布。在2017—2018學年第2學期,選取2名男生和1名女生作為本課程的課外教學助手。在每一章節的測試日期截止后,教師根據管理線上平臺學生提供的測試成績與相關數據,為本章測試未達到平均分和未參加本章測試的學生發送郵件或QQ提醒,給予相應的學業預警。
針對每位有學業預警的學生,指定課外教學助手,并根據每位有學業預警的學生的錯題,分發指定的學習資料和線下作業,并要求課外教學助手督促這些學生在一周內完成指定學習內容和作業。教師通過批閱作業進一步了解學業預警學生的掌握情況。在2017—2018學年第2學期第二章測試中,給予了5名學生學業預警,通過后續具體的學習支持與幫扶,這5名學生在課程后續章節的學習表現良好,編程能力得到了大幅度提升。
利用2017—2018學年第2學期數據結構線上平臺收集的學生學習行為數據,我們對20人次學生的學習態度進行了教育和端正;對30人次的章節學習給予了學業預警,并進行了幫扶對接和學習支持。2017—2018學年第2學期期末考試結束,整理教師線下收集的學生學習數據,如課堂出勤次數、線下作業完成次數、線下實驗完成次數、期末考試等,并結合學生線上學習的數據,如參與章節測試次數、測試時間、測試成績等,進行統計分析和學生學習行為模型的構建。通過以上學生學習數據的探索分析發現,判斷一個學生能否掌握好本課程的知識,認真參與本課程的線上學習是關鍵,這是因為即時的線上測試能夠考核學生對本課程中知識的掌握情況,從而為后繼內容的學習奠定基礎。
利用上述分析結果,在2018—2019年第1學期的數據結構課程教學中,我們對參與線上學習的89名學生進行了更加頻繁的監控與跟蹤。教學過程中發現,隨著教學進度的推進,給予章節學習預警的學生人數逐漸減少,課堂教學中曾經講過的內容返工重新講解的次數也隨之減少,學生課后學習的自主性明顯比上一學年有所提高。與此同時,教師在學生學習興趣上升的階段,有意識地布置不同層次的工程應用問題,要求學生根據自己的實際情況,運用所學知識編寫相應的程序進行解決。經過一學期的持續改進,課程考核的通過率提高了,更重要的是許多學生反饋通過這種教學模式,自主學習能力得到了鍛煉,編程能力得到了提升,更有興趣和信心參加各類程序設計競賽和學科競賽。
數據結構是計算機相關專業培養學生應用軟件開發能力的重要課程,然而,現有數據結構的教與學卻存在“鴻溝”。為實現教師與學生之間的雙向溝通和交流,需將數據結構課程的線上學習作為數據結構課堂教學的拓展。教師通過監管學生的線上學習行為,并結合課堂教學的實際情況,能真實了解每位學生對知識的掌握情況,從而給予學生個性化的支持和幫扶。實踐證明,融入線上學習的數據結構課程教學模式借助數據驅動,讓大多數學生能基于已有的程序設計能力體驗數據結構學習的樂趣,培養自主學習的能力,提升編程的興趣,增強編程的自信。