代玲玲 安徽省阜陽市第七高級中學
盧慶廣 安徽省阜南一中
在“雙新”背景下,普通高中信息技術課程要重視計算思維的培育,這也就要求高中信息技術教師要從思想上進行轉變,立足于學科核心素養,重視學科大概念,由淺入深地構思大單元課堂教學設計,構建符合學生學習認知規律的遞進式問題鏈,啟迪學生計算思維層層遞進,深入探究,實現高階思維的培育。
什么是計算思維?在課堂教學設計中如何培育計算思維?《普通高中信息技術課程標準(2017年版)》中定義的計算思維是指利用計算機科學領域的思想方法,在形成問題解決方案的過程中產生的一系列思維活動。計算思維是高中信息技術學科核心素養的四個要素之一,它是幫助學生形成必備品格和關鍵能力的重要素養,那么,教師該怎樣通過課堂教學設計提升學生的計算思維呢?筆者認為,引導學生進行問題解決的教學設計至關重要,因此,筆者提出以情境式問題解決為引領,遞進式設計問題鏈為路徑,通過創設與優化進階式課堂教學設計,構建學生感興趣的學習模型,促進學生深度探究的發生,在潛移默化中促進學生將學科知識轉化為學科能力、內化成學科素養。
在大單元課堂教學設計的引領下,教師要關注情境線的創設和問題鏈的設計。在課堂教學設計時可以創設一條由“簡單情境”到“復雜情境”的情境線,簡單情境所描述的條件與問題是直接對應關系,可以將學生在充滿興趣的狀態下快速引入到學習知識與獲取技能的狀態中。復雜情境具有激活功能,能讓學生在“思行合一”中動手實踐,利用知識與技能創造性地解決復雜問題。
美國教學設計領域的專家戴維·喬納森(David H.Jonassen)博士提出把問題分為良構問題和劣構問題兩類。良構問題是指限定性條件的問題,是對已有求解問題方法的再次練習,以達到會解決同類問題的目的。劣構問題的特點是具有多種解決路徑和少量確定性的條件,其求解的不確定性更需要教師搭好學習支架,充分挖掘學生的潛力,拓展學生的思維。
美國教育家布盧姆將思維培養具體化為記憶、理解、應用、分析、評價和創造六個維度,其中記憶、理解、應用是低階思維,分析、評價和創造是高階思維,這幾類學習問題逐層深入,層層推動。以遞進式問題鏈的形式開展進階式課堂教學設計是引領學生完成從“理解—應用—遷移—創造”的重要舉措,能實現從低階思維到高階思維的進階,完成核心素養的培養。
本文以教科版選擇性必修1《數據與數據結構》中“數據的排序”單元為例進行學習探究,以Python為數字化學習工具,實施進階式課堂教學設計。
算法來源于生活,排序在學生日常生活中應用十分廣泛,如學生按照身高列隊、由高往低統計演講比賽成績等。在本單元課堂教學中,筆者以“超市商品的排序”項目主題為例遞進式設計問題鏈實施大單元主題教學,使學生通過本項目主題的學習掌握插入排序、冒泡排序、快速排序等常見排序算法的核心內容。
查看商品銷量不僅是商家每天必做的工作,對于消費者而言也很重要,同類商品銷量的多少能為消費者購買產品提供參考。因此,教師可先給出三種不同品牌的鋼筆(如右表),讓學生利用之前學過的知識對三個產品的銷量由小到大進行排序,調試代碼并上機運行得出結果,并講解鋼筆的銷售數量就是此次排序的關鍵字,其可以是整型、實型、字符型等基本數據類型,通過對三種鋼筆的銷售數量排序構造一種新的有序序列,這也就是排序的功能及其意義所在。在對基礎知識進行復習和應用的基礎上,提出問題:超市里鋼筆品牌商品眾多,如果需要按照銷售數量排序的數據增加到5個或者更多(n個),該如何求解?
將被排序的數據量增多,問題的情境仍然歸屬于簡單情境,但是因為學生并不了解排序算法和其種類,也不知道它們之間的區別,所以無法順利求解。此時教師可通過設計項目活動手冊、錄制微課、提供核心代碼等方式幫助學生探究插入排序、冒泡排序和快速排序,對問題進行分析并嘗試加以解決。首先,提問如何對5個產品的不同銷售數據(66,56,34,73,45)進行升序排序,引導學生思考;其次,引導學生在初步探究的結果上進行細化,為后面的問題解決繼續鋪墊。
思路一:插入排序。第一次比較,第一個數據為66,將第二個數據56與66進行比較,56<66按照升序排列,則將數據56插在66的前面,也就是數據66后移一個位置,第一次比較后的銷量排序為56,66,34,73,45;第二次比較,插入銷量數據34,將34與56和66分別比較,并插入到正確位置。以此類推,經過四次比較,最后完成了5個銷量數據的升序排序。

超市某天三種鋼筆銷售數據
思路二:冒泡排序。將相鄰的兩個數據量進行比較。比較66和56,66>56,交換;比較66和34,66>34,交換。比較66和73,66<73,不交換;比較73和45,73>45,交換。經過4次交換銷量數據最大的商品被放在了末尾,此時序列為56,34,66,45,73。按照這個思路經過4次迭代,最后完成5個銷售數據的升序排序。
實現這兩種排序算法都運用到了迭代的思想方法,每一次比較都是一次迭代的過程,迭代讓程序更高效和簡便。
在學生充分理解算法、應用排序算法思想的基礎上,要求其上機實踐編寫代碼,思考二者之間有怎樣的區別?是否還有更為高效的排序算法?將問題聚焦到排序算法的實現和區別上。接著,引導學生以小組為單位分組補齊代碼并上機運行兩種排序算法相應代碼,調試修改以解決問題。
基于5個銷量數據的排序并不能讓學生直觀感受兩種排序算法的區別,在此基礎上通過加大數據量,讓學生在教師的引導下從排序算法的時間復雜度、空間復雜度以及運行時是否穩定這三個角度認識兩種排序算法的不同,幫助學生內化算法思想。其實排序算法遠不止課堂上提到的這三種,不同的排序算法有不同的應用場景和適用解決問題的類型,學生通過對比得出結論,插入算法更適用于較少數據量的排序且運行穩定不易出錯。對于數據量較多,數據基本有序且逆序很小而言,冒泡排序能稍占優勢。此時,教師給出多種排序算法的時間復雜度和空間復雜度的對比圖(如上圖),引導學生關注排序算法的本質。這樣的教學方式,可以有效地培養學生分析算法、掌握算法的能力,初步完成從低階思維到高階思維的轉變。

多種排序算法對比
程序=算法+數據結構,對算法的學習離不開數據結構的支撐,程序是問題解決的最后一個環節,在形成程序前需要為問題設計好數據結構,再匹配相應算法去實現。下一節教學內容為數據的查找,為了更好地實施大單元教學,可以讓學生自主設計并思考利用程序求解超市某個月份商品銷售總額(提供1~12月的10種商品銷售數據)。因為數據在表中組織和存儲的方案有很多,而如何查詢取決于數據在數據表中的組織和存儲結構。是全部數據都存放在一張表上,一個月的數據對應一條記錄,每個商品有12條記錄,還是每個商品1~12個月的數據就只對應一條記錄抑或是其他存儲方式?哪種數據結構程序運行效率更高?學生以小組為單位進行選擇和設計,合作完成任務。
通過對這些案例的學習,學生能夠體會到解決同一個問題不止一種算法,而采取的數據結構不同也會導致算法差異化,甚至采用相同的數據結構,算法設計的理念和技巧不同,設計的算法也會不一樣。在實際學習過程中,教師要關注學生的需求,引導學生去探索去思考,只有這樣才能促使學生創造性地去解決問題,才能真正達到培養高階思維的目的。
進階式課堂教學設計還原了教學本質,讓學生分別在簡單情境和復雜情境中解決良構問題與劣構問題,使其分析算法問題、綜合探究算法問題的能力以及創新設計求解問題的能力都得到了提升,實現了從低階思維到高階思維的進階,不僅較好地達到了教學預設,更落實了計算思維的培養。在今后的教學中,筆者會繼續探究在具有挑戰性的情境下如何實施進階式課堂教學設計,以促進學生深度學習的發生;繼續提升學生創造性解決問題的能力,發展高階思維;進一步落實學科核心素養的培養,逐步完善并優化進階式課堂教學設計在高中信息技術課堂中的應用。