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