薛希玲 李沁



關鍵詞:Python課程;混合式教學;在線判題系統;教學實踐
0 引言
為順應高等教育由重知識到重能力、從以教師為中心到以學生為中心的轉變,教學方式的改革是大勢所趨。同時,線上教學平臺的快速發展在改變學生學習方式的同時,也給教學方式的改革帶來新的機遇。得益于功能日臻完善的網絡教學平臺,在傳統教學中難以解決的人數多、課時少、師生互動不足、教學模式單一等問題都能夠找到新的解決方案。網絡學習空間作為在線學習的“基礎設施”,從服務課堂教學拓展為支撐網絡化的混合式學習,為學習者提供豐富的學習資源,構建便捷高效的實踐教學平臺。面向社會需求和人才培養目標,面授教學與在線教學深度融合的教學改革正在邁向常態化。線上線下、課內課外學習活動相結合的混合式教學模式對提高學習效果、發展學生能力的作用已經獲得廣泛認同[1-3]。
本文研究如何在Python語言程序設計課程教學中實施以培養編程能力為核心的混合式教學模式。首先分析課程教學面臨的問題,然后介紹線上線下結合的教學改革措施,闡述混合式教學模式的實施方案,最后總結該教學模式的特色。
1 課程目標及存在問題
1.1 課程目標
Python語言是計算機各專業的選修課。課程通過以問題驅動的教學模式,旨在讓學生學會編寫結構良好的、體現Python特性的代碼,為學生使用Python 語言解決機器學習、數據分析及可視化等領域的問題打下堅實基礎。具體而言,學生需要
1) 理解語言基本特性,如動態類型等;
2) 熟練使用序列處理數據;
3) 熟練掌握流程控制,包括選擇、循環、異常機制等;
4) 使用函數特別是高階函數批量處理數據;
5) 理解并學會使用迭代器和生成器存儲和訪問數據;
6) 理解Python 的OOP機制,學會編寫面向對象程序;
7) 學會讀/寫文本/二進制文件,熟悉數據庫操作;
8) 學會使用pandas 庫分析數據,使用matplotlib 庫可視化數據。
1.2 課程存在問題
1) 作為近年來最流行的語言之一[4],Python也受到越來越多學生的歡迎。Python程序設計成為熱門選修課程。在班級大、人數多的情況下如何提高教學效果、保證教學質量、激發學習興趣?
2) 學生經過前期學習在專業知識和能力上已積累了較大差異,呈兩極分化態勢。怎樣設計課程既能讓后進生完成學習目標又具有一定的挑戰性不傷害頭部學生的學習積極性,使所有學生都獲益?
3) 學生接受過C語言編程訓練,具有一定的編程基礎。這也導致了學生習慣用C語言的編程思路解決問題,代碼效率低下甚至出錯,沒有充分發揮Py?thon語言的優勢。作為一門面向計算機類各專業的課程,如何引導學生寫出“Pythonic”的代碼,切實提高學生的編程能力?
2 教學改革措施
針對上述問題,轉變思路,充分利用網絡教學空間,提出如下教學改革舉措。
2.1 弱化知識講解,引導學生自學
有C語言作基礎且Python更易上手的情況下,課程目標中知識類內容交由學生自學。程序設計類課程重要的不是知識點,而是要讓學生學會通過編程解決問題。編程所需的知識不僅可以從網上獲取,學生之間也可以通過交流快速解決。在信息的獲取十分容易的當下,把知識類的教學內容交給學生自己掌握既提高了學生學習的主動性,又可以轉變滿堂灌的課堂教學模式,將寶貴的課堂時間用于引導學生思考解決實際問題,提高編程能力。為方便自學,建設網絡學習空間提供所需的材料與環境。為保證自學效果,需要配合測試環節檢驗課程目標的達成度。
信息化輔助教學平臺是教學設計的重要因素,認真調研與分析平臺功能的完善程度等因素后,選擇超星平臺作為配合教學展開的主要平臺,目前已建成包含數百道題目的題庫、全套教學短視頻、配套課件以及其他課程材料的學習平臺。
2.2 加強編程能力訓練,注重計算思維培養
編程能力是計算機各專業學生核心能力之一,切實提高學生的問題解決能力是課程的重點。僅靠講課學生不可能學會編程,需要學生完成足夠數量兼具一定思維含量的題目,并從精簡代碼提高效率的角度打磨代碼,避免用C語言的思路編寫Python 程序,引導學生在解決問題的過程中提升編程能力。
運用計算思維解決問題本質上是將客觀世界中的問題進行抽象和重構后,經由算法實現機器的自動處理,以解決系統設計等問題[5]。但“思維”是很難“教”的,只能讓學生通過訓練自己“悟”[6]。讓學生習慣于針對特定問題進行分析、抽象,借助于已有的計算生態,設計算法求解問題,在解決問題的過程中逐步塑造其計算思維。
為滿足編程訓練的需要,在“Python123”平臺上建設符合計算機專業培養目標的全編程題庫,包含近100道覆蓋課程所有內容的題目。該平臺具有在線判題功能,學生可以在線提交程序源代碼,平臺對源代碼進行編譯和執行,并通過預先設計的測試數據來檢驗程序源代碼的正確性。
3 充分利用網絡教學空間實施混合式教學
采取線上線下混合的教學方式,學生根據指定的學習任務,在線上平臺進行自主學習并完成達成度測試,課堂上進行深入討論、遷移應用與內化吸收,課后通過作業鞏固拓展,基本流程如圖1所示。為此,需要合理組織自學內容和課堂講授內容,精心設計自學內容通關測試,合理規劃課堂教學進程,設計教學活動激發學生的學習興趣。教學設計需要注意:
1) 為了降低學習難度,方便學生不受時空的限制學習,提供給學生松耦合性、模塊化的學習內容,學生可以利用碎片化時間完成。
2) 教師和學生上課均需攜帶筆記本,以便進行現場編程。課堂教學環節邊講邊練,講服務于練,凸顯學生在學習過程中的主體地位。同時設計合理的教學互動以提高課堂關注度。
3) 評價體系不可過于復雜,評價標準避免過于細化,否則可行性將大打折扣。借助線上判題系統,評價標準做到客觀統一,不采用生生互評的形式。
3.1 基礎知識在線自學與評測
教師提前在網絡平臺上發布視頻、課件、習題等教學資源,并發布學習任務引導學生進行自主學習。為自學內容設計以客觀題為主的測試題目,測試環節的設置是保證自學效果的重要因素。將測驗發布為自主計時的通關考試,要求學生在課前任意限定的時長內完成,成績沒有達到標準的同學批量打回重考。在網絡平臺統計數據的支持下,分析測驗中發現的共性問題,檢查學生對基礎知識的掌握程度;同時結合線上數據反饋選擇課堂內容,設計教學過程,實現在線學習與課堂教學的有機結合。
3.2 問題驅動的課堂教學
課前可以根據課程內容選擇上次課重點內容或本次課的預備知識抽取數道客觀題利用五分鐘左右的時間進行隨堂小測驗,以阻斷學生沉迷于手機的狀態使之切換到課程學習中,起到預熱課堂的作用。
課堂教學采取問題驅動的方式,通過案例引出問題,引導學生對問題解決的關鍵環節進思考,要求學生運用預習知識進行現場編程,在分析和解決問題的過程中提升編程能力。大多數程序設計問題不止一種算法,引導學生思考更簡潔更高效的方法,鼓勵學生分享自己的解題思路,實現靈活的課堂反轉。這樣不僅可以拓寬解題思路,激發學生的潛能,同時也充分挖掘Python 語言的潛能。最后引導學生對問題解決過程進行反思,考慮程序背后的抽象思維使學生有更加深刻的認識。
合理設計教學互動,提升學生的積極性。對課程中某些較難理解的內容設置課堂討論環節,如Python 函數傳引用的機制,引導學生主動思考理解并掌握這些知識點。還可以利用平臺的搶答功能發布問題帶動學生的學習熱情,吸引學生的注意力。如發布搶答題目“PyCharm注釋代碼的快捷鍵是什么”?進一步地,還可以請同學分享其他快捷鍵。
課堂組織開展流程如圖2所示。下面以課程中的一個模塊化的內容Iterator為例闡述課堂教學過程。
1) 提出問題導入新課:不借助下標的情況下如何使用while循環遍歷給定字符串序列?
2) 通過步驟(1)for循環的內部實現理解迭代器協議,即支持__iter__和__next__兩個特殊方法的對象都可以使用for循環遍歷;
3) 由迭代器協議引申出Iterator類的定義。設計問題:定義Iterator類生成Fibnacci數列,加深理解并訓練編程能力。
4) 設置分組討論加深對迭代器協議的理解:哪些類型的對象可以使用for循環迭代。
5) 總結和拓展:引導學生思考怎樣生成一個可用for循環遍歷的無限序列?為什么需要這一機制?
步驟1) 和3) 需要學生現場編程,教師視整體進度給予恰當引導或個別答疑;學生也可以相互討論完成作答,平臺即時反饋程序是否通過測試。要求所有同學當堂解決出現的問題,程序運行正確無誤。
3.3 因材施教的分層作業設置
上機實踐是程序設計課程整個教學過程中提高編程能力、掌握調試技術最重要的環節。上機題目結構與課堂編程練習相似或相近,便于學生完成知識遷移;拓展和延伸課堂問題,適當增加問題復雜度,學生跳一跳能夠得著。課堂教學結束后在Python123平臺上發布,學生在線上作答,由機器自動批閱并生成分析報告。
為了照顧不同學生的差異性,為學有余力的同學布置設計型作業。教師發布設計要求,制定評分標準,學生自行組隊,根據個人興趣自主選題,通過查閱資料設計和實現一個有創意的應用程序。課程結束時安排優秀作品在課堂展示,作為反轉課堂的一部分,檢驗課題完成度和所用技術的內化程度。鼓勵學生繼續完善優秀作品,不斷提高學生的創新實踐能力。往屆有課程智能答疑系統、房價數據分析與可視化、表情控制的Python游戲等項目最終作為畢業設計課題或參加馬鞍山市的設計類競賽。
3.4 及時反饋的評價體系
課程的評價體系分為形成性評價和總結性評價。形成性評價用來衡量學生的學習效果,提供反饋以便學生及時查漏補缺,教師合理安排側重點有針對性地展開教學。主要包含通關測試、階段測驗、上機作業等;總結性評價以期末考試的形式決定學生本門課程的目標達成度。及時通報測試成績、作業提交情況,做到信息公開透明,激勵學生主動學習,提高教學效果。
上機練習學生可以討論交流、查閱資料完成,不計入總成績,但學期結束視未完成次數扣分。在教學目標中每個專題結束后組織階段性測驗,從題庫中抽取若干和上機練習同構的題目,檢驗學生是否已掌握,防止拿來主義和敷衍了事。學生自選的設計型作業作為加分項,按完成質量酌情加分。期末考試設置為線上全編程測驗,重點考查學生運用計算思維解決問題的能力。以上考評機制的內容及說明見表1。
課程最后將超星平臺上的通關測試成績和Py?thon123平臺上的階段測驗成績導出后發給學生,利用pandas+matplotlib庫按照設定的比例計算出平時成績,并從課程單元、學生等角度給出成績的可視化分析,作為課程最后一次作業。
4 結束語
線上線下混合的教學模式下強調學生自主學習能力和問題解決的能力培養。該模式的主要特色有:
1) 關注學生個體差異,守住底線,提高上限
通關測試和課堂編程訓練保證了學生對基礎知識和基本編程技能的掌握,為教學目標達成把好關。平臺對學習效果的實時反饋也使得學生可以及時發現問題,補齊短板,避免積重難返。及時匯總并發布各環節的成績,為平時成績低的同學提供學業預警。課堂分享自己的思路和想法、展示項目成果給成績優秀的同學提供了很好的展示平臺,獲得榮譽感的同時又激勵他們投入更多精力到課程學習中。
2) 重視編程能力培養和考核
課堂穿插具有代表性的編程練習調動學生的積極性,主動思考解決問題,讓學生覺得編程有趣、有用。Python語言的特色使得學生能夠基于豐富的第三方庫快速編寫應用,設計型作業有助于提升學生學習興趣,對于學生后續在各領域的應用提供了有力的支持。注重學生編程能力的考察,利用Python123平臺快速組卷、在線監考、自動評閱等功能,配合已經建立的題庫,支撐階段性測試和期末考試的全編程考核。
課程從2021年春季學期開始全過程采用了混合式教學模式,學校評教情況反映學生的滿意度有較大提升,不及格人數得到控制。2022年春季學期選修人數增長了一倍,臨時增設了一個班級。由于疫情原因本學期教學主要在線開展,無法現場監督指導學生編程,導致學生整體表現有所下滑,這也說明面對面授課的重要性。