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