錢煥春


摘要: 新課標要求提升學生的計算思維,而我們現行的教學方式很大程度上是學生讀取已有程序,分析猜測出題人的算法思維,缺少了在計算思維中抽象特征、建立結構模型、通過判斷、分析與綜合各種信息資源、運用合理的算法形成解決問題方案的能力。本文通過項目學習的方法試圖提升學生的計算思維,提升學生程序設計的算法思維,提升學生的學生核心素養。
關鍵詞: 項目學習;算法思維;計算思維;程序設計
中圖分類號: G633.67 ? ? ? ? ? ?文獻標識碼: A ?文章編號: 1992-7711(2019)22-117-2
一、學科發展、存在困境
1.學科發展、未來趨勢
隨著新課標(2017)的出臺,高中信息技術課程旨在全面提升全體高中學生的信息素養,提出了核心素養概念,其中計算思維是核心素養中重要一環。學生要學會運用計算思維分析與識別問題,通過抽象、建立模型,最終設計解決方案。而算法思維是計算思維重要一部分體現,高中信息技術中如何培養學生的計算思維,提升學生的算法思維,促進學生程序設計能力,值得我們去研究,嘗試,突破。
2.學科教學、思維困境
在實際教學的過程中我們發現學生算法思維不易落實,現在的程序設計教學模式基本上是教師給出問題、算法思路和部分代碼段,讓學生去填寫相應的代碼。這種模式雖然提高了教學節奏,但是學生不知道為什么要這樣設計,為什么可以如此操作,算法設計的意義是什么?如何加深學生對算法思想的印象,提高學生的算法思維能力,提高學生算法思想的遷移能力,盡量拉平學生之間的差距,是我們信息技術教師面臨的一個迫在眉睫的問題。
3.上下求索、黎明之光
通過查閱文獻和實踐研究積累,我們發現項目學習是一個較為合適的提升算法思維的方法途徑。項目式學習(project based learning)是一種動態的學習方法,通過PBL讓學生自主、主動的探索、發現現實世界中存在的問題, 通過不斷探索,解決問題。學生在這個過程中領會到更深刻的知識和技能。
二、項目引領、真實情境
算法思維是一種思維方式,要通過實踐求證,在反復嘗試中逐步形成的可行方案。它于我們生活中的思維方式略有不同,學生要跳出固有思維方式,計算機原理出發,設計符合計算機本身運行特點的算法。通過項目學習,設計真實的情境,提供學生自由探索的環境,讓學生在不斷的嘗試中適應計算機思維,設計合適的算法程序。課堂教學中設計一個合理的項目,通過實例來貫穿整堂課,在不斷的探索中摸清原理、加深印象,提升算法的設計能力。
例如我們在課堂上教授互換語句時(t=a;a=b;b=t),要使用臨時變量t來過度,但是學生在設計的時候會直接想到的是a=b;b=a,顯然這樣是錯誤的。學生從實際生活的習慣中就覺得互換,只要兩樣東西換一下就行,沒有想到互換的中間過程,在這里我們可以設置一個簡單的項目,讓學生去思考,互換到底是怎么實現的。
設計項目:有兩個不同的容器,其中分別放蘋果和梨,要求學生設計算法程序,把碗中的蘋果和盤中的梨互換。提供實物兩個容器及相應的水果,提供相關資料平臺(變量及賦值語句的概念)。
學生在拿到項目,在實行的過程中基本上設計的方案步驟都是:1.把盤中的梨放到碗中;2.把碗中的蘋果放到盤中。讓學生上臺實物演示,在互換梨或蘋果的時候提示學生新的內容會覆蓋舊的內容,是否可以實現互換?通過實際操作來檢驗學生設計方案是否可行,對項目進行階段性評價。
再對學生的項目設計進行分析,以上錯誤產生的原因學生習慣性的使用平時的慣性思維考慮問題,忽略了算法程序有自己的規則,學生脫離了是程序中的規則,即互換的過程其實是一個賦值的過程,變量賦值會把原內容覆蓋。
引導學生在實際設計時先收集相關資料,再是把問題抽象化、模型化。如把碗抽象為變量A,盤抽象為變量B,問題抽象為要實現A與B中的值互換。再是讓學生實際操作互換過程,就會想到有把A中的蘋果拿出來放到空變量C中,再把B中的梨放到A,C中的蘋果放到B中。
最后對整個項目設計過程進行交流評價:1.對學生的設計進行展示;2.分析設計過程中存在的問題;3.總結課堂中收獲及相應知識。
通過項目實施,在“嘗試——驗證——修正”的過程中,學生實際體驗,收集資料,設計方案,嘗試可行性,最終得到可行結果。這樣既培養了學生的算法思維,突出了以計算機的角度思考問題,鍛煉了學生的分析設計能力,通過實際設計加深了學生印象,提升學生興起,提高學生知識點記憶。達到高效學習。
三 、項目提升、開闊思路
解決問題的算法有多種多樣,而最終要找出能正確的、高效的、簡潔的解決問題方法。學生的思維是純潔的,沒有固定模式的,在設計算法時他們的思路是五花八門的,有的思路不行,有的思路可行,有的思路效率低下,有的思路高效,教師要引導學生從多種方面中找出最優算法。切忌直接拋出一個最優算法,讓學生學習,只有通過學生自身的不斷嘗試,通過項目的實施,一步步深入分析,得到的解決問題的方法才是自身的。
如在學習枚舉算法時有一個經典問題“水仙花數”,我們可以設計項目:我們生活中有很多有特點的數字,如153=1^3+5^3+3^3,這個數字每一位的三次和剛好等于它自己,老師對這些數很感興趣,在網上查到這些數字叫“水仙花數”,我們能不能設計一個算法,找一下所有的水仙花數。
設計前引導學生分析問題:1.三位數;2.每一位的三次之和;3.三次之和于這個三位數相等。學生深入分析:1.三位數范圍100-999;2.怎么得到三位數中每一位數值;3.比較找符合結果。
學生設計過程中主要問題是第2步,怎么得到三位數中的每一位值,用i表示三位數,有一下幾種情況:
1.a=i \100; b=i\10 mod 10 ; c=i mod 10
2.a=i\100 ;b=(i-a*100)\10;c=i-a*100-b*10
這兩種方法都是通過數值取整、取余的方法來實現,實際操作可行,這是常規思路。但是在學生設計的過程中還有一種情況:
a=val(mid(cstr(i),1,1)) ;b= val(mid(cstr(i),2,1)) ;c= val(mid(cstr(i),3,1))
這種設計的思路是通過字符串來處理數據,也可以實現三位數每一位分解。這種思路不是常規思考思路,但是學生會想到,因為學生沒有固定思維,他們把學到的知識應用到解題中,作為教師要給予肯定及鼓勵。但是教師要引導學生培養一個意識,數字問題能用數值的方式解決盡量使用數值方式解決問題,我們要跳出具體的程序語言,設計合適算法。
還有的學生會從另一種角度考慮問題:1.先有百位、十位、個位上的數字;2.再通過這三位值來組成三位數;3判斷百位、十位、個位數的三次和與三位數是否相等。a^3+b^3+c^3=a*100+b*10+c
通過反相思考,我們也能解決尋找水仙花數的問題。通過項目學習方法的實施,培養學生通過不同的角度,不同的思路,設計算法,驗證算法思路,在不斷嘗試過程中解決問題,擴展學生的思路,提升學生知識點掌握能力,促進算法思維養成。
通過“水仙花數”的學習,擴展學生眼界,引出“自冪數”,讓學生嘗試4位數(玫瑰花數)、5位數等數的 “自冪數”驗證。通過同類型問題的解答,培養學生的知識遷移能力和知識應用能力。
同樣的問題有多種設計思路,多種算法思維,如“百錢百雞”問題、“斐波那契數列”問題等等都可通過多種方法解決問題,教師通過適當的引導,充分調動學生的思維能力,開闊學生的思路,讓學生進行各種嘗試,驗證正確性,提升學生的知識應用能力和知識的理解能力。
四、項目遞進、逐層深入
知識的落實有其連貫性,算法思維的培養也是如此,通過知識點的授予,逐步提升,逐漸深入。項目學習的特點可以把一個大項目分解為多個小項目,把難題簡化,通過小項目的實現最終完成一個大項目。
例如:在計算機系統中,數值一律用補碼來表示和存儲。怎么樣知道某個數在電腦存儲中的編碼呢?
資料收集:補碼的定義。1.符號位,正數最高為位0,負數最高為1;2.正整數的補碼是其二進制表示,與原碼相同;3. 負整數的補碼,將其二進制數除符號位外的所有位取反得到反碼;4.對反碼加1得到補碼。
通過補碼的定義,我們可以拆分為三個小項目:1.進制轉換,十進制轉換為二進制;2.反碼求解;3.進制加法進位運算。三個小項目可以設計三個課時的連貫系列課程。
在各個項目實施的過程中落實項目的知識點,通過小項目的實現,逐步推導大項目,最終解決問題。
1.在進制轉換項目中要求實現十進制轉換為二進制,原理是除二取余法,實施的過程中落實循環語句反復執行除二取余,以及除二取整,出口是整數部分為0為止;
2.第二課,重點強調學生的解析思維能力,取反的結果是1變為0,0變為1,結合前一課中得到余數,對其取反,可以通過“1-余數”實現;
3.第三課重點是進位算法,逢二進一的進位方法,注意進位和當前位的值的變化。
通過教材的整理,把相關聯的知識點串聯起來,設計一個階段性項目發布給學生,再是把大項目拆分成幾個小項目,大問題分解成小問題,“大事化小”,逐個落實,逐個擊破,最終實現整體突破,在使用的過程中鞏固已學知識點,培養學生分步實現能力及合作能力。
五、項目實施、得失之處
項目學習通過生活中真實事例設計問題,實例引導,更貼切生活,使得學生學習目標明確,而不會出現學習知識和實際應用脫離,學生迷?,F象。項目學習能更好的吸引學生的學習興趣,明確學生的學習目標,提升學生的學習效率。
算法思維要求學生最終能自行收集分析材料,提煉規律,形成算法模型,最終通過計算語言實際解決問題。在設計算法的過程中要進行不斷的“試錯”,不斷的“排錯”,通過嘗試——驗證——嘗試的過程逐步完成最終算法。項目學習的方法剛好可以滿足算法思維的思考過程,通過一個項目,學生自主收集資源,自行設計方案,測試方案,不斷嘗試,得到最終的解決方案,這和算法思維完全符合。
在實施的過程中也發現了項目學習的一些不足之處:1.項目學習是學生自主探索學習,通過試錯,不斷更正方向,一步步現在最終目標,在實行的過程中所花費的時間是傳統授課方式的幾倍,甚至十幾倍;2.對于一些大型問題,因學生能力有限,要讓學生自行設計算法,有點強人所難。
總體來說,項目學習在算法思維培養上是適用的,通過項目的引導,使得學生養成良好的算法設計習慣,能自行設計簡單算法,解決實際問題。項目學習方式能提升學生的自主學習和探索能力,培養學生成為一位數字化時代合格信息公民。
[參考文獻]
[1] 普通高中信息技術課程標準(2017年版)[M].人民教育出版社,2018.
[2]羅廷洪.項目教學法在電子技術基礎教學中的應用[J].現代職業教育,2019(06):108-109.
[3]冷偉.在綜合實踐活動中開展項目式學習的探索[J].課程教育研究,2019(11):215-216.
(作者單位:浙江省杭州市富陽區新登中學,浙江 杭州 311400)