王愛勝
跨學科學習與項目學習有著必然的關聯(lián),兩者的協(xié)調(diào)設計是一線教學最新的發(fā)展趨勢。本期解碼,讓我們從中小學不同內(nèi)容的跨學科視角來探索如何進行真實的項目設計。
在項目學習中,最困難的是針對項目內(nèi)容“真實性”特征進行項目設計。在實踐中,教師往往虛構(gòu)項目應用,或者簡化技術(shù)功能,究其原因往往歸結(jié)為受多種因素的局限,如技術(shù)實現(xiàn)困難、學習時間不足、主題難以設計等。那么,如何打破局限,讓項目真實設計呢?本文結(jié)合高中必修一“數(shù)據(jù)計算”與必修二“信息系統(tǒng)設計”的內(nèi)容,基于計算思維尋找算法與編程項目思維基礎,面向“名著閱讀跨學科學習”尋找項目主題,以“名著朗讀者”為真實項目設計過程,以“數(shù)據(jù)計算與信息系統(tǒng)設計”為學科內(nèi)容,研究真實項目設計中的主題規(guī)劃、功能需求、技術(shù)現(xiàn)實的整體生成過程。本項目涉及的信息系統(tǒng)的概要設計如圖1所示。
項目設計價值定位
因為工作、時間等關系,我們常常不能總盯著電腦看文章,這對想閱讀名著的計劃實施十分不利。筆者曾嘗試利用文字處理工具在線朗讀,但速度偏慢,因此擬做一個朗讀文章的工具,并推薦給學生以“跨學科學習”項目來開展名著閱讀與信息系統(tǒng)設計學習,并在教學中指導學生整體體驗基于數(shù)據(jù)處理的計算思維養(yǎng)成,以實施基于計算思維核心素養(yǎng)發(fā)展意義的跨學科項目學習。為此,將項目主題設計確定為:名著朗讀者。
項目準備與技術(shù)探索
在項目開始時,我們對全面實現(xiàn)“朗讀”的方案、技術(shù)并不掌握,所以要先進行快速的探索與實驗,以形成相關的創(chuàng)作意識,其可在微項目1~2技術(shù)實驗中逐步形成。
微項目1:朗讀模塊安裝實驗。
在項目設計之前,首先準備要應用到的知識與技術(shù),通過技術(shù)實驗做到“三軍未動糧草先行”。為設計“名著朗讀者”項目,查詢到的“朗讀模塊”較多,結(jié)合曾用過的winsoud模塊判斷不能在操作系統(tǒng)和Python版本上有局限,這樣才能方便不同環(huán)境使用。因此,擬采用跨系統(tǒng)的通用語音合成模塊pyttsx3進行技術(shù)實驗。
(1)技術(shù)實驗:安裝程序及錯誤排除。一般情況下,當安裝Python后,模塊安裝程序pip、pip3都是版本過低,根據(jù)提示更新卻往往不易成功,且pip文件全被刪除。這給模塊安裝造成困難,同時這也是設計類項目最制約初學者的困難。因此,通過搜索探討pip的修復、升級以及快速安裝的國內(nèi)鏡像策略等。
(2)實驗結(jié)論。①pip的升級過程會有多種錯誤,可進行修復pip、更新,然后安裝模塊。②pip的路徑使用國內(nèi)鏡像,速度更快,也更穩(wěn)定。③pyttsx3模塊的語音合成與朗讀等基本功能能夠朗讀文本。
(3)實踐學習。①pyttsx3模塊的安裝是否存在問題?交流解決的方法。②在技術(shù)實驗中是否有需求萌發(fā)?隨時記錄想法,對規(guī)劃設計項目會有幫助。
微項目2:簡單文本的朗讀實現(xiàn)。
在測試中,實際是對項目的核心技術(shù)要素進行探究,可通過“簡單文本朗讀實現(xiàn)”完成。
(1)模塊測試實驗:模塊安裝是否成功。模塊方法較多,如用help('模塊名')檢測是否成功。
(2)技術(shù)測試實驗:朗讀與異常處理。結(jié)合try技術(shù),進行Bug消除與異常預處理,也是較好的工程思維,符合計算思維的功能泛化要點,以適應更多的情況。進行基礎文字朗讀實驗,可以體驗技術(shù)效果。在非項目學習中,至此體驗即算完成關于“語音合成”模塊的純知識學習,對數(shù)據(jù)處理流程卻不能再有學習,由此可見項目學習的綜合價值更大。
(3)實驗結(jié)論:voice.say(text)是主體應用技術(shù)等。
(4)實踐學習:text可輸入任意文本進行測試。
項目規(guī)劃與概要設計
通過前期探索,筆者明白了一個道理:沒有基本知識去談項目規(guī)劃是空中樓閣、紙上談兵。所以,只有通過前面兩個微項目的學習,能夠用基礎知識實現(xiàn)“出聲朗讀”,才可進行項目活動的設計,才能與信息系統(tǒng)設計的概要設計相結(jié)合——包括需求分析、項目規(guī)劃、界面設計等。
微項目3:項目規(guī)劃與系統(tǒng)設計。
在信息系統(tǒng)設計中,項目規(guī)劃實際就是系統(tǒng)設計的流程,包括可行性分析、需求分析、概要(功能)設計與詳細(功能)設計及編程現(xiàn)實、產(chǎn)品測試與發(fā)布的整體規(guī)劃。這與項目活動過程設計也是一致的。系統(tǒng)設計的方法有快速原型、瀑布型兩類,可以兩者兼顧——先基于瀑布型概要設計,用快速原型快速搭建系統(tǒng)主體與主要功能,再逐步迭代、泛化完善整個信息系統(tǒng),這正是計算思維的流程要素。
(1)可行性分析?;赑ython的數(shù)據(jù)計算與信息系統(tǒng)設計方法,與名著文本結(jié)合,應能設計出閱讀、朗讀的基本功能;技術(shù)困難可以通過搜索、技術(shù)實驗(及后期遇到GPT的Cursor智能編程工具咨詢等)來解決。
(2)需求分析。能夠根據(jù)名著《瓦爾登湖》《詩經(jīng)》等txt文件聆聽文字朗讀,按篇、分節(jié)學習名著;能夠較快地翻頁瀏覽文字、查找并統(tǒng)計關鍵詞等。
(3)概要設計。①文件操作:打開文件及文件夾,確定選中文件;使用相應模塊或功能打開文件,讀取數(shù)據(jù);利用循環(huán)程序進行基礎的數(shù)據(jù)整理,進行數(shù)據(jù)分頁模型規(guī)劃等。②界面設計:方案一,用菜單功能操作提示,可用輸入/輸出語句及循環(huán)控制完成;方案二,采用圖形界面GUI設計需用GUI設計模塊等。③朗讀處理:訪問數(shù)據(jù)列表進行每頁數(shù)據(jù)的朗讀,并探索自動朗讀與自動翻頁。④數(shù)據(jù)處理:數(shù)據(jù)列表的讀取、屏蔽詞匯制作副本、分頁檢索、關鍵詞查詢等相應處理。⑤模塊化設計:使用自定義函數(shù)分別設計。
(4)項目實施。①問題分解:根據(jù)需求分析模塊設計,規(guī)范自定義函數(shù)(或子程序)、變量名等。②模型構(gòu)建:建立數(shù)據(jù)存儲模型、檢索模型等。③編寫代碼:模塊代碼編寫與合成。④程序調(diào)試:分模塊進行斷點測試、整體軟件測試等。⑤學習評價:過程評價涉及設計組織與效率等,作品評價包括功能完善、設計創(chuàng)新等。⑥策略設計:采用半成品代碼中留白重要算法,代碼補充、技術(shù)實驗及問題解決等。
(5)項目交流。在進行功能代碼設計時,以哪種系統(tǒng)設計模型進行設計為宜?
微項目4:GUI圖形界面設計。
在概要設計中,界面設計非常重要,它對功能規(guī)劃、數(shù)據(jù)初步的輸出具有一定的意義,并隨時延伸到詳細設計進行探索。界面設計一般有兩種風格:一是,代碼編程的即時命令、菜單功能的風格,設計容易,代碼簡潔,但是友好度不高。二是,GUI即圖形用戶界面設計,涉及窗體、按鈕、標簽、文本框、對話框等控件設計,直觀、生動有趣,因技術(shù)復雜可借“半成品加工策略”來提高事件響應設計的學習效率。
下面以簡化重點代碼解析GUI設計過程。
(1)功能模塊導入(如圖2)。
(2)規(guī)劃全程變量(如圖3)。
(3)主體界面設計技術(shù)實驗。
在主程序中進行界面設計,其他功能不斷迭代補充。
(4)事件響應。事件響應指向自定義函數(shù),可先提示事件已響應,方法如圖4代碼所示。
(5)實踐學習。①體驗控件創(chuàng)建:模仿樣例增加“前一頁”“退出”“自動朗讀”等按鈕控件;探索輸入頁碼的文本框創(chuàng)建等。②“半成品”加工設計:補充某些自定義函數(shù)的提示信息等。
(6)項目交流。①GUI控件有按鈕、標簽、文本輸入框、消息窗等,基本規(guī)則為定義、激活、布局,在定義中,事件指向自定義函數(shù)即可完成調(diào)用相應功能。②在方案設計初期,有人提出建議:其一,是把翻頁和頁碼放在底部,并增加兩條不同色的間隔線,形成“刻線”效果;其二,增加插圖比較困難,暫時改為增加LOGO圖像;其三,增加前搜、后搜功能實現(xiàn)全書統(tǒng)計與查詢。學習交流很好地體現(xiàn)出設計思維和項目設計的生成性。
項目數(shù)據(jù)模型與功能設計
在項目學習中,沒有真實數(shù)據(jù)的項目給人的感覺是只學技術(shù),而不是解決問題。所以,需要探索搭建數(shù)據(jù)模型進行數(shù)據(jù)整理,依據(jù)數(shù)據(jù)模型進行顯示、查找、朗讀等功能設計。
微項目5:數(shù)據(jù)模型的建立與數(shù)據(jù)整理。
(1)數(shù)據(jù)模型。數(shù)據(jù)獲取、處理、顯示、查找等數(shù)據(jù)模型都與GUI設計關聯(lián),如一頁20行的文本顯示可采取20行標簽控件顯示數(shù)據(jù)完成。本項目基礎數(shù)據(jù)模型包括但不限于以下幾種:①數(shù)據(jù)存儲模型:text=['a','b',……]。②數(shù)據(jù)整理模型(長句切片模型):text=['a','b','c1','c2','c3','d'……],即c=c1+c2+c3。③數(shù)據(jù)訪問模型:text[textp+i](每頁首行位置為textp,0<=i<20)。
(2)圖書數(shù)據(jù)的獲取與整理。獲得圖書數(shù)據(jù),并進行規(guī)范化數(shù)據(jù)整理,這是信息系統(tǒng)設計項目的首要數(shù)據(jù)處理。例如,本項目可以用文件打開的方式,再進行空行、無效字符清洗以及長句的切片等處理。關鍵算法設計略。
(3)數(shù)據(jù)的分頁顯示技術(shù)實驗。讓數(shù)據(jù)按頁顯示成文字內(nèi)容,可作為整個數(shù)據(jù)處理的中心,由它作為動態(tài)“模型”來接駁翻頁、檢索、朗讀以及后期迭代“屏蔽朗讀詞匯”等功能,所有的功能都可以針對數(shù)據(jù)訪問模型text[textp+i](0<=i<20)進行設計。
(4)實踐學習。①模仿學習:參考分頁顯示文字的功能,構(gòu)造clear()清空20行功能,體驗循環(huán)控制對激活、設置控件的意義。②半成品加工設計:可對while x<tl、while len(t)>textn、text[x]=text[x][0:textn]等關鍵數(shù)據(jù)或算法進行技術(shù)留白,在分析、補充“長句不斷切片算法”構(gòu)成中完成算法學習;對for i in range(1,21)進行技術(shù)留白,體驗循環(huán)的控制作用。由此深入體驗數(shù)據(jù)處理中計算思維的分解、模型與算法要素。
(5)項目交流。①數(shù)據(jù)模型:按一定格式進行數(shù)據(jù)存儲、訪問,觀察列表text的內(nèi)容構(gòu)成特點。②斷點測試:部分功能是否成功可以進行斷點測試。例如,text=[str(x)+"讀書" for x in range(10000)],可不用圖書數(shù)據(jù)也能輕松產(chǎn)生3萬以上的文字進行技術(shù)實驗。
至此,通過5個微項目,從模塊安裝、技術(shù)實驗、模型構(gòu)建到數(shù)據(jù)顯示,生成項目。在此過程中,根據(jù)教學進度,通過半成品策略對輸入輸出數(shù)據(jù)、列表構(gòu)建數(shù)據(jù)模型、循環(huán)控制切片等基本算法進行補充,在學習與探索中較完整地實現(xiàn)真實項目對計算思維、設計思維的培養(yǎng)。