時間:2023-01-25 12:34:17
開篇:寫作不僅是一種記錄,更是一種創造,它讓我們能夠捕捉那些稍縱即逝的靈感,將它們永久地定格在紙上。下面是小編精心整理的12篇數據結構實驗報告,希望這些內容能成為您創作過程中的良師益友,陪伴您不斷探索和進步。
關鍵詞:數據結構;實驗環節教學;改革;實踐
隨著計算機處理的數據量越來越大,數據之間的關系也越來越復雜。“數據結構”這門課介紹最常用的數據結構,闡明數據結構的內在邏輯關系,討論它們在計算機中的存儲表示,并結合各種典型應用,說明它們在進行各種運算時的動態性質及實際的執行算法。“數據結構”的研究不僅涉及到計算機硬件,還和計算機軟件密切相關。計算機科學各領域及有關的應用軟件都要用到數據結構[1]。
1實驗教學在“數據結構”教學中的地位
“數據結構”的前導課是高等數學、高級語言程序設計、離散數學;它又是操作系統、編譯原理、數據庫原理、算法分析、人工智能、圖像處理等專業課程的前導課,具有承上啟下的作用。在計算機碩士研究生入學考試中都設有這門課,并且分值最高,所以該課被我校選入第一批重點建設課。它又是一門實驗性很強的課程,CC2001對該課程及相關內容和相關度進行了明確的描述。“數據結構”課程要讓學生掌握計算機處理非數值運算問題時的一般原理和方法,熟悉解決各種問題的基本模型,培養學生運用已有的算法語言編寫準確、清晰程序的能力。另外,通過本課程理論體系的學習,學生在設計軟件系統時應學會合理選擇數據結構,并能對所選模型進行初步評價,學生通過學習,能夠設計一個“好”的程序[2]。
實驗是學生檢驗所學理論知識是否牢固,并探索和運用知識的過程。通過實驗,學生不僅可以進一步理解數據結構的基本知識,通過對不同存儲結構和相應算法的對比及上機編程練習,提高根據求解問題性質選擇合理的數據結構并控制求解算法的時間、空間復雜度的能力,而且能進一步提高軟件設計和編程水平,提高學習的積極性和主動性,形成科學的思維方法和嚴謹的科學態度[3-4],因此“數據結構”的實驗十分重要。
2 “數據結構”實驗教學的改革和實踐
2.1更新教材和實驗報告
要推進實驗教學的改革,首先要改革現有教材,應重視學生實驗能力的培養,體現以學科為基礎的學科特色。在“數據結構”教學中,重點是讓學生通過實驗環節學習數據結構,讓學生明白哪些知識是基本點,哪些是難點和重點,明確學習目的和作用。在這樣的指導思想下,我們在2005年組織課題組成員,按照CC2001的要求,結合我國計算機的發展和2009年考研大綱,編寫了C++描述的《數據結構與算法》教材,于2008年秋季開始使用,效果良好。每過一學期,我們都根據當前情況和學生意見及時更新實驗報告。比如最初的實驗報告有一道字符串的實驗題,隨著計算機的發展,不論是C++語言還是Java語言,已經有現成的字符串庫函數,學生只要會使用庫函數即可,不需自己編寫,而且考研大綱也不作要求,所以我們及時更新了教學內容和實驗內容,并在實驗題目中增加了ACM大賽的實驗題,為學生參加程序設計大賽打下良好的基礎。
2.2設計合理的實驗題目
實驗報告是“數據結構”實驗環節的重要內容,題目的選取要符合學生的實際水平,而且要有跨度,否則會白白浪費學習時間。2001年,我們調研了清華、北大等各院校的教學改革情況,并征求了畢業生和已學過這門課的在校生意見,發現我們的教學沒有從學生的實際情況出發,很難調動學生的學習興趣。為此,我們從2002年開始編寫實驗報告,把實驗題分成三個層次,有驗證(改進)型、綜合型和設計型題目。驗證型題目是對教科書上典型算法的實現,也有驗證改進型的,即是對書上算法稍加修改,這就要求學生必須事先看懂書上的算法才能修改;綜合型題目是將不同的實驗進行組合,綜合解決較復雜的問題,要求學生利用各種知識解決新的問題;設計型題目是教師提出實驗目的和要求,學生自行設計,完成實驗內容,要求學生的基礎比較好,一般安排在課外進行,極大豐富了第二課堂。學生可根據自己的能力選擇不同層次的實驗題目,大大提高了學習積極性。
我們還鼓勵學生對教材中的遺留問題進行自行設計,也鼓勵學生根據自己的愛好做一些小的系統實驗。這不但使學生的基本知識和實驗技能得到鞏固,還可以提高學生的創新能力。實驗報告的每道實驗題都有明確的“對問題的描述”、“實驗目的”、“實驗內容及要求”、“測試數據”和“思考”,學生每做一道題,都明白實驗的目的和要求,完成后,教師還要根據“思考”題目及時向學生提出問題,學生可以自行設計實驗方法來解決,教師也可以引導學生設計疑問,主動將教材上的驗證性實驗轉變為設計性實驗,教會他們舉一反三,促進學生的思維向新和深的層次發展,加深他們對所學知識的理解。
實驗題目還要新穎、有趣。比如我們的實驗報告有猴子選大王、迷宮等問題,學生可以使用動態規劃、回溯法、分支限界法等算法,將幾個算法的實際執行時間進行比較,從實驗結果證明理論分析的正確性。
2.3建立“以老帶新,青年為主”的教學梯隊
我們的教學梯隊平均年齡35歲,教授、副教授占40%,講師占40%,助教占20%。青年教師中有碩士和博士研究生,他們接受新鮮事物快,精力充沛且動手能力強,但缺乏教學經驗,所以我們要求青年教師至少帶兩年的實驗輔導和習題課,在第一次主講之前至少要聽有經驗教師一學期的課,而有經驗的教師還要不斷試聽青年教師的課,指出不足之處,幫助他們盡快提高教學水平。經過幾年的鍛煉,青年教師陸續登上講臺,共有3人在內蒙古大學“青年教學技藝大賽”中獲得了1個一等獎和2個二等獎,其中1人獲得高等院校第四屆青年教師課題教學技能大賽理科組一等獎,成為這門課的骨干教師。
2.4加強上機輔導和課后輔導
編程是高強度的腦力勞動,不是聽會的,也不是看會的,而是自己練會的。剛開始,大部分學生上機前沒有編好程序,而是上機時現編程序,白白浪費寶貴的上機時間;有些教師輔導時發現學生的程序有錯,就動手幫助調試,而不是給學生指出錯誤的原因,讓學生明白后自己修改。結果雖然程序調試好了,但學生不知道是什么原因,以后再有錯誤時就依賴教師修改,輔導教師很累,而教學效果并不好,學生和教師都有怨言。針對這些情況,我們要求每個學生上機之前就把程序編好,上機調試過程中有問題要及時問老師,最大限度地利用上機時間;教師輔導時既要認真負責,又要講究方式方法,學生有問題,教師要指出錯誤所在,讓學生明白錯誤的原因,然后讓學生自己改。這樣既可以提高學生的編程能力,又使每個學生的問題都能及時解決。
每做一道實驗題前,教師都會大致解釋題目的含義、用到的知識模塊,有的還要引導學生查閱一些參考資料。每當一個模塊結束后(以一個邏輯結構為一個模塊),我們都要把幾個班的學生組織在一起(平時上課是小班),對已經驗收過的較好程序和普遍存在的問題進行統一講解和總結。通過總結,學生加深對實驗的理解,知其然,也知其所以然。通過融會貫通已完成的各部分實驗,自然引出下一模塊的實驗。
由于現在學生都沒有固定教室,教師沒有輔導的固定地點,我們每周一至周四下午安排一名教師在辦公室答疑,哪個班的學生都可以到指定辦公室問問題,值班教師在辦公室的機器上修改學生的程序,這樣比在教室里單純講解理論的效果要好得多。
2.5加大對實驗環節的考核力度
學計算機的,不動手是學不會編程的,學不會編程也就等于沒有學會計算機,所以要提高學生的編程能力,就要加大對學生實驗環節的考核力度。在“數據結構”課程考核中,平時成績、實驗成績和理論考試成績比例為1∶4∶5。為了杜絕考前突擊復習的現象,我們在第一節課就講清要求,讓學生從上課的第一天起就重視這門課,真正掌握這門課。在實驗環節的考核中,驗證型題目一般要求1周內完成,綜合型題目一般要求2~3周內完成,對于綜合型題目,學生先按2~3人分成一組,每人完成一個模塊,通過接口的調用組成一個完整的程序,最后隨機抽取小組中的一名代表講解編程的設計思路,演示程序執行情況,輔導教師根據完成情況給出一個代表小組的分數。學生要在規定的時間請輔導教師驗收實驗題,過期不驗收,視為自動放棄,本次實驗題沒有成績。
經過七年實驗教學的改革與實踐,我們取得了明顯效果。2007年6月,在哈爾濱工業大學舉行的“東軟杯”ACM/ICPC中國•東北地區首屆大學生程序設計競賽中,我院選派了3支代表隊,結果分獲一、二、三等獎;2007年11月,在計算機學會、高等學校計算機教育專業委員會主辦,內蒙古大學承辦的第二屆ACM/ICPC
大學生程序設計競賽中,我院分獲團體、一、二、三等獎;2008年,在ACM程序設計相關比賽中,我院獲自治區級一等獎、2個二等獎,獲東北賽區1個三等獎、2個優秀獎。
實踐證明,這樣教學改革不僅能激發學生學習的積極性,還能鍛煉他們的團隊精神,讓他們學會軟件開發的整個過程,為他們編程能力的提高、畢業論文設計和走向工作崗位打下良好基礎。
3結束語
從2009年開始,計算機碩士研究生入學考試采取全國統考的方式,“數據結構”是必考科目,而且占分值最大,這更能說明這門課在計算機專業中的重要性。這些年來,我們一直致力于這門課的建設,從教材選用、課程體系建設、師資隊伍、課程教學、實驗教學等各個環節進行了不斷的實踐和探索[5]。我們相信,通過加大對“數據結構”教學,特別是實驗環節的改革和實踐,一定能進一步調動起學生學習這門課的積極性,激勵他們熱愛計算機,熱愛科學,成為IT業的優秀人才。
參考文獻:
[1] 殷人昆. 數據結構[M]. 北京:清華大學出版社,2007.
[2] 王昭榮,曾衛東,魯興萌. 改革實驗教學及管理模式,培養創新型本科人才[J]. 高等理科教育,2007(1):63-65.
[3] 汪沁. 基于“數據結構”實驗的探討和研究[J]. 中國教育信息化,2007(4):17-19.
[4] 徐大華. 程序設計語言教學方法探討[J]. 高等理科教育,2007(1):36-38.
[5] 趙艷紅,邵定宏.“數據結構”教學的探索與研究[J]. 計算機教育,2008(9):131-132.
Reform and Practice in Data Structure Course’s Experimental Aspects
ZHAO Yu-lan
(College of Computer Science, Neimongol University, Hohhot 010021, China)
論文摘要:在建構式教育理論的指導下,以就業需求為目標,針對數據結構教學中教與學目標不明、學習信心和動力不足、編程基礎薄弱等問題,提出建構式的數據結構教學方法,在實際教學中取得較好的教學效果,這些措施也可作為其他計算機專業課程教學的參考。
近年來,在產業界急需大量軟件開發人員的情況下,普通本科院校計算機專業學生的就業率持續走低。網絡、報紙等媒體對計算機本科教育現狀多有批評,甚至出現了大學不如培訓公司的極端觀點,嚴重影響了學生對專業課程的學習興趣、動力和信心。數據結構是計算機專業的核心基礎課程,上承程序設計語言、離散數學,下啟操作系統、編譯原理等課程,其重要性不言而喻。一方面,數據結構學科具有難度大、抽象層次高、概念繁雜等特點,學生很難掌握,更不要說將抽象理論與就業實踐需求相結合。另一方面,國內主流數據結構教材和相應的傳統教學模式側重于培養學生的計算機學科基礎理論素養,而將如何通過組織數據結構教學活動積極推動就業的問題留給了任課教師[1]。這造成了學生學習數據結構的目標不明、信心和動力不足。筆者面向就業需要明確了數據結構的兩大主要教學目標,并在實際教學過程中實踐建構式教育理論,嘗試解決學生對專業認識不清、學習興趣不足、編程基礎薄弱等問題。一些做法得到了學生的認可和配合,成功地激發了學生的學習主動性、在一定程度上培育了學生的創新精神。
1面向就業需求的數據結構教學目標
教育要服務于社會生產需求。數據結構教學也必須緊扣這一根本目標。本節從滿足就業需要的角度闡明了數據結構教學的兩個主要目標:
1) 培養超越具體程序設計語言技巧的編程技術。
現階段是一個傳統的生產生活方式迅速向電子化、信息化轉變的時期。人們需要開發和維護更多、規模更大的計算機系統來滿足生產和生活的需要[2]。這就決定了具有熟練編程技術的程序員在很長時期內都將受到產業界的青睞。大學對學生編程技術的培養始于程序設計語言的教學,如c語言,java語言等。但是現今編程語言繁多,各種新概念層出不窮,常常出現學生無所適從或者質疑某門語言課程已經過時無用的現象。甚至很多教師也在爭論講授何種編程語言。筆者看來掌握編程技術(而不僅僅是語言),回歸編程的本質問題更加重要,無謂地追趕時髦不可取。作為編程語言課程的后續,數據結構教學的重要目標就是幫助學生理解編程的本質、鍛煉編程技術以及學習提高編程技術的方法。
2) 培養圍繞復用的軟件開發方式。
隨著軟件規模的日益增大,軟件開發模式逐漸從“從無到有”的模式過渡到“從有到有”的模式,即復用現有的豐富的軟件資產,開發新的應用系統。事實上,復用的思想已經被廣泛的用于軟件開發實踐之中,從各種各樣的程序庫、軟件開發包、軟件構件、web服務等各種可復用資產已經簡化了軟件開發的難度、提高了軟件開發的效率也極大地改變了軟件開發的模式。數據結構學科本身就是對軟件復用思想的一種實踐,它通過總結大量軟件系統中反復出現的數據結構(如表、樹、圖、集合等),定義和實現處理這些數據結構的基本操作,最終達到能夠在不同項目開發中反復應用的目的。這些基本數據結構和算法已經被實現為可復用的產品隨著程序設計語言,如c++ stl、c# collections, java collections等,并得到了廣泛的使用。因此,數據結構教學的另一個重要目標就是引導學生習慣圍繞復用的軟件開發方式,能夠使用和定制已有的數據結構和算法庫。
其他傳統的數據結構教學目標,如培養學生面向實際問題進行算法設計和分析的能力,培養學生計算機學科的基本理論素養和思維方式等也非常重要。但普通本科院校學生對理論內容的接受能力以及將理論和現實就業需求相聯系的能力相對較弱且教學時間有限[3],筆者認為重點突破本節給出的兩個更具體、更可達的教學目標,并在實現這種具體教學目標的過程中潛移默化地培育學生的計算思維和理論素質,將會取得更佳的效果。
2建構式數據結構教學
教學理論研究以及教學實踐反饋均表明,學生主動學習的效果遠較被動地接受老師灌輸的效果好的多。因此,為實現上述教學目標,在建構式教育理論的指導下,筆者探索并采用了一系列建構式教學措施,激發學生的主動性和興趣,取得了較好效果。
建構主義認為,學習并非學習者對教師所授知識的被動接受,而是學習者以自身已有知識和經驗為基礎的主動建構過程[4]。知識不僅是通過教師傳授而得到,更是學習者在一定的情境中,利用必要的學習資料,通過同化新知識、順化自身知識結構的方式而獲得。建構主義提倡在教師指導下的、以學習者為中心的學習,也就是說,既強調學習者的認知主體作用,又不忽視教師的指導作用,教師是意義建構的幫助者、促進者,而不僅僅是知識的傳授者與灌輸者。學生是信息加工的主體、是意義的主動建構者,而不僅僅是外部刺激的被動接受者和被灌輸的對象。下面從理論教學和實踐教學兩個方面介紹我們采用的一些教學措施。
2.1理論教學措施
課堂教學是數據結構教學活動的主要部分,充分利用課堂教學時間,激發學生學習數據結構的興趣和信心,幫助學生建立學習數據結構的環節非常重要。我們采用了如下措施:
1) 組織小型討論。
好的開始是成功的一半,好的課堂教學須在上課之初就抓住學生的注意力,讓學生帶著輕松、愉快的心情聽課。我的做法是在課堂的前5分鐘,提出一個學生感興趣的話題,組織若干個有3~5位同學參與的小型討論。到一個學期結束時,每位同學都有至少一次的發言機會。討論的主題可以靈活設置,如時事、技術、社會熱點等。有時,課堂中間學生比較疲憊、注意力下降的時候,也可以穿插一點討論,改善課堂環境。大多數學生非常喜歡這種討論活動,積極參與其中,成為課堂的一部分,從被動上課轉變為喜歡上課。
2) 重建理論知識所針對的問題。
國內的經典數據結構教材側重嚴謹的理論,較少討論各種概念、算法出現的背景以及探討的問題是否仍然具有現實價值。而回答這些問題能夠幫助學生重建理論知識所針對的問題原型,重現解決方案的提出、發展乃至最終成熟的整個過程,更有助于培養學生解決實際問題的能力,養成批判性、創新性思考的習慣。眾所周知,關于樹的存儲方法很多,有雙親表示法,孩子表示法和二叉鏈表表示法[5],其中以樹的二叉鏈表表示法使用最廣,但其他存儲方法也有其適合的應用。例如,在利用樹表示各個集合,求集合中的等價類時,雙親表示法更為合適。每一個集合都用樹的雙親表示法存儲時,并設樹的根結點的值為集合名,集合中的每個成員都對應一個結點,這樣很容易找到一個元素所屬的子集(順著雙親指針找樹的根結點)。
3) 組織“我來講”活動。
數據結構涉及很多抽象的概念和算法,初學者很難理解。而教師則對理論內容比較精熟,常常傾向于從理論的角度逐步遞進、展開講解,這就增加了學生的學習難度。教師和學生在教學語言上的鴻溝是影響教學效果的一個重要障礙。教師當然可將抽象的理論概念與生活中更形象的概念進行類比,幫助學生理解,也可以將復雜的算法過程用多媒體動畫模擬出來,直觀地展示給學生,幫助學生掌握。但一方面,根據建構主義理論,教師和學生的知識背景不同,由教師設計概念類比語境和算法模擬動畫實際上仍然是基于教師的知識結構對知識點進行的同化和順化,而不是對學生知識體系的直接建構。另一方面,教師的經驗和智慧有其局限性,未必總能夠找到最適合的類比語境和動畫模擬。為此,筆者采用了充分發揮學生智慧的方法,組織“我來講”活動,要求學生通過設計算法的動畫模擬,創建概念的類比語境等方式進行學習,并隨機選擇學生走上講臺對抽象理論概念和復雜算法進行說明。這樣不但能夠調動學生思考問題,還能幫助那些無法完成自我知識體系建構的同學從學生的視角去理解同一個問題。例如,對于n維數組是元素為n-1維數組構成的線性表這一遞歸的類型定義,可采用符號推理的方式,培養學生的理論素養,而同時可鼓勵學生根據自己的理解將抽象理論具體化,建立幫助理解和記憶的現實語境。
2.2實踐教學措施
數據結構是幫助具有基本編程語言基礎的學生錘煉編程技術的關鍵課程。它揭示了程序設計的基本面,即如何處理相互之間存在一種或多種數據關系的數據元素所構成的集合、如何設計算法并分析算法的優劣。若沒有相應的配套實驗指導學生如何將理論應用于實際問題,只是泛泛而談、紙上談兵,學生容易迷失在數據結構的一連串復雜概念和算法之中,而不知道學習數據結構的意義何在。為實現教學目標,筆者鎖定實驗內容設置和實驗考核等兩個關鍵環節,實踐了如下措施,取得了較好效果。
2.2.1實驗內容設置
實驗內容設置是進行實踐教學的最重要部分。從覆蓋知識點的角度看,實驗內容須面向數據結構教學目標,即實驗內容須能夠鍛煉學生的編程技巧,如算法設計、調試、測試以及調優等能力,還能夠讓學生體會到圍繞復用開展軟件開發的威力以及思路。從覆蓋教育對象的角度來看,實驗內容須面向大多數同學并充分考慮優秀同學,即實驗內容須劃分不同的層次,讓大多數學生能夠很容易入手,并讓有能力、有余力的學生能夠不斷地深入,直至形成綜合型課程設計。
基于以上考慮,并借鑒同行經驗,筆者開展三個層次的實驗教學活動,一是要求所有學生都完成的實驗內容,要求學生采用不同的數據結構實現同一個問題并進行對比分析,例如,分別使用靜態數組和動態分配的連續內存區實現順序表,使用整型、字符型數組或者鏈表實現長整數的乘法,使用帶頭結點或不帶頭結點的循環鏈表模擬約瑟夫環等;二是組織程序設計競賽,讓部分學有余力的同學能夠在算法設計、程序實現和調試、優化等方面得到鍛煉和提高;三是設計綜合型課程設計鍛煉學生解決問題的綜合能力,并通過適當分組,培養學生團隊協作精神和能力,鍛煉學生解決問題的綜合能力的目標,最終達到以點帶面全面提高學生能力的目的。
2.2.2實驗考核手段
考核手段在教學環節中至關重要。考核手段是學生學習和鍛煉自身能力的風向標。為保證每位同學都能積極完成實驗并有所收獲,避免抄襲和敷衍的現象,筆者采取了綜合型的考核手段。其一,提交實驗成果,即程序及其運行結果;其二,記錄實驗過程、分析實驗結果以及總結實驗得失的實驗報告,對實驗報告進行選優講評,培養學生撰寫科學實驗報告的能力;其三,每位同學必須面向教師講解自己編寫的程序,包括主要思路和細節性語法,優秀的同學可走上講臺宣講自己的實驗方案和程序設計技巧。這就基本杜絕了學生相互之間抄襲程序和實驗報告的現象,使得學生真正能夠思考問題,并盡力動手完成實驗。綜合上述三種手段的綜合型考核方法既能夠達到督促大部分同學完成實驗、鍛煉動手能力目的,又能夠達到培養優秀同學的目的。特別地,優秀同學宣講活動能夠使學生觀摩到如何從學生的視角從無到有的解決問題的過程,這能夠培養學生解決實際問題的信心并激發其學習積極性。
3應用中遇到的問題
建構式教學模式在應用和推廣過程中遇到的主要問題來自三個方面。其一,目前學生的課業負擔較重,習慣于被動“填鴨”而不習慣于主動“求索”,這是推動和開展建構式教學模式的主要障礙。其二,建構式教學活動,需要師生的密切交流,但現有師資不足難以滿足實際需求。一個可能的解決方法是綜合多門課程和多個老師,建構整體的知識框架和學習體系,避免課程教學中的重復勞動,提高師資的利用率。另一個可能的解決方法是利用互聯網技術,建立在線教學園地。其三,建構式教學模式仍然處于探索階段,各學科缺乏建構式教學素材。從筆者在實踐教學的體驗來看,應盡量從學生的學習背景和能力成長規律出發而不僅僅是從學科背景出發,為學生建構知識體系設計更平滑的路線。
4結語
筆者提出將“培養超越具體程序設計語言技巧的編程技術”和“培養圍繞復用的軟件開發方式”作為普通本科院校的數據結構教學目標,在建構式教育理論的指導下,設計并實踐了一系列建構式教學措施,分析了應用建構式教學模式所遇到的一些問題。
未來將開展兩個方面的工作。一是通過問卷調查、統計分析等手段定量地分析建構式教學方法的實際效果;二是創造和積累建構式教學素材,如研究數據結構課程設計過程中不同類型學生的知識建構路線,挖掘并推廣其中優秀的知識建構方法。
參考文獻:
[1] 教育部高等學校計算機科學與技術教學指導委員會. 高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行)[m]. 北京:高等教育出版社,2006:8-101.
[2] 蔡敏,鄭尚志,梁寶華.“數據結構”課程教學改革之我見[j]. 計算機教育,2009(4):50-51.
[3] 揭安全,李云清,楊慶紅,等. 項目教學模式指導的“數據結構與算法”教學改革[j]. 計算機教育,2008(22):21-23.
摘要:“數據結構”課程是計算機學科的專業基礎課,是一門實踐性比較強的課程。課程中的實驗環節顯得尤為重要,該環節可以鍛煉和提高學生對復雜程序的設計能力。筆者在多年的教學過程中摸索出實驗環節的教學模式,與大家共同探討。
關鍵詞:數據結構;教學內容;組織形式;考核方式
中圖分類號:G642
文獻標識碼:B
利用計算機來解決實際問題的步驟是:給出問題描述,將問題抽象成數學模型,根據數學模型寫出求解問題的算法,再根據算法寫出程序代碼,最后上機調試并分析結果。在上述過程中,非數值的數學模型是數據結構研究的主體,它操作實現主要是通過數據結構的實驗教學環節來完成的,在該教學環節中作為教學主體的學生,首先要具備抽象思維能力和語言基礎。往往在環節實施過程中,語言基礎是薄弱環節,以至于課時用完了,學生還是寫不出滿意的算法及代碼。鑒于此,我們在教學內容、組織形式、考核方式等教學環節中進行了一些設計,與大家一起來探討。
1教學內容
我們在教學內容上,圍繞課內、課外兩條主線進行改革,給學生較大的自主學習空間,有利于學生創新精神及實踐能力培養。整個實驗教學由淺入深,重在基礎、提高能力、挖掘潛力、拓展思路。在課時內的教學主要以基礎性實驗為主,安排一個綜合性實驗;課時外的教學主要以設計性實驗和綜合性實驗為主。
1.1學時內的教學內容
在我校數據結構課程共64學時,理論課48學時,實驗課16學時。安排了5個實驗項目,由于多數學生語言基礎不算太好,特別是指針的運用和結構體的定義是薄弱環節,所以在做實驗項目時,主要是從教材上的算法出發,使得學生有章可循:
項目1:順序表的操作
主要訓練學生對順序存儲結構的理解,掌握順序表的查找、插入和刪除等基本操作;同時引導學生對于靜態參數傳遞和動態參數傳遞的使用方法。
項目2:單鏈表的操作
主要是與順序存儲結構進行比較,完成線性表在鏈式存儲結構上的查找、求長度、插入、刪除等基本操作。
項目3:棧和隊列的應用―停車場的管理
深入了解棧和隊列的特征,以便在實際問題背景下靈活運用;利用兩個棧和一個隊列模擬停車場管理及相關操作。
項目4:二叉樹的遍歷
掌握二叉樹的結構特征,以及二叉鏈表存儲結構的特點;掌握二叉樹三種(先序、中序和后序)遍歷方法;熟悉并且掌握遞歸算法。
項目5:折半查找和快速排序
掌握折半查找和快速排序的方法,掌握要進行折半查找應該采取的存儲結構形式。并進行對其進行時間復雜度的分析。
對于每個實驗項目的實驗目的和實驗要求,提前2周放在教學平臺上。在實驗前1周,利用輔導課時間,以測試的形式,讓學生寫出算法代碼,由于每個實驗基本上可以在教材中找到源代碼痕跡,所以難度不大。
在實驗教學過程中,采用任務驅動式的教學模式,首先從總體思路上講解10分鐘左右,邊輔導邊發現問題,每半個小時總結1次。由于學生已經在課前作好了準備,在實驗室里他們贏得了更多的自主時間用來調試程序,分析結果。學生水平參差不齊,在上課過程中穿插實驗驗收考核,考核的形式是現場寫出主要操作的代碼,在規定的時間內進行調試、分析。驗收完一個模塊,學生再進行下一個任務。教師通過講課、輔導、驗收使得實驗課堂充實起來,由于學生每個時間段都有活干,所以課堂氣氛非常活躍,討論熱烈。
1.2學時外的教學內容
在學時外,以課程設計的形式,利用開放實驗室時間,嚴格按照軟件工程的思想進行訓練。
在課程設計時,教師列出多個設計課題,每個課題都有相應的要求或說明。各課題的難易度是有差異的,每個課題后以標準分的形式標出了難易度。例如:
課題1:設有n個人圍坐在圓桌周圍,現從某個位置m(1≤m≤n)上的人開始報數,報數到k的人就站出來。下一個人,即原來的第k+1個位置上的人,又從1開始報數,再報數到k的人站出來。依此重復下去,直到全部的人都站出來為止。試設計一個程序求出出列序列(難易度90)。
課題2:用遞歸算法和非遞歸算法實現下面問題,并比較其算法優勢。把一只老鼠放進一個無蓋的大箱內, 箱內設置若干隔板,使老鼠走動的方向受到阻礙,看其如何找到一條通道,走出大箱(難易度80)。
“難易度90”表示設計中的各項全部達到要求時的最高得分大致為90。因此,參加課程設計的學生首先要了解設計的任務,仔細閱讀各題的設計要求,然后根據自己的基礎和能力情況從中選擇一題。一般來說,選擇課題應以在規定的時間內能完成,并能得到應有的鍛煉為基本原則。課程設計的總體思路是:數據模型選取構造求解算法選擇存儲結構編寫程序代碼調試測試總結分析。
在做課程設計時,不再拘泥于語言環境的限制和存儲結構的限制,主要鍛煉學生的開放思維能力和綜合知識的應用能力。同時,引導學生從結構化程序設計到面向對象程序設計的思考。例如學生正在學習C#,在做課題1時,除了傳統的設計方法外,可以引導學生畫出類圖和順序圖,寫出C#的代碼。
設計結束后要寫出課程設計報告,以作為整個課程設計評分的書面依據和存檔材料。主要包括:需求分析、概要設計、詳細設計、調試分析、用戶使用說明、測試結果、參考文獻等。課時外的訓練主要是為畢業設計打下基礎,同時也培養了學生的團隊協作精神。
2組織形式
2.1學生的組織
對于學生進行分組,每組中按照好、中、差的學生進行搭配。由于學生水平參差不齊,早做完的學生,進行考核驗收。驗收合格,同時給出相關思考題,可以再對于思考題進行進一步的思考,鍛煉創新精神。同時,讓已完成任務的學生輔導未完成任務的學生,這樣培養了學生的團隊協作精神,課堂氣氛非常活躍,激發了學生學習的主動性。對于教師的工作也減輕了一些,教師主要是總體部署,分步考核,可以有充足的時間進行驗收,比較清楚地掌握總體情況,以便講評。這樣組織學生,可以解決“優等生吃不飽,差等生吃不了”的局面,實現了“因才施教”。
2.2內容的組織
對于每一個實驗項目的實驗目的、相關要求等,以實驗指導書的形式與學生見面,一本好的實驗指導書能給學生的上機實驗帶來事半功倍的效果。
首先,讓學生明確實驗目的和要求。每個實驗項目都給出了實驗目的,并且提出了具體要求。有了實驗目的,學生才有方向性;有了具體要求,學生實驗時才有章可循。對于要求,要按時間分塊執行。比如單鏈表的操作為2學時,第一個學時完成建立、查找、部分主函數工作;第二學時在第一學時基礎上完成插入、刪除操作,完善主函數。每一個學時在最后進行驗收,若有問題通過小組完成。
其次,讓學生掌握實驗步驟。每一個實驗項目按照軟件工程的思想去組織,先需求分析,抽象出數據結構模型,再明確數據類型,詳細設計,最后給出類C語言的算法描述。要求學生要嚴格遵循實驗步驟來思考問題,這樣,可以培養學生良好的工作作風和解決問題的方法,并且為后續課程做準備。
3考核方式
市場經濟體制下的學生不如計劃經濟體制下的學生好教育,特別目前高校擴招,入學的學生素質參差不齊,基礎相對薄弱,自學能力不強,不少學生在學習上存在畏難心理。而對于高等教育也不能降低要求,這樣就要求在教學模式上進行革新,我校對教和學提出兩個轉變,“變學生管理為學習管理,變管理學生為服務學生”。對于課程教學,不能再采取應試教育下的考核形式。鑒于此,在數據結構的教學過程中,特別是實驗教學,探索出了新的考核形式。
分數對學生來說是非常重要的,以此作為課程管理的抓手。對于教學計劃內的實驗項目成績分成兩個部分,一個是個人成績,一個是小組成績。個人成績主要考核學生個人能力,小組成績主要是考核學生的團隊協作精神。對于個人成績考核形式有兩個方面,一個方面是學生的程序代碼調試技能的測試,一個方面是書寫實驗報告,從實驗報告上可以考查學生的邏輯組織能力。筆者把該考核模式稱為“實驗2+2”模式。每個實驗項目結束前進行驗收考核,經常進行階段性考核,主要是激發學生的學習興趣,保證了課堂教學紀律,基本沒有缺勤的學生,讓學生找不出來不學習的理由,因為每處都與成績掛鉤,都在拼命的去“掙分”。
對于課程設計部分,實驗室開放時間結束時,由學生提交課程設計源代碼和設計總結報告。源代碼提交時,要生成可執行文件,對文件進行壓縮,壓縮文件名為“學號+姓名”形式,發送到指定郵箱地址。課程設計成績根據學生設計任務完成情況、設計報告、設計成果的質量以及答辯情況綜合評定。完成情況主要包括:功能實現情況和程序設計情況;設計報告包括課程設計報告格式,課程設計思路及設計過程,以及對設計的自我評價,收獲和體會等;答辯要求思路清晰,模塊關系清楚,回答問題敏捷。
對于學生的學業成績采用結構化成績,把100分不再作為一個整體看待,把它融進教學的全過程中去。學生的學業成績由平時成績、副卷成績和主卷成績構成,平時成績占20%,副卷成績占20%,主卷成績占60%。在平時成績中課程設計10分,作業和平時課堂表現5分,小考5分;副卷成績中個人成績15分(其中程序調試10分,實驗報告5分),小組成績5分。
4結論
通過實施驗證,效果是良好的。實驗的創新也帶動了整個課程的進步,特別是上課出勤率,基本上是全勤。課堂氣氛活躍,問題討論熱烈,學生的學習主動性大大提高了,網絡教學平臺登錄次數明顯增多。在問題答疑和考核驗收方面,雖然增加了教師的教學工作量,但是提高了教師的工作熱情。真正實現了“教”和“學”的良好互動,提高了教學質量。
參考文獻:
[1] 周蘇. “數據結構與算法”的教學改革和實驗創新[J].計算機教育,2007,(15).
關鍵詞:建構主義;重點課程建設;彈性內容體系;網絡化協作學習;基于興趣的學習
近年來,隨著軍隊信息化建設步伐的加快,各軍校都致力于信息類專業的建設[1]。作為信息類專業基礎課程和專業課程的結合點,“數據結構”的重要性不言而喻,我院也于2009年確定了“數據結構”重點課程建設,教學對象主要是生長軍官學歷教育指揮類學員。以建構主義教學理念[2]為指導,將“教員引導下的學員自主學習”教學思想貫徹于課程建設的全過程,把握合理的課程教學體系建設,是本重點課程建設的主要特色。下面,我們將就體現該特色的具體實踐過程及其所包含的教學內容體系建設、教學方法改革以及教學團隊建設等組成環節進行闡述。
1教學內容體系建設
在課程教學體系中,教學內容是基礎,不同的教學內容決定著不同的教學形式與方法,對于學員的知識能力建構的效率和效果也有著不同的影響。目前,各高校普遍壓縮了專業基礎課教學課時,因此,為了讓學員在有限的學時內進行有效的學習,我們必須首先考慮課程教學內容體系建設問題。
一般講,“數據結構”課程包括線性結構、樹型結構、圖狀結構、查找與排序等內容,并以抽象數據類型、算法度量與評價貫穿其中[3]。各類院校根據其人才培養方案及學員特點,在課程內容組織上也有明顯區別:有突出數據邏輯結構的,有側重算法實現及度量的;有用C語言描述的,有用C++或Java描述的。結合我院信息類專業課程體系設置以及學員特點,根據ACM/IEEE CC2005[4]和教育部CCC2006[5]學科規范,我們在課程內容體系建設方面主要實施了以下幾點措施。
1.1采用彈性課程內容體系
由于“數據結構”課程課時有限,本院數據結構課程僅為50學時,課程內容設置不可能面面俱到,必須結合建構主義思想及學員的具體特點確定教學內容。在此次課程建設中,我們在課堂講授和實踐教學環節中均采用了彈性內容體系,在課程講授內容設置上,我們主要采用了“基本模塊”+“擴充模塊”的體系,其中“基本模塊”包括算法度量基礎、線性結構、字符串與模式匹配、樹、圖、排序、檢索等7個模塊共16個二級知識點,要求教員必須全部講解完成;“擴充模塊”則包括廣義表、AVL樹、倒排序及一些前沿應用譬如XML的DOM樹、OWL的分類樹等,由教員根據學員學習情況靈活掌握實施。
在實踐教學環節,我們采用分層次的實驗內容體系,自主編寫實驗教程,設立驗證性實驗、提高性實驗、課程設計等三層次實驗要求。其中最基礎的驗證性實驗指課本知識點的具體實現,譬如,線性表存儲結構以及其插入、刪除、替換、檢索等算法的實現等,側重加深學員對基本數據結構的理解以及基本編程能力的培養;提高性實驗則從實際問題解決出發,綜合2至3個數據結構的應用或對相關數據結構的算法擴展等,譬如銀行的多窗口排隊服務,多叉路口車輛調度等問題,需要將現實世界抽象成數據模型并應用相關數據結構的知識解決,有一定建模與實現難度;實驗內容體系的頂層是課程設計,以一定規模的實際問題解決為目標,以具體任務為驅動,覆蓋數據結構的多種模型,鍛煉學員抽象建模和解決問題的能力。根據學時的要求及數據結構教學目標的把握,共計設計了20個實驗,其中驗證性實驗12個,提高性實驗7個,課程設計性實驗1個,要求學員在數據結構實踐過程中至少完成15個實驗,包括12個驗證實驗,任意4個提高性實驗以及參加課程設計。
1.2采用C++結合STL(Standard Template Library)框架的描述方法
根據CCC2006的建議,選擇面向對象語言C++作為數據結構描述語言,從數據結構的邏輯描述到物理存儲及算法實現過程均采用面向對象的分析與設計思路;同時考慮到主流編程語言C++、JAVA及C#等都不同程度地應用了STL框架并提供了常用的數據結構類,譬如Vector、List、Set、Stack、Queue等,在數據結構課程內容中增加了對于主流語言中常用數據結構模板類的分析與編程,以增強學員對數據結構應用的理解。例如,對于STL中的Vector類,其實現功能為大小可動態增長的數組。教學中不僅僅要求學員能夠應用該類型,同時要求能夠分析理解該類型,譬如要求學員找出其動態增長性實現的代碼段,并對其插入、刪除算法進行歸納總結等。通過分析STL框架相關類的實現,擴展講解面向對象思想與概念在實現該類過程中的應用,以提高學員面向對象分析與設計能力。
1.3規范化的教學文檔建設
教學是否符合先進的教學理念,是否采用了合理的教學方法,我們從教學文檔中就可以看出來,教學文檔的形式十分重要,而更重要是教學文檔的內容。在本次課程建設中,我們采用了規范化的模板,對課程標準、課程設計、教學計劃、教學大綱、教案等進行了統一的設計與規范。譬如,在教案設計中,哪些內容易于CAI展現,哪些內容適合傳統板書,我們都進行了仔細研究。譬如概念定義、背景知識、計算結論等,可以擬制要點并進行文本展示;公式定理推導過程如二叉樹的性質推導,必須進行板書;原理與過程展示如遞歸過程分析、樹的遍歷、排序過程等,推薦使用動畫。同時,我們要求教員授課時必須將教材、課件、教案、教學實施表(包括課程標準、大綱、計劃)等文檔備齊并通過教學組審核。課建組認為:嚴格規范的教學文檔看似傳統的要求,實則是課程教學是否成功的前提條件。譬如,課程標準體現了課程的知識體系,即知識建構的基礎;教學計劃、課程設計與教案則體現了知識的傳遞體系,即合理地引導學員完成知識的掌握與新知識的建構。通過教學文檔建設,提高了課程教學的規范化。
2教學方法改革
在本次“數據結構”重點課程建設中,教學方法改革是研究重點。傳統“教員教,學員學”的方法已不能適應“以學員為中心”的學習需要;而照本宣科式的“PPT課件播放朗讀”已嚴重束縛了學員學習過程中的主動性與創造性,與素質教育目標背道而馳。對此,我們在本次課程建設中以建構主義理念為指導,結合“信息化教學”的特點,提出了“網絡化協作學習方法”、“基于興趣的學習模式”兩種教學方法并進行了研究嘗試。
2.1網絡化協作學習方法
“網絡化協作學習”是一種以WEB網站和信息資源為依托的新型學習方式[6],在信息資源平臺面前,教員和學員、學員和學員之間更加平等,它提高了學員的學習自主性,有利于以學員為中心的學習。在“數據結構”重點課程建設中,我們通過引入“網絡化協作學習”,引導學員在課后進行有效的自主學習,從而達到能力培養的要求。在“網絡化協同學習”教學方法實施過程中,我們始終把握兩個要點:網絡課堂的開設與網絡化協同學習的實踐。
2.1.1信息資源建設與網絡課堂開設
開設網絡課堂主要依賴網絡教學平臺和課程信息資源。此次“數據結構”網絡課堂建設采用了總部統一配發的網絡課程教學平臺,該軟件平臺不僅提供了章節知識點的構建、關聯、、檢索,而且可以通過公共信息、小組信息、點對點的信息支持交互,該平臺能夠較好滿足教員與學員之間、學員與學員之間的協同學習。基于該網絡教學平臺,以“數據結構”課程的內容體系為依據,課題組將該課程的章、節、知識點進行了統一的組織,不僅設定了章、節、知識點的隸屬關系,還以數據的邏輯結構為線索,將相關知識點進行了關聯,形成了“數據結構”課程的知識網,這樣做有利學員整體把握該課程;同時,為每一章、節都設置了教學目的、學習方法、學習進度、習題參考、實驗練習等欄目,這有利于學員進行自主學習。
2.1.2網絡化協同學習方法實踐
信息資源的建設是基礎,而基于信息資源的“網絡化協作學習”實踐則是該教學方法改革的重點。 “網絡化協作學習”方法實質上是一種建構主義理念指導下的信息化教學方法,它即不同于遠程教育模式,也有異于絕大多數的自學網站,“網絡化協同學習”強調在教員引導下的學員自主學習和協作學習。在該方法學習中,教員是“導演”,是“總指揮”,教員需要完成學習場景組織、學習進度管理、學習效果評價等活動;學員則可扮演“演員”與“分隊指揮”雙重角色。作為“演員”,學員需要提出學習計劃、實施自主學習;作為“分隊指揮”,學員需要組織學習小組、分解學習任務、合成工作成果。
例如,針對模擬實現XML解析器這樣的實際應用問題,教員的活動應包括:1)提出應用問題:模擬實現XML文件的DOM存儲機制(要求模擬程序能讀入、存儲XML文件并將XML文件中節點關系按樹型顯示);2)提示講解內容:XML文件的DOM存儲原理;3)提示學習任務:樹型結構的邏輯表示與存儲方法、樹型結構的遍歷、樹型結構的顯示;4)分配任務給各學習小組,明確學習進度要求;5)驗收并講評學員實驗報告等。學員的活動應包括:1)學習任務計劃;2)樹型結構相關知識學習與交流;3)XML解析器設計;4)XML解析器實現;5)撰寫并提交實驗報告和相關代碼。以上學習活動,主要通過網絡課堂所提供的信息、信息瀏覽、BBS、文件傳送進行支持,并通過教員策劃組織、學員協作實施的方式完成,是一種有效的“網絡協作學習”方法。
2.2基于興趣的學習模式
“基于興趣的學習模式”以教育心理學為理論基礎,結合“數據結構”課程內容特點,從課程引入、課程展開以及課堂氣氛營造等方面進行以提高學員學習興趣為目標的相關方法研究。該模式的詳細論述見文獻[7],此處作一簡介。
在課程引入階段,我們將“數據結構”與學員所學專業領域問題相結合,讓學員認識到學習“數據結構”課程的現實意義,引發學員的學習興趣。在課程展開階段,我們采用“循序漸近式教學”與“任務驅動式學習”兩種方法增強學員學習興趣。“循序漸近式教學”主要指重視先導課與當前課程的銜接,讓學員“能夠學”;而“任務驅動式學習”則通過應用情景創設提高學員學習知識、解決問題的興趣,讓學員“有興趣學”。“基于興趣的學習模式”的第三個主要措施即課堂氣氛營造,通過多種方法譬如小組競賽、知識競答、結對互助活躍課堂學習氣氛,使學員“樂于學”。
3教學團隊建設
加強教學團隊建設是重點課程建設一項重要內容。教學隊伍建設的質量,直接關系到課程教學的質量和人才培養的水平。因此,在課程建設初期,我們根據教研室和課建設小組的具體情況制定了“引進
來,走出去”的教學團隊建設策略和具體的教員培養計劃,在兩年內引進教員2~3名,送學培養2~3名。目前,我們已引進3名具有碩士學位的教員,其中1名教員加入課程建設小組;選送2名教員攻讀博士,1名教員攻讀碩士學位,其中,1名脫產2名在職;我們還通過短期培訓的方式選送教員學習相關專業知識,拓寬視野;通過參加學術會議的方式選派教員參與交流,學習兄弟院校的先進經驗。上述措施使教員整體業務水平有了明顯提高,教員隊伍培養計劃圓滿完成。此外,通過課程建設活動,我們培養了一批年輕教員,其中有些教員已成為教學骨干。在兩年的課程建設中,我們大膽啟用年輕教師,每年都有意識地安排部分年輕教員承擔“數據結構”的課程教學任務,積極推薦和支持他們參加院舉辦的各類教學競賽活動,并指派經驗豐富的老教員進行跟蹤指導。在這些年輕教員中,先后有5人在課件制作、教學研究以及優質授課比賽中獲獎,并取得了一定成績。
4結語
此次“數據結構”重點課程建設以建構主義教學理念為指導,在教學內容、教學方法、考核方式及教學團隊等方面進行了改革與實踐,特別是一些改革后的、具有通用性的內容和方法,如“數據結構”課程彈性內容體系、基于興趣的“數據結構”學習模式以及網絡化協作學習方法在本次課程建設得到應用,它為下一階段的軟件基礎類課程群的建設打下了基礎。
參考文獻:
[1] 候喜貴. 軍隊信息化建設研究[M]. 北京:出版社,2002:17-19.
[2] 張建偉,陳琦. 從認知主義到建構主義[J]. 北京師范大學學報:社會科學版,1996(4):75-82.
[3] 嚴蔚敏,吳偉民. 數據結構(C語言版)[M]. 北京:清華大學出版社,2001:2-3.
[4] ACM/AIS/puting Curricula 2005[EB/OL].(2007-05-08)[2010-12-20]./education/
curric_vols/CC2005-March06Final.pdf.
[5] 教育部高等學校計算機科學與技術教學指導委員會. 高等學校計算機科學與技術專業發展戰略研究報告暨專業規范(試行) [M]. 北京:高等教育出版社,2006:38-40.
[6] 陳文漢,張建奇. 高等教育網絡化教學研究綜述[J]. 比較教學研究,2003(9):46-52.
[7] 張立,王偉嘉,石巖,等. 基于學習興趣開展數據結構教學[J]. 計算機教育,2010(13):95-97.
Key Course Construction for Data Structure Base on Innovative Teaching Ideology
ZHANG Li,SHI Yan,ZHANG Hongping,WANG Weijia,YU Congbin
(Department of Logistical Information Engineering, Logistical Engineering University, Chongqing 401311, China)
【關鍵詞】數據結構與算法 實驗改革 平臺建設
【中圖分類號】 G 【文獻標識碼】A
【文章編號】0450-9889(2014)07C-0132-03
數據結構與算法實驗是計算機專業學生必修基礎課數據結構與算法的配套實驗課程,是培養學生程序設計技能必不可少的重要環節。其目標之一是培養學生能運用理論知識與算法技術分析解決實際問題,能運用高級程序設計語言編程實現算法。從近年實驗情況來看,在上機編寫程序實現具體算法時遇到的種種問題,效果不容樂觀,學生很難按時完成實驗所要求的內容。
一、實驗教學存在的問題與分析
數據結構與算法實驗是一門實踐性很強的技術基礎課,經過多年實驗教學分析,發現普遍存在如下主要問題:
(一)課程抽象,實驗難度大
數據結構具有一定的抽象性,學生面對抽象概念在學習過程中常會遇到困難,基本每本理論教材在呈現概念時都會受到多方面限制,比如篇幅的限制,省略了算法細節部分或只給出偽代碼,由學生自己補充,學生需要將算法用程序設計方法實現,完成有一定難度和技巧的程序設計并上機調試運行。對編程基礎稍微薄弱的學生來說,就會出現不小的困難。
(二)實驗相關資料偏少
由于學生基礎薄弱,實驗前又沒有更多的相關實驗資料進行預習,僅靠看課本理論和實驗時的幾個學時難以完成實驗所要求的任務,也就談不上創新人才的培養。
(三)學生程序設計語言課程基礎薄弱
數據結構與算法課程是第四學期開設,對于很多先修課程要求高,高級程序設計語言是大學生進校第一、二學期學習,第一學期學習過程序設計思想,第二學期學習面向對象程序設計思想,由于大部分同學高中沒接觸過計算機語言學習,對過程程序設計思想還沒掌握透,第二學期的面向對象程序設計學習又開始,學習非常吃力;導致常用的一些語法結構,如指針和結構體等內容難于理解。而這些語法恰恰是程序設計語言教學時的難點,也正好是學生完成數據結構實驗必須掌握的內容,這給部分學生學習帶來了一定困難。
(四)編程語言難
數據結構與算法編程語言描述主要用到C++語言,并大量用到了指針、鏈表和結構體等運算,這部分內容正好是大多數學生掌握知識點薄弱的環節,導致學生很難用高級語言將教材中的算法描述出來,由于問題的堆積、實驗的欠賬,容易使學生喪失學習興趣和信心,導致學生間抄襲程序或實驗報告的現象。
(五)編程技巧差
普通學生在低年級只編寫過功能單一、結構簡單的程序;而從功能單一的簡單程序向涉及算法和稍復雜程序的數據結構編寫過渡學習時,需循序漸進的方式和細致的引導,緊密結合理論教學。學生一下從簡單編程直接到復雜的程序設計,不僅不適應,且設計技巧性較差。
二、實驗教學改革目標的提出
根據以上學生實驗時出現的諸多問題,特提出該課程的實驗改革目標:
一是緊密配合理論教學,通過相關實驗,幫助學生加深對數據的邏輯結構、存儲結構、算法思想和具體實現等各個環節的整體理解,強化學生“結構――算法――編程”三者密切相關的意識,讓學生思考和發現利用數據結構解決實際應用問題的有效方法,從而使學生分析和解決問題的能力得到鍛煉和提高。
二是因材施教,讓原本不同水平和能力起點的學生通過數據結構實驗,能力和水平都有所提高,并且有興趣有信心學好數據結構課程。
三是培養學生多方面能力,比如團隊精神,口頭表達能力,對學生全方面發展起到較好的推動作用。
三、調整實驗項目內容,使其更加符合學生的認知規律
數據結構與算法實驗內容主要是編程實驗,提高學生的實踐編程能力,鞏固和強化理論課的教學效果。為了保證和提高實驗教學質量,加深對課堂知識的理解,培養學生動手能力和思維能力,嘗試對數據結構與算法實驗項目進行重新設計,主要內容有:
針對編程基礎較薄弱的學生,我們開發了數據結構與算法實驗教學平臺,學生在該平臺上可獲知實驗相關的更多內容,通過平臺引導學生重點回顧程序設計語言的基礎知識,特別是數組和指針等有關操作。通過這些輔助手段,使學生對將要編寫程序的一些語法和程序規則有所復習和掌握。還可通過平臺對實驗原理的動畫演示,得到幫助和啟發,從而更好更快地完成實驗內容。
每個實驗內容以章節為單位安排,依據實驗教學目的,針對計算機相關專業所要達到的不同實驗教學目標,以及考慮學生個體差異,每個實驗項目都設置基礎必做題和附加選做題兩部分內容。這兩類實驗都需要緊密結合理論教學。必做題相對簡單,目的在于幫助學生掌握基礎知識。對于該部分題目,學生容易完成,能提高學生學習積極性并增強學習信心;選做題針對學有余力的學生,各個實驗項目中的必做題均設計詳細的實驗準備內容,用于引導學生更好地進行實驗前預習準備工作;主要在于培養和鼓勵學生的學習興趣和擴大知識面,進一步培養學生應用能力和創新意識,保證基礎弱的同學學習興趣,也提高了編程能力強的同學動手能力。例如,與線性表一章理論教學相配合的實驗項目是多項式加減法,這個實驗是對線性鏈表的建立、插入、刪除、遍歷等進行綜合運算,對數據結構與算法第一實驗內容來說稍有難度,可作為選作題或增加實驗學時。在與棧一章理論教學相配合的實驗項目是迷宮,這部分實驗內容要求掌握回溯法和棧的基本運算等知識,有一定難度;用括號匹配作為必做題,能培養學生獨立鉆研,有助于學生解決問題能力的訓練。
四、實驗教學方法探究
實驗前學生必須先預習和熟悉實驗教學平臺,了解實驗內容的目的和要求,理解算法,描述語言的語法,查看相關資料,寫預習報告。
通過多年實驗教學中實驗完成情況分析,軟件工程專業的學生語言掌握較好,大部分學生能按時完成實驗項目,其它專業的學生實驗完成情況較差;由此,實驗編程語言可以因學生而異,除軟件工程專業的學生采用面向對象程序設計C++外,其它專業主要采用C語言描述,并且可增加前期語言學習時間。只有編程語言掌握扎實,數據結構與算法實驗才能很好地完成。
開發數據結構與算法實驗網絡教學平臺系統,該平臺主要包含有課程介紹、在線課程、互動學習、下載資料等模塊。有針對性地對每一個實驗項目進行詳細講解和實驗原理分析的動畫演示,將抽象的數據結構問題制作為教學動畫,借助形象的案例理解抽象的概念。教學內容利用Web頁面為基本元素出現在站點中,學生通過訪問站點來進行交互式學習。以輔助學生自主學習為主要目的,解決學生實驗時無從下手的局面,啟發學生思維,促進學生程序設計能力的提高。平臺系統流程圖如圖1所示。
在線課程是教學平臺核心部分,也是學生對數據結構與算法實驗加深理解的重要環節,該平臺從實驗預習,到實驗原理算法的演示,再通過在線課堂的視頻教學、在線測試題訓練及各種原理進行拓展教學。為了方便學生學習較抽象的數據結構與算法,能順利進行程序編寫,該教學平臺還包含有18個flas用于原理算法演示,主要包括棧和隊列、線性表、遞歸、查找與排序、樹、圖等內容,每個flas都有實驗原理及主要代碼實現過程,能更加形象展示數據結構的原理。例如:棧是一種先進后出的數據結構,在對棧原理進行動畫設計時,根據用數組實現棧的特點,采取對棧先進行初始化的代碼模塊來對棧進行初始化,之后運行相應代碼模塊觀察壓棧出棧過程,同時還能觀察到棧中數據的變化。在大部分flas演示過程中,flash頁面左側是代碼部分,能體現當前執行的代碼,并與右側的動畫演示及講解分析一一對應。演示過程中如用戶需要重新開始,還可點擊“重新開始”按鈕。這些flas演示將代碼與動畫有機的結合在一起,將抽象的代碼轉換為有形的動畫,大大方便學生學習和對實驗內容的理解。
如對棧原理進行動畫演示的flash點擊界面中壓棧代碼動畫效果,該動畫效果包括等待入棧的數字入棧的動畫效果和位于等待區域的數字前移的動畫效果。等待入棧的數字、入棧的動畫效果和位于等待區域的數字前移的動畫效果如圖3所示。
圖3 壓棧的動畫效果圖
該平臺互動學習是一個教師和學生互動的場所,實現動態交互的功能,教師能添加、更改、刪除各種資源,學生、教師可以查看各種資源庫里的資源。同時,學生可從平臺上下載練習題和測試練習題資料,練習題有主要算法描述,可幫助學生進一步理解每個章節的算法原理,測試練習題有自動報錯功能。
五、改革數據結構實驗考核方式
讓學生對以前所做實驗作一個分析和總結。具體操作方案如下:首先將學生自由分組,小組成員共同從以前做過的實驗項目選做題中選擇一個進行程序的分析設計和編碼實現,要求考慮程序的編寫規范,程序的執行效率等方面。考核時,由實驗教師從該小組隨機抽取學生到講臺進行講解和演示,根據程序完成情況和學生演示情況,決定該小組成員的平均得分,而每位學生的具體得分由小組成員內部根據該學生在該程序實現中的工作情況決定。通過這種方式,能培養學生的團隊意識,達到互學互助的效果,同時也鍛煉了學生的表達能力。
數據結構與算法實驗環節教學改革的創新之處在于依托一門編程語言以及所開發的實驗教學平臺,因材施教,根據不同專業實際情況,綜合考慮進行實驗項目、實驗內容和實驗準備的合理設置,幫助學生在實驗課上找到自己的最好學習方式,提高實驗教學質量。
【參考文獻】
[1]吳兵.高校計算機文化基礎課程網絡學習題庫的研發[J].實驗技術與管理,2011(2)
[2]朱洪浩.數據結構課程“工程化”實踐教學模式研究[J].赤峰學院學報(自然科學),2013(15)
[3]馬曉波,王翠茹.《數據結構》實踐教學改革探討[J].內蒙古農業大學學報(社會科學版),2010(02)
一、完善的實驗課計劃和提綱
上機實驗計劃是實驗課的總體安排,包括實驗題目、時間、地點、課時分配、實驗次數、硬件和軟件環境等內容,以便任課老師和實驗室管理人員之間能夠很好地配合,提前安排上機實驗的有關事項。每一次上機實驗都要有實驗提綱,實驗提綱格式為:1.實驗題目;2.實驗目的;3.實驗要求;4.實驗內容;5.實驗步驟及注意事項;6.實驗思考題。實驗提綱必須和實驗計劃一起編制,兩者協調一致,實驗提綱是實驗計劃的具體內容和實施細則。在教學中不管是哪個老師上這門課,都要按照統一的實驗計劃和提綱進行實驗,學生在實驗提綱的指導和安排下上機,完成實驗課程,根據實驗提綱執行情況書寫實驗報告。教師也是按實驗提綱的要求來檢查實驗結果,評定學生成績。因此,教師在進行實驗提綱編制時對每門課程的每一次實驗課都要有周密的安排,進行精心的設計。
二、計算機實驗課程的準備工作
計算機實驗課程的準備工作是非常繁瑣同樣也是非常重要的,通常包括以下幾個方面的工作:
1、硬件環境。實驗室內學生上機所需的計算機及有關外部設備都要能正常運行,功能完好,適合學生上機實驗;學生所用的磁盤要合理分配,集中管理,一些輔助教學設備(如投影儀、無塵黑板等)都要能滿足上機實驗的要求。
2、軟件環境。實驗室管理人員要根據實驗計劃,選擇好所需的操作系統軟件、高級語言環境、應用系統和輔助教學軟件,預先把這些軟件裝入計算機內并調試好,隨時可供調用。若有網絡環境,管理員要為每一個上機的班級設置各自的賬號,根據實驗計劃分配所需的軟件和必要的權限。另外,版本新、功能強的殺毒軟件也是必不可少的,管理人員要隨時用它來清除計算機系統內的病毒。
3、組織和管理。計算機的使用要嚴格管理,要保持良好的秩序,嚴令學生遵守實驗室各項規章制度,有條件的實驗室要實行學生上機自動管理(學生上機之前用上機證劃卡,系統自動為學生分配一個機號,該生即可在這臺計算機上上機,否則該生不能上機)。
該系統還可以自動記錄學生的上機時間,我們曾經根據這個功能破獲了學生盜竊計算機內存芯片的案件。如果實驗學生的人數超過了計算機臺數,最好是分組進行實驗,使每個學生都有上機的機會,同時也便于管理和輔導。管理人員要嚴格控制學生使用外來磁盤,預防計算機病毒帶入實驗室。
4、教師和學生。教師要對實驗課的全過程進行周密的思考,要避免出現漏洞和疏忽;而學生要按實驗提綱作好實驗課前的準備工作,特別是要學生自己編程上機時,學生一定要在上機前準備好程序,實驗時主要是編輯輸入程序和調試程序。
三、實驗課的實施
計算機實驗課是計算機課堂教學的繼續,也是教學效果的初步體現。為了上好計算機實驗課還必須做好以下工作:
實驗課開始時,老師要重申本次實驗課的目的和要求,指明實驗要點和要注意的事項,對實驗中的疑難之處和可能出現的問題要給予必要的提示和說明。在實驗過程中學生初次使用的應用軟件或生疏命令,教師要首先進行演示和講解。
在實驗中要盡可能發揮計算機的優勢,充分利用計算機輔助教學軟件和多媒體教學手段。特別是學生進行程序設計的實驗時,教師可以先演示和講解自己在科研工作中開發的一些應用軟件,將一些程序設計的經驗傳授給學生,使學生有了一些感性認識以后能盡快動手進行程序設計。另外,教師要根據教學內容選擇一些效果比較好的輔助教學軟件。例如,《數據結構》課程的實驗課,可選擇集編輯、編譯、調試為一體的Pascal可視集成環境VP1和算法與數據結構的作業系統AD1,Pascal源程序可以在VP1上可視執行,能同步演示程序和數據的動態視圖,為學生理解算法、學習編程、調試程序提供了便利的環境,AD1可對數據結構的程序設計作業進行測試評分,可以大大提高軟件基礎課的教學效果和質量。
四、實驗課的總結
關鍵詞:數據結構;課堂教學;實驗教學;教學策略
中圖分類號:G642 文獻標識碼:A
1引言
近年來,隨著計算機技術應用領域的不斷拓展,各高校也都致力于計算機交叉學科專業的建設,信息管理、信息與計算科學以及地理信息系統等信息類新專業蓬勃發展。“數據結構”是計算機專業的一門核心基礎課程,由于各信息類專業與計算機技術有著密不可分的關系,因此在這些專業的本科培養計劃中,“數據結構”仍是十分重要的專業必修課。
非計算機信息類專業的培養目標、課時安排、學生基礎等具有自身的特點,這也使“數據結構”教學面臨著新的問題。針對問題,筆者在近幾年信息類專業的“數據結構”實際教學中,認真研究了課堂策略并積極應用到了具體的實踐中,取得了一定的效果。
2存在的問題
2.1課堂教學中的問題
(1) 學生有畏難心理
“數據結構”主要研究非數值計算的程序設計問題中計算機的操作對象及其之間的關系,課程要采用高級語言作為算法描述和實現的工具。非計算機專業學生在大學一年級開設了程序設計基礎課程,近兩年我院開設的是“C++”。對大部分學生而言這是第一次接觸高級語言,加之這門公共基礎課課時分配較少,學生總體的掌握程度較差。“C++”中的函數、指針、類與對象等內容更是學習中的薄弱環節,而這部分知識卻是數據結構中要頻繁用到的。因此,在以“C++”為工具的“數據結構”教學中,學生打開課本看到大量用“C++”描述的算法,覺得十分繁瑣和復雜,必然會產生畏難情緒。
(2) 個別學生產生漠視情緒
“數據結構”課程理論性較強,在學習中部分學生會產生“紙上談兵”的感覺,覺得學習這門課程沒有什么實用性。同時,個別非計算機專業學生還會覺得該課程和本專業關系不大,所以更容易對課程的學習提不起興趣,即產生漠視的情緒。
(3) 多媒體教學方式的利弊
“數據結構”教學采用多媒體方式,具有生動形象,圖文并茂等優點,但多媒體課件放映過程中信息量大、速度快,而學生的反應能力和接受能力有限,這就很容易走入“填鴨式”教學的誤區。
2.2實驗教學中的問題
“數據結構”的實驗教學是整個課程中十分重要的環節。目前數據結構實驗教學中主要存在的問題有:
(1) 實驗課時不足
目前“數據結構”的課內上機和課堂教學時間分配是1∶3,為16學時。學生在上機課中完成作業的時間很不充裕,課外上機較難保證,因此很難達到實驗教學預期的效果和目的。
(2) 編程能力兩極分化
在實驗教學中學生的表現呈現出兩極分化的現象。通過觀察和了解,程序設計基礎較好或對編程興趣濃厚的同學,能夠完成實驗項目,寫出合格的實驗報告;而編程基礎較差的同學,缺乏信心,上機時坐在計算機面前茫然無措,隨著課程學習的深入,形成了惡性循環,進而影響到班級整體實驗教學的順利開展。
3改革措施
3.1重視前導課程相關內容的復習
在“數據結構”的第一講課中,不應操之過急地直接進入課程第一章的講解,而應對程序設計基礎中的指針、函數及類與對象等內容進行歸納和復習。由于課程中基本的數據結構都是用類模板來描述,因此對于類和對象這一部分更是要作為重點。同時,要求學生課后必須完成程序設計基礎課本中指定內容的復習鞏固。第一次實驗的作業要求學生編寫兩個簡單的基于面向對象的小程序,目的在于復習如何定義類、如何用構造和析構等各種成員函數實現對數據成員的操作以及如何使用對象等。
實踐證明,學生通過對前導課程的學與練,通過上機成功調試面向對象的程序后,在心理上首先放下了包袱,不再覺得類與對象等概念高不可攀。這也十分有助于教師對后期教學的深入展開。
3.2轉變教學模式,重視激發學生興趣
教學應該是一個“教”與“學”同步進行的過程,在這個過程中學生才是主體。授課中如果教師只是滿足于自顧自地把內容交代清楚,而不注意學生的接受程度,不營造生動的課堂氛圍,那么學生的學習行為只能是被動行為,更不可能成為課堂的主體,也就不可能達到理想的教學效果。
首先,在課堂教學中要精心組織課件。多媒體課件決不能是課本內容的堆積,應該將文本、圖片、聲音、動畫等合理地組織起來。例如在講解算法時,用動畫來演示算法的動態執行過程,以增加課程的生動性,降低課程的難度。
其次,課堂講授應符合學生的認知規律。范例教學模式在“數據結構”授課中就能發揮很大的優勢:即用特例具體直觀地闡明“個體”的具體特征,根據范例“個體”的知識推論特點,分析掌握整個“類別”事物的特征,使對“個體”的認識上升為對“類別”的認識,從而掌握其規律和范疇。數據結構中的主要算法和一些抽象的概念,可以盡量先從直觀意義或具體實例解釋著手,讓學生更容易理解。因此在教學過程中宜多畫圖、多舉例、多解釋。這種從特殊到一般,從具體到抽象的方法,適用于數據結構中的很多內容。例如:講解隊列的概念時,可通過日常生活中的購物排隊的過程來反映隊列中插入、刪除的原則,再結合計算機中的操作隊列、打印隊列的應用來說明;對二叉樹的遍歷算法可通過一個特定的二叉樹的例子說明其遍歷思想,再推廣到一般的二叉樹。
再次,在課堂上要鼓勵學生大膽想象,勇于實踐。例如在講解起泡排序時,可以啟發學生思考:如果在排序中奇數趟排序從前向后、偶數趟排序從后向前兩兩比較相鄰記錄,算法的效率會如何變化?先讓學生進行幾分鐘的討論,然后可以總結分析:從兩端兩兩比較的起泡算法可稱為雙向起泡排序,它是對起泡排序的改進。然后,請學生編寫雙向起泡算法,并上機編程以和傳統起泡排序算法的效率進行比較。這樣,可以培養學生大膽想象、勇于實踐的創新精神,還可以調節課堂氣氛,利于師生交互,同時還能激發學生上機編程的熱情。
3.3循序漸進,精心設計組織實驗內容
“數據結構”課程中的實驗可分為三大類:驗證實驗、設計實驗和綜合實驗。驗證實驗是將教材中的重要數據結構上機實現;設計實驗是針對具體問題來應用某個知識點,需要自己設計簡單的方案;綜合實驗是針對具體問題應用某幾個知識點,需要設計總體方案。這三類實驗由易到難,由淺入深,構成了完整的實驗教學體系。實驗的開展應該以此為主線,循序漸進地進行。
關鍵詞:數據結構;教學現狀;教學改革;學習興趣
中圖分類號:G642文獻標識碼:A文章編號:1009-3044(2011)04-0954-02
Research Educational Reform about "Data Structure" Course
ZHAO Xiao, SUN Lian-shan, WANG Xiao-xia
(Electrical and Information Engineering College, Shaanxi university of Science & Technology, Xi'an 710021, China)
Abstract: Depending on teaching practice, and on the base of analysis the present teaching construction of data structure course, stimulating the student's interest, we bring up educational reform about contents and methods. The achievement of this paper studies has a good shows in practice teaching, and Obtained many student's commendation.This article studies the achievement through in the long-term teaching practice's application, makes the good progress in the practice teaching, obtains student's high praise.
Key words: data structure; teaching present situation; educational reform; study interest
數據結構是計算機科學與技術專業的重要專業基礎課,在整個課程體系中處于承上啟下的核心地位,它一方面擴展和深化在離散數學、程序設計語言等課程學到的基本理論和技術,另一方面為進一步學習操作系統、編譯原理、數據庫等專業課奠定理論與技術基礎。
數據結構課程能夠培養學生的抽象思維能力、邏輯推理能力,鍛煉學生分析問題、解決問題的能力,使學生從對程序設計語言基本語法以及離散數學的抽象理論的學習逐漸過渡到對解決實際問題、進行大型、復雜軟件程序開發所需要的專業理論和技術的學習上來,是激發學生對專業課學習興趣,樹立專業自豪感的關鍵。如何激發學生的興趣,讓學生愛上學習《數據結構》,是目前數據結構教學中值得任課教師思考的問題,如何培養學生理論聯系實際,應用所學知識分析問題、提出方案、改進、總結提高再到創新,樹立創新意識和信心也是教師義不容辭的責任,所以有必要對該課程進行改革,讓學生學好《數據結構》,并能應用好《數據結構》。文章以目前該課程教學的現狀入手,提出教學改革的內容和方法,最后總結改革的成效。
1 課程教學研究的現狀
數據結構課程的學習非常重要,但目前本課程在教學和學習中存在很多需要解決的問題。我們在教學過程中發現,學生在剛剛接觸這門課的時候不知道怎么去學,對學過的知識也不知道怎么應用,而教師也在如何將抽象的概念和枯燥的算法如何準確、生動、高效地傳達給學生的問題上,通常是絞盡腦汁、費勁口舌、反復講解但效果卻并不理想。
通過實踐教學觀察、與學生談話交流以及理論分析等手段,我們發現造成這種現狀的原因大致來自三個方面:
1) 課程本身的特點。
在長期的教學過程,我們總結出如下的特點: ① 內容抽象且繁多。課程內容的抽象程度較高,主要體現在基本概念很多,而且比較抽象難以理解,抽象數據類型以及算法本身并不特定于某一個程序設計語言,且數據結構常常以數學符號表述,這都給學生理解和學習造成了障礙;② 課程內容的邏輯性強,各種數據結構之間存在許多內在的聯系,但又自成體系、較為獨立,如一方面樹、圖等以線性表、棧和隊列為基礎,又廣泛用于查找和排序之中;③ 綜合性強、技巧性強,數據結構課程綜合了計算機硬件、數學、以及計算機軟件的知識,各種算法中凝結了近半個世紀的大量杰出計算機科學家的智慧,綜合性和技巧性非常強,學生常常因為不能很快入門而喪失學習的信心。
2) 學生的知識和技能儲備不足。
主要體現在學生對前導課程的掌握不到位,目前大部分高校的數據結構的算法描述工具是C語言,所以前導課程一般為C程序設計,高等數學、離散數學等,尤以C程序設計為重,但在教學中發現每一屆學生都存在同樣的問題:C語言基礎薄弱。因此我們在教學過程中所面臨的現實挑戰是:一方面要在數據結構的教學過程中逐步培養和鞏固學生使用C語言動手編程、調試、閱讀程序的能力,另一方面,又要使得大部分學生在缺乏必要的C語言的基礎知識的前提下,理解數據結構的理論和神髓。
3) 教學手段單一、師生溝通渠道有限、教學工具和素材欠缺。
首先,傳統的教學方式以“一言堂”為主,教師講授是整個課堂教學活動的主線,雖然也有課堂練習、提問、鼓勵學生提問等形式活動的穿插,但由于課程內容有一定的難度,同學往往不能正確回答問題、或不能恰當地提出問題。其次,師生之間溝通的渠道非常有限,常常是課上學生不會提問、課下學生找不到教師提問。第三,教學工具只是簡單的黑板和粉筆以及少量幻燈片,缺少算法的動態演示和網絡學習等多媒體手段,教學素材仰賴于各個教師多年教學活動的積累,教師之間的經驗和素材的交流較少,教學素材的數量以及難度分級都非常隨意。
上述內容是《數據結構》課程教學中存在的一些現實問題,我們通過優化教學內容、改進教學手段、豐富師生溝通渠道、建設教學工具和教學素材庫、完善考試考核等方法,達到改善教學效果、提高學生綜合應用的能力。
2 本項目研究的內容
依據對陜西科技大學計算機科學與技術專業數據結構教學現狀的分析,我們從以下幾個方面實現對本課程的教學改革:
1) 優化教學內容和教學方法,提高面授效果。
針對數據結構基本概念多且抽象的特點,在教學中引入案例教學法,以學生已有知識結構和生活常識出發,形象生動的講解概念,這樣不僅學生容易接受而且開拓學生的思維。讓學生的學習做到有的放矢。
比如參考文獻[1]的第1章緒論里,基本概念一節中闡述的內容包括有:數據結構,邏輯結構、存儲結構等概念。學生剛剛接觸數據結構,教師如果對這些概念的講解處理不好的話,學生是難理解清楚這些概念以及它們之間的聯系與區別的,而且很容易讓學生產生畏難心理。實際教學中,我們引入學生熟悉的成績表,相信學生會在輕松的教學環境中學習新的知識。針對上面提到的三個概念,引入的案例是:學生成績表。有一張記錄某班學生各門課程成績的成績表,表中每一行(每條記錄)包括學號、姓名、性別和各門課程成績。容容 例如,有一張學生成績表記錄了某一例如,有一張學生成績表記錄了某一個班級的學生各門課程的個班級的學生各門課程的成績,這張表的每一成績,這張表的每一行(即每條記錄)包括學號行(即每條記錄)包括學號、姓名、性別及各門課程的成績。這張表是包含多條記錄的一個集合,每條記錄就是一個數據元素,各數據元素之間按照學號順序排列,所以這張就是數據結構。這里把數據元素用結點表示,分析整張表,第一個結點沒有前驅結點,最后一個結點沒有后繼結點外,其他的結點有且只有一個直接前趨和直接后繼。這種關系就這張表數據元素的邏輯結構。緊接著提出:如何把這張成績表中的數據元素存儲到計算機里,對于數據元素之間的邏輯關系用高級語言又該如何表示呢?是用一片連續的內存單元來存放這些記錄(如用數組表示)還是隨機存放各結點數據再用指針鏈接呢?這就是存儲結構所討論的問題。到此,學生對這3個概念有了一定的印象,教師及時總結并引入課本的概念,進一步加深學生的理解。
通過案例教學法,學生通過討論和老師的引導,在輕松的教學氛圍中快速掌握所學的知識。
對于算法的講解,根據數據結構在數據類型定義和算法設計中均采用類C形式描述這一特點,又因學生對C程序設計掌握的欠缺,故而對算法的理解和掌握有困難,單一的通過算法講解算法不如用圖形描述更直觀。為此引入算法的動態演示系統,增強算法的直觀性,提高教學效果。
2) 激發學生學習的興趣,鼓勵學生對教學內容提出問題,師生共同討論,提高教學和學習水平。
興趣是學習的動力,如果學生對本課程產生極大的興趣,學生學習的自主性自然就有了。由此可見,學生學習興趣的培養是至關重要的。培養學生興趣的方法很多,我們課題組將從以下幾個方面實現:① 將工程應用融入到教學中,讓學生了解到所學的內容在實際工程中的應用,消除學生不知為什么要學的疑慮;② 鼓勵學生在學習過程中不拘于以往的解法,對同一個問題可以提出不同的解法,深化對問題的理解;③ 將獎勵的方法應用于教學活動中,比如:布置給學生的實驗任務或課后思考題,對完成好的同學,在課堂上發一些諸如本子、圓珠筆等小禮品,以此鼓勵。對于大實驗做的好的同學采用加分的措施激發學生學習的興趣。對于一些教學任務事先將內容布置給學生,在課堂上以討論的方式讓學生參與到教學中來,相信會很好的調動學生的積極性。
3) 精心選擇習題和上機實驗題,著眼于基本知識的理解和基本編程能力的培養。
通過我們對同學的調查,發現很多同學存在課上聽懂了,課下不會做題的情況,另外學生最怕的是老師讓他們寫算法,以及上機調試程序。針對這一現象,我們通過一些精選的習題和實驗題,學生首先做題然后通過習題課對習題進行精講,對學生存在的問題集中解決。實驗題目要求上機前一定要寫好程序,甚至課下用自己的電腦對程序進行調試,上機時逐個給老師講解程序的實現算法及實現過程以及實驗的結果,并對結果進行解釋說明。通過這些方法提高學生對基本知識的理解水平,培養學生的編程能力。
4) 本著“精講多練”的原則,改進考核方式。
傳統的考試模式是閉卷考試,學生期末的考試成績=卷面成績的70%+實驗成績的20%+平時成績的10%。這種考試模式看似合理但還是存在一些弊端,主要體現在:一份試題很難做到對學生所掌握知識的全面考核,而且試卷內容可能偏重于理論知識的考核,很難反應出學生的實際水平;實驗成績給分僅憑借實驗報告顯然是不科學,應該加大學生實驗過程的考核。對考核方法的改革,我們打破傳統的考試模式,除了閉卷考試外,加入實際問題解決能力考核部分;對于實驗的考核采用實驗考核一對一的方法,教師更注重的是每位學生對實驗任務的分析過程,實現方法和結論的考核;同時加大對平時習題完成情況的考核力度,并將其考核的結果加入到最終的考試成績中,讓學生懂得考試僅僅是一種手段而不是學習的目的。
3 課程改革的成效
以上教學改革的方法,在我校兩屆學生數據結構課程實際教學活動中的應用,通過調查有85%的同學表示對該課程產生極大興趣;78%的同學認為案例教學、工程應用等多種手段引入到實際教學中,消除他們學習的盲目性,建立良好的學習自信心,提高了學習的積極性;通過精選習題的練習、講解以及實驗題目的上機,加大實踐教學的考核力度,公平公正的評判學生對課程的掌握程度。在傳統教學的基礎上,以學生作為教學活動的主體,形成學生自主學習、合作學習、研究性學習和探索性學習的氛圍,為學習后續課程打下堅實的基礎。
參考文獻:
[1] 嚴蔚敏.數據結構(C版)[M].北京:清華大學出版社,2006.
[2] 顧紅生,曲娟.關于數據結構課堂教學模式的研究[J].遼寧廣播電視大學學報,2007(4):44-45.
[3] 徐金梅,羅劉敏.《數據結構》教學方法研究和探討[J].現代計算機,2007(8):78-80.
關鍵詞:離散數學;實驗教學;實踐能力
離散數學課程所涉及的概念、理論和方法,大量地應用在計算機科學體系中,數理邏輯是計算機中的邏輯學、邏輯電路、人工智能的基礎課程,集合與關系是數據結構、數據庫系統的理論基礎,而代數系統則是現實世界的縮影,直接模擬了現實系統,圖論知識更是直接應用在計算機網絡、數據結構、編譯原理等專業課程中。但傳統教學中過于注重理論教學而忽略實踐,學生普遍認為枯燥難懂,認為是純粹的數學課程,對計算機編程用處不大。因此教師在授課過程中要注重理論聯系實踐,培養學生的專業素養,我們將從以下方面循序漸進加強教學理論與實踐。
1課程教學注重教學方法與教學實踐的改革與創新
加強理論聯系實際,從提高計算機編程思想的角度對學生展開教學,教師在講解理論的同時,要注重其實際應用與算法描述。例如在講解最短路徑時,就要介紹Dijkstra算法,單源最短路徑的基本思想如下:設S為最短距離已確定的頂點集(看作紅點集),V-S是最短距離尚未確定的頂點集(看作藍點集)。
①初始化:只有源點s的最短距離是已知的(SD(s)=0),故紅點集S={s},藍點集為空。
②重復以下工作,按路徑長度遞增次序產生各頂點最短路徑:在當前藍點集中選擇一個最短距離最小的藍點來擴充紅點集,以保證算法按路徑長度遞增的次序產生各頂點的最短路徑。當藍點集中僅剩下最短距離為∞的藍點,或者所有藍點已擴充到紅點集時,s到所有頂點的最短路徑就求出來了。
我們通過實例給學生模擬算法執行過程,驗證算法的正確性,但細心的學生會發現前面加進去的點并不一定是后期考察路徑的必經點,例如有三個點A,B,C,AB、BC、AC間權值分別為1,2,4,如果設A為源點,則第一次加進來的點是B,到C的最短路徑應該是A-B-C,如果BC權值為4,則到C的最短路徑應該是A-C,這里就要注意紅點集加入的點不是其他點必經點,這是因為集合元素是無序的,不是聯結已有的點作為最后點的路徑的。
我們給出求解的動畫演示過程,加深學生的認識,實際多應用在交通網絡中路徑的查詢中,兩地之間是否有路徑以及如果有多條路徑時找最短路徑等,最后再對算法進行擴展解決單目標最短路徑問題、單頂點對間最短路徑問題等,擴展學生對算法的理解等。
在講解邏輯推理時,建議學生使用Prolog語言可以輕松實現命題和聯結詞表示以及邏輯推理,代數系統則是無處不再,自動售貨機、電梯系統、自動取款機等都是一個代數系統,有自己的運算關系,鼓勵學生定義一些運算,完成一個具有輸入輸出的可交互的系統。
2建設完善實驗課程體系,加強學生實驗實踐能力
挖掘課程內容,建設完善的實驗課程體系,實驗課程的主要目的是,培養學生的數學建模能力、算法設計能力、編寫程序能力和應用創新能力,使學生養成良好的數學素質。學生可以有選擇地做。
(1)基礎實驗如表1所示,基礎實驗設計一些離散數學基本問題,要求學生利用所學基礎知識,完成相應的算法設計和程序實現。如在集合論部分,設計有限集基本運算算法設計實驗,要求學生利用熟悉的程序設計語言完成有限集合的數據結構、集合間的交、并、差、迪卡爾積、子集判斷等基本運算。學生可以在每部分中自由選部分題,完成一定的基礎實驗。這樣的設計使得學生學會基本操作,鞏固程序設計基本調試方法的掌握。
(2)綜合性實驗如表2所示,設計一些比較復雜的離散數學問題,要求學生綜合運用各章知識或多學科知識,完成問題的分解與求解、綜合和整體實現。例數理邏輯部分的命題真值表計算實驗中,要求學生設計實現命題數據結構、五種基本邏輯運算的代數運算轉換、表達式求值等;學生需要綜合運用命題邏輯、數據結構等知識,完成實驗各個環節,實現運算結果的顯示。可由幾個同學組成一個學習小組完成實驗。
(3)設計性實驗如表3所示。這一層次要求較高,對那些學有余力、興趣濃厚的學生,給出一些難度較高的課題,要求他們自行設計問題描述模型和實驗方案,開發實現小型應用軟件。例如,要求學生針對某景區內景點的分布情況,設計可滿足旅游者不同需求(如費用最省、線路最短、重復較少、景點最全等各種要求)的實用小軟件。教師檢查實驗現象和實驗結果。學生對實際程序的運行結果應能進行分析并提出改進方法,每完成一個實驗,都要求寫一份實驗報告,挑選出好的作品,做成精品演示系統。
3發現實際應用點,擴大學生知識面
讓學生了解離散數學在現實生活中的主要應用,有意識地引導學生運用所學理論去分析問題、解決問題,從而讓學生充分感受到離散數學這門課程的魅力和實用價值。部分實際應用如表3所示。鼓勵學生按照如下流程操作:發現問題,然后構思一個可能求解該問題的算法過程,再設計算法并將其表達為一道可執行程序,最后精確地評價這個程序,考查其作為一種工具去求解其它問題的潛能,鍛煉學生數學建模能力,提高分析問題,解決問題的能力。
4建設開放式教學環境,豐富網絡教學資源
充分利用網絡學堂、課程學習網站等豐富的教學資源,構建了開放式的教學環境,我們開發了離散數學教學網站,模塊包括:實驗、實驗申請、已審核實驗、成果展示、精品展示、在線解答(前臺如圖1所示,后臺如圖2所示)、資料下載等模塊,實驗項目可選或自擬,增強了師生間互動,也為學生個性化學習提供了良好的條件。
學生可以在任何時間遠程登陸,發表咨詢,下載資料,參與實驗項目,申請實驗項目,獲得批準后,我們開放實驗室免費提供設備,實驗項目結題后提交成果,我們從中提煉出精品,做成精品演示系統,學生還可以對已有成果做深入研究。
總之,鼓勵學生吃透書本,挖掘理論的應用領域,鼓勵學生改進算法、挖掘應用點,從抽象的理論到實際應用,再擴大應用,抽象到一般情況,讓學生感覺到學習離散數學的重要性,理論與實踐相結合,互相促進,切實提高大家學習離散數學的興趣,能夠達到學生積極主動為了實現應用而吃透理論,發揮主觀能動性。采用項目訓練為主的教學理念,切實提高學生的實際動手能力、創新能力和自學能力。
參考文獻:
[1]耿素云,屈婉玲.離散數學[M].北京:高等教育出版社.
關鍵詞:編譯原理;實驗教學;詞法分析
中圖分類號:G642. 41 文獻標識碼:A
文章編號:1672-5913(2007)18-0045-02
1引言
“編譯原理”是大學本科計算機專業的必修課程,但學生在學習這門課時普遍感到難度較大,學習內容抽象,不易理解。如果不配合實踐教學,僅通過理論課程的學習,難以使學生真正地理解編譯程序的構造原理和技術。但是,編譯原理的實踐課程也存在著一些困難,比如:有些算法本身理解起來都十分抽象,如自動機理論、集合論的推演、LR文法等,大部分學生在實現這些相關算法的時候,難以形成思路;又由于多采用分組實驗方式,一部分同學產生依賴思想,寄希望于組內其他同學。這樣,顯然達不到深入理解理論知識、提高實際編程能力的目的。本文就以詞法分析實驗為例,討論編譯原理的實驗教學方法。
詞法分析實驗主要包括以下幾個方面的內容[1]:詞法分析器的設計和實現,三個算法(正規式轉換為有窮自動機的算法,有窮自動機的確定化,確定的有窮自動機的化簡)設計以及詞法分析自動生成器。其中,詞法分析器的設計和實現是重點內容。通過這個程序的設計,學生可以掌握詞法分析器的作用、分析方法、和實現原理,并了解詞法分析在整個編譯過程中的地位。三個算法的實現有一定難度,通過三個算法的實現,學生可以加深對算法的理解,提高解決問題的和實際編程能力。
2實驗前的準備
在進行詞法分析實驗課之前,應督促學生做好充分的準備工作[2]。首先,應該明白詞法分析器的功能,它主要分成輸入部分,字符分類識別和識別結果處理輸出部分。根據不同的輸入,調用不同的識別函數進行識別。進而得到詞法分析器的程序框架。再后,進行系統的詳細設計,設計出關鍵的數據結構,將每一個函數實現的算法和關鍵點,詳細的用偽代碼表示出來。
實驗課前的準備過程非常重要。否則,上來就匆忙動手,很可能寫了很多代碼之后,才突然發現,最初的數據結構設計竟然不合理,導致不少的工作都得之后重新來做。因此,在實際編程前要求學生編寫實驗思路及實驗流程,根據實驗任務,設計程序的模塊流程圖及算法,并提出編程過程中可能遇到的困難和解決途徑,最終形成一個預習性質的實驗報告[3]。這樣,學生對實驗有一個整體思路。思考過程不僅使學生對所學理論有了較深刻理解,而且對理論與實踐如何結合進行思考和歸納,提高了實際運用高級語言編程的能力。
3實驗課中的指導
在實驗課進行的最初,根據實驗項目,指出實驗目的和總體要求,介紹關鍵實驗注意事項和操作要點等。對實驗中的難點和重點,進行有針對性的講解,并就實驗中學生普遍會遇到的一些典型問題,做啟發式地分析和引導,包括講解學生的預習報告中提到的某些好的思路,起到拋磚引玉的作用,鼓勵學生嘗試新思路和新方法,最后由學生自主完成實際的系統設計并進行相關的研究嘗試[4]。比如,詞法分析器的設計思路,主要的數據流程,以及編寫識別指數常數的等較難程序的關鍵技術等。
編程題目由簡到難的進行。一般認為,編譯原理中的將正規式轉換為NFA,將NFA轉換成DFA等算法都比較抽象。實現起來有一定難度。如果一開始就從這些算法下手,很可能有一大部分同學都會出不了結果,從而產生畏難情緒,以至于對這門課程今后的學習都沒有信心。所以,建議開始的時候從簡單的詞法分析器入手,幫助學生產生學習積極性。即使不能完整的做到每種單詞都能識別,至少可以寫出其中一部分。這樣,有了初步的小成果之后,就會有興趣也有信心來完成后續的實驗內容。
4實驗之后的總結
在每次實驗課的最后,留出時間用于全班的分組討論。主要圍繞兩項內容:其一,每個同學對編程過程中出現的問題,討論相應的解決方法。建立一定的鼓勵機制鼓勵學生積極發言,提出自己的看法、觀點。討論后,各組指派一名學生代表總結發言。這樣,各組學生可以相互了解其他同學在編程中遇到的困難和解決方法,相互取長補短、共同進步。為了讓每個學生都得到發展,小組代表隨機產生。通過討論,學生變被動的學習為主動的學習,學習積極性有所提高。其二,由于每人只編寫整個詞法分析程序的某些部分,所以對整體把握有所欠缺,為彌補此缺陷,要求最后每個討論小組把各自編寫的程序連接起來,形成一個完整的詞法分析器,進行總體調試。
實驗之后應做好實驗總結。每個同學提交實驗報告。報告內容包括對詞法分析器輸出的數據進行分析,關鍵程序的實現思路,遇到的困難以及解決方法,自己認為自己做的比較好的、不足的地方及其原因,自己的想法等等。教師再從中選取一些比較典型的問題和優秀的例子進行講解,讓同學們能夠有所感悟[5]。通過實驗總結,不僅讓優秀的學生更加開闊了思路,也讓比較差的學生看到了自己的不足之處,對他們理論知識的深入理解和實際編程能力的提高都有很好的促進作用。
4結論
在近幾屆的學生實驗課程中,通過不斷嘗試、改進我們的教學方法,包括自己編寫學習指導,實驗指導書等,使編譯原理實驗課程逐步完善。同時,教學結果也表明,教學實驗取得了一定的成績,比如:學生從以前一上實驗課就手足無措,變成了都可以自己動手編寫大部分或者全部程序;在同樣水平的要求下,學生的平均實驗成績有所提高;學習方式也由過去的被動學習變成了自己積極主動的學習。但是,仍然存在一些問題,如有小部分同學由于以前的程序設計課程學習不夠堅實,導致編程能力有限,在對這部分同學進行單獨輔導的時候,既要講解編譯原理的知識,還得給他們補習程序設計的知識,導致學習壓力更大,興趣激發更為困難等。這些問題需要進一步尋找解決的辦法,以期達到更好的教學效果。
Discuss on Teaching Method of Complier Principle Practice
Abstract: Take lexical analysis as an example, this paper discusses teaching methods of complier principle practice, and proposes some problems should attention in the teaching process. It meets with understanding Complier Principle theory and promoting capability of applying.
Keywords: Complier Principle, Practice Teaching, lexical analysis
參考文獻
[1] 陳火旺等. 程序設計語言編譯原理(第三版)[M]. 北京:國防工業出版社,2000.
[2] 趙曦. 《編譯原理》實驗教學改革初探[J]. 實驗室科學,2006,8(4).
[3] 毛玉萃. 編譯原理實驗課的實踐探索[J]. 大連大學學報,2004,(6).
[4] 張晶,楊冬等. 編譯原理實踐課程教學方法研究[C]. 2005全國計算機程序設計類課程教學研討會論文集,2005.
【關鍵詞】實驗教學;創新能力;實踐技能
隨著計算機行業的發展和相應的計算機課程建設,實驗環境在不斷地更新,實驗內容也隨之在不斷地改革與更新。通過實驗教學,既鞏固了課堂知識,促進了學生對課外知識的獲取,又拓寬了知識面,培養了學生創新能力、分析問題和解決問題的能力。
1、 加強素質教育,搞好中職實驗室建設
實驗室建設就顯得非常重要。我們在建設實驗室時主要抓兩方面建設。其一,硬件建設方面;建成了計算機基礎、計算機系統、計算機控制和網絡技術等實驗室,為實驗教學改革提供了必要的物質基礎。其二、軟件建設方面,通過多年的摸索、總結、修改及完善,我們制定出了一套較為完整的管理制度和崗位責任制度。具體包括《機房管理制度》、《指導教師崗位責任制》、《安全管理制度》、《學生上機守則》等。通過這些制度的切實貫徹執行,使每位工作人員都明確自己的職責,并且將實驗室繁雜的各項工作,如實驗的準備,儀器的維護、維修、管理,實驗教學法的研究,硬件設備的改進,軟件的開發及實驗內容的改革等都與本職工作量掛鉤,以充分發揮大家的積極性,因而在實驗教學上取得了較好成效。實驗室是培養人才的搖籃,一些剛分派來的大學生首先安排到實驗室,在得天獨厚的用機環境中,通過指導實驗,維護、維修儀器設備,相互學習,知識得以拓寬,動手能力可以有很大提高,并且對實驗教學環節、學生實驗情況有所了解,有助于今后在主講教師崗位上的教學工作。可見人才的流動,不僅給實驗室帶來了青春的活力,也帶來了新的思想和其他院校好的教學經驗、教學方法,從而有益于推動實驗教學的改革和建設。
2、改革實驗教學內容,注重創新能力培養
作為計算機的專業實驗室,承擔了計算機專業的專業基礎課及專業課的軟、硬件實驗,以及課程設計、畢業實習、畢業設計的教學任務。隨著信息技術的迅猛發展,在知識更新加快,知識愈來愈多元化、專業化和系統化的情況下,改革過去傳統的以驗證性為主的實驗技術手段、方法和落后的實驗內容,增加設計性、綜合性、開放性和系統性的實驗內容,加強學生動手能力的訓練,注重全面素質的提高,注重創新精神的培養已勢在必行。因此,我們在實驗教學內容的改革上,本著“加強基礎、拓寬專業、注重實踐、提高素質”的方針,把專業基礎實驗模式分為指令性、指導性和設計性三種。在指令性實驗中,注重學生鞏固理論課的學習,進一步掌握基本概念和基本技能。在指導性的實驗中,注重培養學生靈活運用所學知識去分析問題和解決問題的能力。
例如,有意設計一些有問題的或不完整的程序,讓學生去發現錯誤,改正錯誤,完善應用程序。在設計性的實驗中,注重培養學生的創新意識、設計能力、創造能力和動手能力。在這一類的實驗中,只給定實驗的課題及達到的目的,中間過程需學生自己去查閱資料和設計方案,直至最后調試完成。
例如,在講授微機原理實驗課中,在有關部門的支持下,嘗試將教師參與研究開發的科研成果用于畢業實習中,使學生不出校門就可接觸企業工作環境,使科研成果在教學中真正發揮作用。為他們的畢業論文和今后走上工作崗位打下了一定的基礎。實驗內容的改革,激發了學生對實驗的興趣。
3、 改革實驗教學方法,規范管理,提高教學水平
教學方法的改革就是要注重發揮“學生是教育主體”的作用。通過對學生的引導、幫助和促進,充分調動他們的積極性和主動性,去獲取知識,增強能力,提高素質。實驗是教學活動的一個重要環節,因此,實驗教學方法的好壞直接影響著學生對實驗課的態度,影響著他們動手能力、創新意識的培養。實驗教學方法的改革,體現在實驗教學的各個環節。在教師的主導作用方面,我們首先改變過去按部就班的教學模式,以啟發式的方式指導實驗。教師在備課時,對每次實驗重點和難點、實驗中可能出現的問題、實驗的數據與結果都要心中有數。在指導實驗時,要勤于巡視,及時了解、掌握學生的實驗情況。當學生在實驗中出現問題時,教師從基本概念、解題思路及實現方法上引導學生,促使其積極思考,發現問題,解決問題,真正使他們成為實驗課的主體。對每個實驗的數據和結果,都要經過教師的檢查認可,并在檢查時,讓學生闡述自己的設計思想及實現過程,培養他們的口頭表達能力。對那些學有余力的學生,允許在完成實驗任務之后,利用我室的設備及網絡環境,去研究和學習自己感興趣的東西,以促進他們個性的發展。在學生主體作用方面,由于實驗報告是培養學生寫作能力、表達能力、分析能力和總結能力的一種較好的方式,因此,我們改變了過去軟件上機不提交實驗報告的做法,要求學生
對每一個實驗都要提交實驗報告,在報告中要注重設計思想的描述,注重分析、總結實驗中的收獲、體會。在實驗課程結束時,進行上機考試,最后根據學生實驗情況、實驗報告情況及上機考試的情況,客觀評定學生的實驗成績。通過以上措施,提高了學生對實驗課的重視程度,同時對指導教師也提出了更高的要求。
4、提高自身素質,促進實驗室建設
計算機技術的發展可以說是日新月異。從事計算機工作的技術人員只有不斷地學習,才能適應形勢發展的需要。為此,我們通過參加培訓、參與項目研究,并將新實驗的開發和研究與工作量掛鉤等手段,激勵大家努力鉆研業務,掌握新技術,提高業務水平和實際工作能力。經過我們的努力,建設了計算機網絡實驗環境,開設了《C語言》、《數據結構》、《操作系統》等軟件實驗課程。每一門實驗課我們都自編了相應的實驗教材,并且根據課程建設和計算機行業發展的需要,以及學生對實驗內容的反饋情況,更新了實驗內容
結語:實驗教師隊伍自身素質的提高,是推動實驗教學內容改革,搞好實驗教材建設,提高實驗教學水平的關鍵因素。我們要不斷地深化改革,積極探索實驗教學的新模式和能力培養的多途徑,提高實驗教學水平,使實驗室成為有助于培養適應新世紀高質量人才需要的基地。
【參考文獻】
[1] 張紅娜. 中等職業學校計算機實訓教學淺議[J]. 大眾科技, 2009,(03)
關鍵詞: NTeQ模式 教學設計整合教學研究
1.引言
NTeQ的含義是“整合技術促進探究”(iNtegrating Technology for inQuiry),是由美國孟菲斯大學的Gary R.Morrison教授和Deborah L.Lowther教授首先提出的。該模式是信息技術與課堂教學整合的實用模式,它真正實現將信息技術作為教師教的工具和學生學的工具。NTeQ模式以學生和課程目標作為出發點,從學習理論、學習目標、課程內容及學習方式等方面入手,選擇適當的計算機技術,將信息技術與課程整合的規劃過程詳細地體現出來,從而能夠幫助教師在做教學設計時有一個清晰的設計思路。
2.NTeQ模式的操作步驟
按照NTeQ模式的思路,創建一個將計算機技術整合到課堂教學的單元計劃需要10個步驟,如圖1所示。
2.1制定目標
教師的每一個課程計劃的列出都是從學習目標開始的。一般根據課程大綱要求,結合學生的認知結構及內容特點,制定出學生在不同階段應達到的目標。
2.2計算機功能
教師在課前應充分考慮需要用到的計算機功能,并選擇合適的功能來輔助完成教學目標。例如學生需要使用互聯網或者教學光盤搜索相關資料,因此連通的網絡和光驅是必需的;學生在數據分析時可能用到電子表格、數據庫和圖表等,還可能會創建文檔,編輯圖片、繪圖等,這就需要安裝相應的Office組件和其他應用軟件。
2.3確定問題
問題是在教學目標的基礎上提出來的,教師在向學生陳述問題時要講究藝術性[1],從學生的角度考慮,問題要來自現實世界,具有真實性,也可以圍繞教學目標引導學生自己提出問題,教師指導學生制定行動計劃,讓學生通過自主、探究的學習活動來解決。
2.4處理數據
在處理數據階段,教師要明確學生將如何解決問題,也就是教學目標將如何成功的實現過程。
2.5顯示結果
學生的學習結果展示有多種方式,有打印稿、口頭陳述、Web頁、幻燈片演示、海報等,教師可以根據教學目的和教學時間的不同選擇不同的展示方式。
2.6評估
NTeQ教學模式中替代性評估彌補了傳統評估的不足,不僅能讓教師掌握學生的學習情況,還能做到因材施教。選擇評估內容,如測驗、演示報告等,采用任務列表或量規等評價工具,根據教學目標設計評價量規,為行為標準分配分數級別[2]。
2.7支持性活動
計算機是用來輔助教學的,在教學過程中有時僅靠計算機不能完成整個教學活動,有的教學活動本身不適合使用計算機,需要在教學過程中借助支持性活動,如相關閱讀、小組討論等。
2.8準備活動
考慮學生在使用計算機時將開展哪些活動,以什么方式開展活動,是自主學習還是合作學習。教師的活動設計必須緊緊圍繞教學目標和中心問題展開。
2.9結束活動
教師對結束活動也需要精心準備,準備好響應的問題以引導學生進行活動反思,從而加深他們的學習過程。
2.10技術整合活動
考慮學生在使用計算機時將開展哪些活動,以什么方式開展活動(是自主學習還是合作學習)。教師的活動設計必須緊緊圍繞教學目標和中心問題展開。
3.教案示例
NTeQ教學模式應用方便,教師按照NTeQ教學模式的步驟進行教學設計即可。下面是對計算機本科專業《數據結構》課程排序章節采用NTeQ教學模式進行教學設計的教案。
3.1基本內容
本章主要討論比較各種內部排序方法――插入排序、交換排序、選擇排序、歸并排序和基數排序的基本思想、算法特點、排序過程,以及它們的時間復雜度分析。在每類排序方法中,從簡單方法入手,重點討論性能先進的高效方法(如插入排序中的希爾排序、交換排序中的快速排序、選擇排序中的堆排序等)。
3.2學習目標
學習目標A:掌握每一種排序方法的機理;
學習目標B:深刻理解排序的定義和各種排序方法的特點,并能加以靈活應用;
學習目標C:掌握各種排序方法的算法描述及時間復雜度的分析;
學習目標D:理解排序方法“穩定”或“不穩定”的含義,清楚在什么情況下要求應用的排序方法必須是穩定的。
3.3資源列表
3.3.1網絡資源列表。
A.吉林大學“數據結構”精品課程
http://202.198.16.51/wangluo/xueyuan/wangluoxuexi/01.dkch/selected.jsp
B.西北大學“數據結構”精品課程
http://jpkc.nwu.省略/datastr/
C.西安石油大學“數據結構”精品課程
http://jpkc.dept.xsyu.省略/shujujiegou/index.htm
D.浙江師范大學“數據結構”精品課程
http://teacher.省略/quyt/
3.3.2文章列表。
A.數據結構中典型排序算法性能分析(PDF文件)
B.一個比快速算法更快的算法(PDF文件)
C.搖動排序算法性能的研究(PDF文件)
D.奇偶交換排序算法性能的研究(PDF文件)
3.4技術與工具
A.Microsoft PowerPoint
B.Microsoft Word
C.IE瀏覽器或其他瀏覽器
D.Macromedia Flash MX
E.Microsoft Visual C++6.0
3.5多維活動
3.5.1活動1:內容的講解。
在這個活動里,教師講解排序方法的基本分類及分類所依據的原則。插入排序、交換排序、選擇排序和歸并排序的基本思想和各類排序方法中的簡單排序法的排序過程通過Flas演示。插入排序類中的直接插入排序、選擇排序類中的簡單選擇排序和堆排序、交換排序類中的快速排序等排序方法的實現、算法即算法分析是本章教學中的難點和重點。
在講授各種排序方法的同時,提醒學生注意排序方法的穩定性問題。即對于具有同一排序碼的多個記錄來說,若采用的排序方法使排序后記錄的相對次序不變(即前面的仍在前面,后面的仍在后面,當然由遠鄰變相鄰),則稱此排序方法是穩定的,否則稱為不穩定的。
3.5.2活動2:內部排序方法的比較。
此活動通過上機操作深化學生對各種排序方法的理解和掌握。
上機內容為對6種常用的內部排序算法進行比較:直接插入排序、簡單選擇排序、堆排序、希爾排序、冒泡排序、快速排序。已知待排序的表長不小于100,其中的數據要用偽隨機數產生程序產生,至少要用5組不同的輸入數據作比較,比較的指標為有關鍵字參加的比較次數和關鍵字的移動次數。最后要求對結果做出簡單分析,包括對各組數據得出結果波動大小的解釋。
本活動的主要工作是設法在已知算法中的適當位置插入對關鍵碼的比較次數和移動次數的計數操作。程序還可以考慮幾組數據的典型性,如,正序、逆序和不同程度的亂序。調試的時候可以采用分塊調試的方法。
3.6評價
對于學生的評價主要包括以下幾個方面:
3.6.1完成上機實驗要求,程序調試成功,運行結果正確。
3.6.2能對結果進行合理分析。
3.6.3提出創新思路或對現有程序有所改進。
3.6.4成果展示(作業、實驗報告等)內容完整,材料齊全。
4.教學過程中幾點需注意的問題
教師在教學過程中要充分發揮NTeQ教學模式的作用,必須注意以下幾個問題:
4.1明確教師的主導和引導角色
傳統的教學,只要教師帶著已經精通的教學內容走進教室,再拿起粉筆和張開嘴就能開始課堂的進行。而現在要求教師作為學習促進者的角色設計教學計劃,要求將技術整合到教學活動中,引導學生不僅要掌握教學內容,還能通過其他的手段在加強掌握知識的同時熟練使用計算機的應用軟件和開發軟件。
4.2教學環境的準備
教師在教學設計時,應根據不同的教學內容準備好教學環境。例如在講授棧的應用時,可以通過演示小運用程序漢諾塔來闡釋棧在遞歸調用中的使用,如圖2所示。
4.3正確使用信息技術
NTeQ教學模式強調以學為主、以計算機為輔來解決問題,并且在解決問題的過程中不斷學習。但是應注意到信息技術只是加強教學效果的手段,而更為重要的是教師如何引導學生學會怎樣思考,即通過信息技術的使用解決問題而不是單純地操作計算機。
5.結語
從上面的教學設計中可以看出,采用NTeQ教學模式進行教學,不僅可以提高學生掌握課程基本內容,還可以讓學生在掌握學科知識的同時學會思考,提升學習的主動性。
教學有法但無定法。當使用一種新模式時,我們只能在摸索中前進。NTeQ模式是國外教育專家首創的,由于國外教育方式與我國有著很大的區別,因此在運用該模式的時候,要從我國的教學環境出發,根據所在院校的條件,制定出符合教學對象的教學模式。
在信息技術與《數據結構》課程的整合教學研究中,作為教學研究方案的設計者和實施者,筆者在教學實踐過程中不僅開拓了視野,而且激發了探索各種教學模式的熱情,更認識到教學研究的開展和深入是自身不斷發展和完善的過程。
參考文獻: