武小龍 張天順 武國偉




摘要:計算思維作為一種新的學科思維方式受到了國內外計算機界的廣泛關注。培養學生計算思維能力是高中信息技術課程的重要組成部分,本文在高中算法與程序設計課程的教學活動中引入計算思維的理念,從課堂實踐方面探討了培養學生計算思維的結合點和教學方法,為計算思維背景下的教學模式提供了參考。
關鍵詞:計算思維;學科思維;信息技術課程
中圖分類號:G434 文獻標識碼:A 論文編號:1674-2117(2016)02-0038-04
高中信息技術課程以提高學生的信息素養、促進學生全面而富有個性的發展為基本目標,在促進學生掌握信息技術的基本知識和操作、加快信息技術應用的普及等方面起了積極的推動作用。目前,在高中信息技術課堂教學中,教師更加注重的是培養學生的信息技術操作能力和信息處理的方法。而信息素養則更強調使用計算機這個工具本身的能力,計算思維注重如何能像計算機科學家一樣思考問題,強調“人的,不是計算機的思維”。從學生的長遠發展來看,教師將計算思維引入到高中信息技術教育中是十分有意義的。
計算思維的概念和本質
1.計算思維的概念
美國卡內基·梅隆大學計算機系主任周以真指出:計算思維就是運用計算機科學的基本概念去求解問題、設計系統和理解人類的行為,它包括了涵蓋計算機科學廣度的一系列思維活動。[1][2]學會計算思維,是在信息社會中創新的需要。[3]計算思維是按照預防、保護及通過冗余、容錯、糾錯的方式從最壞情形恢復的一種思維,計算思維是與形式化問題及其解決方案相關的一個思維過程,其解決問題的表示方式能有效地被信息處理并代理執行(如圖1)。
2.計算思維是高中生信息素養的必要組成部分
培養高中生計算思維對提升高中生自我學習能力和綜合素質等方面具有重要的推動作用。認知學習理論告訴我們,學生學習實質上是其在頭腦內自主構造認知結構的過程,而計算思維的培養有助于高中生構造認知結構,激發高中生內部學習動力。[4]以往人們都認為信息技術課程只是一門工具性學科,是學會操作Word和PowerPoint等軟件的培訓課程,從而導致信息技術課程出現“只見技術不見人”的現象。要改變這種狀況,就要將計算思維作為信息技術課程的核心培養目標,像學習數學或英語一樣學習信息技術,實現“基礎的回歸”。因此,重新探討算法與程序設計在信息技術課程中的地位與作用,優選算法與程序設計的教學內容,改善課程的教學方法,促進算法思維在信息技術課程中以適當的形式呈現勢在必行。
高中信息技術課程中計算思維能力的培養模式
教師可以采用多種方式來培養學生的計算思維能力,傳統的教學模式會大大限制學生自主發現問題的思維能力,而計算思維則提供了重新審視程序設計教學的視角,將計算思維融入到程序設計教學中將會大大提高學生的思維方式和解決實際問題的能力。對程序設計課程來說,學生需要掌握的編程能力是計算思維和技能化知識的綜合體現,因此需要強化對學生計算思維能力的培養,而計算思維能力在較大程度上是以思維方式的數學化為支撐的(如圖2)。
1.情境教學、分層教學
對于那些比較難理解的概念,在學生已明確探究目標的基礎上,教師可以創設情境進行教學。以講解約瑟夫算法為例,筆者讓6位學生站在教室的最前面排成一排并手拉手,說道:“如果從第一位學生開始數,數到第三位時學生出列,最后是哪一位出列?”這時,學生就開始在心里想了,某某最先出,然后是誰,最后又是誰出列。在這個過程中,部分學生參與其中,下面的學生也會在心里計算,這樣,全體學生都參與進來了。接著,筆者提示學生用鏈表知識來描述這個算法,有幾位學生很快就寫出了代碼。同時,對于基礎較好的學生,教師可以要求他們用數組來解決問題,同時全體觀摩。
2.借助任務驅動培養計算思維
信息技術教師都有過這樣的體會,教給學生一門知識或技能相對容易,但教會他們某種能力或思維卻很難,如面向對象、差分與遞歸等。任務驅動教學法是一種建立在建構主義教學理論基礎上的教學法,強調培養學生自主學習,獨立分析問題、解決問題的能力。因此,教學任務的設計至關重要。教師需要根據學習主題,創建盡可能真實的學習情境,以選用科學研究和工程技術中的實際問題為最佳,這樣能使學生迅速融入教學情境。例如,在講解循環語句的時候,教師如果只是一味講解它的語法怎樣實現,說它如何重要,有些學生可能會覺得很枯燥,有些學生可能會越聽越糊涂。這時,教師可以設計一個很實用的小程序,如運動會成績計算程序等,在成績輸入過程中使用循環語句,學生如果覺得它很實用、很有價值,自然就會想學習、掌握該知識點。
3.加大對實驗程序調試的指導力度
實驗內容側重于對學生的計算機基本技能的訓練和綜合應用能力的培養,教師可按照基礎實驗、拓展實驗和創新實驗進行分層教學。如果學生已掌握使用計算機解決問題的四個步驟——分析問題、建立模型、設計算法和編寫程序,則可以依據教學要求和自身的基礎,選擇必做和選做的實驗。
以VB編程的基本步驟為線索,教師引導學生通過對各階段問題的解決,形成循序漸進的梯度,組成一個任務鏈,使其在“做中學”“學中做”的過程中加深對知識的理解,并適當地為學生提供拓展性的內容,充分挖掘他們的潛力,以便讓學有余力的學生有更大的發展空間。這樣既強調了學生自主學習、協作學習,又能使其在學習時有規可依,使他們在程序設計中得到適度的創新體驗。
4.錯例分析法
學生對各知識點的掌握需要一個過程,對算法和數據結構的掌握也需要不斷積累。在學習過程中,學生往往能聽懂教師授課的內容,但自己編寫程序時卻錯誤百出。因此,筆者經常將容易出錯的概念以反例形式展示給學生,或者將比較典型的例子展示給學生,讓他們找出錯誤,分析原因,并糾正、調試直至正確運行。在這個過程中,教師應引導學生積極參與找錯、糾錯,明確易錯知識點,使學生加深印象。
5.創新性地利用翻轉課堂
教師在教學中,利用提前準備好的視頻、音頻等,讓學生在課前自學,課堂上有針對性地講解內容中的重點和難點。教師利用現實生活中的實例講解、類比,通過VB控件對象的舉證,讓學生形象地理解面向對象程序設計中的對象、屬性、方法、事件、類等基本概念與封裝、繼承、多態性等特征。
關于遞歸算法教學的課堂實踐
筆者以高一信息技術教材中《算法與程序設計》一課中的遞歸算法為例,講解如下。
遞歸算法的基本思想是把規模較大的、較難解決的問題變成規模較小的、容易解決的問題,規模較小的問題又變成規模更小的問題,當問題小到一定程度時,可以直接得出它的解,從而得到原來問題的解,即采用“大事化小,小事化了”的基本思想。
引入題目:有一群猴子摘了一堆桃子,它們每天都吃當前桃子的一半且再多吃一個,到了第十天只剩下一個桃子。問猴子共摘了多少個桃子?
筆者找了十位學生上來排成一排,十位學生分別計算其中一天桃子的個數。計算第十天桃子數的學生的答案是一個,那么他把答案傳給第九位同學,這位同學就可以算出第九天桃子的個數。公式是(前一同學的答案+1)×2。接著,他把計算出的答案傳給第八個同學,以此類推……由于每天的桃子數都等于第二天桃子數加1的2倍,符合遞歸的條件,故采用遞歸實現非常方便。首先,定義天數變量day,如果day=10,據題意只剩下一個桃子,即返回1,否則遞歸調用,即return(digui(day+1)+1)*2,直到day=10結束;然后,建立輸出函數Digui(),輸出digui(i)(1=
筆者根據計算思維的特點和高效性,啟發學生是否可以用計算思維的遞歸方法解決上述問題。學生根據引導,運用計算思維的遞歸方法,逆向思維,從后往前推算。在這里教師引申為:求任意一天猴子所吃的桃子數及剩下的桃子數oneday()。首先,要明確“任意一天”的范圍,定義天數變量day,并輸入要求的某一天day,if(day>=1&&day<=10),則此時“任意一天”都有桃子;其次,初始化信息n=10,count=1,即第十天只剩下一個桃子;然后,用簡單的while語句即可實現,循環條件為n!=day,通過計算公式count=(count+1)*2同時n--,循環執行,直到n==day,即得到這一天桃子的剩余量count。而這天猴子所吃的桃子數等于前一天剩下的桃子數減去今天剩下的桃子數,前一天的桃子數是今天的桃子數加1的2倍,即這天猴子所吃的桃子數為(count+1)*
2-count=count+2,輸出這天猴子所吃的桃子數及剩下的桃子;否則,即if(day<1&&day>10),則輸出這天已經沒有桃子了;最后,返回主菜單。由于此程序需比較n-day+1次,故此算法的時間復雜度為O(n)。整個過程用流程圖描述如上頁圖4所示。
在此例中,教師引導學生以遞歸算法的逆向思維求解問題,在學習過程中體會遞歸算法的思想過程,學生在思考中學習,并掌握遞歸方法,當遇到類似問題時會想到用類似的方法解決。在掌握了前面所學的基本技巧和方法后,學生對該類問題已經能夠靈活運用所學知識進行求解。此時,教師應該在此基礎上繼續啟發學生思維,讓他們主動、積極地進行自主學習,使其能舉一反三,達到在學中做。
實施效果
為了將計算思維引入到高中信息技術教學中,筆者通過一學期的教學,并圍繞三個方面進行了調查。本次共發放300份問卷,全部有效,其中男生180份,女生120份。問卷中所涉及問題主要有:①對計算思維的認知情況;②授課方式改變的滿意程度;③學習結果的滿意情況。問卷調查分為三個等級(A.滿意,B.較滿意,C.與傳統教學方式變化不大),調查結果如圖5所示。
經過調查筆者發現,對計算思維完全了解的有240人,占總數的80%;對計算思維基本了解的有40人,對計算思維不了解的有20人。由此說明,教學實踐后,絕大部分學生對計算思維有了一定的理解,在對學生思維能力的轉變方面,有254人非常重視在學習過程中將書本知識轉換為實踐能力,僅有19人對書本知識轉換為實踐能力這一思維能力轉變的過程不太重視。從調查結果來看,將培養計算思維為核心的教學模式引入課堂教學,取得了十分顯著的教學效果。
結束語
對信息技術課程而言,計算思維就像人們閱讀、寫字、做算法一樣,是信息技術學科最基礎、最適用、不可或缺的基礎思維方式。[5]在高中信息技術課程中培養學生的計算思維,是信息技術課程改革的一條新思路,有利于信息技術課程形成穩固的核心價值,確立以信息技術解決問題的概念、方法與原理為主的穩定的課程內容,真正擺脫軟件操作的局限。現在,對教學效果還沒有具體的衡量指標,教師在參考該模式進行教學實踐時還存在著不足之處,在后續研究中筆者還需要對其進行更深入的探索。
參考文獻:
[1]J.M.Wing.Computational Thinking.Communication of the ACM,2006,49(3):33-35.
[2]周以真.計算思維[J].中國計算機學會通訊,2007,3(11).
[3]精心鑄精品 理念須先行——談“程序設計基礎”課程改革[EB/OL].http://www.docin.com/p-49584671.html
[4]吳敏.淺議信息技術課程中高中生計算思維的培養[J].中國信息技術教育,2014(22):103.
[5]王榮良.計算思維對中小學信息技術課程的影響初探[J].中國教育技術裝備,2012(27):56-57.