時間:2022-08-01 09:10:04
序論:在您撰寫數據結構與算法時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
關鍵詞:算法與數據結構;教學質量;教學探索;教學方法
作者簡介:李永(1978-),男,安徽宿州人,鹽城師范學院信息科學與技術學院,講師。(江蘇 鹽城 224002)
中圖分類號:G642.0?????文獻標識碼:A?????文章編號:1007-0079(2012)31-0057-02
“算法與數據結構”主要研究數據在計算機中的表示方法、存儲方法以及其上的操作。[1]在美國IEEE/ACM課程體系和我國教育部學科規范中,[2,3]“算法與數據結構”被列為核心課程之一。它是操作系統、數據庫、軟件工程和人工智能等課程的基礎。算法與數據結構蘊含的思想對學生在軟件設計方面有很強的導向性,它的教學效果直接影響學生的數據抽象和程序設計能力的培養。學習該課程,一方面,使學生學會分析數據對象的特征,掌握數據組織的方法和在計算機中的表示方法,為數據選擇合適的邏輯結構、存儲結構和算法;另一方面,培養學生良好的程序設計風格,進行復雜程序設計的訓練。[1]
為了在課時約束、學生基礎、課程難度、教學目標等約束下最大化教學質量,使學生最大限度地得到提升和發展,本文從分析“算法與數據結構”課程存在的問題出發,在教學內容、教學方法、實驗教學等方面進行了一些探索和實踐。
一、“算法與數據結構”教學中存在的問題
1.課程本身難度大
“算法與數據結構”是抽象與具體的統一,理解與掌握它需要跨越橫亙在抽象與具體之間的鴻溝。學習該課程有兩個難點:一是從算法與數據結構到程序實現的跨越;二是從實際應用到數據結構抽象的跨越,即如何利用算法與數據結構解決實際問題。[4]“算法與數據結構”的內容抽象、繁多、邏輯性強,難于理解掌握。學生學完后不知道學了什么,當需要解決實際問題時感到無從下手。“算法與數據結構”綜合性、技巧性強,各種算法中凝結了大量杰出計算機科學家的智慧,在有限的教學時間內部分學生因無法領悟其中的思想與精髓而產生厭學情緒。
2.前導課程基礎不扎實
“C語言程序設計”、“高等數學”、“離散數學”等是數據結構的前導課程,其中“C語言”與“數據結構”課程的聯系最為密切?!癈語言”一般開設在大一第一學期,是學生最先接觸的程序設計語言。由于內容多、難度較大、大班教學、課時有限等原因,教學時間大部分花在基本概念及簡單程序的編寫上,對結構體、指針、參數傳遞等難度較大的知識點講解不深入,為“算法與數據結構”的學習埋下了隱患。
3.教學方法有待改進
“算法與數據結構”的教學方法主要為板書結合PPT課件,教學方式采用“教師講—學生聽”的灌輸式授課模式,與學生互動少,課堂氣氛沉悶。教學方法中以教師為中心按照教學大綱教學,存在照本宣科、就事論事、內容堆砌、缺乏新意等缺點。由于沒有考慮學生的接受能力、思維能力以及編寫代碼的能力,學生只是不加思考地被動的接受知識,限制了學生的積極性與主動性的發揮。
4.實驗教學中存在的問題
目前課程實驗中存在的問題主要有下面三個方面。首先,大多高?!八惴ㄅc數據結構”實驗的教學方式仍是以教師為中心,以灌輸、模擬、驗證為主;教師按教材單元布置實驗任務并做適當的引導和提示,然后學生動手實踐。沒有考慮實驗的實用性以及是否適合學生,不能調動學生的學習熱情。其次,學生的程序設計能力普遍較弱,面對問題時難以有清晰的算法思想,無法將算法思想轉變為正確的程序代碼,上機調試和運行程序時面對眾多的錯誤提示無法正確解決,實驗課教學效果大打折扣。再次,由于實驗課時有限,且實驗內容具有相互依賴和遞進的特點,部分學生又不能充分利用課余時間,造成問題堆積。
二、“算法與數據結構”的教學探索
1.合理組織教學內容
貫穿“算法與數據結構”課程的主線是邏輯結構、存儲結構及操作,即線性表、樹、圖三種邏輯結構;順序和鏈式兩種存儲結構;插入、刪除、查找、遍歷等操作。這些內容不是孤立的,在教學過程中將它們聯系起來形成一條主線,由線性到非線性,由簡單到復雜,方便學生理解和掌握。在教授課本內容時,根據教學大綱的要求梳理并提煉出各章節的知識框架,根據學生情況和教學目的合理劃分課時,控制課程節奏。課堂上主要針對程度一般的多數學生從數據結構的邏輯結構、存儲結構和數據的運算三個方面去組織教學內容,做到重點突出、內容簡潔。對于程度差的學生進行個別輔導,通過補習和細化教學內容幫助其跟上教學進度。對于程度較好的學生,通過指定課外讀物、布置思考題等,讓其能力得到充分發揮。
2.上好第一節課,激發學習熱情
在第一節課不要急于給學生灌輸基礎的理論知識,而要引導學生明白為何學,講解數據結構的研究對象是什么,學習數據結構有什么用,采用什么樣的方法來學習該課程。這些問題的引入不能從抽象的概念入手,而要從貼近生活的一些例子從案例入手,讓學生在深入課程學習前體會到課程的重要性。例如,學生成績管理系統中如何組織學號、姓名、成績等,才能快速實現查找、插入、刪除等操作;計算機與人對弈時如何應對變化的情況以及給出周全的對策,實現靈活對弈等。也可給學生展示一些上屆學生的優秀作品,讓學生先認識到數據結構在實際編程中的應用,并指出在學期結束時學生也能設計出類似這樣的系統。使學生認識到該課程實際應用的價值,對課程充滿探索的欲望,積極性得到調動,從而有一個良好的開端。
1 理論教學
1.1 明確教學目標
《數據結構與算法》這門課程的所有算法思想最后都會落腳到程序上,都需要用高級語言表現出來,老師把握不好目標,很容易把數據結構當成C語言的“延伸”和“升華”,課堂上帶領學生一個一個讀算法程序,而沒有做到讓學生去領會算法的思想。所以老師一定要明確這門課的教學目標是編程思想而不是程序本身,先有好的構思和想法,輔助語言加以實現,每節課都要以“思想第一,實現第二” 為教學綱領,教學生怎么從實際問題中抽象出模型,提煉出思路,然后用程序來實現這個思路,最后真正的解決問題,就像古人講的“胸有成竹”,在畫竹之前,對于竹子的高度,樹干、樹枝和葉子的結構,心里要有個規劃,做到心中有數,這樣畫出來的竹子才能形象。編程也一樣,先從實際問題重剝離出系統架構,構造出合適的模型,選擇高效率的算法,再使用高級語言把它實現,最后再進一步處理趨向完善,使之具備客戶所需要的功能。學生要從《數據結構與算法》這門課程中掌握的就是如何從實際問題中抽象出模型、建造起架構的過程,老師只有時刻帶領學生從這個角度來著手解決問題,才能真正為該課程的教學把握好方向。
1.2 合理運用教學方法
隨著現代教學水平的提高,越來越多的多媒體課件和網絡資源被運用于教學當中,人們也對啟發式、問題探究式、課堂討論式等這些新型的教學方法趨之若鶩,或多或少的把傳統的教學方法冠以“落伍”和“填鴨式”等貶義色彩。但我個人認為,傳統的黑板加粉筆的教學方法,在《數據結構與算法》這門課程當中仍然有著舉足輕重的作用,因為PPT課件和動畫都是老師預先按照自己的思路經過思考和摸索,多次嘗試和修改而整理出來的,對于經驗不豐富,未曾接觸過相關知識的學生來說,直接跳出來的課件和動畫沒有給夠他們思考和整理思路的時間,冰冷的課件和學生沒有眼神、肢體語言等情感交流,無法從算法思想的角度去引領學生一步一步的剝離表象,抽離出問題的本質。所以,片面的強調新型的教學方法是不科學的,傳統的黑板教學也不可忽視,在傳統的基礎之上,一些粉筆和語言都不太容易展示的算法執行過程,可以結合現代化多媒體教學手段來表現,形象的動畫能讓抽象的內容變得更加直觀更易理解,學生也更容易被帶入其中,從而使教學過程變得更加生動形象。
所以,合理的教學方法應該是以板書為主,課件為輔,配合老師與學生的情感交流,這樣才能取得好的教學效果。
1.3 實例化教學設計
大學的學習和高中不一樣,不再簡單的以分數定乾坤,學生沒有了壓力也就沒了動力,而且大學生都各有鋒芒,有自己獨立的思想,如何調動學生對該課程的興趣,使被動學習變為主動求知就顯得尤為重要,那如何激發學生的學習興趣呢?答案是要讓學生感覺到數據結構解決的問題其實都來源于我們的實際生活,是切切實實存在于我們周圍的,比如講到順序表和鏈表,可以舉例我們早期去銀行辦事需要排隊,中間插隊一個人后面的人都要后移(順序表插入),中間有一個人離開后面的人都要前移(順序表刪除),這就是順序表,而現在我們在銀行取個號就可以找個舒服的位置坐下,或者離開去辦其它的事情,等叫到號再到窗口,這就是鏈表,存儲的位置不連續,但是大家的邏輯關系仍然存在;比如講到圖的最短路徑問題時可以設計一個旅游場景,需要去多個城市旅游,但又希望旅途最短花費最少,讓學生去設計路線;比如講到約瑟夫環的時候可以結合猶太歷史故事讓學生身臨其境;再比如講到漢諾塔的時候可以讓學生先試著玩一玩漢諾塔游戲,然后再考慮怎么用算法來實現。
“興趣是最好的老師”,真正把學生的興趣調動起來,使學生進入到一個積極思考和探索的活躍狀態,教學就能起到事半功倍的效果。
2 實驗教學
鑒于該課程的課時壓縮,實驗課的課時也隨之減少了,學生能動手實踐的時間減少使教學效果大打折扣。而該課程的學了老師在理論課上的引導以外,學生自己動手去“練”才是真正去領悟和內化算法思想的法寶,“練”必不可少,所以在這有限的實驗課時間里,如何讓學生的“練”落到實處也需要老師投入很大的精力來設計和管控。
2.1 合理安排實驗項目
根據教學大綱,結合學生的實際掌握程度來設計實驗項目,主要分為驗證性、可選性和綜合設計性三大類,驗證性實驗的目的是重溫基礎知識,強調編程規范性和完整的算法思想, 主要針對一些常用的算法實現, 如順序表、鏈表的創建、要求學生在上機實驗課堂內完成??蛇x性實驗稍有難度,需要融會貫通和創新能力,針對基礎較好的學生,如果驗證性實驗很快完成,就可以進行可選性實驗項目的操作。綜合設計類實驗一般涉及多個知識點, 要求學生自己抽象出模型進行設計, 主要訓練學生綜合運用所學知識的能力、團隊協作能力和自主創新能力。題目一般是要求解決實際生活中遇到的問題,可以對學生按照基礎的強弱搭配成3-4人一個小組,完成后通過現場演示和答辯來評價效果,這類實驗完成后學生在體會到成功喜悅的同時,也能領悟到數據結構及算法的價值,激發他們的求知欲望和探索精神,使其更加積極主動的學習,而這一部分人的主動也能帶動其他的同學跟進步伐,形成一個好的學習氛圍。
2.2 正確管理實驗過程
實驗課堂上,針對不同類型的實驗項目,采用相應的教學方式。對于驗證性實驗,老師可以在實驗開始前對實驗的流程、操作要點及最終的運行效果進行講解,不至于讓學生盲目摸索,浪費時間。選擇性實驗需要針對部分基礎較好的學生進行適當的啟發式引導,對關鍵算法和思路予以提點。對綜合設計性實驗,教師可以采用項目式的教學方法,帶領學生理清需求、提取模型、設計步驟、確定計劃,并對小組成員予以分工,使得實驗能夠順利的進行下去。
實驗過程中也要設定一定的獎勵機制,不能只看最后結果,對于積極主動,喜歡鉆研的學生要及時獎勵,給予一定的加分,在綜合設計類實驗中擔任重要角色的學生也要識別出來,適當提高實驗過程分數。
基礎較差的學生光靠課堂上的練習遠遠不夠,需要整合機房資源,給學生提供課外實踐的機會,鼓勵他們利用業余時間補齊差距。
關鍵詞:算法;數據結構;相關性
中圖分類號:TP311 文獻標識碼:A
算法與數據結構包含了選取的算法、存儲必備的方法、擬定的操作規程。解析數據結構,這類思路有著凸顯的導向,它關系到培育的抽象認知。構建精準的某一程序不可缺失算法、搭配的數據結構。辨識了二者的多重關聯,設定最適宜的邏輯框架以此來便于擬定程序。把控各類的算法,側重去養成合適的設計風格,適應日漸復雜的新算法。
一、選取線性鏈表的實例
計算機科目包含了選取的算法、相關數據結構。從實質上看,算法及特有的數據結構并非沒有關聯,它們是聯系的。變更了分開的思路,側重了相關性。依循了算法的主線,多樣的數據結構都被融匯于設定的這一算法。解析了相關性,借助于預設的程序語言來區分二者。經過探究可得:數據結構及算法擁有內在的深層關聯,二者不可割裂。把控根本的某一數據結構、辨析存儲結構,還要關聯著可控的算法。這樣做揭示了深層的二者關聯,符合了變化的科目需要。
二、算法編程的語言
設計算法含有:初期擬定的模式、面向對象狀態下的編程、泛型的編程。融匯這樣的要素,構建可得適宜的算法。設定某個二元組,用它來代表數據結構。在二元組內整合了多重的數據元素,這樣的基礎上又創設了集合關系。經由抽象可得細化的數據類別。這類算法添加了靈活優勢,且很易被調用。
相關性涵蓋著泛型編程特有的途徑,它被設定成典型。泛型編程抽象可得更完備的、精細的新集合,借助于它來代表算法。整合了多態模板,可被重復去調用,獲取了更高水準的算法組件。經由自主的定義,明晰了數組內的一切元素,集合可得新類別。數據類型含有:堆棧及常見的表、二叉樹、隊列及圖形等。表述這樣的抽象數據,依循了面向對象的表述途徑,支持表述語言。提煉獲取了算法模式,遇有近似的數據結構都可依照凝練的這一算法予以運算。先要預設模塊,擬定細化的類別及關聯的行為。
三、算法的演示流程
線性鏈表的算法依循了面向對象路徑下的解析,選取單鏈表整合了細化的較多數據項。歸結了線性表、樹形圖及隊列等。依循繼承的演算即可獲取雙向架構的這類鏈表,演算的流程為:
四、探析實現的路徑
構建神經網絡依照的根本思路為:最小二乘算法。要調整擬定的權值,借助于梯度搜索來平衡輸入及輸出的誤差。從現狀看,BP網絡是最為常見的一類神經網絡,它整合了輸入及輸出,構建了雙重的映射。數據結構及算法凸顯了實踐的特性,側重培育本源的抽象思路,增添了實踐類的新技能。創設新穎的算法,要考量真實的關聯。實現的路徑為:解析某一疑難、設計可用的算法、設定編程。
算法及創設的數據結構可延展至自動檢索館內的書目、調配交通燈、求解某一迷宮。這類算法都不可脫離生活,增添了真實性。針對于線性表,要驗證它關聯的鏈式流程。模擬退耕還林,解析最適宜的需求。這樣的基礎上,創設了彼此關聯的精準數據結構。經由后續的細化設計,編碼而后再次去調試。例如:在選修課程時,要擬定明晰的科目名稱、依循的次序等。設定拓撲次序來指引后續的選修流程,可創設AOV特有的算法網絡,布設頂點次序用作表述可篩選的課程。
探析相關性還可選取壓力傳感器,它含有噪聲的干擾、振動這類的干擾信號??蓸嫿ú蓸与娐?,壓力傳感器增設了輸出信號。BP網絡可采納任一精度來逼近連續函數,只要選取了適宜的神經元數即可。它包含著隱層,神經網絡在任一精度層級內都能表現出非線性的映射??梢韵热ド沙跏嫉募訖嘞禂?,采納梯度搜索以便修正原有的系數。不斷予以修正,直至誤差的均方符合了擬定要求,才可終結這一流程。為濾除干擾,經由EMD這樣的濾波以此來獲取信號。經過后續的分解,可得測重必備的穩態單值信號。
結語
算法關系著數據結構,解析現有的課節內涵,增添探究中的濃厚興趣。演示某一算法要側重相應的數據結構。經由慎重的演算才能縮減后續編程的偏差,培育審慎嚴謹的風格。授課中要增設必備的指引,提出某一疑難而后摸索并化解。歸結零散的現有知識點,做好舉一反三。
參考文獻
[1]李曉鴻,駱嘉偉,季潔.“數據結構與算法分析”研究型實踐教學的探索[J].實驗室研究與探索,2012(01):121-125.
[2]劉曉靜,黃維通,王曉英.西部地區CDIO理念下的數據結構與算法課程建設[J].計算機教育,2013(17):107-111.
關鍵詞: 數據結構與算法;課程;質量標準;人才培養;綜合性地方本科院校;SMART原則
中圖分類號: G42 文獻標識碼:A 文章編號:1009-3044(2015)13-0160-03
Abstract: In this paper, course quality standard of data structure and algorithm is researched under the guidance of talent training objectives of comprehensive local undergraduate college. The SMART principle and guiding ideology are put forward by combining with the characteristics of this course. The overall goals of this course quality standard are made clear. The teaching requirements of this course are given. The implementation of this course quality standard is normalized. Thus, the course quality can be improved and the talent training objectives can be achieved.
Key words: data structure and algorithm; course; quality standard; talent training; comprehensive local undergraduate college; SMART principle
1 引言
《數據結構與算法》是計算機專業的核心基礎課程,其任務是培養學生問題求解技術與抽象方法的能力,同時也是促進學生掌握程序設計語言和程序設計方法的重要課程。該課程教學內容和方法,重點難點等方面已形成了較為成熟的體系[1-2],但是與綜合性地方本科院校的定位相結合時,就突顯出以下問題:
1)教學內容的實用性、系統性不突出,理論內容和實際應用結合不緊密,導致該課程質量標準和培養目標之間存在一定差距。
2)課堂教學措施和效果難以準確評價,培養的人才是否符合市場需求也未可知。
針對上述問題,本文將根據《數據結構與算法》課程的地位,結合綜合性地方本科院校人才培養目標,采用SMART原則[3-4]作為指導思想,建立一套完善的課程質量標準,并將其貫穿于該課程的整個實施過程,以達到預期的效果。
2 SMART原則
SMART原則是目標管理的經典理論,本文將其與綜合性地方本科院校[5, 6]《數據結構與算法》課程質量標準問題的內涵相結合,提出如下原則:
S=Specific(明確性):即要用具體的語言清楚地說明要達成的綜合性地方本科院?!稊祿Y構與算法》課程質量標準。
M=Measurable(可衡量性):即所設計的課程質量標準應該是明確的,而不是模糊的。應該有一組明確的量度標準,作為衡量是否達成目標的依據。
A=Attainable(可達成性):即所設計的課程質量標準能夠被執行人接受,如果僅僅靠一些行政手段,利用權利的影響力一廂情愿地把所制定的課程質量標準強行實施,結果總是適得其反的。
R=Relevant(相關性):即所設計的課程質量標準與綜合性地方本科院校其他目標應該是高度相關的。如果實現了某個單一目標,但與其他的目標完全不相關,或者相關度很低,那這個課程質量標準即使被達到了,意義也不是很大。
T=Time-bound(時限性):即所設計的課程質量標準必須在時限范圍內達成和實施,否則失去了應有的現實意義。
3 課程質量標準
3.1 指導思想
本文為綜合性地方本科院校設計的《數據結構與算法》課程質量標準依照以下指導思想進行:
①方向性:該課程質量標準的建立要堅持正確的導向,要與教育教學的總目標相一致,評價標準要與國家或上級部門公布的標準相一致。指標的設計應努力反映現代教學理論和評價思想,要超越但又不脫離實際現有的教學水平、教師水平和技術水平。
②科學性:課程質量標準的各個環節都必須能反映綜合性地方本科院校的發展目標和教學規律;構建一個科學合理的課程質量標準系統,同時要保證各個課程質量標準之間的獨立性,盡量減少冗余,堅持科學性,遵循科學的教育理論和統計學方法。
③客觀性原則:課程質量標準的建立要以真實的資料為基礎,對課程質量做出客觀的價值判斷,必須以客觀事實為基礎,克服課程質量標準選取過程中的主觀隨意性和情感因素。各項指標應采用量化的形式,所設計的標準應符合一定的數學模型,同時為避免機械化,應在全面的資料收集的基礎上,進行標準的建立。
④可行性原則:該課程質量標準要符合上述的SMART原則,在實施時要綜合考慮到人力、物力、財力、時間等各種制約因素。
3.2 目標與標準
3.2.1 質量總目標
根據教育部教指委提出的計算機專業《數據結構與算法》課程教學基本要求,依據綜合性地方本科院校人才培養應具備的知識、能力、素質要求[7, 8],提出《數據結構與算法》課程質量目標,如表1所示。
3.2.2 確定課程教學要求
根據上述質量總目標,將《數據結構與算法》課程的教學內容劃分為3個模塊,并將每個模塊分解成若干教學單元,明確各教學單元的主要教學內容和目標,如表2所示。
3.2.3 課程質量標準的實施
要確保課程質量標準得以實現,關鍵在于有切合實際的教學措施及實施規范。課程質量標準作為課程教學的指導性文件,應針對課程的教學文檔、教學實施、教學反饋三個方面進行全程規范,本文給出《數據結構與算法》課程質量標準的實施規范,如表3所示。
在反饋環節中的評課,包含了學生評課、專家評課和企業評課。學生評課是學習完本課程的學生在學習了本課程的后續課程后再對本課程的有效性做出評價。專家評課則是由本領域內的專家對本課程的全部實施環節的規范性和有效性進行評價。企業評課是只由相關的企業專家,或者是錄用了本專業畢業生的企業的負責人,對學生學習了本課程是否能學以致用做出評價。
4 結論
《數據結構與算法》是一門邏輯性強、理論與實踐緊密結合的課程,對提高學生程序開發能力和培養算法設計與分析能力都具有重要意義的課程。綜合性地方本科院校以培養應用型人才、服務地方建設為目標,這就要求課程質量標準的設置應更關注學生的整體素質培養,以及社會對學生能力和素質的需求。本文通過對《數據結構與算法》課程質量標準進行研究,制定了該課程的質量標準和實施規范,明確了綜合性地方本科院?!稊祿Y構與算法》課程的定位,促進課程的教學的有效實施。
參考文獻:
[1] 呂亞榮, 繆相林. 數據結構與算法實驗教學的改革與探索[J]. 教育教學論壇,2014,3(18):23-29.
[2] 劉馨月, 張憲超, 于紅. 數據結構與算法核心課程建設[J]. 計算機教育,2011,6(4):65-68.
[3] 周彥斐. 運用SMART原則優化項目教學過程探究[J]. 閩西職業技術學院學報,2013,15(4):94-96.
[4] 陸如萍. SMART原則在教學目標設定中的應用探究[J]. 現代基礎教育研究,2013,1(2):196-199.
[5] 王志英. 地方本科院校轉型應用技術類型高等學校途徑探討[J]. 現代企業教育,2014,16(3): 430-432.
[6] 廖詩艷. 質性評價:地方本科院校教學質量監控的路徑[J]. 教育探索,2014,7(5):66-68.
關鍵詞:數據結構與算法;教學改革;應用型人才培養
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2017)23-0128-02
一、引言
1.地方高等院校應用型人才培養改革。地方高等院校的教學目標正逐步轉型為以培養應用型人才為目標,課程教學方法及設置要求學生在學習過程中能學到與社會接軌的知識,從而能提高學生的學習興趣,且在系統學習后,即畢業后進入社會能較快上手,從而培養出適應社會需求的應用型人才。
2.《數據結構與算法》課程地位?!稊祿Y構與算法》是信息與計算科學專業的核心基礎課程。數據結構的研究范圍主要涉及數據的邏輯結構、存儲結構和操作的實現,內容是程序設計(特別是非數值計算的程序設計)的基礎,也是設計和實現編譯程序、操作系統、數據系統及其他系統程序和大型應用程序的重要基礎,是一門理論性強且實踐性強的課程。通過這門課程的學習,學生在程序編寫的過程中能夠正確、合理地選擇數據的存儲結構,有效地設計算法,從而提高軟件整體質量和效率。
3.本文研究方向。本文著重研究如何針對信息與計算科學專業的特點,地方院校培養應用型人才的教育模式,學生基礎相對薄弱的情況,設計合理的教學方法,達到應用型人才培養的目的。
二、傳統教學中存在的問題
筆者多年從事數據結構與算法課程的教學,經與學生進行溝通后,總結出傳統教學中存在的問題有如下幾點:
1.理論性強,知識點多。數據結構與算法課程的知識點多,理論性和實踐性均較強,且有高度抽象的特點。故要求學生對程序設計語言和相應的數學知識掌握要足夠深入,才能較好地學習。信息計算科學專業的學生數學基礎較薄弱,學生反映,理論過于抽象且內容較多,越學后面越不懂,內容枯燥不易理解。
2.上機動手能力差。數據結構與算法課程中一個重要部分是上機編寫程序實現算法,學生由于上一門程序設計課程還未理解,難將算法實現,體會不到編程的樂趣、算法的優美,在學習中易失去信心。
在上機實踐觀察中學生常出現兩種情形:一種是理論尚未理解透徹,后續上機實踐根本毫無頭緒,不能靈活應用推廣;一種是理論可以明白,但程序設計的能力跟不上,無法獨立完現算法編寫實現和調試,甚至無從入手去完成偽代碼的書寫。這兩類學生占絕大多數,只有少部分學生可以較順利地掌握教學內容并實現完整算法。
3.學生對數據結構的認識不夠。外面有些培訓機構的速成模式對學生的影響大,它們往往針對某一具體工具軟件的使用,工具軟件已經將許多知識進行了集成封裝,使用者只需調用即可,不用關心具體實現步驟、方法和效率。而這些步驟、方法、算法效率的討論都是數據結構中要學習的內容。學生認識不到數據結構的重要性,于是覺得這門課程沒有應用的前途和學習的動力,不肯多花時間在上面去練習和實踐,從而限制了自己后續能力的提高,比如改進算法的效率,優化程序等。
三、改革方法探討
1.以理論教學為主,案例式教學為輔。針對應用型人才培養的目的和學生普遍反映的課本內容過于抽象的問題,可以選擇一本以案例式教學為主的教材作為教學輔助教材。在講授某個知識點前,布置學生在輔助教材中閱讀,了解相關的應用背景。在預習過程中學生往往能發現一些問題,于是在課堂學習中將更有目的性和積極性去學習理論知識,有能力者甚至可以在課外嘗試實現案例、發現問題。通過案例學習可以提高學生的學習興趣,符合應用型人才改革的目標。學生也通過案例學習了解現實中出現的問題有哪些解決方法。當理論具體化后,在工作或后續學習中遇上實際問題將更有解決的方法和思路,而且再進行類比推廣應用就比較容易。
但教學中又不能簡單的以案例式教學為主。因為案例式教學的一個缺點是案例中涉及到的應用理論未必完全,而是某種模型結構的某些方面的具體應用。如樹的教學,一般的課本對樹的應用講了六七方面,采用案例教學法,可能只面對幾種應用。故教師在課堂上要將案例抽象出對應的結構,與理論結合在一起,詳細講解理論,即課堂上仍是以理論教學為主。
2.理論教學中知識點的篩選和難易處理??紤]到學院的學生基礎問題,學生相應的數學知識掌握不夠深入,若面面俱到地將所有理論全部講完,將知其然而不知其所以然,也不符合應用型人才培養的目標,故課程內容要進行一定的篩選,后續課程中將出現的問題,不妨留到后續課程后再詳細討論。
比如,圖的關鍵路徑問題,對于基礎掌握好的學生經過課堂學習確實可以掌握,但大部分學生或是不理解,或是理解后不能上機實現,而這一問題在離散數學課程中圖論一章后有詳細論述,那在數據結構中有限的課時中就不妨先簡講,多花時間在圖的存儲、遍歷算法、最小生成樹等算法上,效果會更好。
另外,教師在理論講解中注意難易的處理。學生要是產生了畏難情緒,就容易造成前面的知識未消化,后面的知識更無從理解的學習障礙。據過往經驗,數據結構線性表一章是比較簡單的,其難點在于鏈表,接著的隊和棧一章與線性表是一致的,僅操作方法不同。若學生在線性表上卡住了,再學棧和隊列會覺得更難。于是教師授課時對一些基礎又簡單的問題,講深入、講透徹,配合傳統的黑板結合粉筆效果更好,學生能有效跟著教師進行思考,注意歸納總結,雖然花時間多,但再學習后續知識時會觸類旁通,學習自信心能提高,有利于形成良性的促進作用。
3.上機實踐的難易處理和互動改革。上機實踐主要是將偽代碼的算法用具體程序語言實現、運行。應用型人才培養的目的就是要培養學生將理論知識用于實踐,即能實現運行具體算法。故培養學生的動手能力是學好這門課程的關鍵。
在整個學期的實踐處理上,實踐難度安排由易至難。在前面的章實踐作業中,給出的可運行代碼應該較完整,留下關鍵部分讓學生去編寫,尤其是學會調試。隨著章節的推進,給出的可運行代碼逐步減少至不給。這樣處理是可以讓學生在初學時不至于無從入手,而且可以讓程序設計基礎不牢的學生有時間通過實踐強化鞏固,讓學生獲得編程樂趣。
另外,上機實踐時可將學生分成若干小組,每個小組選出一個學習較好的學生為組長,上機中組長可以幫助組員進行程序的調試和講解,使學生能夠閱讀程序理解程序所表達的意義。學生對知識點理解的角度和教師的角度可能不同,有時候同學請教比教師更能讓他們接受,從現實課堂中反映,學生確實更愿意向同學請教。
組員們在討論中產生解決不了的問題,再與教師討論得到解答,這樣的互動改革既可以有效解決教師逐一回答時間有限的問題,又可以提高學生的學習熱情,學生之間不斷相互學習共同提高,真正讓大家都能動起手來,鍛煉編程能力和舉一反三的自學能力,為將來到社會工作打下扎實的基礎。
教師在指導中要引導學生學會讀懂程序錯誤提示,自己調試修改程序,提高學生實踐水平。加強對學生舉一反三能力的培訓,讓實踐教學反哺理論教學,使學生對理論有更深層次的理解。培養學生良好的程序編寫習慣和風格,注重程序注解。
4.開展課外講座。在課外,邀請已學過這門課程的學生和正在學習的學生進行經驗交流。尤其是一些已經參加工作的學生,他們可以帶來更多的實際案例,這些案例比教材中提供的更新穎、更具體,涉及到更全面知識的融會貫通,而且他們可以提供工作中有關《數據結構與算法》這門課程的經驗,可以讓學生們了解與社會接軌的知識,提高學生的學習興趣。
四、總結
近年畢業生就業問題日趨嚴重,通過上述討論發現,傳統數據結構與算法課程的教學形式已不能滿足現階段實際要求,地方高等院校如何進行應用型人才培養改革,培養出適應社會需求的應用型人才成為研究重點。本文以地方院校信息與計算科學專業的《數據結構與算法》課程為例,探討一系列的教學改革措施,以達到應用型人才培養的目標。
參考文獻:
[1]余臘生.石獻.基于創新理念的數據結構教學方法探討[J].計算機與信息技術,2006,(11):110-114.
[2]李克清.《數據結構》課程中的案例教學初探[J].長江大學學報(自科版),2004,12(1)4:135-136.
[3]嚴蔚敏.吳敏民.數據結構(C語言版)[M].北京:清華大學出版社,1997.
A Study on "Data Structure and Algorithm" Curriculum Reformation
LI Ting,XU Hong-ru
(School of Mathematics,Jiaying University,Meizhou,Guangdong 514015,China)
關鍵詞:數據結構;課程體系;實踐教學;課程群
1背景
數據結構與算法是計算機類專業的一門核心基礎課程,是計算機、軟件工程等電子信息類專業的必修課。本課程較系統地介紹了軟件設計中常用的數據結構以及相應的存儲結構和實現算法;介紹了常用的多種查找和排序技術,并對其進行性能分析和比較,內容非常豐富[1-2]。本課程的教學目標是加強學生對數據邏輯關系的分析與認識,培養學生數據抽象的能力,通過理論分析與編程實踐相結合,增強學生求解復雜問題的能力以及控制算法復雜性的能力。
在計算機科學中,數據結構不僅是程序設計的基礎,而且是設計和實現編譯程序、操作系統、數據庫系統等系統程序和各種大型應用程序的重要基礎[3]。數據結構與算法是計算機類專業部分專業課的先導課,如操作系統、編譯原理和數據庫原理等,因此它為后續的專業課程學習提供必要的知識和技能儲備[4]。數據結構與算法課程一直以來都是本學科的核心專業基礎課程,而且正逐漸發展成為眾多理工科專業的熱門選修課。只有學好了這門課,才能在今后的計算機專業課程的學習中游刃有余。因此,本課程在國內同類課程中有較明顯的先進性和示范性。
根據新世紀對人才培養的要求,教學應重在學生能力、素質的培養,尤其是思維能力、實踐能力、創新能力的培養。多年來我們致力于數據結構核心課程的建設,從完善課程體系、加強團隊建設、深入教學改革和豐富教學資源等各個環節不斷探索和實踐。從提高學生的學習興趣和加強實踐環節教學方面入手,在教育教學方面持續、深入地改進教學方法,開展教學研究,提高教學質量。
2完善課程體系
首先,完善以“扎實基礎,強化實踐,引導創新”為培養目標的課程體系。計算機類專業核心基礎課程體系主要由離散數學、面向對象的程序設計、數據結構與算法、操作系統、編譯原理、計算機組成與結構、數據庫原理7門課程組成,用于支撐計算機科學與技術、軟件工程、網絡工程、信息安全、數字媒體技術5個計算機科學相關專業的教學。
我們將課程群的理念引入計算機專業基礎類課程教學,建立了以數據結構為核心的計算機類基礎課程群,如圖1所示。課程群以培養綜合運用計算機基礎知識能力為目標,打破課程間的壁壘,強化課程聯系。本課程群以數據結構為核心,將數據結構的一些基本內容如鏈表、排序等滲透到“C/C++程序設計”課程中;將編譯原理、數據庫原理等需要使用數據結構內容的部分在數據結構課程中以應用的實例進行講解,從而將相關課程的授課內容形成統一的整體。
在實踐環節我們強化數據結構對程序設計語言的訓練及解決相關課程問題的訓練。除各門課程有單獨的實踐課程外,獨立設置貫徹整個教學環節的實踐課程,將數據結構課程群中各門課程較為關聯的綜合大作業進行歸并整合。自身實驗課程注重雙基訓練,但大實踐課程要求對整個數據結構課程群教學經驗豐富、能夠精確把握該課程體系要點的教師進行授課,在教學中能夠結合本學期相關課程設置大作業,在講授中能夠根據學生的具體情況進行誘導性教學,使學生通過完成大作業來更深刻地認識學科體系的全貌,強化學科綜合素質的培養。
以數據結構課程為中心構建計算機類專業的核心基礎課程體系,將與計算機科學相關專業的專業基礎課程教學打通,在課程、課件、教材、師資隊伍等多方面進行統一的規劃和建設,以不同的著重點組織課程教學內容、進行大學生計算機實踐能力和創新能力的培養。該體系打破了原有實驗教學附屬于理論課程的模式,理論教學與實驗教學既相對獨立、又相互聯系,改變了單一的知識驗證的實驗模式,增強綜合應用設計和創新實踐內容,全面提高學生的實驗實踐技能?!霸鷮嵒A,強化實踐,引導創新”培養目標體現了當前計算機類專業教育的發展趨勢,走在國內高校的前面,在全國各類會議作專題報告近30次。
3加強團隊建設
目前我院數據結構與算法教學團隊共有5位主講教師,其中教授2人,每50名學生配一名助教(博士或工學碩士)。該教學團隊主要由30~40歲的年輕教師組成,盡管精力充沛,工作熱情很高,但教學經驗尚有欠缺。團隊建設是本課程建設的重中之重,要把提高教師的綜合素質和教學科研水平,強化教師的責任心放在首位。堅持教學與科研相結合,以國家自然科學基金項目為依托,為提高教學質量,不斷提高科研水平和能力;以國家特色專業建設項目為依托,加強教學研究,以理論指導教學實踐,吸取好的教學方法和經驗,不斷改進教學方法和手段,迅速促進教學團隊成長。
在青年教師培養方面注重教學和科研能力的同步培養。要求青年教師在首次上課之前聽課助課,培養基本教學能力;實行集中備課,統一課件,互相監督,保持教學一致性和教學內容一致性;定期召開教學研討,及時總結教學經驗方法,教授言傳身教;以特色專業建設項目為依托,鼓勵青年教師開展教學研究,以國家級項目為依托開展科研課題研究。青年教師成長迅速,已具備一定的科研能力,教學效果良好,學生滿意超過90%;獲得校教學質量優良獎,青年教師講課競賽二等獎,多媒體課件二等獎等多項獎勵,已經成為學院的業務骨干。
4深化教學改革
4.1不斷探索新的教學模式
1) 實踐性教學。
實踐是獲得真知的根本源泉,主動探索真知是研究型人才的基本素質,我們在基礎課中的創新能力培養主要體現在,讓學生在自由的實驗環境中積極實踐、主動探索,自己發現新的知識和理論。如圖2所示,在實踐環節建設方面,建立書面作業,上機作業和課程設計3個層次的實踐教學環節,以通過書面作業形式消化理解教學內容;通過上機作業培養動手能力,將課程單元知識轉化為實際技能;通過課程設計培養解決實際問題的能力,融會貫通本課程的知識。
為了滿足強化實踐的教學要求,本課程團隊經過多年實踐,精選、整理了包括卡內基梅隆大學、斯坦福大學、麻省理工學院等國內外著名大學教授布置的實踐作業,結合我們的教學要求,每學期給學生布置18道有一定創新性的上機題目。這些題目既反應了數據結構教學的基本知識,又來源于實際應用。達到了理論和實踐的完美結合。本課程實踐教學和理論教學環節的學時比例為1.5∶1。經我們多年實踐,這個比例符合我國高等教育實際,達到了良好的能力鍛煉目的,值得推廣和借鑒。
2) 研究型教學。
在研究性理論教學方面,以教學大綱為主線,整理數據結構領域的經典論文,以提出問題為課堂教學的第一步驟,引導學生思考,將科學家的研究方法和研究思路融入課堂教學中。依托科學研究項目,提出本學科領域的最前沿課題,鼓勵學生思考并解決。對有明顯創造性的成果可以在教師指導下撰寫學術論文。
將研究型教學融入數據結構實踐教學課堂,鼓勵學生從解決問題的角度研究如何設計數據結構與算法,在傳授基礎知識的同時注重創新性思維方式的培養,發現問題和解決問題能力的培養。
4.2全方位的課程改革
課程建設的核心是提高教學質量。為提高教學質量,我們從教學內容、教材、教學方法和手段、考試方法、實踐教學等方向進行了全方位的改革。
1) 教學內容改革。
課程組參考國內外其他院校本課程的教學大綱和優秀教材,對數據結構課程的教學大綱進行了多次修訂,逐步穩定了理論教學的教學內容、教學要求,細化了教學目標,明確了教學任務、教學內容、教學重點和難點、不同知識點的掌握程度。理論教學采用以共性化課堂教學為主,并利用輔導答疑和實踐教學組織以學生為主的個性化教學,培養學生創新能力,輔助課堂教學。在教學過程中采用啟發式教學方式,即注重學生基礎理論知識的掌握,也注重學生分析問題、解決問題等基本能力的培養。
為了配合理論教學,我們也多次修訂了實驗大綱,使實踐內容更加符合專業的發展和其他各方面的要求,并且與前序課程和后繼課程很好地銜接。在實踐環節中注重學生能力的培養和科學的開發方法的培養。實踐教學內容采用梯度組織,具有不同的難易程度,方便學生鞏固學習和拓展知識。
2) 教材選取。
目前本課程使用教材為高等教育出版社出版的《數據結構與算法》,許卓群、楊冬青等編著。該教材除了講授基本數據結構外,突出作為面向對象程序設計的基礎概念――抽象數據類型,強調算法與數據結構的密不可分性、封裝性等;在處理知識面的寬度和知識點的深度上,既滿足作為基礎課的要求又達到一定的水平,完全適合本專業對人才培養的要求,是普通高等教育“十五”國家級規劃教材。目前課程組已經開始著手準備根據我們自己的教學特點、專業要求等實際情況自主編制一套教材。
3) 教學方法改革。
(1) 啟發式教學:學生的主動性是學習,我們在教學過程中注重啟發學生的思維,采用循循善誘的方式引導學生自己發現問題,并逐步解決問題,培養學生思考問題、分析問題和解決問題的能力。這極大調動了學生的主觀能動性,培養了學生分析和解決問題的能力。
(2) 共性化與個性化相結合教學:從教學形式上,我們積極探索新的教學方法,以便能夠調動和發揮學生的主觀能動性。具體有以教師為主體的課堂教學、習題課等共性化教學環節,也設置了答疑p質疑等教學環節,引導鼓勵學生通過實踐和自學獲取知識。共性化與個性化相結合,既可以起到教師主導作用,也可以滿足學生個性學習的需求。
(3) 理論與實驗相結合:數據結構課程主要介紹數據的邏輯結構、物理結構以及算法。算法的思想需要通過一種程序設計語言加以描述并在計算機上實現。我們在重視理論教學的同時,也很注重實驗課,注重學生靈活應用知識能力的培養。理論與實驗相結合,可以使學生更好地理解“數據結構”的思想與概念。
5豐富教學資源
建立本課程網上課堂及在線智能教學系統。網上課堂設計的目的是能夠給不同層次、不同需要的學生提供幫助,提高教學質量。根據網絡教學環境的要求,
系統主要包括課程概況、師資隊伍、教學資源、實驗指導、教學錄像、課程擴展、課程論壇等多個模塊。系統主要具有以下特點:
1) 在線學習。
知識內容結構化,主體結構采用網頁形式組織教學內容,以單元、章、節等知識點為中心組織教學,以關鍵詞或標題為線索進行任意的查找。各知識點在整體上搭建框架式結構,思路明晰;在細節上環環相扣,前后關聯緊密,便于學生更好地理解和掌握知識要點。
2) 動畫演示。
以數據結構部分的講授為例,這部分內容包含許多的算法,其描述大多數采用類高級語言的形式進行,有些算法無論是時間復雜性或是空間復雜性都比較高,采用動畫的形式將算法的執行過程和思想呈現給學生,使學生很容易理解這一過程,再配上教師的解釋做旁白,可產生與上機親身實踐和跟蹤執行相似的效果。
3) 在線測試。
用數據庫對練習題和模擬題進行有效的管理,在學生進入到考核子系統后,能交互式進行試題的選題與答題。當學生提交答卷后,系統又能對答分進行自動評判,并給出相應正確的答案和綜合得分。
4) 課程擴展。
為更好地促進教學,本課程在鞏固基礎知識,提高實踐能力的基礎上,對學有余力的同學擴展了本課程的內容。引入了卡內基梅隆數據結構教學網站,這是一套全英文系統,上面提供了豐富的工程性題目訓練,更加注重數據結構算法在實際中的應用,讓學生開闊了思維和眼界;還為學生提供了ACM競賽以及大連理工大學程序設計競賽的模擬題庫,通過這些略有難度又很新穎的題目進一步提高學生的學習興趣,培養其解決實際問題的能力。
6結論
在近幾年的課程建設實踐中,我們的任課教師認真組織教學內容,與實際相結合,積極探索有效的教學方法,利用多媒體技術動態演示復雜數據結構的變化,并補充學生比較感興趣的知識,拓寬學生的知識面。逐步完善和充實現有課件,做到內容充實,畫面生動,具備聲像效果,收到了很好的教學效果。作為計算機科學的核心內容,數據結構與算法的理論研究及應用研究一直在不斷發展,在以后的工作中要注重研究型教學,鼓勵學生從解決問題的角度研究如何設計數據結構與算法,并將學科領域經典研究成果和最新研究成果及時地反應在課程教學中,相信數據結構與算法這門課的教學效果和教學質量在我們持續深入的教學改革中會越來越好。
注:本文受教育部第二類特色專業建設項目――軟件工程特色專業建設項目資助。
參考文獻:
[1] 嚴蔚敏,吳偉民. 數據結構[M]. 北京:清華大學出版社,2002.
[2] 殷人昆. 數據結構(用面向對象和C++描述)[M]. 北京:清華大學出版社,2007.
[3] 殷人昆,鄧俊輝. 清華大學“數據結構”精品課程建設[J]. 計算機教育,2006(5):20-22.
[4] 錢紅兵,唐發根. “算法與數據結構”課程教學體系的建設[J]. 計算機教育,2009(17):65-66.
Development of the Data Structure and Algorithm Core Course
LIU Xinyue, ZHANG Xianchao, YU Hong
(School of Software, Dalian University ofTechnology, Dalian 116620, China)
關鍵詞 算法與數據結構 理論教學 教學技巧
中圖分類號:G424 文獻標識碼:A
Discussion on Algorithms and Data Structures Theory Teaching Skills
ZHOU Zhanglan
(College of Computer Science, Yangtze University, Jingzhou, Hubei 434023)
Abstract In the "Algorithms and Data Structures" course, theoretical teaching is very important. In order to obtain a limited teaching good teaching effect is not easy. This understanding of knowledge points respectively, classroom inspiration, knowledge and consolidation of four aspects of the introduction of certain teaching techniques introduced in order to achieve the full content of classroom teaching, active classroom atmosphere, enhance students' interest in learning.
Key words Algorithms and Data Structures; theory teaching; teaching skills
算法與數據結構是計算機專業重要的核心課程之一。該門課程中涉及眾多復雜而抽象的概念、算法,多數學生表示學習起來感覺較為枯燥。對主講教師來說,如何讓學生在有限的理論課堂教學中掌握所有知識并靈活應用是不容易的。當然,現在有很多教學手段可以達到增強教學效果、吸引學生注意力的目的。比如,在教學過程中引入精美的PPT課件、動態教學演示系統等。但是,這些手段都只能起到輔助教學的作用。教師在充分利用這些教學工具時,更應該發揮操控者靈活處理問題并解決問題的能力,以達到更加完美的教學效果。本文就課堂教學中的幾點經驗進行總結,以供探討。
1 生動的語言,形象的比喻——知識點的理解
算法與數據結構課程中的知識點,尤其是每章涉及的重要概念和算法對于初學的學生而言不太容易接受。為了使學生能在課堂教學中盡快地理解和掌握這些知識,教師在教學中運用生動的語言和形象的比喻往往能夠起到較好的作用。首先,關于上課的語言問題。作為一門專業課程,特別是計算機專業的核心課程,教師的授課過程總體來說應該是嚴謹的。專業課教師是不可能把授課對象當成小學生,然后用活潑的語氣配合可愛的動作來講解的。因此,這里提到的“生動的語言”包含兩方面的內容。一方面指教師授課的語氣,不要讓整堂課總是一板一眼像作報告一樣,在重點需要強調的地方適當加重語氣,或者停頓后再次強調,抑揚頓挫的語氣更能使學生提高注意力和關注度。另一方面是教師的肢體語言,在加強語氣的同時配合相應的手勢等肢體動作。當然,這方面與教師的個人授課風格有很大關系。
其次,形象的比喻。本課程在學習中涉及的知識點較多,學生首先要在對概念的充分理解的基礎上,才能進一步學會靈活應用。為幫助學生更好地理解有關概念,可以引入生活中常見的問題做比喻。下面以在課堂上講解鏈式存儲結構與順序存儲結構的區別為例,說明引入適當的比喻有助于學生對兩者的理解。由于鏈式結構不需要預先指定存儲空間的大小。因此,插入和刪除等操作都較為容易,特別是插入操作不存在擴容問題。而順序結構則需在初始化階段申請指定大小的存儲空間,只有在申請成功之后才能進行其它操作。在進行插入或刪除操作時都可能要移動其它元素的位置,而且當進行插入操作時,若初始空間不足還會出現需要擴容的問題。為了幫助學生理解這兩種存儲結構的特點,可以引入這樣的比喻:順序存儲就像上課之前需要申請教室,有多少個學生就需要有一個能容下所有學生的教室。當然,在進行具體配置時要求教室的空間只能大而不能小。比如,上課的實際學生人數為60人,分配的教室為100座,而且一個學生對應一個固定的座位。當加入的聽課人數超過100人時教室里的座位顯然就不夠用了,為了滿足需求需要更換一個更大的教室。函數realloc能將已分配內存區的大小改為指定大小,①可以用來實現這一擴容操作。鏈式結構則不然,在進行具體配置時其空間就像是一個露天會場。進入會場的每一個人都自帶一個小板凳,當人走時小板凳也被同時帶走。只要不存在會場空間不夠(相當于內存分配單個結點空間失?。┑那闆r,容納的人數是沒有固定限制的?,F在再來分析一下兩種存儲結構在操作上的不同。順序存儲的空間分配是固定的,就像教室里的固定座位。當有一個同學需要插到某一個位置坐下時,若此位置已坐人,其他同學則需要通過陸續移動為他騰空一個座位;而鏈式結構則不同,由于每個人都自帶小板凳,只要會場有空間就能容納新來的人。新來的人只需要把要插入的位置告訴排在其前面的人就可以了。當然,不是所有的重要知識點都能找到合適的比喻,這需要教師在備課時多思考,并在教學中靈活運用。
2 恰當的提問——課堂啟發
在授課過程中,活躍的課堂氣氛需要教師和學生之間的良性互動,而提問是一個很好的實現互動的方法。但是以什么方式提問、怎樣提問還是有一定講究的。首先,關于提問的方式。對于大學課堂來說,點名回答或自愿回答都可能會出現學生不配合的情況,畢竟大學生和中、小學生是不同的。因此,教師需要預先做好自問自答的準備。提出問題后,要留給學生一定的思考時間。若在這之后有學生能主動給出較好的解決方案,則應給予及時的鼓勵和贊揚;反之,教師需要自己給出一個粗略的解決思路,將疑問留給學生并促使學生繼續思考。其次,關于提問的內容。提問需要占用課堂教學時間,因此提出的問題應當是最重要、最具有啟發性的。比如,以單鏈表基本操作插入算法②為例:
Status ListInsert_L(LinkList &L,int i, ElemType e){
p=L; j=0;
while(p&&jnext;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e; s->next=p->next;
p->next=s;
return OK;
}
對于算法中“if(!p||j>i-1) return ERROR;”這條語句的作用很多同學在初學時并沒有真正了解,只是在具體實現時生搬硬套。為了引起學生的注意,教師可以在上課時現場運行此算法,并在去掉此語句后輸入數據進行驗證。例如,給i賦一個不超出線性表長度的合法的值,這樣不影響輸出結果,提出這句是不是可有可無的問題,然后留下疑問讓學生去思考。當然,在下次解答時要對這類問題進行總結,強調錯誤處理在編程中的重要性。
3 有趣的例子——知識點的引入
在專業課程的教學中就其知識點來說是較為枯燥的,為了讓學生在剛開始學習新內容時就能激發出學習的興趣,可以通過引入具體實例來達到目的。例如,以循環鏈表的使用為例。在講授什么是循環鏈表之前,先給出一個“約瑟夫問題”游戲的例子,通過這個游戲提出問題:若使用已經學過的單鏈表是否合適。如果不合適,具體在什么地方不合適。然后引入循環鏈表的概念,并以此例子來說明循環鏈表的意義和具體的操作方法。另外一個比較典型的例子是用鐵路調度站表示“?!眴栴},這也是一個很好的利用生活中的實例來引入知識點從而引起學生興趣的例子。尤其是在對“?!钡南冗M后出特性講解時具有很好的效果。當然,例子的引入要恰如其分才能起到正面作用,過于簡單或不合適的引用反倒會引起學生的反感,甚至成為笑話。
4 編程演示——知識點的鞏固
在算法與數據結構課程中涉及到了大量的經典算法,比如最短路徑、關鍵路徑等。對于學生來說掌握其原理就可以知其應用。但是,對有些需要靈活使用的知識點僅講解原理是不夠的。為了能讓學生深刻理解并熟練掌握,可以在課堂上編程逐步演示其實現過程。比如,“樹”這一章的內容涉及的概念較多,它又是學生學到的第一種非線性結構,相比之前的線性表實現起來更復雜。因此,教師在初次講解時很有必要在課堂上將二叉樹的創建過程動態地演示給學生,這其中包括順序存儲和鏈式存儲。當然,演示過程最好不是已經寫好的完整的程序或演示系統成品,而是采用邊講解邊書寫的方式,使學生更容易了解編程的過程。為了節省課堂時間,可以先寫好程序框架,比如程序包含的頭文件、所需結構體類型、主函數、輸出函數等在講解過程中簡單帶過,而重要函數的核心代碼則邊講邊寫。這樣不僅可以增強學生的學習興趣,促使學生自己去編程實踐,更重要的是可以讓學生非常清楚地了解實現的過程。當然,這很考驗教師的編程能力,因為在課堂上臨時寫很有可能因為一時大意使得程序運行出錯而陷入尷尬的境地,從而影響課堂教學的完整性和完美性。但教學的目的不是讓教師去展示個人風采,而是講授知識。從另一方面來講,學生也是寬容的。教師偶爾的一次失誤不僅不會影響其權威性,反而更能讓學生感受到親切而真實。
算法與數據結構作為一門重要的專業課程,要想取得良好的教學效果還需要多方面的配合。當然,作為主講人的任課教師對課程的教學起到了決定性的作用。除了依據授課對象的特點合理安排教學計劃、教學內容外,把握好有限的理論課堂教學,利用各種方法和手段將理論知識講解清楚,使得教學內容生動、課堂氣氛活躍、學生學習興趣濃厚是很重要的。這不僅能幫助學生更好地掌握本門課程的理論知識,更能為學生在后續學習中進行具體實踐打下良好的基礎。
注釋