宣震

目前,信息技術項目學習中內容虛空化現象較多,導致學生在解決實際生活中的問題時往往束手無策。因此,本文通過探討創設真情境,解決真問題,讓學生在項目活動的學習中感受到身邊真實問題的解決,探索項目教學的實效。
● 創設真情境,解決真問題
項目式學習(Project-Based Learning,簡稱PBL)是一種以學生為中心的學習方法。目前,PBL出現的一大問題是項目內容的虛空化,即教師把操作活動、假設的背景內容或者是數學上的某道試題作為項目進行教學,而學生在完成這樣的項目學習后,往往不能解決生活中遇到的實際問題。
什么是“真情境”?項目學習中的真情境是指能引起學生共鳴的來源于學生真實生活中的情境。如何挖掘“真情境”呢?這需要從學生已有的經驗出發,充分了解學生的習慣、愛好和時代發展特點,關注學生的衣食住行,從中挖掘項目素材。新課程標準鼓勵學生通過自主探究解決項目中的問題,那么哪些問題是值得探究、適合解決的真問題呢?筆者認為,真問題首先應指向“真實世界”,即問題是真實存在的,是有價值的,是對解決未知的問題有指導作用的。其次,真問題應促進“高階思維”發展。項目學習中的問題,一定不是孤立的問題,應該是以問題鏈的形式存在,由此保證問題引領的深度、高度和廣度。
● 從現實中尋找項目設計主題
從現實中發現問題,尋找到的項目設計主題,對學習往往更有實效。“一卡一碼一報告”項目的主題即來源于生活實際。
2022年3月,多地暴發新冠疫情。自我市清明后復課以來,根據上級要求,班主任需要每天收集學生及同住人的健康碼、行程卡,周末還需收集48小時內的核酸檢測報告(以下簡稱“一卡一碼一報告”),并檢查健康碼的截圖時間、是否綠色,行程卡的更新時間、是否外地、是否帶星,核酸檢測報告的檢測時間、是否48小時內以及是否陰性。
教師每天檢查的一卡一碼一報告文件,少則數百,多則上千,難免出現疏漏的情況。那么,能否利用所學知識開發一個應用,將一卡一碼一報告的關鍵信息提取出來,并進行分析整理輸出呢?
● 項目實施過程
通過項目規劃,本次項目一共需要6課時,全程基于“用技術解決問題”的思路,進行問題分解、編程處理與代碼優化。
1.問題分解
健康碼、行程卡和核酸報告的圖片各不相同,那么先從大量的健康碼中識別出姓名、身份證號碼、截圖時間、健康碼顏色等信息。
2.編寫程序處理一張健康碼圖片
第1課時的設計里,主要是通過和人類處理此類問題進行類比,引導學生思考人類是如何判斷健康碼的顏色等信息的,進而思考、討論總結出計算機程序在解決問題時,可以通過讀取、識別和處理三個過程來完成。為了保證教學效果,這部分提供半成品程序代碼,利用半成品加工策略來協助學生完成。從代碼中可以看出這部分解決的問題主要是:指定圖片文件的目錄和文件名,按照二進制位對文件進行讀取。在識別圖片過程中,使用百度的人工智能aip庫對讀取的健康碼圖像文件進行文字識別。在項目實施過程中,可以使用print(mywords)觀察識別的結果,體會百度aip庫對圖片中文字的識別效果,進一步可以探討影響識別率的因素有哪些。
這是Python中列表和字典的典型應用,學生通過“真問題”的解決,感受到了列表和字典的綜合應用,促進了高階思維的發展。通過完成半成品文件,鞏固了對列表、字典取值方法的掌握。
3.迭代功能,完善程序,形成“高效”應用
在真實情境中,遇到的情況是非常復雜的,對于健康碼這個類型,教師收集到的圖片從結構上看也可能是不同的。在本項目的第2~3課時,學生將體會真實情境下的問題解決,體驗通過迭代完善程序功能,并最終形成應用工具,提升效率。第2課時內容如右圖所示。
這部分提供半成品程序代碼來協助學生完成。上節課編寫好的程序,并不能正確識別每一張健康碼圖片。通過對迭代1問題的討論,突出了項目的真實性和真實問題的復雜性,由此引出判斷身份證號碼的教學。教師收集到的健康碼雖然從結構上看會有不同,但幾乎每一張健康碼中身份證號碼、截圖時間等這些重要信息都會包含其中,因此利用正則表達式定位身份證號碼的位置就成為解決問題的關鍵。
在學習過文件操作內容后,學生已經會打開并讀取一個文件內容,但是讀取某個目錄下的所有文件還有問題。這是一個遍歷的過程,體現了循環的思想,彰顯出循環結構程序的自動化功能,很好地落實了計算思維。而將結果保存在一個csv文件中,更是現實問題解決過程中經常遇到的。這一處理的好處是,后期可以方便地進行數據清洗和可視化表達,真正將學習過的書本知識和實際應用相結合。在第3課時里,學生將繼續對程序進行完善,以應對復雜的實際情況。
這部分繼續利用半成品加工策略協助學生完成。基于解決實際問題的需要,編寫的程序應當具有一定的健壯性。try…except…異常處理結構的引入,使得程序可以處理出錯的情形。教材中對時間處理的模塊介紹得并不多,然而卻是很實用的,在本項目里是通過兩次的時間差來計算程序的運行時間,作為后續程序優化的參考依據。
另外,大多數程序的運行調試是在Python的IDLE或者各種IDE中進行的。但在真情境下解決問題時,無法保證Python的環境是否安裝正確。因此,將編寫好的程序導出成exe文件是將程序應用于實際生活中成為效率工具最重要的一個步驟。
4.進行“仿制”,處理行程卡和核酸報告
在第4課時,參考識別健康碼的程序,利用提供的半成品文件編寫處理行程卡和核酸報告的程序。截圖日期是否當日、行程信息是否帶星號、是否外地、采樣時間是否超過48小時等真問題的提出和解決,使得學生的“高階思維”得到發展。
5.將三段程序代碼進行整合,智慧識別與處理一卡一碼一報告
本節課將進一步提煉一卡一碼一報告的識別規則,實現img目錄下所有圖片文件的自動識別與處理,使自己編寫的程序真正得到應用。在本節課結束時,引導學生向班主任推薦所寫的應用,并收集教師的反饋意見。
● 項目實施成果展示
通過項目小組的輪流成果展示,讓學生充分享受合作分享的快樂。通過對教師反饋意見的收集和整理,提出進一步優化程序的方案。通過幫助教師解決實際問題,獲得成就感。
● 項目教學反思
通過項目實施,筆者發現項目設計中有兩處細節需要修正:①對于沒有循環體的特殊for循環的應用,還需要講解清楚。教材中的例子是取兩個集合的交集,寫法是 w for w in a if w in b。②本次項目中的圖片識別采用百度的aip庫。在免費的前提下,aip庫的調用是有并發數限制的,在大量文件進行識別時會導致result["words_result"]異常,在實際應用中,還需要加入sleep()。總體上看,本次項目的完成率大大超出了筆者的預期,有少部分小組已經開始基于讀取、識別和處理的過程,設計自己的小組作品。從項目實施和成果分享環節看,學生很享受利用技術解決實際問題的過程,對Python程序設計的興趣大大提升,對現實生活中其他問題的解決躍躍欲試。本次項目中為了解決實際問題引入的正則表達式、數據幀和異常處理等知識的教學,也是提升學生信息意識、計算思維和解決問題能力的有益嘗試。
綜上所述,項目學習中的真情境一定是來源于學生的真實生活,只有聯系生活,解決真實問題,讓技術為生活服務,才能讓項目教學真正發揮實效。
本文為江蘇省教育科學“十三五”規劃課題“開放式項目學習:培養高中生計算思維素養的實踐研究”(項目編號C-b/2020/02/19)研究成果。