湯蓉

項目式學習是近年來教學實踐的熱點之一。程序設計一直被認為是最接近信息技術學科思維本質的模塊,在新版高中信息技術教材中Python編程所占比例更是大幅上升。筆者對江蘇省姜堰中學、泰州市第二中學、南師附中、靖江高級中學等十多所高中的編程教學情況進行了問卷調研,統計結果顯示:過去五年里,僅有27%的高中信息技術教師在編程教學中實踐過項目式學習,環節流程設計也并不完整;大部分教師花費較多的時間在講解基本語法語句上,實踐任務內容單一,只針對高二學業水平測試涉及的零散知識點進行編程練習;學生除了感覺到程序語句的規范嚴謹,掌握幾個知識點外,缺乏系統化、邏輯化的思維方式去思考和解決問題,對程序設計的意義和樂趣沒有體會,往往望而卻步、失去興趣。因此在程序設計模塊中,該如何落實項目式學習,成為亟待研究的問題。
項目式學習與工程思維的內涵及聯系
所謂項目式學習(project-based learning,簡稱PBL)是指師生共同實施一個完整的項目工作,以項目為主線,以學生為主體,教師引導學生主動探索現實問題,獲得更深刻的知識和技能。簡單說,就是提出問題(老師提出或學生自己提出)并解決問題(學生設計方案和實施,常采用小組分工,合作完成)。項目式學習有兩個關鍵點:一個引發活動的問題或難題;學生自主創造出一個現實成果來回答問題或解決問題。
而現實中的工程實施也是從實際生活出發,以價值為導向,以造物為實踐目標。工程師對于工程活動的認識過程和解決問題中所采取的方式、方法,對于項目式學習中學生的思維方法具有引導和借鑒意義。所謂工程思維,從殷瑞鈺、李伯聰等學者提出的工程本體論出發,是基于對工程自身結構、運作和發展規律的理性觀察,從而認識、判斷事物并籌劃新的項目,著力于構建理想化人工系統的一種思維方式。工程思維要統籌工程與環境、與人類社會的相互關系,避免單純從技術的角度考慮問題,因此,它與科學思維、技術思維既相互融合,又互有區別。
工程思維對于程序設計學習的意義
了解工程項目的設計思路和理念,用工程思維的方式引領高中程序設計教學,可以讓學生站在一個軟件工程師的角度,思考如何分析項目、設計方案,需要解決哪些問題等,把程序設計的知識點融入項目設計中,這種方式能真正激發學生的興趣,使得學生帶著問題學習,設計方案、解決問題,而不是生硬理解算法語句。
1.工程思維的全局觀有助于形成系統化思維
作為工程活動的主體,工程師需要考慮工程與環境、與人類社會的相互關系,需要從系統論的視角,綜合全面地提出問題,對工作步驟進行排序與調整,判斷工作成果的優劣等,因此工程思維在項目起步的階段就要大致構建出整個框架,然后逐步添加功能。而程序設計在動手編寫代碼之前,需要從實際應用的角度,綜合考慮編程項目的功能和價值,邏輯化地思考方案設計。對于編程項目,線性思維往往是想到哪寫到哪,中途某個功能或代碼段的修改會導致很多工作推到重來。因此在編程學習中,首先要讓學生理解工程思維的全局觀,系統整體地思考問題,而不是一開始就設計變量、列表、模塊化等小問題。
2.工程思維的實踐觀有助于提高自學能力
工程思維的目標是為了造物,工程問題大多不能通過單一學科理論解決,經常用到超前的學科知識以及其他學科知識,這些知識短時間內不可能有老師來教,甚至以后也沒有人教,這就需要學生發揮自身的主觀能動性,查閱資料,自主學習。在自學知識的過程中,讓相關的未知知識與現有知識進行聯系、類比,從各個角度、各個層次對項目功能和方案進行觀察、分析和研究。因此,經歷一個完整的工程項目,思維方式會發生質的飛躍,有助于培養學生的自學能力,開拓新思路。
3.工程思維的邏輯觀有助于培養抽象建模能力
工程項目的實施需要將理論知識邏輯性很強地應用到生活實踐中,借助于已掌握的理論知識展開想象、假設、推理和證明,通過甄別、聯系、排除,從而篩選出能夠應用到的理論知識,達到解決實際問題的目的。項目方案設計的過程,需要學生從具體豐富的信息中提取關鍵信息,通過對所選用的科學知識的計算、驗證、比較,從而制定出符合實際的工程方案,并建立模型,這個過程就是培養學生抽象建模的能力,而抽象化思維也是計算思維的本質之一。
4.工程思維的回溯觀有助于自我評價和反思
工程在實施過程中,需要借助技術知識對制定的工程方案進行模擬或實際操作,對科學知識再推理、證明、反問,常常需要回到上一步進行修改和完善,這是工程思維很重要的回溯特點。在編程項目中繪制流程圖、編寫代碼的過程中,也需要有意識地對前面步驟進行推理和驗證,對于不斷出現的新問題,需要回溯到前面去修改功能、方案和代碼,直到這個程序最終實現我們的應用需求。教師要善用測試、驗證的步驟,來設計評價和反饋,及時促進學生的自我評價和反思,優化項目式學習的成果。
工程思維視角下,構建項目式學習的策略
用工程思維引領程序設計的項目式學習,首先要創設真實情境,讓學生思考如何設計一個有實用價值的產品,考慮它的功能性、創新性、可執行性,然后設計方案,在項目方案執行過程中,再思考需要解決的問題。下面以程序設計中的函數一節,“錢包管理小助手——可以復用的代碼”為例,具體闡述工程思維引領的項目式教學策略。教學流程如圖1所示。
1.從真實情境出發,引入項目
工程思維是以創造價值、造物為目標的思維方式,這一點恰恰是傳統教育教學所缺失的,因此教師在設計選擇項目時,需要從學生的實際生活出發,確定符合實際需求的項目,創設情境,激發學生研究的興趣,培養產品意識。
從生活中選取項目的出發點:(1)避免重復勞動的項目。從生活中存在的重復瑣碎、經常要做的事情入手,如班上每天統計每門功課的上交情況、Excel中幾個功能經常一起重復等,這時就可以把它開發為項目。(2)解決實際難題。要多了解學生,發現他們需要解決的生活中或身邊的難題,這些感同身受的問題項目,會激發起學生的研究興趣和創新意識。而這兩類項目來源,都需要教師注重平時的積累和記錄,結合學科核心素養要求,融合相應章節的知識點,從而成為好的項目式素材。
在“錢包管理小助手”這節課中,我通過校園不良信貸的屢屢發生,突出學生管理好零花錢的重要性來創設情境,從而提出設計一款能輕松管賬的工具,解決零花錢管理的問題。同時演示智能音箱“天貓精靈”的便捷有趣,提出能不能優化智能音箱的功能,輕松管理零花錢。這樣設計的目的在于激發學生興趣,更能通過智能音箱的功能改進,培養學生的數字化學習和創新能力,并培養財商。
2.提出非良構問題,分析項目功能
工程項目中面臨的大多是非良構問題,存在于具體的情境中,問題邊界很難明確界定,需要對大量信息進行提煉抽象,抽取出關鍵因素,才能設計生成解決方案,方案也不是唯一的。非良構問題的開放度是項目分析環節的重點,教師在這個環節可以引導學生換位思考,從使用者的角度對產品功能進行分析,如在“錢包管理小助手”項目中,設置討論問題:你覺得哪些設計可以幫助你管理好零花錢,做到心中有數?你希望“錢包管理小助手”具有哪些功能?引導學生,從眾多信息和可能性中概括出自己想要的功能,并梳理表達出來,教師在小結時,要給出足夠的開放性空間,不要界定標準答案。在對項目功能的梳理和提煉中培養學生的抽象思維和創新能力。
3.找出關鍵點問題,設計解決方案
教師設計項目式學習,必須運用與學生思考過程相反的逆向思維,即在理解學科大概念的基礎上,結合每個單元的內容,找到其中隱含的問題,將問題置身于真實情境中,從而找到表現性任務。在項目設計環節,針對上一步提煉出的項目產品功能,教師要設計關鍵點問題,讓學生討論設計解決方案,并進行抽象建模,在這個過程中培養學生的計算思維能力。
如何找到項目功能中的關鍵點問題,在于將學生提出的功能梳理為幾個方面,找到相通的關鍵點,結合本節的知識內容,轉為進一步的表現性任務。如在“錢包管理小助手”項目中,梳理學生提出的功能,無論是超額提醒,還是查詢賬目,都要用到的關鍵問題是如何求已支出總額。針對這個關鍵點問題,讓學生思考解決方案,設計代碼。接著提出,每次要調用已支出總額,是否都要復制粘貼這段代碼?如果修改要改幾次?由學生思考,從而引出函數的作用之一,方便多次調用。整個方案設計過程,都是學生自己發現問題、解決問題,教師只作適當小結和引導。
4.重視程序的測試和完善,開展過程性評價
對于程序員來說,測試程序,發現bug,返回修改,是一個經常必須的步驟。教師要善于運用程序的測試,設計問題,培養學生的回溯思維習慣。如在“錢包管理小助手”項目中,主要程序編寫完成后,由學生自己或者互相測試程序,發現程序bug:添加的金額沒有保存到列表中,數據丟失。這時小組思考討論原因,搜索解決辦法,引出調用現成函數open。于是回到前面,修改完善流程圖和程序,才實現了該項目的主要功能。這個過程性評價的設計與及時反饋讓學生體驗了工程思維的回溯思想,同時也說明,要開發一個好的項目,除了自己設計,也常用到別人共享的函數。從而真正理解Python作為開源軟件的初衷:“君子不器,成己達人”“君子性非異也,善假于物也”。
工程思維為信息技術教學活動的設計提供了一個新視角,對于教學理論與學習實踐的關系解答也提供了一種新的思維方式。但是工程思維同樣存在局限性,價值取向和量化對于項目環節的引導作用要適度,了解工程思維的運行機制,積極導向,避免副作用的同時,才能更好地發揮出工程思維的建設性作用和實踐價值。
參考文獻
李伯聰. 努力向工程哲學領域開拓[J]. 自然辯證法研究,2019(7): 36-39.
趙致琢. 關于計算機科學與技術認知問題的研究簡報[J]. 計算機研究與發展,2001(1): 1-15.
王榮良. 機器人教育與工程思維關系之研究[J]. 中國教育信息化,2008(24): 27-29.