謝永盛 張 超 王 璐 蘇 柏 苑井孝
(西北民族大學,甘肅 蘭州 730124)
近些年STEM教育在國內(nèi)開展的如火如荼,不少國內(nèi)學者、研究人員針對STEM教育進行了不同程度上的探究,從理論分析到實踐驗證。STEM教育強調(diào)通過跨學科整合,這一集合,不是課程的簡單組合,而是把學生學習到的零碎知識與項目工程轉(zhuǎn)變成一個探究世界相互聯(lián)系的不同側(cè)面的過程,強調(diào)學生在“雜亂無章”的學習情境中提升設(shè)計能力、合作能力、問題解決能力和實踐創(chuàng)新能力[1]。枚舉算法起源于原始的計數(shù)方法,即數(shù)數(shù)。其本質(zhì)是一種列舉式搜索的算法,常常借助循環(huán)嵌套分支結(jié)構(gòu)和計算機的超強運算能力,一一驗證大量可能的答案。
某人將自己的旅行箱密碼忘記了,密碼可能是生日也可能是電話號碼。同學們列出的多種情況促使當事人想起他的密碼是一個三位自然數(shù),并且密碼個位數(shù)是8,其它位含有1但是不能確定在哪個位置。那么如果要解決上面的問題,我們就要把問題的所有可能解都一一列舉出來,并按照問題要求的條件逐個判斷每個答案是否是正確的解。
按照項目所學內(nèi)容可將同學們分成若干組,本項目學習過程中,學習小組可以參考以下活動建議進行合作學習和交流分享。
表1 項目活動建議
圖1 找回密碼程序
運行結(jié)果:108、118、128、138、148、158、168、178、198、218、318、418、518、618、718、818、918。
教師可根據(jù)學生在課堂上的學習情況開展下一項教學任務(wù)。在這個項目中學生們將借助Python程序語言和數(shù)學知識來解決問題。Python是一種面向?qū)ο?、解釋型計算機程序設(shè)計語言,由Guido van Rossum(吉多·范羅蘇姆)于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。它是一個開源語言,擁有大量的庫,可以高效地開發(fā)各種應(yīng)用程序。特點:簡單、高級、面向?qū)ο?、可擴展性、免費開源、可移植性、豐富的庫、可嵌入性[2]。這個過程需要每個小組成員的參與,動手敲代碼并將本小組的運行結(jié)果通過教學平臺分享給大家。
圖2 尋找三位數(shù)中的水仙花數(shù)程序
運行結(jié)果:153、370、371、407。
在程序中:通過取余運算%判斷個位數(shù)。如x%10==8成立,則可判斷個位數(shù)為8;借助邏輯運算符“and”可以判斷復雜情況;可使用整除運算(//是整除運算符號)取得該自然數(shù)的前兩位數(shù),利用in判斷前兩位中是否有1。程序,見圖1。
本節(jié)課教師通過項目式學習的方式開展教學,借助找回密碼的生活場景吸引學生學習興趣,融合數(shù)學學科知識并通過Python程序語言掌握了枚舉算法中的邏輯框架。借助STEM教育理念培養(yǎng)學生的思維能力和動手能力達到預期的教學目標。
通過上一個項目——找回忘記的密碼的介紹,我們再來感受下尋找水仙花數(shù)的教學過程。水仙花數(shù)是各位數(shù)字的立方之和等于該本身的數(shù),如153=13+53+33?,F(xiàn)讓求出所有三位數(shù)的水仙花數(shù)。
我們根據(jù)已有的知識判斷出水仙花數(shù)的特征和所給問題的數(shù)字范圍,對該項目逐一給出解決方案。確定枚舉對象的取值范圍:用i表示該三位數(shù),foriinrange(100,1000);一個三位數(shù)的百位上的數(shù)用整除的計算方式獲
得:用a表示,a=i//100;十位上的數(shù)用整除和求余兩種計算方式獲得:用b表示,b=i//10%10;個位上的數(shù)用求余的計算方式獲得:用b表示,c=i%10。
要求水仙花數(shù)等于各位數(shù)字的立方之和,所以枚舉條件是i==a**3+b**3+c**3,程序,見圖2。
在STEM教學理論的指導下,利用算法和編程去優(yōu)化并解決生活中的問題,這不僅有效提高學生對數(shù)學和編程學習興趣的提升而且也為國內(nèi)STEM教育的實踐探索提供可以研究的視角。人工智能和大數(shù)據(jù)充斥著生活中的各個方面,從生活中學習再回歸到生活中,讓學生真正體會到編程的無限樂趣。同時在學習過程中,切實地提升了學生綜合運用知識的能力和解決問題的創(chuàng)新能力,逐漸養(yǎng)成STEM素養(yǎng)[3]。