◎鄭晨
學(xué)習(xí)了國培計劃,了解到拋錨式教學(xué)法。希望應(yīng)用于《數(shù)據(jù)結(jié)構(gòu)》這一章。數(shù)據(jù)結(jié)構(gòu)主要介紹現(xiàn)實(shí)世界的一類信息是怎么儲存在計算機(jī)中的。本節(jié)選取的是并查集的知識,直接引入知識,學(xué)生會覺得枯燥難以理解。如果能夠選擇合適的具體應(yīng)用的例子結(jié)合,引入學(xué)生思考,要求學(xué)生解決面臨的真實(shí)問題,并且解決問題的過程可以直接反映學(xué)習(xí)的效果。學(xué)生通過自身相關(guān)的經(jīng)驗,學(xué)習(xí)到并查集的全面思想。
拋錨式教學(xué)法,顧名思義是拋出一個與知識相應(yīng)的情景,學(xué)生通過融入情境,對情境進(jìn)行分析,得到相應(yīng)的知識的一個內(nèi)化的過程。在內(nèi)化知識的過程中,可以聯(lián)想這個情景到其它相關(guān)情景事物。達(dá)到知識相應(yīng)的遷移。這種方法非常符合構(gòu)建主義思想。
(1)教學(xué)引入:教師提出情景:“在你周圍的朋友也許你并不知道現(xiàn)在站在你身邊的某個朋友是你的親戚。他可能是你的外公的外祖父的表哥的女婿的小姨子的外孫女的表姐的孫子。兩個人是否是親戚如何判斷呢?要是你能得到完整的家譜,也許通過很長的時間是行的通的。如果家族年份過久,實(shí)在太龐大,家族關(guān)系輩分比較復(fù)雜,這就很難行的通了。這怎么辦呢,我想計算機(jī)就是能幫助我們完成。比如你得到一些家族關(guān)系的信息,如張燕是李華的姨媽,李華是王曉是媽媽。你可以知道王曉和李華也是親戚關(guān)系。你能否給出一個程序,以很快的速度能給出家某某和某某某是否存在家族關(guān)系的回答。”
(2)教學(xué)過程
1)什么是并查集:并查集(union-find set)是一種用于分離集合操作的抽象數(shù)據(jù)類型。它所處理的是“集合"之同的關(guān)系,即動態(tài)地維護(hù)和處理集合元素之間復(fù)雜的關(guān)系,當(dāng)給出兩個元素的一個無集合?!安ⅰ?、“査”和“集”三字由此而來。在這種數(shù)據(jù)類型中,n個不同的元素被分為若干組,每組是一個集合,這種集合叫做分離集合(disjoint se)。并查集支持查找一個元素所屬的集合。
2)并查集支持哪些操作:
MAKE(x):建立一個新的集合,其僅有的成員(同時就是代表)是x。由于各集合是分離的,要求x沒有在其他集合中出現(xiàn)過。
UNIONN(x,y):將包含x和y的動態(tài)集合(例如Sx和Sy)合并為一個新的集合,假定在此操作前這兩個集合是分離的。結(jié)果的集合代表是Sx Sy的某個成員。一般來說,在不同的實(shí)現(xiàn)中通常都以Sx或者Sy的代表作為新集合的代表。此后,由新的集合S代替了原來的Sx和Sy。
FIND(x):返回一個指向包含x的集合的代表。
判斷x,y是否在一個集合
3)具體步驟:
①、元素合并;
②、對輸入的數(shù)據(jù)進(jìn)行判斷:是否在同一個集合里;
4)代碼實(shí)現(xiàn):
優(yōu)化代碼:查找祖先過程中路徑壓縮
(3)課后總結(jié):并查集并不只是使用于親戚關(guān)系中,各種組織機(jī)構(gòu)及生產(chǎn)活動場景、科研場景中都可能使用到,希望同學(xué)們能夠?qū)⒍嗨伎?,學(xué)習(xí)了并查集能在生活學(xué)習(xí)其它情況下中有所啟發(fā)。
(4)教學(xué)效果。課堂效果好,學(xué)生興趣高,多數(shù)學(xué)生課后代碼能比較快的完成,少數(shù)學(xué)生經(jīng)過課后思考也能完成相應(yīng)的代碼。課后學(xué)生反映“能夠感受到現(xiàn)在大數(shù)據(jù)是怎么實(shí)現(xiàn)的了,數(shù)據(jù)結(jié)構(gòu)、算法的世界真是美麗”。教學(xué)反映相對比較正面積極。
拋錨式教學(xué)法就是在老師的指導(dǎo)下,將具體的問題交由學(xué)生自己分析。引導(dǎo)學(xué)生身臨其境,真正的存在于知識之中。因此“拋錨式教學(xué)法”是一種典型的以學(xué)生體驗為中心的教學(xué)方式,充分地發(fā)揮學(xué)生的主體性。但是關(guān)鍵點(diǎn)就是需要引導(dǎo)學(xué)生進(jìn)行知識的遷移,使其能將知識運(yùn)用于其它環(huán)境之中。