李宗璞
文章編號:1672-5913(2009)08-0124-02
摘要:“數(shù)據(jù)結(jié)構(gòu)”課程是計算機學(xué)科的專業(yè)基礎(chǔ)課,是一門實踐性比較強的課程。課程中的實驗環(huán)節(jié)顯得尤為重要,該環(huán)節(jié)可以鍛煉和提高學(xué)生對復(fù)雜程序的設(shè)計能力。筆者在多年的教學(xué)過程中摸索出實驗環(huán)節(jié)的教學(xué)模式,與大家共同探討。
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);教學(xué)內(nèi)容;組織形式;考核方式
中圖分類號:G642
文獻標識碼:B
利用計算機來解決實際問題的步驟是:給出問題描述,將問題抽象成數(shù)學(xué)模型,根據(jù)數(shù)學(xué)模型寫出求解問題的算法,再根據(jù)算法寫出程序代碼,最后上機調(diào)試并分析結(jié)果。在上述過程中,非數(shù)值的數(shù)學(xué)模型是數(shù)據(jù)結(jié)構(gòu)研究的主體,它操作實現(xiàn)主要是通過數(shù)據(jù)結(jié)構(gòu)的實驗教學(xué)環(huán)節(jié)來完成的,在該教學(xué)環(huán)節(jié)中作為教學(xué)主體的學(xué)生,首先要具備抽象思維能力和語言基礎(chǔ)。往往在環(huán)節(jié)實施過程中,語言基礎(chǔ)是薄弱環(huán)節(jié),以至于課時用完了,學(xué)生還是寫不出滿意的算法及代碼。鑒于此,我們在教學(xué)內(nèi)容、組織形式、考核方式等教學(xué)環(huán)節(jié)中進行了一些設(shè)計,與大家一起來探討。
1教學(xué)內(nèi)容
我們在教學(xué)內(nèi)容上,圍繞課內(nèi)、課外兩條主線進行改革,給學(xué)生較大的自主學(xué)習(xí)空間,有利于學(xué)生創(chuàng)新精神及實踐能力培養(yǎng)。整個實驗教學(xué)由淺入深,重在基礎(chǔ)、提高能力、挖掘潛力、拓展思路。在課時內(nèi)的教學(xué)主要以基礎(chǔ)性實驗為主,安排一個綜合性實驗;課時外的教學(xué)主要以設(shè)計性實驗和綜合性實驗為主。
1.1學(xué)時內(nèi)的教學(xué)內(nèi)容
在我校數(shù)據(jù)結(jié)構(gòu)課程共64學(xué)時,理論課48學(xué)時,實驗課16學(xué)時。安排了5個實驗項目,由于多數(shù)學(xué)生語言基礎(chǔ)不算太好,特別是指針的運用和結(jié)構(gòu)體的定義是薄弱環(huán)節(jié),所以在做實驗項目時,主要是從教材上的算法出發(fā),使得學(xué)生有章可循:
項目1:順序表的操作
主要訓(xùn)練學(xué)生對順序存儲結(jié)構(gòu)的理解,掌握順序表的查找、插入和刪除等基本操作;同時引導(dǎo)學(xué)生對于靜態(tài)參數(shù)傳遞和動態(tài)參數(shù)傳遞的使用方法。
項目2:單鏈表的操作
主要是與順序存儲結(jié)構(gòu)進行比較,完成線性表在鏈式存儲結(jié)構(gòu)上的查找、求長度、插入、刪除等基本操作。
項目3:棧和隊列的應(yīng)用—停車場的管理
深入了解棧和隊列的特征,以便在實際問題背景下靈活運用;利用兩個棧和一個隊列模擬停車場管理及相關(guān)操作。
項目4:二叉樹的遍歷
掌握二叉樹的結(jié)構(gòu)特征,以及二叉鏈表存儲結(jié)構(gòu)的特點;掌握二叉樹三種(先序、中序和后序)遍歷方法;熟悉并且掌握遞歸算法。
項目5:折半查找和快速排序
掌握折半查找和快速排序的方法,掌握要進行折半查找應(yīng)該采取的存儲結(jié)構(gòu)形式。并進行對其進行時間復(fù)雜度的分析。
對于每個實驗項目的實驗?zāi)康暮蛯嶒炓?,提?周放在教學(xué)平臺上。在實驗前1周,利用輔導(dǎo)課時間,以測試的形式,讓學(xué)生寫出算法代碼,由于每個實驗基本上可以在教材中找到源代碼痕跡,所以難度不大。
在實驗教學(xué)過程中,采用任務(wù)驅(qū)動式的教學(xué)模式,首先從總體思路上講解10分鐘左右,邊輔導(dǎo)邊發(fā)現(xiàn)問題,每半個小時總結(jié)1次。由于學(xué)生已經(jīng)在課前作好了準備,在實驗室里他們贏得了更多的自主時間用來調(diào)試程序,分析結(jié)果。學(xué)生水平參差不齊,在上課過程中穿插實驗驗收考核,考核的形式是現(xiàn)場寫出主要操作的代碼,在規(guī)定的時間內(nèi)進行調(diào)試、分析。驗收完一個模塊,學(xué)生再進行下一個任務(wù)。教師通過講課、輔導(dǎo)、驗收使得實驗課堂充實起來,由于學(xué)生每個時間段都有活干,所以課堂氣氛非?;钴S,討論熱烈。
1.2學(xué)時外的教學(xué)內(nèi)容
在學(xué)時外,以課程設(shè)計的形式,利用開放實驗室時間,嚴格按照軟件工程的思想進行訓(xùn)練。
在課程設(shè)計時,教師列出多個設(shè)計課題,每個課題都有相應(yīng)的要求或說明。各課題的難易度是有差異的,每個課題后以標準分的形式標出了難易度。例如:
課題1:設(shè)有n個人圍坐在圓桌周圍,現(xiàn)從某個位置m(1≤m≤n)上的人開始報數(shù),報數(shù)到k的人就站出來。下一個人,即原來的第k+1個位置上的人,又從1開始報數(shù),再報數(shù)到k的人站出來。依此重復(fù)下去,直到全部的人都站出來為止。試設(shè)計一個程序求出出列序列(難易度90)。
課題2:用遞歸算法和非遞歸算法實現(xiàn)下面問題,并比較其算法優(yōu)勢。把一只老鼠放進一個無蓋的大箱內(nèi), 箱內(nèi)設(shè)置若干隔板,使老鼠走動的方向受到阻礙,看其如何找到一條通道,走出大箱(難易度80)。
“難易度90”表示設(shè)計中的各項全部達到要求時的最高得分大致為90。因此,參加課程設(shè)計的學(xué)生首先要了解設(shè)計的任務(wù),仔細閱讀各題的設(shè)計要求,然后根據(jù)自己的基礎(chǔ)和能力情況從中選擇一題。一般來說,選擇課題應(yīng)以在規(guī)定的時間內(nèi)能完成,并能得到應(yīng)有的鍛煉為基本原則。課程設(shè)計的總體思路是:數(shù)據(jù)模型選取→構(gòu)造求解算法→選擇存儲結(jié)構(gòu)→編寫程序代碼→調(diào)試測試→總結(jié)分析。
在做課程設(shè)計時,不再拘泥于語言環(huán)境的限制和存儲結(jié)構(gòu)的限制,主要鍛煉學(xué)生的開放思維能力和綜合知識的應(yīng)用能力。同時,引導(dǎo)學(xué)生從結(jié)構(gòu)化程序設(shè)計到面向?qū)ο蟪绦蛟O(shè)計的思考。例如學(xué)生正在學(xué)習(xí)C#,在做課題1時,除了傳統(tǒng)的設(shè)計方法外,可以引導(dǎo)學(xué)生畫出類圖和順序圖,寫出C#的代碼。
設(shè)計結(jié)束后要寫出課程設(shè)計報告,以作為整個課程設(shè)計評分的書面依據(jù)和存檔材料。主要包括:需求分析、概要設(shè)計、詳細設(shè)計、調(diào)試分析、用戶使用說明、測試結(jié)果、參考文獻等。課時外的訓(xùn)練主要是為畢業(yè)設(shè)計打下基礎(chǔ),同時也培養(yǎng)了學(xué)生的團隊協(xié)作精神。
2組織形式
2.1學(xué)生的組織
對于學(xué)生進行分組,每組中按照好、中、差的學(xué)生進行搭配。由于學(xué)生水平參差不齊,早做完的學(xué)生,進行考核驗收。驗收合格,同時給出相關(guān)思考題,可以再對于思考題進行進一步的思考,鍛煉創(chuàng)新精神。同時,讓已完成任務(wù)的學(xué)生輔導(dǎo)未完成任務(wù)的學(xué)生,這樣培養(yǎng)了學(xué)生的團隊協(xié)作精神,課堂氣氛非常活躍,激發(fā)了學(xué)生學(xué)習(xí)的主動性。對于教師的工作也減輕了一些,教師主要是總體部署,分步考核,可以有充足的時間進行驗收,比較清楚地掌握總體情況,以便講評。這樣組織學(xué)生,可以解決“優(yōu)等生吃不飽,差等生吃不了”的局面,實現(xiàn)了“因才施教”。
2.2內(nèi)容的組織
對于每一個實驗項目的實驗?zāi)康?、相關(guān)要求等,以實驗指導(dǎo)書的形式與學(xué)生見面,一本好的實驗指導(dǎo)書能給學(xué)生的上機實驗帶來事半功倍的效果。
首先,讓學(xué)生明確實驗?zāi)康暮鸵?。每個實驗項目都給出了實驗?zāi)康?,并且提出了具體要求。有了實驗?zāi)康?,學(xué)生才有方向性;有了具體要求,學(xué)生實驗時才有章可循。對于要求,要按時間分塊執(zhí)行。比如單鏈表的操作為2學(xué)時,第一個學(xué)時完成建立、查找、部分主函數(shù)工作;第二學(xué)時在第一學(xué)時基礎(chǔ)上完成插入、刪除操作,完善主函數(shù)。每一個學(xué)時在最后進行驗收,若有問題通過小組完成。
其次,讓學(xué)生掌握實驗步驟。每一個實驗項目按照軟件工程的思想去組織,先需求分析,抽象出數(shù)據(jù)結(jié)構(gòu)模型,再明確數(shù)據(jù)類型,詳細設(shè)計,最后給出類C語言的算法描述。要求學(xué)生要嚴格遵循實驗步驟來思考問題,這樣,可以培養(yǎng)學(xué)生良好的工作作風(fēng)和解決問題的方法,并且為后續(xù)課程做準備。
3考核方式
市場經(jīng)濟體制下的學(xué)生不如計劃經(jīng)濟體制下的學(xué)生好教育,特別目前高校擴招,入學(xué)的學(xué)生素質(zhì)參差不齊,基礎(chǔ)相對薄弱,自學(xué)能力不強,不少學(xué)生在學(xué)習(xí)上存在畏難心理。而對于高等教育也不能降低要求,這樣就要求在教學(xué)模式上進行革新,我校對教和學(xué)提出兩個轉(zhuǎn)變,“變學(xué)生管理為學(xué)習(xí)管理,變管理學(xué)生為服務(wù)學(xué)生”。對于課程教學(xué),不能再采取應(yīng)試教育下的考核形式。鑒于此,在數(shù)據(jù)結(jié)構(gòu)的教學(xué)過程中,特別是實驗教學(xué),探索出了新的考核形式。
分數(shù)對學(xué)生來說是非常重要的,以此作為課程管理的抓手。對于教學(xué)計劃內(nèi)的實驗項目成績分成兩個部分,一個是個人成績,一個是小組成績。個人成績主要考核學(xué)生個人能力,小組成績主要是考核學(xué)生的團隊協(xié)作精神。對于個人成績考核形式有兩個方面,一個方面是學(xué)生的程序代碼調(diào)試技能的測試,一個方面是書寫實驗報告,從實驗報告上可以考查學(xué)生的邏輯組織能力。筆者把該考核模式稱為“實驗2+2”模式。每個實驗項目結(jié)束前進行驗收考核,經(jīng)常進行階段性考核,主要是激發(fā)學(xué)生的學(xué)習(xí)興趣,保證了課堂教學(xué)紀律,基本沒有缺勤的學(xué)生,讓學(xué)生找不出來不學(xué)習(xí)的理由,因為每處都與成績掛鉤,都在拼命的去“掙分”。
對于課程設(shè)計部分,實驗室開放時間結(jié)束時,由學(xué)生提交課程設(shè)計源代碼和設(shè)計總結(jié)報告。源代碼提交時,要生成可執(zhí)行文件,對文件進行壓縮,壓縮文件名為“學(xué)號+姓名”形式,發(fā)送到指定郵箱地址。課程設(shè)計成績根據(jù)學(xué)生設(shè)計任務(wù)完成情況、設(shè)計報告、設(shè)計成果的質(zhì)量以及答辯情況綜合評定。完成情況主要包括:功能實現(xiàn)情況和程序設(shè)計情況;設(shè)計報告包括課程設(shè)計報告格式,課程設(shè)計思路及設(shè)計過程,以及對設(shè)計的自我評價,收獲和體會等;答辯要求思路清晰,模塊關(guān)系清楚,回答問題敏捷。
對于學(xué)生的學(xué)業(yè)成績采用結(jié)構(gòu)化成績,把100分不再作為一個整體看待,把它融進教學(xué)的全過程中去。學(xué)生的學(xué)業(yè)成績由平時成績、副卷成績和主卷成績構(gòu)成,平時成績占20%,副卷成績占20%,主卷成績占60%。在平時成績中課程設(shè)計10分,作業(yè)和平時課堂表現(xiàn)5分,小考5分;副卷成績中個人成績15分(其中程序調(diào)試10分,實驗報告5分),小組成績5分。
4結(jié)論
通過實施驗證,效果是良好的。實驗的創(chuàng)新也帶動了整個課程的進步,特別是上課出勤率,基本上是全勤。課堂氣氛活躍,問題討論熱烈,學(xué)生的學(xué)習(xí)主動性大大提高了,網(wǎng)絡(luò)教學(xué)平臺登錄次數(shù)明顯增多。在問題答疑和考核驗收方面,雖然增加了教師的教學(xué)工作量,但是提高了教師的工作熱情。真正實現(xiàn)了“教”和“學(xué)”的良好互動,提高了教學(xué)質(zhì)量。
參考文獻:
[1] 周蘇. “數(shù)據(jù)結(jié)構(gòu)與算法”的教學(xué)改革和實驗創(chuàng)新[J].計算機教育,2007,(15).
[2] 嚴蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu)[M]. 北京:清華大學(xué)出版社,1997.
[3] 嚴蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集[M]. 北京:清華大學(xué)出版社,1999.