張景祥 王永燕 潘玉奇
文章編號:1672-5913(2015)03-0080-04
中圖分類號:G642
摘要:以數(shù)據(jù)結(jié)構(gòu)這門基礎課為例,通過“五個重新”,再造數(shù)據(jù)結(jié)構(gòu)的課程細胞,提出比較教學、螺旋教學、逆向教學、反芻教學、共時教學等教學范式,解決教學的兩難困境。
關鍵詞:教學研究:數(shù)據(jù)結(jié)構(gòu);本征教學;共時教學法
0 引 言
課程之于教育,猶如細胞之于生命。生命既需要營養(yǎng),也在于運動。理論正如營養(yǎng),實用恰似運動。理論不足,則弱不禁風,缺乏底氣;實踐過少,則臃腫無力,懶于行動。受計算機界知識更新太快,以及高校教學課時較少的限制,許多高校在重理論還是重實用上,普遍存在著兩難選擇。
數(shù)據(jù)結(jié)構(gòu)屬于計算機專業(yè)的基礎課,理論性較強,體系完善、經(jīng)典,教材教法比較成熟。這樣的課程給學生的印象往往與實際應用相去甚遠。若固守在象牙塔里,既有辱專業(yè)應有的使命,也喪失了理論的生命活力;但要想在大學低年級開展基礎理論的應用,卻也困難重重。對數(shù)據(jù)結(jié)構(gòu)這門專業(yè)基礎課的課程教學進行再造,增加教育細胞的活力,可有效地解決這一兩難問題。
1 析構(gòu)個體差異
生命所以精彩,在于它的多樣性。教育要想充滿生命力,首要的是認識個體差異、尊重個體差異、強化個體差異,而不是抹殺個性,把人才當作流水線上的產(chǎn)品,力求統(tǒng)一、達標、規(guī)范。我們不反對建立標準,只是不應建立唯一的人才標準,標準應該是多樣化的,所謂“不拘一格降人才”。對受教育者個體差異的認識和多方位人才培養(yǎng)的思路,使課程再造從宏觀和基礎上具備了實施的可能性。
1.1 大學科招生與小方向培養(yǎng)
計算機專業(yè)的新生入學接受統(tǒng)一的基本素質(zhì)培養(yǎng),在這期間開設專業(yè)導論,并為每一位學生配備專業(yè)導師,指導其個性發(fā)展,尋求適合自己的發(fā)展道路。在大一將結(jié)束時,由學生結(jié)合自身條件與意愿,人性化選擇計算機科學、卓越工程師、信息技術等方向。
1.2 基礎研究與就業(yè)技能
從專業(yè)設置和教學大綱編寫上,保證數(shù)據(jù)結(jié)構(gòu)課程在開設時,有差異化地進行教學側(cè)重。計算機科學可以更偏重數(shù)據(jù)結(jié)構(gòu)中的理論問題探討,卓越工程師則加大代碼實現(xiàn)的力度與維度,信息技術則少而精地學習一些數(shù)據(jù)結(jié)構(gòu)的基本內(nèi)容,軟件外包方向則按照企業(yè)需求實施諸如雙語教學在內(nèi)的培養(yǎng)方案。
這賦予了教師在講授數(shù)據(jù)結(jié)構(gòu)這門課程時更多的靈活性和針對性,教師不再為偏基礎理論還是偏實踐應用而左右為難。面對熱愛追求科學理論基礎的同學,有時候教師也不得不與學生一起思考一些理論性較強的問題,例如ACM等競賽問題;而面對那些卓越的編程熱學子,教師也樂得與他們一起動手完成一項項有實用價值的項目,如學校的一些教學管理系統(tǒng)和企業(yè)提供的手機小APP等。
2 再造課程細胞
再造課程細胞,就是讓學生在課業(yè)上能夠“形核與生長”,既獲得生長動力,又有空間生長。動力來源于營養(yǎng)的汲取,教學要保證學生能邁出第一步,實例教學就是源動力,是形核;同時為學生提供練習的平臺,并在已經(jīng)形成的初始案例上繼續(xù)擴展與生長。這要求教師對課堂教學做一番理論的新認識和細節(jié)上的重設計。
2.1 重新認識理論的本征
中國學生自小學始,已習慣于統(tǒng)一而經(jīng)典的課本,雖有其教育學上的優(yōu)勢,卻失之于僵化了學生追求理論本征的能力。例如學生會普遍認為“兩條平行線不會相交”這樣的所謂正確答案,卻忽略了歐式幾何的前提,在投影幾何和球面幾何里,平行線相交是很正常的。對于自然數(shù)的描述,西方不乏采用數(shù)論和集合的思想來描述的案例。變“唯教材是尊”為“追求科學真理”,不再拘泥于形式上的“經(jīng)典”,更看重基本原理的內(nèi)在科學思想與方法,這樣才能變尋找標準答案式的教育為科學與創(chuàng)新的教育。正因為我們義務教育階段的缺失,才更加需要大學階段的教育提倡多維思考。
認識“工程真理”的本征,對于計算機科學與工程專業(yè)的學生來說尤其重要科學真理與工程真理的結(jié)合,是計算機這門學科的重要特點之一。譬如,圓周率眾所周知是一個無理數(shù),或曰無限不循環(huán)小數(shù),但在計算機里它至多也就用精度很高的雙精度小數(shù)表示,常常也就取“3.14”即可。工程其實就是在特定應用條件下,對絕對真理實施近似的一種妥協(xié)?;谶@種認識,理論與應用的對立便毫無意義,唯有它們之間的結(jié)合與相互接近,才是符合實際的道路。
在這一過程中,矯正單一教材,而列舉更多參考教材的做法,以及指導學生多收看一些國際知名大學的開放課程,采取這種“比較教學法”,是解決追求科學本征動力不強、創(chuàng)新力不足的重要舉措。
2.2 重新定位課堂教學的地位
課堂教學在國內(nèi)高校教育中依然占據(jù)著過大的比重。相應地,課堂教學形式上則多半是沿襲著推導式的細講慢授。其實課堂教學,只是教學中三個同等重要過程“學、教、做”中的一個環(huán)節(jié),時間上是課前、課中和課后,并不應是課堂教學獨大的狀況。
課前自學是以學生為主體,是對教學材料第一印象的“占有”,初識滋味。課堂講授是以教師為主導,是對教學材料的“凝練和升華”,充滿啟智和牽引。課后應用則以團隊為整體,是知識在應用中的一種“結(jié)晶”,贈予參與者以成就感。時間上是從課前到課中到課后,知識上是從直觀感覺到客觀理論到動態(tài)應用能力,可謂之“螺旋教學法”。
2.3 重新評價偽代碼的教學意義
過去的數(shù)據(jù)結(jié)構(gòu)教學,往往是偽代碼教學,優(yōu)點是學生注意力容易集中在對算法的理解上,便于教師課堂上對數(shù)據(jù)結(jié)構(gòu)的理論教授。通過與學生交流,我們發(fā)現(xiàn),低年級學生在掌握有實踐要求的理論課時,普遍存在動手能力不足的問題。學生反映,理論基本上可以理解,但具體到做作業(yè)的時候,就不知道如何下手了。近年來,偽代碼被普遍摒棄,究其原因是,初學者很難完成從偽代碼到實際高級語言的轉(zhuǎn)換。正像有學者認為,“數(shù)據(jù)結(jié)構(gòu)太難學,實際上是指動手編寫程序難”,目前數(shù)據(jù)結(jié)構(gòu)教材中,通行做法是采用實代碼示例。這雖然解決了上述困難,也有利于學生在掌握代碼的同時,了解面向?qū)ο蟪绦蛟O計中的一些語言常規(guī)做法。但這卻帶來了另一個問題,就是面對長篇累牘的代碼,學生感到跟不上。特別是隨著多媒體教學的普及,課堂上學生看到的往往是代碼的快速刷屏。
基于教學中的細致觀察,我們既沒有追隨眾潮,徹底否定偽代碼教學,也沒有退回到單純的偽代碼教學。我們在充分分析了偽代碼與實代碼教學各自的優(yōu)缺點后,提出了與過去由偽代碼到實代碼教學過程相反的一種新型的教學法,即“逆向教學法”。
2.4 重新規(guī)劃課程教學的形式
隨著課程重新定位,課程的教學形式也會發(fā)生相應變化。除課前主要由學生自主完成預習先修外,有教師參與的課程教學必然會被切割成兩大部分:教師主講的課堂教學和教師(一般由助教實施)指導下的課后練習。隨著學校教學條件的大幅改善,課后應用實踐活動已納入了規(guī)范化的課程教學形式,形成了“一課兩上”的教學形式:即主講教師針對理論算法的授課,以及多位教師針對代碼實現(xiàn)的上機指導。特別是第二個階段中形成了所謂的“反芻教學法”,學生通過調(diào)試實代碼程序,更好地理解前面接觸到的算法本質(zhì),經(jīng)過再加工抽象成偽代碼,以課件的形式完成書面作業(yè),并做授課式陳述報告。
2.5 重新整合教學資源的配置
為了更好地打破基礎與應用的兩難困境,我們提出了“共時教學法”。共時理論(synchronicitytheory)最初由瑞士心理學家榮格(Carl Gustav Jung)提出,后被廣義地指征不同時期同一事物的再現(xiàn)。我們提出的共時教學法,是指基礎理論與應用實踐在不同課程教學中的共現(xiàn)。具體做法是,從教師承擔的課程上,要求承擔基礎課的教師必須承擔至少一門應用類的課程。從教師本源上,消除兩者的對立,提高互溶性,讓教師在上基礎課時有應用實例可舉,在上應用技術課時能熟練地對基礎理論進行重回顧,再認識。
3 實例分析
3.1 比較教學法
以數(shù)據(jù)結(jié)構(gòu)中的Huffman編碼為例,二叉樹左右結(jié)點分別標以“0”和“1”是國內(nèi)教材的唯一做法,但從Huffman編碼科學本征上說,其實你任意規(guī)定一下0和1的位置,只要編碼和解碼一致就可以,不必非要和教材上完全一樣。
再如國內(nèi)教材大多只談“八皇后問題”,學生的思維也囿于同一模式,而國外教材卻常常提“N皇后問題”,讓學生的思想飛起來。
在數(shù)據(jù)結(jié)構(gòu)課程中,我們具體實施的比較教學法的典型實例是:同效多碼實例教學,即在介紹同一個數(shù)據(jù)結(jié)構(gòu)ADT算法時,將不同的編程實現(xiàn)語言進行比較,相應地則涉及C++、C#和Java等多種數(shù)據(jù)結(jié)構(gòu)教材。當然由于課時所限,一般以較簡單的線性表為實例進行解析。
3.2 螺旋教學法
以單一線性表ADT(抽象數(shù)據(jù)類型)為例,要求學生事先瀏覽線性表概念、基本實現(xiàn)方法,以及鏈表的主要類型,通過主講教師以面向?qū)ο蟮母拍顚@些進行本征分析,先從應用層面上理解這些對象的性能,然后再在計算機專業(yè)層面上去理解程序設計實現(xiàn)的方法,形成一類ADT的螺旋教學。
而以整個數(shù)據(jù)結(jié)構(gòu)課程介紹的ADTs為例,則由每個具體的ADT之間的共性去理解,所有不同的ADT其最后實現(xiàn),無外乎順序結(jié)構(gòu)和鏈式結(jié)構(gòu)兩種,來理解數(shù)據(jù)結(jié)構(gòu)這門課的本征,形成一門基礎課整體的螺旋教學。
3.3 逆向教學法
具體做法是:先講解理論,不涉及代碼,然后給出計算機可以運行的高級語言代碼,讓學生提煉出最關鍵的算法,用偽代碼的方式表示出來。這樣既克服了實代碼過于細節(jié)化,枝葉與主干不清,又解決了學生畏于上機調(diào)試,動手能力不足的問題。
3.4 反芻教學法
與傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程強調(diào)學生自主實現(xiàn)執(zhí)行代碼上不同,我們更加重視學生對于所學知識的第二次消化吸收上。隨著網(wǎng)絡技術的普及,數(shù)據(jù)結(jié)構(gòu)作為一門專業(yè)基礎課,其實現(xiàn)代碼幾乎成廠隨處可下載的內(nèi)容。與其杜絕學生抄襲網(wǎng)上代碼,倒不如引導學生從下載到的代碼更深入地理解。要求學生對搜集到的程序代碼進行抽象,完成演示文稿,并劃分為多個討論組,讓絕大多數(shù)學生有機會做主題報告。
3.5 共時教學法
濟南大學信息科學與工程學院軟件外包專業(yè)根據(jù)合作辦學企業(yè)的需求,將就業(yè)力‘向分為“.Net方向”和“Java方向”。在教材選擇上,為更好地實施共時教學法,盡量保證基礎課與應用技術課程有一定的連貫性。數(shù)據(jù)結(jié)構(gòu)課程也分為.Net方向教材和Java方向教材[6-7],后續(xù)應用技術課程(如:Web程序設計、而向?qū)ο蟪绦蛟O計)中也采用相同的描述語占,并盡力安排同一位教師先后主講數(shù)據(jù)結(jié)構(gòu)和Web程序設計,或者安排課題方向組的教師跨年級聽課與輔導,努力保證基礎理論與實用技術之間的教學資源重疊和相互支撐。
4 結(jié)語
大學教育雖然獨立于職業(yè)培訓,強調(diào)對于“人”的教育,但越來越多的國家,特別是我國,更強調(diào)對服務社會技能的培養(yǎng)。在工程類學科的大學教育中,追求絕對自由的科學探索、純學術的研究是不切合實際的。理論聯(lián)系實際正足指導專業(yè)基礎課走出理論與實用兩難困境的指導思想,而相應進行的課程再造是實現(xiàn)這一結(jié)合的有效途徑。我們從實踐中歸納的5種教學方法證明是有效的、易于操作的。