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