日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Project X記錄(4)《不插電的編程課——搜索算法》

 長沙7喜 2018-05-04


張飛

清華大學終身學習實驗室課程設(shè)計主管

算法

是“計算思維”或“人工智能”的核心內(nèi)容。在小朋友們的日常生活中,與“算法”關(guān)系密切的事物之一,就是“互聯(lián)網(wǎng)搜索”。


很多六、七歲的孩子已經(jīng)可以熟練的使用互聯(lián)網(wǎng)搜索引擎了,但是他們能理解其背后的搜索算法嗎?特別是在“不插電(不用任何電腦等 Hich Tech 設(shè)備)”的教學環(huán)境下?


我們是醬紫教孩子搜索算法的。


課程目標


理解并在游戲中運用三種常用的數(shù)據(jù)搜索算法:線性 ( sequential ) 搜索算法、二分法 ( binary ) 搜索算法、散列 ( hashing ) 搜索算法。


  培養(yǎng)計算機科學素養(yǎng)。


課程工具


☆ 洗手液 (最好是免沖洗)

☆ 寫有數(shù)字的卡片

☆ 健康好吃的糖果

☆ 游戲《大海戰(zhàn)》圖紙 & 簽字筆

☆ 白板&白板筆


課程時長


120分鐘


課程設(shè)計思路

☆ 線性算法就是逐一比對數(shù)據(jù),是最簡單、最低效、沒有什么“算法”的算法。


☆ 二分法算法用于已排序數(shù)據(jù),每次取中間值查詢,不斷縮小范圍。


☆ 散列法算法是將數(shù)據(jù)按照一定的方法換算成便于查找的關(guān)鍵字,所有的關(guān)鍵字組成“關(guān)鍵字表”,然后按照關(guān)鍵字表分組數(shù)據(jù)。這樣在查找時可以快速定位到數(shù)據(jù)所在組,并在組內(nèi)進一步查詢。


對于這個年紀的孩子來說,本課程更多的是“計算機科學素養(yǎng)”的培養(yǎng),而非“算法課程”;因此對孩子的要求僅是理解和游戲中的應(yīng)用。


因為課程運用了一定的數(shù)學知識,有一定難度,為了避免枯燥,課程設(shè)計要注重強化趣味性。


因此,特意設(shè)置“暖身”環(huán)節(jié),并在課程中全程用游戲貫穿教學內(nèi)容。


暖身環(huán)節(jié)讓孩子快速體驗線性算法,并思考排序數(shù)據(jù)的搜索算法,帶著問題進入主體游戲。過程中加入糖果小獎品,強化娛樂性。


主體游戲采用海戰(zhàn)游戲的形式,兩人一組;用三套棋盤分別執(zhí)行三種搜索算法,讓孩子在游戲中體驗算法的使用環(huán)境和執(zhí)行效率。


課程后讓孩子向父母講述三種搜索算法的基本原理,強化理解。


課程預(yù)備


☆ 兩位數(shù)的加減乘除運算

☆ 英文字母表


課程設(shè)計詳細流水賬


“全都去把手洗的干干凈凈的!我們一會兒要吃好吃的!”


從第一句話開始,我就在調(diào)動他們的情緒。要是不讓他們?nèi)计饋?,這兩個小時的“數(shù)學課”可不好上。


如果可以給孩子們準備免沖洗手液更好,普通洗手液也可以,讓孩子們把手洗干凈,好抓糖吃。


接著讓孩子們手拉手圍成一個圓圈,用“手心手背” + “猜丁殼”確定一個站在圓心的孩子。


這個孩子會有機會獲得更多的糖果,所以選擇過程一定要嚴格、公平,不然一定會有孩子不滿意。


給外圈的孩子每人發(fā)一張寫有數(shù)字的卡片,讓孩子捂好,只有自己能看到數(shù)字。


給圓心的孩子一個裝有糖果的盒子,糖果數(shù)量等于外圈孩子的數(shù)量。



然后我開始宣布游戲規(guī)則:老師隨機給出一個卡片上的數(shù)字,圓心的孩子要用提問的方式,找出持有這個數(shù)字的卡片的孩子。她每問一個孩子,被問的孩子就要亮出卡片,同時得到一塊糖果;直到最終找到數(shù)字,此時盒子里剩下的糖果就都歸圓心的孩子所有。(所以理論上,圓心的孩子最多可以擁有 總數(shù)-1 個糖果,最少一個都沒有。


圓心的孩子會想方設(shè)法尋找蛛絲馬跡,察言觀色;圓圈里的孩子也會嘰嘰喳喳籌謀劃策,但還是會毫無頭緒,最后只能一個個的蒙(其實就是在實施線性搜索算法)。


找出數(shù)字后,一起做一個小小的總結(jié)。我們用了什么辦法找到老師給的數(shù)字的?一個個問的。有更好的方法嗎?好像沒有。


好,下面我們開始升級游戲。老師給圓心的孩子也發(fā)一張數(shù)字卡,讓她站回圓圈;所有的孩子按照卡片數(shù)字順序排列,重新站隊,圍成一個新的圓圈。


大家可以一邊吃糖,一邊在老師的帶領(lǐng)下共同思考:在重新排序的情況下,我們想最快找到一個數(shù)字,該怎么辦呢?


孩子們會有各種奇思妙想的方案,不過都有問題。這個時候老師不能揭曉答案,要讓他們暢所欲言,再用提問的方式,幫助他們發(fā)現(xiàn)問題,進一步思考。帶著思考,我們結(jié)束熱身活動,準備開始正式游戲——大海戰(zhàn)!



開始前,我必須先把今天的主題引出來,要讓孩子明白我們在干什么。


“有誰用過互聯(lián)網(wǎng)搜索?”


齊刷刷的舉手。


“老師我拿我爸手機用過百度!”


“老師我用谷歌不用百度!”


“老師我用過美團外賣!”


果然是移動互聯(lián)網(wǎng)原住民啊,我像他們這么大的時候連計算器都沒見過。


但是有長處也就有短處。沒有經(jīng)歷過數(shù)字時代的發(fā)展,他們就會缺少一些計算機科學的基本常識。


我曾遇到過孩子甚至以為,電腦里就真的有一個個圖標,一個個窗口。


這也是我們設(shè)計這節(jié)課的最主要目的:給孩子一些計算機科學的“基本素養(yǎng)”。


“那么大家想過沒有,互聯(lián)網(wǎng)上那~~么多的信息,搜索引擎是怎樣那么快的找到他們呢?”


小朋友們馬上張大了嘴巴,一腦袋問號……是哎,好像從來沒想過這個問題啊!是怎么找到的呢?


我轉(zhuǎn)身在白板上寫下兩個字:算法。


從這里開始,正式把算法的概念教授給孩子。


當我們在大量的數(shù)據(jù)中搜索的時候,我們要用到一些巧妙的的計算方法,來加速搜索的過程,這就是“搜索算法”。


“大家先想想剛才的小朋友是怎么找到數(shù)字的?”


“她蒙的!”


“她一個一個問的!”


“那么一個一個問是不是一種算法呢?”


是的,這是一種算法,一種最簡單的算法,我們叫它線性算法,或者順序算法。當數(shù)據(jù)量不大,排列無序,數(shù)據(jù)本身很簡單的時候,這也不失為一個有效的方法。比如剛才玩的熱身活動,搜索簡單的數(shù)字而已,一個個問其實是最快的。



“下面我們就來一起玩一個很緊張刺激的游戲,《大海戰(zhàn)》!看看我們能不能用算法來取勝!”


下發(fā)第一套海戰(zhàn)圖和簽字筆。孩子分成兩人一組,一人持圖1A,另一人持圖1B。



老師宣布游戲規(guī)則:游戲目標是用最少的炮彈擊中敵方的軍艦;游戲開始時,每人選擇一艘自己的軍艦,告訴對方軍艦上的數(shù)字(不是英文字母?。?;兩人輪流猜測軍艦所在的位置(英文字母),每猜測一次,計導彈發(fā)射一次;用最少數(shù)量的導彈擊中對方軍艦(猜到軍艦的位置)者獲勝。


有了剛才的熱身活動,孩子們馬上明白,這些無序的數(shù)字,沒有什么好想的,一個一個猜,看誰運氣好。



真有一炮命中的,興高采烈。也有二十幾次才猜到的,好在場面很熱烈很歡樂,小朋友也不會很沮喪。??



進行的差不多了,帶著孩子簡單小總結(jié)一下:


可能的最大分數(shù)和最小分數(shù)分別是多少?26 和 1。


這些數(shù)字排列有規(guī)律嗎?沒有,無序的。


大家用了什么方法?線性算法。


還有什么好方法嗎?孩子們說了一些。嗯!Good Try!但是基本還是在蒙。



接下來,海戰(zhàn)升級!給大家發(fā)放第二套海戰(zhàn)圖:2A 與 2B。



還是老師帶著孩子先觀察:看看這次的數(shù)字有什么不同?



孩子們看出來了:數(shù)字越來越大!


是的!這次海戰(zhàn),戰(zhàn)艦數(shù)字是按順序排列的!


“還記得剛才我們也遇到了這種情況嗎?當時大家都想了什么方法?現(xiàn)在就可以試試!”


規(guī)則與第一輪基本一致,只是在每次猜測時,需要告訴對方“大了”或“小了”。


如果沒有學過,幾乎不會有孩子能想到要取中間值不斷逼近。


但是他們也會有很多很好的嘗試,比如有的孩子會想:“我要取一個比較靠近最大值的位置,如果小了,那我就能排除掉很多可能性!但是萬一大了怎么辦呢?那我就取一個靠近最小值的值!可是……”他就陷入死循環(huán)了。其實他離真理只有一步之遙了。



看火候差不多了,老師可以喊停了。聽孩子們說一說自己的想法,經(jīng)過引導后,可以在黑板上寫下第二個算法的名字了:二分法。


二分法的神奇之處在于,即使數(shù)據(jù)量翻了一倍,我們也只要多加一次查詢。當數(shù)據(jù)量不斷翻倍的時候,二分法的魔力就凸顯的更明顯。這里,還可以給孩子講一講“陰險的老爺爺讓不懂數(shù)學的國王往國際象棋盤里放米?!钡墓适?,孩子們會驚訝于指數(shù)增長的神奇力量,反過來想一想,就明白了二分法的強大威力。



再回到我們的游戲,如果用二分法,最多幾次就能打到敵艦?孩子們一算,5次!好,趁熱打鐵,再做幾個小練習:老師心里想一個100以內(nèi)的數(shù),讓大家用二分法來搜索;再來個1000以內(nèi)的數(shù),再練一次。到此,孩子應(yīng)該可以熟練使用二分法了。



游戲再次升級!


第三次大海戰(zhàn)馬上開始!給孩子們發(fā)第三套海戰(zhàn)圖:3A 和 3B。



和孩子一起觀察,這次的數(shù)字又有什么不同?



其實孩子觀察不出來,還是宣布好了。?? 


每艘船上幾個數(shù)字之和的尾數(shù)與船所在的列數(shù)是相同的!


其他的游戲規(guī)則還是和之前一樣。


“哇!那這次太簡單啦!”孩子們能這么說,說明他們的思路非常清楚。


開始玩吧!



這次進行的非???,很快都得出了結(jié)果。


大家用了幾次擊中了敵艦?最少一次,最多四次。為什么是四次?因為一列里最多只有4艘船。


像我們這樣,把搜索的數(shù)據(jù)按照一定方法算出一個關(guān)鍵字,很快定位到一個很小的范圍,再在小范圍內(nèi)去查找的方法,叫做——我轉(zhuǎn)身寫下第三個算法的名字——散列法。


其實散列法我們大家可能都用到過!有小朋友翻看過微信里的聯(lián)系人嗎?我們按住聯(lián)系人右側(cè)的小字母,就可以快速定位到姓氏拼音首字母的位置,再在這個首字母里去尋找,就非??炝恕_@其實就是一種散列法的運用。



那么線性算法、二分法和散列法,哪一種最快呢?在實際使用中,散列法一般是最快的一種方法。但是如果分組方法不夠好,在同一列里有太多的數(shù)據(jù),散列法就很低效了。所以我們面對不同的數(shù)據(jù),需要具體分析,使用合適的搜索方法!


好了,感覺孩子們燒腦燒的差不多了。最后布置一個作業(yè):回家把這三種搜索方法給爸爸媽媽們說明白了。只要能說明白,我們的教學目標就達成了。


下課!



關(guān)于《不插電的編程課》

本課程是清華大學終身學習實驗室《不插電的編程課》系列課程中的一節(jié)。

此系列課程面向剛剛步入小學的一年級學生,旨在用最簡單的工具(擺脫電腦等復(fù)雜、昂貴的教具的限制),游戲化的學習方法,教孩子學習計算機科學知識。

關(guān)于Project X

Project X是TULLL是一門實驗性質(zhì)的課程,面向6到7歲(小學一、二年級)的小朋友。Project X 的教學目標是盡可能的開發(fā)孩子的創(chuàng)造力。

Project X可以被理解為“編程實驗班”,但我們使用的主要學習工具遠遠不限于是編程。電腦編程僅僅是提升創(chuàng)造力的落腳點和工具之一。

目前Project X第一期已經(jīng)開課,未來可能會有其他課程,請您關(guān)注TULLL的公眾號。

特別鳴謝



本課設(shè)計過程中,得到了 TULLL研究主管、清華大學心理學系助理教授伍珍老師的大力幫助。

她在建立兒童自信心、成長型思維,培養(yǎng)兒童創(chuàng)造力方面,給出了諸多建議。

在此特別鳴謝!


    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多