吳超云
摘 ?要:自1968年Niklaus教授開創(chuàng)數(shù)據(jù)結構課程的體系以來,數(shù)據(jù)結構課程一直是計算機類專業(yè)的核心課程。為提高學生的培養(yǎng)質(zhì)量,許多學者從教學模式、教學方法、實驗教學、校企合作、課程思政等多方面探討了數(shù)據(jù)結構課程的教學改革,并取得了豐富的研究成果[1]?;诖耍疚膹慕虒W團隊組建、實驗教學、教材編寫三方面探討了數(shù)據(jù)結構課程的教學改革實踐,以期提高學生的學習熱情和實踐能力。
關鍵詞:數(shù)據(jù)結構;實驗教學;校企合作;課程思政
中圖分類號:TP301 文獻標識碼:A 文章編號:2095-9052(2021)07-0-02
2004年安慶師范大學(以下簡稱本校)信息與計算科學專業(yè)正式招生,之后數(shù)據(jù)結構課程一直是信息與計算科學專業(yè)的基礎課程和核心課程。近幾年的數(shù)據(jù)結構課程教學中,在教學團隊組建、課程實驗教學改革、教材編寫等方面進行了多維度的教學探索與實踐,積累了豐富的經(jīng)驗。
一、教學團隊
本校數(shù)據(jù)結構課程是安徽省精品資源共享課程和校級精品課程,擁有部分課程視頻資源,并且面向全社會開放。2018年獲批校級數(shù)據(jù)結構課程教學團隊,團隊實力強大,成員6人,且均有博士學位,年齡結構和職稱結構也合理,教授2人,副教授3人。教學團隊成員已榮獲省級教學成果二等獎和三等獎各一項。2015年獲得省級振興計劃重大課題專項,2019年獲批教育部產(chǎn)學合作協(xié)同育人項目,另外獲批多項數(shù)據(jù)結構課程省級教研項目和校級教研項目,以及數(shù)據(jù)結構課程智慧課堂項目和數(shù)據(jù)結構課程思政示范課程項目等,數(shù)據(jù)結構課程教學團隊發(fā)揮著重要作用。另外,在數(shù)據(jù)結構教學過程中團隊教師共同備課,共同磨課,分析教學重點和難點,極大地提高了教師的教學質(zhì)量,學生對各位教師的評價有較大提升。
二、課程實驗教學改革
數(shù)據(jù)結構課程研究的主要內(nèi)容是數(shù)據(jù)的組織形式和各種運算與操作的實現(xiàn)。數(shù)據(jù)組織形式有集合類型、線性類型、樹類型和圖類型,每種類型包含數(shù)據(jù)元素、數(shù)據(jù)關系和基本操作,這些數(shù)據(jù)類型與面向?qū)ο蟪绦蛟O計中類的概念相同。為讓學生加深對類概念的理解,以及加強對面向?qū)ο笤O計的掌握,課程實驗教學中采用C語言和面向?qū)ο蟪绦蛟O計語言兩種語言來實現(xiàn)各種數(shù)據(jù)類型。在此數(shù)據(jù)定義為類中的變量,基本操作定義為類中的方法。例如:順序表定義為一個類SeqList,每個數(shù)據(jù)元素定義為一個數(shù)據(jù)類型SeqDataType,在順序表類中有兩個受保護的變量,一是數(shù)組SeqData,用于存儲所有的數(shù)據(jù)元素,二是整數(shù)變量Number,表示順序表中數(shù)據(jù)元素的個數(shù)。順序表的初始化和賦值操作可用構造方法實現(xiàn),順序表的判空操作、判滿操作、插入操作、查找操作和刪除操作等用公有方法實現(xiàn)。具體定義如下:
class SeqList{
protected:
SeqDataType * Data;
int Number;
public:
SeqList( SeqDataType, int ); //構造方法
~SeqList( ); //析構方法
boolean IsEmpty( ?); //判空操作
boolean IsFull( ?); //判滿操作
boolean Insert( SeqDataType, int ); //插入操作,將元素插入某個位置
之后
boolean Search( SeqDataType ); //查找元素在表中的位置
boolean Delete( int ); //刪除操作,刪除順序表中某個元素
void ?Print( ?); //輸出操作
…………
}
再如采用鄰接矩陣表示的圖類型,可定義類GraphM,每個頂點定義為一個數(shù)據(jù)類型VerType,在圖類中有兩個私有變量,第一個變量是一維數(shù)組,用于存儲圖中的頂點,第二個變量是二維數(shù)組Edge,用于存儲鄰接矩陣。圖的初始化和賦值操作可用構造方法實現(xiàn),頂點在圖中的位置、頂點的第一個鄰接點、插入頂點或邊、刪除頂點或邊、取邊上的權值等用公有方法實現(xiàn)。具體定義如下:
class GraphM{
private:
VerType * vertex;
Edge ?* * ?E;
public:
GraphM( VerType, ?Edge ); //構造方法
~GraphM( ); //析構方法
int VertexPos( VerType ); //頂點在圖中的位置
int FirstNeighbor( int ); //頂點的第一個鄰接點
int InsertVertex( VerType); //插入頂點操作
int InsertEdge( int, int, Edge ); //插入邊操作
int DeleteVertex( VerType ); //刪除頂點與它相關聯(lián)的邊操作
int DeleteEdge( int, int ); //刪除邊操作
VerType getVertex( int ); //獲取頂點的值
E ?getWeight( int, int); //獲取邊的權值
void ?Print( ?); //輸出操作
…………
}
三、教材編寫
信息與計算科學專業(yè)招生后的幾年,主要采用清華大學嚴蔚敏教授編寫的《數(shù)據(jù)結構》教材,這本教材中的算法采用偽代碼實現(xiàn),不易理解,對學生的要求相對較高。當前的大眾化教育,學生水平和能力有一定程度的下降[2],如果教材難度相對較大,就不適合本校信息與計算科學專業(yè)和計算機類專業(yè)的學生學習。為提供適合本校學生學習的優(yōu)質(zhì)教材,筆者參與了本校教師主編的《數(shù)據(jù)結構與算法C語言版》以及《數(shù)據(jù)結構與算法C語言版習題精編與實驗指導》兩本教材的編寫,并于2015年1月在中國科學技術大學出版社出版[2]。教材共有九章,囊括了數(shù)據(jù)結構中的所有重點內(nèi)容,如緒論、線性表、棧、隊列、樹、圖、查找和排序等。在教材中每章都引入經(jīng)典案例,以提高學生學習數(shù)據(jù)結構課程的興趣。例如,線性表在通信錄系統(tǒng)設計和實現(xiàn)上的應用,棧在二進制轉(zhuǎn)換、漢諾塔問題、括號匹配算法和表達式求值問題上的應用,串在密碼學和括號匹配問題上的應用,樹在文件目錄和族譜方面的應用,哈夫曼樹在判斷學生成績和編碼中的應用,圖在通信網(wǎng)絡、交通網(wǎng)絡和工程進度管理等方面的應用,查找和排序在百度搜索、搜狗搜索等搜索引擎方面的應用。相對嚴蔚敏教授的數(shù)據(jù)結構教材,本校教材中算法采用C語言實現(xiàn),算法注釋也較多,每章設有不少例題和習題,使得教材更容易讀懂。另外刪除了難度較高的內(nèi)容,略微降低教材內(nèi)容的難度,例如,外部排序、文件組織、伸展樹、紅黑樹等內(nèi)容,適合當前本校學生的學習水平。2017年數(shù)據(jù)結構課程申請了省級規(guī)劃教材質(zhì)量工程項目,與阜陽師范大學的教師一起對2015版《數(shù)據(jù)結構與算法C語言版》教材進行修訂和改編,《數(shù)據(jù)結構與算法(C語言版)》第2版屬于普通高等學校“十三五”省級規(guī)劃教材,于2020年2月在中國科學技術大學出版社出版。
四、結語
數(shù)據(jù)結構課程是信息與計算科學專業(yè)及相關專業(yè)的重要課程,主要通過組建教學團隊、實驗教學、教材編寫的改革與實踐,增強了師生間的感情和互動,提高了教師的教學水平,增加了學生的學習興趣和熱情,提升了學生的實踐能力,達到了提高人才培養(yǎng)質(zhì)量的目的。
參考文獻:
[1]姚麗莎,余云.項目驅(qū)動教學在數(shù)據(jù)結構課程教學中的應用研究[J].赤峰學院學報:自然科學版,2017,33(3):33-35.
[2]任平紅,陳矗,劉清秀.面向?qū)ο蟮臄?shù)據(jù)結構的教學方法研究[J].電腦知識與技術,2015,11(33):95-96.
(責任編輯:張詠梅)