摘要:教學實踐是決定“數(shù)據(jù)結構”課程學習成效的重要環(huán)節(jié)。以“數(shù)據(jù)結構”的教學目標和學生創(chuàng)新能力的培養(yǎng)為前提,將課程的實踐活動分為驗證、設計、綜合和創(chuàng)新四個層次;按學生和教師兩種角色討論實踐活動的實施方法;介紹服務于多層實踐活動的輔助教材和教學網站;提出構建多維一體的數(shù)據(jù)結構實踐教學系統(tǒng)。
關鍵詞:數(shù)據(jù)結構;實踐;多維;教材
“數(shù)據(jù)結構”是在20世紀60年代中期才設立的一門課程。它主要討論在軟件開發(fā)過程中的分析、設計與實現(xiàn)中的若干基本問題[1]:1)問題的建模。如何把客觀世界的問題映射到計算機世界中?如何在計算機世界中表述和存儲客觀世界中的對象?它是算法處理的對象。2)問題的求解方法,即算法。3)算法的評價。評價算法的優(yōu)劣。算法是數(shù)據(jù)結構的主要研究內容。算法是計算機科學的核心,也是一種一般性的智能工具?!皩W習算法有助于人們對其他學科的理解,不管是化學、控制、甚至音樂,即使非計算機專業(yè)的學生,學習算法的理由也是非常充分的[2]。”因此,數(shù)據(jù)結構是高級程序設計、編譯原理、操作系統(tǒng)、數(shù)據(jù)庫、人工智能等課程的基礎,它不僅被作為計算機相關專業(yè)(如計算機科學與技術、軟件工程、網絡工程等)的一門核心的專業(yè)基礎課;也是工科、理科、醫(yī)科等學科中許多專業(yè)的必修或選修專業(yè)基礎課。
“數(shù)據(jù)結構”課程具有抽象性和實踐性。客觀世界中的問題在計算機中的表示與算法描述是抽象的,但算法的實現(xiàn)是實踐的,惟有通過實踐才能真正掌握課程內容,達到學習目標。通常在有限的課時內,教師主要講授的是抽象部分,此種情況下如果沒有相應的實踐,課程的學習將如同在沙漠建房,難以落成。
因此,如何構建能夠有效的實踐環(huán)節(jié),一直是教師關注的問題。
筆者結合“數(shù)據(jù)結構”課程建設,就多維一體的“數(shù)據(jù)結構”實踐教學系統(tǒng)的構建與實現(xiàn)進行總結,以期為“數(shù)據(jù)結構”實踐教學提供一定的參考和借鑒。
1 “數(shù)據(jù)結構”實踐活動層次
實踐是一切認識活動和知識的前提[3],學生的認識主要是在實踐活動中發(fā)展起來的[4]。筆者根據(jù)由淺入深、循序漸進和創(chuàng)新能力獲得的規(guī)律,將課程實踐活動按層次由低到高分為驗證型實踐、設計型實踐、綜合型實踐和創(chuàng)新型實踐。
1.1驗證型實踐
荀子說:“聞之,不若見之;見之,不若知之;知之,不若行之……行之,明也?!彬炞C型實踐指通過運行已實現(xiàn)的算法對書本知識及算法進行對錯性的驗證。驗證理論的實踐活動使學生充分領悟知識的內在意蘊,加深學生對基礎知識的理解,掌握基本實驗技能,為后續(xù)較高層次的實踐活動奠定基礎。驗證型實踐活動從內容上來講,它依附于課堂教學,是課堂教學的延伸和補充。
1.2設計型實踐
設計型實踐指用所學的一個或若干個知識點去解決特定的問題。通過對問題的求解,了解知識的應用場景,獲取知識的初步應用能力。智慧來源于知識,但知識不會自然而然地達成智慧,需要通過實踐活動對知識“內化”和“活化”,起關鍵作用的是人的實踐經驗[5]。這里的知識是局部的,是一個個知識點。大量的設計練習是解決較復雜的問題的基礎。
1.3綜合型實踐
綜合型實踐是指將所學的數(shù)據(jù)結構思想與方法,應用到軟件開發(fā)的分析、設計與實現(xiàn)等方面。綜合型實踐要用到課程的許多知識點。能力與智慧的獲得,絕不是簡單的累積,此處,1+1≠2。學習者可能掌握各個知識點及其各自的應用,但不等于具備解決復雜問題的能力,盲人摸象的典故正說明這一點。通過綜合實踐,引導學生從全局的觀點,認識數(shù)據(jù)結構課程的精髓和本質;指導學生如何綜合地將所學的知識應用于軟件開發(fā)過程中。
1.4創(chuàng)新型實踐
創(chuàng)新型實踐是指能夠激發(fā)和培養(yǎng)學生創(chuàng)新能力的實踐活動。培養(yǎng)具有創(chuàng)新精神和實踐能力的有較高綜合素質的人才是當代教育的目標,也是學校教學的出發(fā)點和歸宿。但“人的發(fā)展以人在不同經驗方式中發(fā)展為前提[5]”,創(chuàng)新型實踐旨在通過實踐活動培養(yǎng)學生的創(chuàng)新能力,由舊知識建構新知識,達到學習的目標。
2數(shù)據(jù)結構實踐活動的實施
實踐活動的參與者有教師和學生兩方。學生是實踐的主體,旨在運用所學的知識和理論發(fā)現(xiàn)問題、分析問題、嘗試解決問題,目的是提高解決問題的能力。教師是引導者,為學生提供必要的實踐環(huán)境和條件,當學生遇到困難時,給予指導;對學生的實踐成果給予評定,使他們不斷進取。
2.1驗證型實踐
對驗證型實踐的處理方式有兩種。一種是作為課程實驗內容。此法的不妥之處在于:1)在有限的實驗課時內,只能完成驗證工作的很少一部分;2)如果把驗證作為課程實驗的主要內容,那高一層次的設計型實驗就沒有時間了。另一種方式是完全由學生自我解決。持該觀點者認為,算法的實現(xiàn)是學生在學過高級程序設計語言后應該能解決的問題,不是本課程應該關注的。其實,算法描述和算法實現(xiàn)之間是有距離的,這如同一臺機器的構造和機器生產工藝流程之間的區(qū)別一樣,能夠跨越這個距離的學生很少,即使有的學生具備這個能力,但因時間、精力所限,也不可能實現(xiàn)教材中的所有算法。
一個人接受科學教育的最大收獲是那些能夠受用一生的智能工具。數(shù)據(jù)結構正屬于這類教育的內容。通過學習算法,學生一方面開擴眼界,培養(yǎng)正確的思維方法,更重要的是數(shù)據(jù)結構介紹的典型數(shù)據(jù)模型和實現(xiàn),是一種可以用于解決復雜問題的工具。如果學習者的學習只是紙上談兵,就不可能學會工具的使用,就無法用工具去解決問題呢?所以,無論從學習者的認知所需還是從課程的學習目的來看,以適當?shù)姆绞綆椭鷮W生掌握典型的數(shù)據(jù)模型的實現(xiàn)是必須的。因此,上述兩種方法均不可取。我們的做法是由教師實現(xiàn)這些數(shù)據(jù)模型并把源程序提供給學生,學生利用課余時間自行進行驗證實驗,具體任務如下。
1) 教師。①給出教材中相應算法實現(xiàn)后的源程序;②給出程序設計說明,方便學生理解程序的結構與功能;③給出思考題,引導學生閱讀源程序和理解源程序;④給出操作說明和測試用例,引導學生進行正確性地驗證和更全面地理解算法。
2) 學生。①理解相關背景知識;②根據(jù)程序設計說明和思考題閱讀源程序;③根據(jù)操作說明運行源程序的測試用例,并進行結果分析;④回答思考題。
為了督促學生進行驗證實踐,要求學生將任務③、④的工作記錄作為作業(yè)上交;教師利用課堂提問,抽檢和討論部分源程序的運行結論。
2.2設計型實踐
設計型實踐活動分為兩個部分,一是課程實驗,二是作業(yè)。
2.2.1課程實驗
鑒于實踐對數(shù)據(jù)結構學習的重要作用,一般會拿出課時的1/5~1/4用于課程實驗。針對課程實驗,教師與學生的工作分別如下。
1) 教師。①給出問題描述,提出問題解決的基本要求,如采用的知識點、輸入輸出要求、算法復雜度等;②對問題進行初步分析,必要時給出邏輯設計和存儲設計的建議;③酌情給出算法描述;④給出若干測試用例,引導學生進行功能測試,領會健壯的程序設計;⑤給出實驗報告撰寫要求,包含問題描述、數(shù)據(jù)結構設計、功能劃分和算法設計、界面設計、運行與測試、總結與心得、源程序等。
2) 學生。①分析問題;②定義數(shù)據(jù)結構;③給出算法描述;④編程實現(xiàn)算法;⑤用測試用例測試程序,記錄運行結果;⑥寫出符合要求的實驗報告。
教師通過檢查源程序運行情況和批閱實驗報告,了解和評定學生的實驗情況。
2.2.2作業(yè)
作業(yè)題分為兩類:基本概念題和算法設計題。部分算法設計題要求學生編程實現(xiàn),以彌補課堂設計實驗的不足。對于這部分實踐活動,教師布置題目,通過批改作業(yè),檢查學生的完成情況。學生編程實現(xiàn)題目,將設計思路、算法和運行結果形成作業(yè)上交。
2.3課程設計
課程設計對應于綜合實踐活動。對于計算機相關專業(yè)的學生來說,在“數(shù)據(jù)結構”課程學習結束后,通過前期的驗證和設計實踐,具備一定的綜合使用課程知識解決問題的能力和規(guī)范的程序設計能力。所以,一般在課程結束后,單獨有1~2周的“數(shù)據(jù)結構”課程設計,教師與學生的工作分別如下。
1) 教師。①制定課程設計實施計劃書。給出課程設計的目的和要求、日程安排、考核方法及分組情況等。②給出問題描述。區(qū)別于設計題,這里的問題一般較復雜,實現(xiàn)的源碼,一般均在500行以上,甚至千余行。③提出設計要求,引導學生進行概要分析??煞譃榛疽蠛洼^高要求,與不同層次的學生的能力相對應。④設計提示。綜合設計的問題解決,通常包含多個算法,對其中特別難的、學生不易想到的要點給出提示。⑤提出課程設計報告的寫作要求。包含需求分析、概要設計、詳細設計、調試分析、測試分析、總結與體會、使用說明及源程序等。
2) 學生。①根據(jù)實施計劃書的進度要求、問題描述和設計要求進行“概要設計→詳細設計→調試測試”的問題求解;②接受系統(tǒng)檢查;③撰寫符合要求的課程設計報告。
教師通過作品檢查和批閱課程設計報告給出學生的課程設計成績。教師通常在課程設計的最后一天,通過運行系統(tǒng)和提問,檢查學生的系統(tǒng)設計與完成情況。
2.4科技活動
學生的創(chuàng)新能力來自科研實踐??蒲袑嵺`要因人而異,針對學有余力的學生,通過下列三種途徑提供科研實踐活動。
2.4.1項目開發(fā)
通過項目鍛煉,培養(yǎng)學生進行科學研究的工作方法和相互協(xié)作的精神。
1) 輔研。教師積極向學生介紹自己的研究方向和課題,吸納有特長和興趣的學生參加自己的項目研究,根據(jù)其知識結構,給學生布置力所能及的任務,逐步深入。
2) 項目申報。積極鼓勵學生參與各級項目的申報。學生作為申報人并獲得資金的資助,能有效增加其完成項目的責任感與投入其中的熱情。
2.4.2社會實踐
“沒有經驗”被企業(yè)視為大學畢業(yè)生的最ovwHDD1q0Iylry6gmHuOKyCa3O+ZMKp+Zpi6dlOQu3s=大弱項。參加社會實踐,是學生獲取經驗的最好途徑。學習數(shù)據(jù)結構的學生基本上是大二和大三的,這樣,他們有1~2個暑假,可以進行社會實踐。教師向學生宣傳社會實踐的好處,介紹社會實踐場所。學生在寒暑假或平時課余時間,到某個單位短期工作或兼職工作,參與單位具體項目的工發(fā)。
2.4.3競賽
競賽是學生用理論知識解決實際問題的有效載體,是檢驗、鍛煉、提高和展示學生科技創(chuàng)新能力的很好平臺。競賽所帶來的榮譽感,能夠有效激勵學生的創(chuàng)新熱情。常見的競賽有:校級的“希盟杯”電腦技能設計大賽、網頁設計大賽等;市級的“天翼杯”電腦技能大賽、科技創(chuàng)新大賽等;省級的“富士通”杯網頁網站設計大賽、大學生軟件設計大賽等;國家級的數(shù)學建模大賽、“挑戰(zhàn)杯”全國大學生科技作品競賽、軟件人才設計大賽等。
教師及時地把各種競賽信息通報給學生并組織學生申報;組織好競賽作品的創(chuàng)作與指導工作;對參賽者和獲獎者給予一定的獎勵,并對參賽作品進行展示和宣傳,擴大活動效果,以吸引更多的學生參與競賽活動。
3 “數(shù)據(jù)結構”實踐平臺
為了使數(shù)據(jù)結構的實踐活動能夠順利進行,我們編寫了《數(shù)據(jù)結構實踐教程》[6],創(chuàng)建了“數(shù)據(jù)結構實踐教學網站”作為實踐教學實施平臺。
3.1 《數(shù)據(jù)結構實踐教程》教材建設
本書含蓋了1—3層的實踐活動的素材和實施指導。全書分為三篇:驗證篇、設計篇和綜合篇。
1) 驗證篇。詳述《數(shù)據(jù)結構》[1]教材中相關算法的實現(xiàn)。本篇首章介紹算法到程序轉換的基本步驟及需要注意的問題;給出了進行驗證性實驗的步驟;同時介紹了實驗環(huán)境。其余各章按教材教學內容進行編排。每個應用程序的敘述采用一致的結構,由如下四個部分組成:①程序設計。給出數(shù)據(jù)的類定義和程序結構圖。②源程序。方便學習者研習程序設計思路、程序結構、改進程序以及更好地操作程序。③程序運行。給出程序操作方法介紹及程序運行界面。④思考題。引導學習者更深入地理解程序、程序所實現(xiàn)的算法、程序所采用的存儲結構以及可改進之處。
2) 設計篇。針對一定的知識點給出不同難易程度的設計題,作為課程實驗和課后程序設計素材。本篇介紹了設計型實驗的實驗步驟、設計內容;提供了實驗報告格式,并給出一個實驗報告案例。其余各章按教材教學內容進行編排,每個設計題由以下五個部分組成:①問題描述。給出問題背景,提出需要解決的問題。②基本要求。給出算法實現(xiàn)時對數(shù)據(jù)邏輯結構、存儲結構、功能設計、數(shù)據(jù)輸入或輸出上的要求。③實現(xiàn)提示。對算法設計給出必要的提示或偽碼描述。④測試與運行。給出測試案例。⑤思考題。提出相關問題或更高設計要求。
3) 綜合篇。針對一個以上的知識點給出綜合設計題,可以作為課程設計素材。全篇首章給出有關綜合設計項目涵蓋的內容、綜合設計報告格式以及綜合設計成績評定準則等。其余各章按設計任務編排,每個項目任務的敘述由以下三個部分組成:①問題描述。給出問題背景,提出需要解決的問題。②設計要求。提出項目設計與實現(xiàn)時功能上需求,分為基本要求和較高要求。③實現(xiàn)提示。對數(shù)據(jù)組成形式、相關算法設計上給出必要的提示。
該教材充分考慮了學習者進行1—3層次的實踐活動的可能需求。驗證程序使用菜單界面,結構統(tǒng)一,操作簡單;設計篇和綜合篇內容豐富,提供了各種難易程度、且有一定實用性或趣味性的題目,可以為學習者提供全程指導。
3.2數(shù)據(jù)結構實踐教學網站
該網站分為用戶管理、學生主頁和老師主頁三個部分,其功能如圖1所示。
圖1 “數(shù)據(jù)結構實踐教學平臺”系統(tǒng)功能
3.2.1學生主頁
以學生身份登錄系統(tǒng)后進入學生主頁,從中查看實踐教學內容、聯(lián)系教師,上傳作業(yè)、在線交流等。頁面中包括課程實驗、課程實訓、課程設計、作品展示等。
1) 課程實驗:提供實驗教學大綱、實驗指導書及實驗上傳功能。
2) 作品展示:提供經典算法設計案例、優(yōu)秀學生作品展示、典型數(shù)據(jù)結構及其基本操作的算法動畫演示等。
3) 課程實訓:提供習題、試題、典型題解、最新題庫等。
4) 課程設計:提供課程設計指導書、課程設計作品上傳等。
3.2.2教師界面
以教師身份登錄系統(tǒng)后進入教師主頁。教師通過該頁面,發(fā)布公告,進行實驗、實訓(即課外設計)、課程設計、作品、學生、教師等相關信息的管理。
1) 公告管理:實施公告的編輯、發(fā)布及公告的數(shù)據(jù)庫管理等。
2) 課程實驗:發(fā)布實驗指導相關內容;查看學生上傳的課程實驗源程序與報告。
3) 課程實訓:發(fā)布實訓設計問題及對問題庫的數(shù)據(jù)庫管理。
4) 課程設計:發(fā)布課設指導相關材料;對學生上傳作業(yè)進行管理。
數(shù)據(jù)結構實踐教學系統(tǒng)的開發(fā)為學生和教師帶來了很大的方便,通過網絡突破時間和空間的限制,方便教師與學生之間、學生與學生之間的專題交流,為學生提供豐富的素材。
4結語
實踐教學是“數(shù)據(jù)結構”教學中不可缺少的環(huán)節(jié),對課程學習成效起著決定性的作用。筆者根據(jù)課程特點和創(chuàng)新人才培養(yǎng)目標,提出按驗證、設計、綜合和創(chuàng)新四個層次的實踐活動,對教材和網站的建設進行了積極探索,構建了一個多維一體的數(shù)據(jù)結構實踐教學體系。經過多年的實踐,已經取得了明顯的成效,考研率逐年提高;學生在各級比賽中獲獎越來越多,等級也逐步提高。
參考文獻:
[1]