陳文勤


摘 要:算法與程序設計的學習有助于培養高中生計算思維,在開展此模塊教學中需要教師結合學生生活實際,創設問題情境,激發學生學習熱情,給予他們求同存異的空間,允許他們“犯錯”,從而達到培養學生計算思維的目的。
關鍵詞:計算思維;算法與程序設計;教學微探
在新一輪的課程改革中,首次將學科核心素養納入教學的各個環節中。高中信息科技學科素養包括了信息意識、計算思維、數字化學習與創新和信息社會責任。核心素養中強調了計算思維,既要求教師培養學生在信息化環境下發現信息、使用信息的能力,也要求教師注重提升學生自動化、形式化、模塊化、系統化處理信息的能力。信息化社會中的學生應當具備一定的計算思維能力,這就要求信息科技學科教師在教學中重視對學生計算思維的培養,而學習算法與程序設計恰好是實現計算思維提升的有效途徑。
一、對計算思維的理解
2006年3月,美國卡內基·梅隆大學計算機科學系主任周以真(Jeannette M. Wing)教授在美國計算機權威期刊Communi-cations of the ACM雜志上給出并定義了計算思維(Computational Thinking)。周教授認為:計算思維是運用計算機科學的基礎概念進行問題求解、系統設計以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。
從周教授提出的概念中,我們可以分析得到:對于高中階段的學生來說,具備計算思維的學生應該在信息活動中采用計算機可以處理的方式界定問題、抽象特征、建立結構模型、合理組織數據;通過判斷、分析與綜合各種信息資源,運用合理的算法形成解決問題方案;總結利用計算機解決問題的過程與方法,并遷移到與之相關的其他問題解決之中。
二、當前高中生計算思維的現狀
高中階段是一個人思維轉變與提升的階段,從過去具體、形象、別人給予的接受思維逐步轉變為抽象、概括、自我提煉的思維能力,這一轉變在高中信息科技課程中尤為明顯。身處信息時代的學生知道很多、接觸很多,但缺乏的是組織、遷移、綜合運用的能力。當面對一個綜合性問題時,如何用計算思維去尋找解決問題的步驟并加以實施、檢驗,如何用一種方法解決一類問題,是高中信息科技教學中需要達成的培養目標。
學習算法與程序設計是培養學生計算思維的有效途徑之一。學生通過對算法與程序設計的學習,能夠體驗到解決問題的過程中包含了問題歸納、信息概括、數據抽象、思維邏輯,從而提升以“邏輯能力、算法能力、遞歸能力、抽象能力”為一體的計算思維。
然而,在實際教學中,學生對于學習算法與程序設計的目的并不明確,在學習算法一段時間后容易產生諸如“學習算法就是用計算機去計算數學問題、物理問題”“我不想做程序員,我為何要學習算法?”之類的困擾,這其實走入了一個學習誤區,也是不利于學生計算思維能力的培養和提升的。
三、算法與程序設計教學中培養學生計算思維的思考與探索
計算思維是從機器計算的實現過程來理解、解釋信息處理問題的一般方法,幫助學生認識到機器計算與人腦計算間的特點與差異。通過對算法和程序設計的學習,學生可以提升分析問題、建立結構模型、運用合理的算法步驟去解決問題的能力,也能體驗到如何使用計算思維去解決實際問題。
計算思維的培養不是一蹴而就的,單靠機械重復的訓練也不可能達成,但是現階段,計算思維更多還停留在理念層面,能夠用以指導教師開展計算思維的教學策略還比較少。這就需要我們教師在教學設計中以使用計算思維分析處理問題為出發點,通過情境創設、任務驅動激發學生對計算思維的興趣。基于這樣的思考,在算法和程序設計模塊教學設計中,我更多地關注如何將學生現有的理解力、思維習慣和生活體驗與我們的算法結合起來,在他們感興趣的問題中逐步深入培養他們的計算思維。
(一)貼近生活實際,創設學習情境
教師可以選擇貼近實際生活的案例,借用學生熟悉的或者感興趣的內容來創設學習情境,從而引導學生運用計算思維去尋找答案。例如,分支結構是算法三大基本結構之一。從分支結構開始,對學生的邏輯判斷能力有了較高的要求。學生不僅需要合理、規范地運用表達式描述判斷的情況,還需要分析判斷的結果(是與否)分別代表了什么;同時,算法步驟的嚴密性也得以加強,在設計相應的算法時必須考慮“符合情況需要執行哪些步驟,不符合情況需要執行哪些步驟,退出分支后是否還有步驟”這幾個問題。只有對分支結構理解透徹,才能有助于學生學會區分分支結構與循環結構,為后續的學習打好基礎。
在本節課的一開始,我用《幸福拍手歌》導入取代了一開始構思的探究海倫公式導入。用學生熟悉的歌詞引入分支結構這個課題,讓他們能夠感受到原來生活中就充滿了計算思維。對學生來說,雖然之前沒有了解過什么是分支結構,但看到歌詞“如果……就……”他們馬上就能理解相關含義了。與此同時,這首歌中還包含了單分支的思想,因此,我在導入單分支前讓學生用流程圖來描述其中一句歌詞“如果感到幸福你就拍拍手”,學生在設計N分支時會發現歌詞中沒有描述這根分支上的步驟,自然而然地就用單分支的形式進行描述(見圖1)。在這個過程中,學生通過將歌詞抽象化,概括出了判斷表達式、Y分支步驟、退出分支后的步驟,即為信息概括→數據抽象→邏輯思維的體驗過程。
(二)尊重思維差異,支撐個性學徑
學生會產生“程序員才需要學習算法”的誤解,一定程度上是因為我們過于關注學生是否能夠通過編寫程序來實現算法,并在相似的題目上進行反復的訓練。計算思維是一種循序漸進的能力培養,也體現出每個人是如何思考問題、解決問題的,因此我們要尊重學生思維的差異,即在算法與程序設計的教學中,我們應當更多地去關注學生是怎么思考的,去鼓勵學生之間的思維差異性,通過分析、比較算法的結構與步驟內容,從而感受學習算法與程序設計是對思維的訓練。