□寧礦鳳 彭 浩
2011年,周以真[1]教授提出“計算思維”是一種能夠清晰、抽象地將問題和解決方案用信息處理代理所能有效執(zhí)行的方式描述從而解決問題的思維過程。2017年,我國教育部指出“計算思維”是發(fā)展學生信息素養(yǎng)的核心素養(yǎng)之一。國內(nèi)外研究者普遍認為,計算思維本質(zhì)上是人類如何解決問題的思維和能力體現(xiàn)的一種過程,也是一股推動學生信息素養(yǎng)發(fā)展的創(chuàng)新動力,主要包括六個方面的子能力[2]:形式化問題、抽象問題,建立模型、組織和分析數(shù)據(jù)、建立問題解決方案并優(yōu)化、解決方案系統(tǒng)化和問題遷移。隨著科學技術的發(fā)展,K-12階段計算思維的教育價值將越來越突出,以適應新世紀對人才技能的新要求??偟膩碚f,計算思維是一種規(guī)范化、系統(tǒng)化的問題解決過程,也是人的一種內(nèi)在思維品質(zhì)。
本文將PBL問題引導模式和計算思維培養(yǎng)相結(jié)合組織課堂教學,分階段有目標地逐步完成學習任務,實現(xiàn)教學目標。以“問題”為出發(fā)點,注重小組自主探究學習,任務分配,問題解決設計與實施,可以提高學生解析問題能力和創(chuàng)新能力,幫助學生形成計算思維并應用在實際生活中。
計算思維的概念對于大一新生來說是比較抽象的。基于“計算思維”的大學計算機基礎課程改革成敗的關鍵在于如何以恰當?shù)姆绞絺魇诮o學生,且計算思維不僅需要培養(yǎng)學生編寫程序的思維,更重要的是培養(yǎng)學生分析解決綜合問題的能力,而這種綜合問題解決能力的培養(yǎng),需要真實的問題情境、多元的學科知識儲備以及必要的工具方法支持。PBL教學法,是一套設計學習情境的教學方法,筆者結(jié)合多年教學經(jīng)驗將PBL問題引導模式和計算思維相結(jié)合的組織形式引入“大學計算機基礎課程教學”中,設計貼近真實生活的問題,用簡單的案例講授復雜、高深的學生難以理解的原理。教學過程一般是圍繞問題求解的基本過程,即通過問題的引入,探尋解決問題的方法,故設計的教學案例盡可能地將計算思維的核心教學目標“埋在”教學中,這種做法開拓了計算思維的課程設計思路。
在計算機實際應用中,經(jīng)常會對數(shù)據(jù)序列排序,如按字母,日期,數(shù)字進行有序的順序排列,即便在高速的計算機上運行,如果使用排序方法不恰當,也可能需要很長的時間來完成排序。一個優(yōu)秀的算法尤其是在大量數(shù)據(jù)的處理方面可以節(jié)省大量的資源。排序算法在日常生活中應用非常廣泛,生活中幾乎處處用到。在《大學計算機基礎》課程教學改革中,排序算法是一個很好的培養(yǎng)學生計算思維的案例,學生會遇到不同的排序方法,如何引導學生創(chuàng)造或?qū)W會一個有效的排序方法并運用在生活中解決問題是筆者實踐的要點,算法學習也是一種學習和提高思維能力的過程。
(一)選取通俗易懂的案例。在現(xiàn)實生活中廣泛存在著排序問題,現(xiàn)在假設要給考試的試卷按照學號排序,幾百份的試卷!用什么排序算法?生活中很多類似的問題:班級名冊、電話簿中的姓名、字典、圖書索引、圖書館或書架上的書、計算機中的文件列表等。簡單地說,我們希望在排序時花費的時間要短,占用的資源要盡量少,因此要解決以下問題:一是從序列的初始狀態(tài)到經(jīng)過排序算法的變換移位等操作變到最終排序好的結(jié)果狀態(tài)的過程所花費的時間要盡量短。二是從序列的初始狀態(tài)經(jīng)過排序移位變換的過程一直到最終的狀態(tài)所花費的空間開銷要盡量小。三是穩(wěn)定性:要保證排序前和排序后,2個相等的數(shù)其在序列的前后位置順序相同。
(二)以問題為驅(qū)動引導學生主動思考,加強計算思維培養(yǎng)。項目組在多年的《大學計算機基礎》教學中,結(jié)合學生專業(yè)特點設計一系列具有層次漸進關系的問題,在教學設計中引導學生結(jié)合生活場景深入思考,進而找出并描述解決問題的步驟。
1.學生們聯(lián)系生活討論并說出哪些場合排序是非常重要的?同時思考如果沒有排序這些場合可能會出現(xiàn)哪些問題?(最常見的問題:無序時人們需要花費大量時間來查找目標,費時費力)。指出排序能夠使我們快速進行查找,提高工作效率!提出計算科學中排序的意義。
2.討論:1)先用“插入排序”,發(fā)現(xiàn)如果只有10份試卷,排的還挺快的,但是隨著已排序試卷數(shù)量的增多,想要把新的試卷插入到已排序試卷集合的合適位置則會越來越慢了。
2)插入排序看起來簡單易行,但是試卷多達至上千份時,該如何處理?那先把所有的試卷按照學號分成10堆,比如學號50以下的放在A堆上,學號50~100的放到B堆上,以此類推。每一堆用插入排序進行排序,因為試卷份數(shù)比較少,所以用插入比較快。然后按照A-E堆的順序進行合并,也就排好了。
3.學生分小組模擬以上場景,先在一個集合中排序,即每個人隨機從老師手上抽到一個數(shù)字,抽完后展示出來,是一個無序的狀態(tài),如圖1所示。
圖1 學生隨機在老師手中抽取的數(shù)字
4.學生開始分組討論如何快速有效地將小組的無序數(shù)字進行從小到大的有序排序,并整理方法和步驟。
5.幾分鐘后,讓小組學生演示排序過程,并總結(jié)排序方法;(學生有可能想到的是插入排序類似于撲克牌游戲摸牌時的方法,游戲人摸起一張牌時,要和手上現(xiàn)有的牌進行一個個比較,直到插入正確位置(按牌面大小),以便手中的牌以一定的次序排列。)
6.小結(jié)一下:插入排序是一種較為簡單的排序算法,其算法思想是將一個待排序的數(shù)字按其關鍵字的大小插入到前面已經(jīng)排好序的子序列中的適當位置,依次如此,直到全部記錄插入完為止。
7.播放網(wǎng)上下載的國外用真人跳舞表現(xiàn)的動態(tài)排序算法步驟視頻,如圖2所示,讓學生更深入體會計算機科學中排序的步驟。
圖2 動態(tài)插入排序算法視頻
8.讓學生分組討論還有沒有其它的方法,只要和前一種方法不同即可;或者讓學生嘗試用“冒泡排序”來演示排序的整個過程(冒泡排序是一種簡單直觀的“交換式”排序方法,基本思想就是從左至右讓相近的兩個數(shù)字作比較,小的往上冒,排到前面,大的往下沉,排在后面,按照這個規(guī)則從左向右比較,重復遍歷整個隊列,最大的數(shù)就被換到了數(shù)組尾。(這里指升序))
9.可根據(jù)課堂學生情況,是否重復第3步。
10.比較以上排序算法,整理步驟。哪一種方法更優(yōu),引導學生計算出整個遍歷過程中排序需要比較的次數(shù),并說明原因。
(對于冒泡排序:要找出n個數(shù)的最大值,需要比較n-1次。例如,要找出8個數(shù)中最大的那個數(shù),第一趟需要比較7次,要找出剩下的7個中最大數(shù),需要比較6次,依次類推……總共需要比較7+6+5+4+3+2+1=28次)。
11.在學生有一定的算法基礎上進行拓展,可根據(jù)學生專業(yè)特點盡可能嘗試其他的排序方法,引導學生去思考,如選擇排序、希爾排序等,并總結(jié)其算法思想。
12.總結(jié):在這些排序算法中,冒泡排序和插入排序是最基礎的,各種排序方法中,沒有哪一種是絕對最優(yōu)的,因此,在實際應用中通常是根據(jù)不同的問題適當選用合適的算法,甚至可以多種算法結(jié)合起來使用。
基于PBL問題情境的學習是一種有效促進“學習者”轉(zhuǎn)變?yōu)椤爸R建構(gòu)者”的新型學習方式。在這種教學模式中,問題的設計是教學設計中的重要環(huán)節(jié),教學中通過提出問題和解決問題來實現(xiàn)知識經(jīng)驗的建構(gòu),本教學案例以PBL真實問題情境作為切入點為學生提供了較強的生活實景,有效地將學科知識和技能聯(lián)系起來。此外,教師根據(jù)實際問題,引導學生進行算法優(yōu)化,逐步產(chǎn)生計算機輔助下的問題解決方案,形成問題解決的仿真模型也是對學生能力的一種提高。
課程組在“大學計算機基礎”課程的改革中推行以計算思維與PBL為導向的《大學計算機基礎》教學實踐項目,通過多年的教學實踐,積累了一定的經(jīng)驗和方法,并獲得省級教學改革項目一項,校級改革項目多項。