韓秋楓 王鳳芹 杜晶
海軍航空大學航空基礎學院 山東煙臺 264001
大學計算機基礎課程以提高學生利用計算機程序解決實際問題為主要目的,從計算機基本概念和理論出發(fā),突出算法講解,逐步提高學生程序設計能力、交流協(xié)作能力和理論運用于實踐的能力。課程教學采用Python 程序設計語言貫穿始終,Python 語言抽象了問題及解決方案,自動化問題求解,是“復雜信息系統(tǒng)時代”利用計算機解決問題最直觀的表達工具[1]。
但歷屆學生反映Python 語言學習時間短,掌握不深,尤其對循環(huán)和面向對象部分的知識運用不熟練。2020 年12 月,筆者參加了學校組織的教員教學能力提升與教學創(chuàng)新研修班,從廈門大學的郭建鵬老師那里學習了O-PIRTAS翻轉課堂教學模式,并將其運用在“大學計算機基礎”課程中,較好地提高了教學效果。
O—PIRTAS 翻轉課堂模式包括目標(Objective)、準備(Preparation)、教學視頻(Instructional video)、回顧(Review)、測試(Test)、活動(Activity)和總結(Summary)七個環(huán)節(jié)[2],如圖1 所示。
圖1 O—PIRTAS 翻轉課堂模式
第一步,需要制定合理的教學目標。教學模式將教學目標分為高階目標和低階目標。高階目標主要對應課內、團體、探究,而低階目標主要對應課內、個體、講授。翻轉課堂的核心為將低階目標的實現(xiàn)挪到課前課外,課堂內主要進行高階目標的達成。高階目標和低階目標不是分裂的,而是相互聯(lián)系又相互區(qū)別的。教學目標的設定至關重要,對教學設計具有統(tǒng)領性。
第二步,做好課前準備活動。在這一階段,教師要布置探究任務,在課前由個體完成。該探究任務的目的不是得到正確答案,而是通過此探究學生能夠發(fā)展出必要的先前知識。
第三步,觀看教學視頻。這一階段仍然是學生個體在課前完成,教師給學生提供教學視頻,也可以設置一些測試題目,供學生看完視頻自我測驗,教師可監(jiān)控學生的掌握程度。
第四步,回顧課前知識。從這一步轉移到課內來,教師帶領學生簡要回顧課前視頻的主要內容,這一環(huán)節(jié)主要是線上學習到線下學習的過渡,教師的講解應簡短些。
第五步,進行課堂知識測試。通過該測試,教師進一步掌握學生線上學習的學習效果,并進行有針對性的輔導。
第六步,開展課堂活動。前五階段主要針對低階目標,主要針對布魯姆目標分類中的記憶和理解,課堂活動主要針對高階目標來進行設計。高階目標不只是包括布魯姆目標分類中的應用、分析、評價和創(chuàng)造等知識領域目標,還可能包括其他領域的目標,如情感、動作領域等。
第七步,課堂的總結和提升。這一步是課內的最后一步,由教師對整個教學活動進行總結提升,明確地指明教學的重難點,幫助學生形成綜合性的知識。教師還可以布置下一次課的課前準備,開啟下一個O—PIRTAS 翻轉課堂。
本文選取大學計算機基礎課程中Python 程序設計的循環(huán)結構這一節(jié)作為實施范例來探討說明。整個過程采用O-PIRTAS 翻轉課堂模式,包括目標設定、準備工作、觀看教學視頻、回顧課前知識、課堂知識測試、開展課堂活動和課堂的總結和提升等環(huán)節(jié)。
教學目標在整個教學實施過程中起著統(tǒng)領作用,Python 程序設計循環(huán)結構這一節(jié)的學習目標包括以下內容。
知識目標:運用for 語句和while 語句實現(xiàn)循環(huán)結構;會使用break、continue 輔助控制循環(huán)結構的執(zhí)行。
能力目標:能運用循環(huán)結構解決實際問題,具有從實際問題到計算模型轉換的能力;具備良好的編程習慣,對同一問題能提出多種解決方案。
素質目標:能通過解決生活、學習中的具體問題,體會到利用計算機解決問題的有效性,并獲得成就感;具有較好的團隊協(xié)作意識,能與同伴一起分析問題、解決問題。
課程思政:通過程序的設計與調試,培養(yǎng)學生科學嚴謹?shù)墓ぷ髯黠L。
課前準備工作主要是激發(fā)學生的學習興趣,學生在課上學習之前,先學習探索,準備先前知識。Python 循環(huán)結構這一節(jié)的先前知識主要有:1)學生熟悉Python 的輸入輸出語句;2)能用順序結構、控制結構編寫程序;3)能利用順序結構和控制結構解決實際問題。教師給出準備工作的問題:試求1 ~20 之間的偶數(shù)的和。
教師課前選取中國大學MOOC 國家精品課程嵩天老師的Python 語言程序設計課程中的“4.3 程序的循環(huán)結構”這一節(jié)的視頻,看完視頻完成編程任務:中國航天火箭發(fā)射前,一般都會有倒計時顯示,請你編寫實現(xiàn)倒計時的程序。
這部分教師簡要介紹10-15 分鐘,首先教師簡要講解循環(huán)的四要素:循環(huán)初始值、循環(huán)控制條件、循環(huán)變量的變化和循環(huán)體語句。然后在遍歷循環(huán)for 語句和無限循環(huán)while 語句中尋找循環(huán)四要素,并采用一分鐘倒計時的例子來進行講解。最后教師講解break 和continue 的使用如何讓循環(huán)變得更靈活多樣。
課堂知識測試環(huán)節(jié)主要是對學生高階目標的考核,能不能靈活運用循環(huán)結構解決現(xiàn)實問題。教師在雨課堂給出4 道循環(huán)結構相關的選擇題,在educoder 實訓平臺給出一道編程題,題目為:航母攔阻索,用于將艦載機高速攔停,是艦載機名副其實的“生命線”。與岸基飛機著陸時可緩慢減速平飛大相徑庭,艦載機著陸必須加速著陸,一旦攔阻索尾鉤未能掛住艦載機,必須能快速拉升逃逸。因此艦載機著陸對甲板阻攔裝置要求極高。2012年11 月25 日,我國首次艦載機阻攔著艦試驗已取得圓滿成功!從艦載機尾鉤與攔阻索“拉鉤”開始到飛機停下全程時間只有2-3 秒。請編寫一個能統(tǒng)計航母攔阻索N 天內“拉鉤”總次數(shù)的程序,若攔阻索的拉鉤次數(shù)超過100 次,則給予提示,不再累加。學生可以自由選擇用while 語句或for 語句來完成,并比較兩者的相同與不同之處。
本次的課堂活動圍繞如何統(tǒng)計計算多道攔阻索的拉鉤次數(shù)展開;進一步拓展要求為:將各道攔阻索拉鉤次數(shù)從多到少排序,可以采取冒泡排序、選擇排序、堆排序等多種排序方法,為下一次的攔阻計劃做準備。排序問題一直是歷屆學生的難點,需要用到循環(huán)嵌套并掌握住排序方法。學生可分組討論,一步步給出解決問題的詳細方案,并給出代碼。教師輪流觀察各組進展情況,適時給予指導,確保每位學生都參與進來,而且是深度參與。
冒泡排序和選擇排序是學生用得最多的排序方法。無論是冒泡排序還是選擇排序,學生都給出了他們的優(yōu)化算法,盡可能地減少數(shù)據(jù)交換次數(shù)。學生完成后,會進行小組互評。最后評選出用時最短、代碼最整潔和算法效率最高的小組加分。
優(yōu)先完成任務的組,還可以繼續(xù)探究用循環(huán)結構解決經典問題:如百錢百雞問題、背包問題等。
教師通過選取上述小組的作品來進行點評、講解和總結。用循環(huán)結構解決問題時,要找到循環(huán)四要素,必要時靈活使用continue 和break 語句。并針對排序相關算法進行總結規(guī)律,分析冒泡排序和選擇排序的時間復雜度和空間復雜度。
整個教學過程可總結如圖2 所示。
圖2 O—PIRTAS 模式下Python 程序設計課堂
O-PIRTAS 翻轉課堂教學模式,遵循的是探索—講授—應用的思路。學生在學習內容之前,先激起他們的舊知,學生利用舊知探索新知,再通過課前視頻的講授和教師在課上對內容的回顧和講授,加深對知識的認知,然后學生在課上通過課堂活動對新知進行鞏固加深和應用。將之前被動的學習知識變?yōu)橹鲃尤ヌ骄繎弥R,從“要我學”變?yōu)椤拔乙獙W”。
筆者將這種教學模式應用在了2020 級學生的大學計算機基礎課程中的Python 程序設計模塊,經Python 模塊單元測試成績來看,比上年同期學生成績提高18%,通過學生座談了解到學生比較喜歡這種教學方式。
學完本門課程后,有3 名學生對編程特別感興趣,打算自己研究做個小的信息管理系統(tǒng),統(tǒng)計學生的學習成績、內務表現(xiàn)、受表彰情況等,利用自己所學為學生隊做貢獻。
第一次將O-PIRTAS 翻轉教學模式用于Python程序設計教學,取得了較好的教學效果,但也有很多做得不好的地方,將經驗和實施策略總結如下。
1)提供的教學資源盡可能豐富,包括國家精品課程在內的線上資源、實訓平臺的編程任務以及相應的案例,但不能過多,必須指明看哪一段視頻,做哪一個實訓任務,資源精簡有針對性。
2)要切實提高學習的學習積極性,通過測試明確學生的薄弱點和易錯點在哪里,及時調整課堂活動的探究點,必要時給學生提供學習支架;探究活動時加強深層次的生生互動,讓每個學生在學習中都有收獲;建立良好的評分機制,包括學生的個人學習成績、小組成績、小組互評成績等,多鼓勵學生積極參與到知識探究中來。
3)每節(jié)課教學目標分出高階目標和低階目標,目標定位要準確,對學生的已有知識要清楚,能分清哪些對學生是高階目標,哪些是低階目標。
4)教師要精心備課,準備多種教學方案,做好各種預案,同時善于利用信息技術提高課堂教學效率,如會使用視頻編輯軟件等截取制作短視頻、會使用概念圖工具進行總結等。
O-PIRTAS 翻轉教學模式將課上和課下較好地融合了起來,強調充分發(fā)揮學生的主觀能動性和主體地位,強調目標的分類,將低階目標的知識轉移到課外學習,高階目標的知識在課上探究,極大地提高了教學效果。該教學模式具有較強的靈活性,但也對教師提出了更高的要求。將此教學模式應用于Python 程序設計知識,在設計探究活動時,必要時提供代碼支架,探究案例可保持一致性。可以較好地提高學生的計算思維,提升學生應用計算機分析問題、解決問題的能力。