前言:想要寫出一篇令人眼前一亮的文章嗎?我們特意為您整理了5篇數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)范文,相信會(huì)為您的寫作帶來(lái)幫助,發(fā)現(xiàn)更多的寫作思路和靈感。
摘要:本文針對(duì)傳統(tǒng)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)過(guò)程中出現(xiàn)的問(wèn)題,提出一種案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)方式,以幫助學(xué)生理解和掌握分析問(wèn)題、解決問(wèn)題的方法,提高自主學(xué)習(xí)能力,鍛煉設(shè)計(jì)創(chuàng)新能力。實(shí)踐表明,此教學(xué)方式能夠彌補(bǔ)傳統(tǒng)教學(xué)的不足,開(kāi)闊學(xué)生的思路,提高自主完成率,達(dá)到課程設(shè)計(jì)目的。
關(guān)鍵詞:課程設(shè)計(jì);數(shù)據(jù)結(jié)構(gòu);案例驅(qū)動(dòng);教學(xué)改革
中圖分類號(hào):G642
文獻(xiàn)標(biāo)識(shí)碼:B
1引言
數(shù)據(jù)結(jié)構(gòu)課程是計(jì)算機(jī)相關(guān)專業(yè)的專業(yè)基礎(chǔ)課程,屬于專業(yè)課程體系中的核心課程。該課程著眼于對(duì)基本數(shù)據(jù)結(jié)構(gòu)進(jìn)行闡述和分析、講解基本數(shù)據(jù)結(jié)構(gòu)的應(yīng)用并介紹典型的基本算法等三個(gè)方面,內(nèi)容比較抽象枯燥,掌握起來(lái)相對(duì)困難。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是一門獨(dú)立的實(shí)驗(yàn)環(huán)節(jié),是對(duì)數(shù)據(jù)結(jié)構(gòu)課程教學(xué)理論的延伸和補(bǔ)充,是對(duì)理論知識(shí)的綜合應(yīng)用,其目的是發(fā)揮學(xué)生的主動(dòng)性,培養(yǎng)學(xué)生分析實(shí)際問(wèn)題并加以解決的能力,鍛煉學(xué)生的設(shè)計(jì)創(chuàng)新能力。
傳統(tǒng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)輕講授,主要以對(duì)學(xué)生的單獨(dú)輔導(dǎo)為主,督促學(xué)生完成課程設(shè)計(jì)。這種方式存在后文所提及的一些問(wèn)題,隨著互聯(lián)網(wǎng)資源的日益豐富,部分問(wèn)題更加突出了。為了能讓學(xué)生通過(guò)課程設(shè)計(jì)更好的掌握數(shù)據(jù)結(jié)構(gòu)的內(nèi)容,我們?cè)O(shè)計(jì)了案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)改革,實(shí)踐證明,該項(xiàng)教改能夠填補(bǔ)傳統(tǒng)教學(xué)過(guò)程的不足。
2傳統(tǒng)教學(xué)過(guò)程中暴露的問(wèn)題
(1) 缺乏駕馭全局的能力。本科二年級(jí)學(xué)生計(jì)算機(jī)建模能力弱,沒(méi)有軟件工程的思想,因而缺乏駕馭全局的能力。軟件工程課程一般都開(kāi)設(shè)在數(shù)據(jù)結(jié)構(gòu)課程之后,在進(jìn)行數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)前,學(xué)生也基本沒(méi)有分析、編寫較大程序的經(jīng)驗(yàn),這種情況造成了學(xué)生拿到問(wèn)題后不知該從何下手和如何規(guī)劃好課程設(shè)計(jì)的整個(gè)過(guò)程。
(2) 生搬硬套基本數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)教材中都是最原始的數(shù)據(jù)結(jié)構(gòu),不進(jìn)行擴(kuò)展和修改基本上是不能直接用到課程設(shè)計(jì)中解決實(shí)際問(wèn)題的,而采用多種數(shù)據(jù)結(jié)構(gòu)解決問(wèn)題并加以比較找尋最優(yōu)方案對(duì)于學(xué)生來(lái)說(shuō)就更為困難。
(3) 對(duì)高級(jí)程序語(yǔ)言掌握不到位。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)是需要用高級(jí)程序語(yǔ)言來(lái)編寫的,學(xué)生對(duì)該程序語(yǔ)言的掌握程度直接影響到課程設(shè)計(jì)的質(zhì)量,常見(jiàn)的問(wèn)題包括:變量定義不規(guī)范、函數(shù)功能劃分不合理、代碼可讀性較差、文件讀寫掌握不好、調(diào)試程序能力較弱等。
(4) 照搬、照抄他人課程設(shè)計(jì)的現(xiàn)象存在。由于完成課程設(shè)計(jì)的時(shí)間有限,有的學(xué)生在無(wú)法自主完成的情況下,通過(guò)網(wǎng)絡(luò)、書籍等方式來(lái)查找解題方法。本來(lái)通過(guò)查閱資料消化吸收他人的解題思路來(lái)求解自己的課程設(shè)計(jì)問(wèn)題是毋庸置疑的正規(guī)途徑,然而一方面課程設(shè)計(jì)的題目每個(gè)學(xué)校每屆學(xué)生都相對(duì)比較固定,致使存在抄襲往屆學(xué)生程序的現(xiàn)象,另一方面互聯(lián)網(wǎng)的發(fā)展使得查找相似題目的課程設(shè)計(jì)源代碼并非難事。此外,市面上還存在著大量快餐式的課程設(shè)計(jì)書籍在售,這類書籍良莠不齊,多是搜集、羅列了若干課程設(shè)計(jì)題目,源碼、光盤附上,草草分析講解了事。許多學(xué)生也習(xí)慣了這種快餐式的學(xué)習(xí),能做到獨(dú)立思考、舉一反三的越來(lái)越少。
3案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)改革特點(diǎn)
案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)改革是將案例教學(xué)法引入數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)中,教師通過(guò)講解一個(gè)完整的案例分析解決過(guò)程,輔以多媒體的手段與學(xué)生交流、互動(dòng),達(dá)到培養(yǎng)學(xué)生分析并解決實(shí)際問(wèn)題的能力,鍛煉學(xué)生的設(shè)計(jì)創(chuàng)新能力的目的,同時(shí)也彌補(bǔ)了目前數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)重實(shí)踐、輕講授的不足,豐富該項(xiàng)課程設(shè)計(jì)的教學(xué)內(nèi)容。該方法有以下特點(diǎn):
(1) 提前熟悉軟件工程思想。案例的分析解決過(guò)程就是一個(gè)實(shí)踐軟件工程思想的過(guò)程,學(xué)生可以在講解的過(guò)程中體會(huì)軟件開(kāi)發(fā)的完整流程,進(jìn)而對(duì)自己的課程設(shè)計(jì)有全局性的考慮。
(2) 舉一反三,定制合適的數(shù)據(jù)結(jié)構(gòu)。對(duì)于案例講解中所涉及到的數(shù)據(jù)結(jié)構(gòu),教師將進(jìn)行細(xì)致的分析。采用不同數(shù)據(jù)結(jié)構(gòu)解決同一問(wèn)題,在性能和功能上會(huì)有所區(qū)別,學(xué)生可以在與教師的互動(dòng)討論中提高對(duì)各種數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí),從而設(shè)計(jì)適合解決自己課程設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu),甚至能夠采取多種解法。
(3) 養(yǎng)成良好的編程習(xí)慣。優(yōu)秀的代碼就像優(yōu)美的文章一樣能使閱讀者心情舒暢,教師講解的案例都是代碼級(jí)別的,定義規(guī)范、流程清楚、可讀性強(qiáng)、具備參考價(jià)值,這樣就促使學(xué)生養(yǎng)成良好的編程習(xí)慣。教師以多媒體手段演示代碼的編制調(diào)試過(guò)程,使學(xué)生對(duì)編程環(huán)境更加熟悉,能夠靈活運(yùn)用跟蹤、斷點(diǎn)等調(diào)試手段,開(kāi)發(fā)過(guò)程事半功倍。
(4) 最大限度避免抄襲課程設(shè)計(jì)的現(xiàn)象。大多數(shù)學(xué)生事實(shí)上都希望能夠自主完成課程設(shè)計(jì),只是因?yàn)椴粫?huì)做才導(dǎo)致抄襲往屆學(xué)生或是市售相關(guān)書籍源碼的現(xiàn)象存在。授之以魚不如授之以漁,通過(guò)對(duì)典型案例的講授,教師教給了學(xué)生解決課程設(shè)計(jì)的方法,學(xué)生找到了突破口,便愿意通過(guò)自己的努力完成任務(wù),自己能制作“大餐”,也就不再求助于“快餐”了。
4典型數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)案例分析
“活期儲(chǔ)蓄帳目管理”是常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)題目,下面以其講解過(guò)程為例簡(jiǎn)單描述一下案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)的過(guò)程。
此課程設(shè)計(jì)需要實(shí)現(xiàn)的功能一般是:(1)采用交互工作方式;(2)實(shí)現(xiàn)儲(chǔ)戶開(kāi)戶;(3)實(shí)現(xiàn)儲(chǔ)戶銷戶;(4)向某賬戶存款;(5)從某賬戶取款;(6)排序顯示所有賬戶信息;(7)查詢某賬戶余額;(8)查詢某賬戶交易記錄;(9)所有賬戶及其交易信息存儲(chǔ)至文件,程序運(yùn)行時(shí)從文件中讀入。該課程設(shè)計(jì)考察的知識(shí)點(diǎn)包括:選擇并構(gòu)造數(shù)據(jù)結(jié)構(gòu);使用與特定數(shù)據(jù)結(jié)構(gòu)相應(yīng)的算法來(lái)實(shí)現(xiàn)具體功能;對(duì)文件讀寫結(jié)構(gòu)化數(shù)據(jù);對(duì)程序設(shè)計(jì)語(yǔ)言的靈活運(yùn)用等。
首先應(yīng)對(duì)題目進(jìn)行大致的分析,該題目包括兩方面的信息。一方面是儲(chǔ)戶的信息,可設(shè)計(jì)為包含賬號(hào)、姓名和余額等字段;另一方面是交易記錄信息,可設(shè)計(jì)為包括賬號(hào)、存取時(shí)間、存取標(biāo)志、金額等字段,兩方面信息通過(guò)賬號(hào)字段關(guān)聯(lián)起來(lái)。使用順序存儲(chǔ)結(jié)構(gòu)、鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)或樹形結(jié)構(gòu)都可以存儲(chǔ)這些信息,但其中各有利弊。順序存儲(chǔ)結(jié)構(gòu)設(shè)計(jì)簡(jiǎn)單,但容量固定,賬戶插入刪除需要進(jìn)行記錄的移動(dòng),單個(gè)賬戶的交易記錄信息存儲(chǔ)不易連續(xù)導(dǎo)致列舉時(shí)需要對(duì)全部交易記錄進(jìn)行完整遍歷,對(duì)已排序順序表查找某一記錄時(shí)可以采用特定算法(如二分法)提高效率,總體上來(lái)說(shuō)實(shí)用性和整體效率相對(duì)較差。鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)設(shè)計(jì)略復(fù)雜,容量不設(shè)上限,賬戶插入刪除較方便,采用鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ)的交易記錄形式上連續(xù),列舉時(shí)很方便,但在查找某一記錄時(shí)需要遍歷整個(gè)鏈表效率較低,總體上來(lái)說(shuō)實(shí)用性和整體效率中上。樹形存儲(chǔ)結(jié)構(gòu)相對(duì)最復(fù)雜,容量也不設(shè)上限,插入、刪除算法也相對(duì)復(fù)雜,采用特殊樹形結(jié)構(gòu)(如二叉排序樹)能夠提高查找記錄時(shí)的效率,交易記錄仍可采用鏈?zhǔn)浇Y(jié)構(gòu)存儲(chǔ),總體上來(lái)說(shuō)實(shí)用性和整體效率較好,現(xiàn)實(shí)中的數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)多是用樹形結(jié)構(gòu)來(lái)實(shí)現(xiàn)的。從實(shí)現(xiàn)難度上來(lái)說(shuō),順序存儲(chǔ)最簡(jiǎn)單,鏈?zhǔn)酱鎯?chǔ)次之,樹形存儲(chǔ)最難。因此,對(duì)學(xué)生一般要求其用鏈?zhǔn)酱鎯?chǔ)來(lái)實(shí)現(xiàn),對(duì)能力較強(qiáng)的學(xué)生可以鼓勵(lì)其用樹形存儲(chǔ)來(lái)實(shí)現(xiàn),以鏈?zhǔn)酱鎯?chǔ)為例繼續(xù)討論。
賬戶信息和存取記錄之間是通過(guò)賬號(hào)來(lái)關(guān)聯(lián)的,在鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)中可以用指針來(lái)表示兩者的聯(lián)系,即每個(gè)賬戶節(jié)點(diǎn)(數(shù)據(jù)域可包含賬號(hào)、姓名和余額等字段)具有兩個(gè)指針域,一個(gè)指針指向下一個(gè)賬戶節(jié)點(diǎn),另一個(gè)指針域指向該賬戶的存取記錄鏈表(存取記錄節(jié)點(diǎn)的數(shù)據(jù)域可包含存取時(shí)間、存取標(biāo)志、金額等字段),如下圖所示。
從功能上分析,儲(chǔ)戶開(kāi)戶、儲(chǔ)戶銷戶就是在賬戶鏈表中進(jìn)行插入和刪除操作;對(duì)賬戶存、取款時(shí),首先找到相應(yīng)賬戶,然后添加一條存取記錄,同時(shí)修正該賬戶的余額;排序顯示所有賬戶信息,就是對(duì)賬戶記錄依據(jù)某一關(guān)鍵字進(jìn)行排序并顯示排序結(jié)果;查詢某賬戶余額,就是遍歷賬戶鏈表,找到對(duì)應(yīng)記錄并顯示出來(lái);查詢某賬戶交易記錄,就是先找到該賬戶,然后遍歷顯示該賬戶對(duì)應(yīng)的存取記錄鏈表??梢钥闯?,對(duì)賬戶鏈表進(jìn)行遍歷查詢?cè)谫~戶存取款、查詢余額和查詢存取記錄是都有用到,因此在設(shè)計(jì)時(shí),可以考慮編寫查詢賬戶函數(shù),以供其他功能模塊調(diào)用。
在文件存取方面,存取時(shí)都是以存儲(chǔ)節(jié)點(diǎn)為單位進(jìn)行的,即一次性存取一個(gè)結(jié)構(gòu)體。該課程設(shè)計(jì)有其特殊之處,有兩種類型的結(jié)構(gòu)體需要存取,即賬戶信息和存取款記錄,這兩種結(jié)構(gòu)體所占用的空間不盡相同,若是都保存在一個(gè)數(shù)據(jù)文件中則需要一定的技巧。以保存記錄到文件為例,可以采用存一個(gè)賬戶信息,再存一個(gè)整形數(shù),該整形數(shù)的數(shù)值為此賬戶對(duì)應(yīng)存取記錄節(jié)點(diǎn)的數(shù)量,然后再逐一保存每條存取記錄,存儲(chǔ)完畢后再用相同方法保存下一個(gè)賬戶的記錄。讀取文件過(guò)程則是存儲(chǔ)過(guò)程的逆過(guò)程,這樣可以保證存取時(shí),賬戶信息和存取記錄一一對(duì)應(yīng),不至于混淆。
在確定了上述思路后,便可以著手編碼,值得注意的是數(shù)據(jù)結(jié)構(gòu)的定義。由于采用了鏈?zhǔn)浇Y(jié)構(gòu),許多同學(xué)便直接將鏈?zhǔn)浇Y(jié)構(gòu)的節(jié)點(diǎn)(包括指針域)直接存儲(chǔ)到文件中。事實(shí)上,這個(gè)指針域是沒(méi)有保存價(jià)值的,尤其在讀取時(shí)如果也將指針域讀出并賦值,將很有可能導(dǎo)致不可預(yù)知的錯(cuò)誤??梢圆扇〉姆椒ㄊ?,先定義只包含數(shù)據(jù)域的數(shù)據(jù)結(jié)構(gòu)體,再定義鏈表節(jié)點(diǎn)結(jié)構(gòu)體將數(shù)據(jù)結(jié)構(gòu)體封裝起來(lái)并加上指針域,在文件讀寫時(shí)只對(duì)數(shù)據(jù)結(jié)構(gòu)體進(jìn)行操作。給出該課程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)參考定義如下:
typedef struct log //存取記錄
{
char DateTime[25]; //存取時(shí)間
char W_D; //存取標(biāo)志
float Amount; //存取金額
} log;
typedef struct node_log //存取記錄節(jié)點(diǎn)
{
log data; //存取記錄
struct node_log *next; //下一存取記錄節(jié)點(diǎn)指針
} node_log, *p_node_log;
typedef struct account //賬戶記錄
{
char ID[10]; //賬號(hào)
char Name[10]; //姓名
float Balance; //余額
} account;
typedef struct node_account //賬戶記錄節(jié)點(diǎn)
{
account data; //賬戶記錄
struct node_log *nlog; //存取記錄節(jié)點(diǎn)指針
struct node_account *next; //下一賬戶記錄節(jié)點(diǎn)指針
} node_account, *p_node_account;
其他功能模塊便可以參照數(shù)據(jù)結(jié)構(gòu)教材上的相關(guān)算法設(shè)計(jì)實(shí)現(xiàn)。
5結(jié)果與結(jié)論
我們將來(lái)自3個(gè)不同專業(yè)(計(jì)算機(jī)、網(wǎng)絡(luò)工程、軟件工程)10個(gè)班級(jí)的57名同學(xué)分成了兩組,一組(試驗(yàn)組)通過(guò)上述方法進(jìn)行了課程設(shè)計(jì)教學(xué),一組(對(duì)照組)仍采用傳統(tǒng)方法教學(xué),課程設(shè)計(jì)題目相同。課程設(shè)計(jì)對(duì)比統(tǒng)計(jì)情況如下表,其中試驗(yàn)組優(yōu)良率達(dá)到44%,不合格率13%,對(duì)照組優(yōu)良率21%,不合格率26%。同時(shí),試驗(yàn)組采用了多種方式來(lái)實(shí)現(xiàn)了課程設(shè)計(jì),且雷同情況較少,對(duì)照組多數(shù)采用順序存儲(chǔ)方式實(shí)現(xiàn),程序雷同情況較多。很明顯,試驗(yàn)組的學(xué)生思路更加開(kāi)闊,自主完成率更高。
時(shí)代在變遷,信息獲取更加便捷,部分學(xué)生的學(xué)習(xí)積極性在某種程度上也發(fā)生了蛻變,隨之的教學(xué)方式也應(yīng)有所改變,教師應(yīng)從正面加以引導(dǎo)。在以案例驅(qū)動(dòng)的數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)教學(xué)改革實(shí)踐中,教師通過(guò)對(duì)典型案例的細(xì)致分析,比較不同數(shù)據(jù)結(jié)構(gòu)的優(yōu)缺點(diǎn),一方面使學(xué)生更加牢固的掌握了數(shù)據(jù)結(jié)構(gòu)知識(shí),另一方面讓學(xué)生找到入手之門,激發(fā)學(xué)習(xí)興趣,提高動(dòng)手能力,更重要的是能讓學(xué)生掌握分析和解決問(wèn)題的方法,自主完成課程設(shè)計(jì),這對(duì)今后其他課程的學(xué)習(xí)也是有所裨益的。
參考文獻(xiàn):
[1] 張培,肖天慶. 基于網(wǎng)絡(luò)環(huán)境下教學(xué)設(shè)計(jì)與課程開(kāi)發(fā)的合作模式研究[J]. 電化教育研究,2007,(9):60-63.
[2] 吳宏偉,張殿龍,梅險(xiǎn). 高校網(wǎng)絡(luò)輔助教學(xué)的探索與實(shí)踐[J]. 計(jì)算機(jī)教育,2007,(7):18-21.
[3] 張敏霞. 程序設(shè)計(jì)語(yǔ)言課程教學(xué)方法改革的探索與實(shí)踐[J]. 中國(guó)高教研究,2004,(2):90.
數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)元素之間的關(guān)系。從概念和實(shí)現(xiàn)兩個(gè)角度,可將數(shù)據(jù)結(jié)構(gòu)分為數(shù)據(jù)的邏輯結(jié)構(gòu)和數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)。按照數(shù)據(jù)元素之間前驅(qū)和后繼關(guān)系來(lái)分,數(shù)據(jù)的邏輯結(jié)構(gòu)可分為以下4種:集合(Set)、線性表(List)、樹(Tree)和圖(Graph)[2]。數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)主要包括數(shù)據(jù)元素本身的存儲(chǔ)以及數(shù)據(jù)元素之間關(guān)系表示。數(shù)據(jù)元素之間的關(guān)系在計(jì)算機(jī)中主要有兩種不同的表示方法:順序映像和非順序映像,并由此得到兩種不同的存儲(chǔ)結(jié)構(gòu):順序存儲(chǔ)結(jié)構(gòu)和鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。JavaJDK為常用的數(shù)據(jù)結(jié)構(gòu)定義了一些接口(Interface)和實(shí)現(xiàn)(Implementation)。這些接口、實(shí)現(xiàn)類以及常用的排序、查找等算法統(tǒng)稱為JavaCollections框架(JavaCollectionsFramework)。Collections框架的設(shè)計(jì)目的是要滿足如下目標(biāo):高性能、一致性、擴(kuò)展性和輕松編程。Java程序員在具體應(yīng)用時(shí),不必考慮數(shù)據(jù)結(jié)構(gòu)和算法實(shí)現(xiàn)細(xì)節(jié),只需要用這些類創(chuàng)建出來(lái)一些對(duì)象,然后直接應(yīng)用即可[3]。Java中把一組對(duì)象稱為Collection,也就是說(shuō),Collection是對(duì)象的容器。Java對(duì)Collection中的對(duì)象沒(méi)有任何前驅(qū)、后繼以及重復(fù)性的約束,只是約束了對(duì)象類型E。Collection接口定義了其上的3類操作:針對(duì)單個(gè)元素的基本操作、迭代器和Collection對(duì)象之間的批量操作?;静僮靼ㄔ黾印h除、判斷是否包含某個(gè)元素、判斷是否為空、容器中當(dāng)前元素的個(gè)數(shù)、清空等。批量操作包括:合并兩個(gè)Collection容器、從一個(gè)容器中移走一些元素、保留兩個(gè)容器中相同的元素、判斷一個(gè)容器中的元素是否完全包含在另外一個(gè)容器中等。接口Collection<E>的子接口有Set<E>和List<E>。集合(Set)在Collection的基礎(chǔ)之上增加了“不允許重復(fù)元素”的約束;而List則在Collection基礎(chǔ)之上增加了“元素之間具有前驅(qū)、后繼關(guān)系”的約束:除了第一個(gè)元素外,所有元素具有唯一的前驅(qū);除了最后一個(gè)元素外,所有元素具有唯一后繼。如果僅關(guān)心數(shù)據(jù)元素是否出現(xiàn),而不關(guān)心數(shù)據(jù)元素之間的次序,則應(yīng)使用Set<E>。Java為集合接口提供了兩個(gè)基本的實(shí)現(xiàn):HashSet<E>和Tree<Set>。HashSet<E>是Set<E>接口的典型實(shí)現(xiàn),大多使用集合的場(chǎng)合就是使用這個(gè)實(shí)現(xiàn)類。HashSet實(shí)現(xiàn)類按哈希算法來(lái)存儲(chǔ)集合中的元素,因此具有很好的查找性能。HashSet不能記憶元素之間的順序,包括插入順序。其子類LinkedHashSet<E>也是根據(jù)元素hashCode值來(lái)決定元素存儲(chǔ)位置,但它同時(shí)使用鏈表維護(hù)元素的次序,這樣使得能夠記憶插入順序。由于LinkedHashSet需要維護(hù)元素的插入順序,所以性能略低于HashSet,但遍歷集合里的全部元素性能較好。實(shí)現(xiàn)類TreeSet<E>可以確保集合元素處于排序狀態(tài),TreeSet并不是根據(jù)元素的插入順序進(jìn)行排序,而是根據(jù)元素的實(shí)際值來(lái)進(jìn)行排序的。TreeSet采用紅黑樹的數(shù)據(jù)結(jié)構(gòu)對(duì)元素進(jìn)行排序,并要求添加進(jìn)TreeSet中的對(duì)象必須實(shí)現(xiàn)CompareTo<E>接口。List<E>接口作為Collection<E>接口的子接口,可以使用Collection接口中的全部方法。但是List接口中定義了元素位置和元素范圍的概念,使得List可以根據(jù)元素位置索引(index)來(lái)插入、替換、刪除集合元素以及查找指定對(duì)象的位置。ArrayList<E>實(shí)現(xiàn)類基于數(shù)組實(shí)現(xiàn)了List接口,其內(nèi)部封裝了一個(gè)動(dòng)態(tài)再分配的數(shù)組。每個(gè)ArrayList對(duì)象都有一個(gè)capacity屬性,這個(gè)屬性表示它們所封裝的數(shù)組的長(zhǎng)度,當(dāng)添加元素超過(guò)長(zhǎng)度時(shí),capacity會(huì)自動(dòng)增長(zhǎng),其默認(rèn)值為10。LinkedList<E>內(nèi)部以鏈表來(lái)保存集合中的元素,因此隨機(jī)訪問(wèn)容器時(shí)的性能較差,但在插入、刪除元素時(shí)性能較好。Queue<E>接口用于定義隊(duì)列這種數(shù)據(jù)結(jié)構(gòu),隊(duì)列是“先進(jìn)先出”的容器,通常不允許隨機(jī)訪問(wèn)其中的元素。Java中的隊(duì)列接口Queue<E>沒(méi)有繼承List接口,而是直接繼承了Collection接口。如果使用具有固定容量的隊(duì)列,則應(yīng)使用offer()來(lái)加入元素,使用poll()來(lái)獲取并移出元素,因?yàn)閍dd()和remove()方法在因容量原因失敗時(shí)拋出異常。如果只是訪問(wèn)隊(duì)首而不移出該元素,使用element()或者peek()方法。LinkedList<E>類實(shí)現(xiàn)了Queue<E>接口,因此我們可以把LinkedList當(dāng)成Queue來(lái)用。PriorityQueue是一個(gè)比較標(biāo)準(zhǔn)的隊(duì)列實(shí)現(xiàn)類,它并不是按加入隊(duì)列的順序,而是按隊(duì)列元素的大小來(lái)記憶隊(duì)列元素的順序。因此當(dāng)調(diào)用peek方法或者poll方法來(lái)取出隊(duì)列中的元素時(shí),并不是取出最先進(jìn)入隊(duì)列的元素,而是取出隊(duì)列中最小的元素。Stack<E>實(shí)現(xiàn)了List<E>接口,提供了push和pop操作限制線性表中元素的插入和刪除只能在線性表的同一端進(jìn)行。JDK1.6引入的ArrayDequ<E>實(shí)現(xiàn)類被優(yōu)先推薦作為棧使用。ArrayDeque<E>實(shí)現(xiàn)了Deque<E>接口。Deque<E>接口定義了雙端隊(duì)列,雙端隊(duì)列中的元素可以從兩端彈出,其限定插入和刪除操作在表的兩端進(jìn)行。JavaJDK中沒(méi)有直接提供樹和圖的接口和實(shí)現(xiàn)類,但是可以通過(guò)研究TreeMap的源代碼學(xué)習(xí)操作樹的一般編寫模式。綜上,數(shù)據(jù)結(jié)構(gòu)與Java面向?qū)ο蟪绦蛟O(shè)計(jì)兩門課程內(nèi)容的銜接見(jiàn)表1。
2面向數(shù)據(jù)結(jié)構(gòu)銜接的Java課程實(shí)施方案
Java面向?qū)ο蟪绦蛟O(shè)計(jì)為1學(xué)期的課程。總課時(shí)為講授54學(xué)時(shí)、實(shí)驗(yàn)32學(xué)時(shí)。其中,與數(shù)據(jù)結(jié)構(gòu)知識(shí)點(diǎn)緊密相關(guān)的JavaCollections框架部分為講授6學(xué)時(shí)、實(shí)驗(yàn)4學(xué)時(shí)。在講授環(huán)節(jié),按照表1列出的順序進(jìn)行。在實(shí)驗(yàn)環(huán)節(jié)完成與授課內(nèi)容相關(guān)的驗(yàn)證性實(shí)驗(yàn)。在課程設(shè)計(jì)實(shí)踐環(huán)節(jié),要求學(xué)生使用Java設(shè)計(jì)常見(jiàn)算法,然后閱讀JDK提供的源代碼進(jìn)行對(duì)照。具體方案如圖1所示。比如,在java.util.Collections類中提供了數(shù)據(jù)結(jié)構(gòu)中學(xué)生已經(jīng)學(xué)過(guò)的常見(jiàn)算法,如二分查找、計(jì)算元素頻數(shù)、查找最大/最小元素、反轉(zhuǎn)線性表、按照指定距離旋轉(zhuǎn)線性表、隨機(jī)排列線性表、交換指定位置上的兩個(gè)元素以及排序等。注意,在Java6中Collections.sort()使用的是MergeSort;而在Java7中,內(nèi)部實(shí)現(xiàn)換成了TimSort。要求學(xué)生按照這些API文檔說(shuō)明,首先按照數(shù)據(jù)結(jié)構(gòu)課程中的知識(shí)設(shè)計(jì)自己的算法實(shí)現(xiàn),然后與API源代碼進(jìn)行比較。由于學(xué)生使用C語(yǔ)言版的數(shù)據(jù)結(jié)構(gòu)教材,所以在面向Collection編程之前,作為過(guò)渡,先讓學(xué)生面向數(shù)組編程。哈希表是一種重要的數(shù)據(jù)結(jié)構(gòu),也是實(shí)現(xiàn)集合的基本途徑之一。通過(guò)研究HashSet的源代碼,可以讓學(xué)生理解為什么每個(gè)對(duì)象都要有hashcode()方法,以及哈希表的編碼特點(diǎn)。由于HashSet的實(shí)現(xiàn)是基于HashMap的,所以研究HashSet就要研究HashMap。Map是一種典型的名值對(duì)類型,它提供一種Key-Value對(duì)應(yīng)保存的數(shù)據(jù)結(jié)構(gòu)。客戶程序通過(guò)Key值來(lái)訪問(wèn)對(duì)應(yīng)的Value,這個(gè)接口并沒(méi)有繼承Collection這接口;而其他的類或者接口,不管是List、Set、Stack等都繼承或?qū)崿F(xiàn)了Collection。TreeMap和HashMap算是Java集合類里面比較有難度的數(shù)據(jù)結(jié)構(gòu)。HashMap元素存取的時(shí)間復(fù)雜度一般是O(1),而TreeMap內(nèi)部對(duì)元素的操作復(fù)雜度為O(logn)。TreeMap記憶了順序,TreeSet內(nèi)部的實(shí)現(xiàn)使用了TreeMap。
3結(jié)語(yǔ)
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu)預(yù)算法;國(guó)際化;互動(dòng)式教學(xué)
文章編號(hào):1672-5913(2013)18-0058-04
中圖分類號(hào):G642
0 引言
通過(guò)觀察和對(duì)比,國(guó)際一流大學(xué)學(xué)生參與課堂發(fā)言和課后研討的積極性要遠(yuǎn)遠(yuǎn)高于復(fù)旦大學(xué)學(xué)生,而參與研討對(duì)于促進(jìn)學(xué)生深入理解課程內(nèi)容,培養(yǎng)學(xué)生在立題、思辨和協(xié)作方面的能力十分有益。為此,復(fù)旦大學(xué)軟件學(xué)院開(kāi)展了數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)類課程國(guó)際化建設(shè)工作,主要目標(biāo)是研究如何在課堂教學(xué)中采用研討型方式,在實(shí)驗(yàn)環(huán)節(jié)中采用協(xié)作型項(xiàng)目,并針對(duì)中國(guó)學(xué)生的特點(diǎn),探索如何引導(dǎo)學(xué)生提出問(wèn)題和參與討論,以提高課程教學(xué)效果,縮小與國(guó)際一流大學(xué)差距的教學(xué)方法。課程建設(shè)教師團(tuán)隊(duì)的主要人員首先通過(guò)全程旁聽(tīng)美國(guó)麻省理工學(xué)院數(shù)門相同或類似的課程,認(rèn)識(shí)與國(guó)際一流大學(xué)在教學(xué)手段和效果方面差距的同時(shí),分析中美學(xué)生在提出問(wèn)題、參與討論方面表現(xiàn)差異的原因。然后通過(guò)與學(xué)生座談方式收集整理中國(guó)學(xué)生不愿意在課堂上發(fā)言和參與研討的主要原因和相應(yīng)對(duì)策。最后介紹復(fù)旦大學(xué)軟件學(xué)院根據(jù)課程國(guó)際化教學(xué)課題的研究成果進(jìn)行教學(xué)方式調(diào)整和開(kāi)展課堂教學(xué)實(shí)踐的情況。
1 麻省理工學(xué)院在課程教學(xué)中促進(jìn)學(xué)生參與研討的先進(jìn)經(jīng)驗(yàn)
在開(kāi)展數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程國(guó)際化建設(shè)過(guò)程中,課程建設(shè)教師團(tuán)隊(duì)的主要人員利用在美國(guó)麻省理工學(xué)院(MIT)參與研究工作的機(jī)會(huì),在一年內(nèi)全程旁聽(tīng)了Design and Analysis ofAlgorithms、Web 3.0、Economics 0f Information、Software Construction 4門課程,并且參加了MIT的IFF(International Faculty Fellow)國(guó)際大學(xué)教師培訓(xùn)項(xiàng)目。IFF是由MIT發(fā)起組織的、致力于提高國(guó)外高等院校教師的科研能力、培養(yǎng)研究生水平和授課技能的項(xiàng)目。在上述過(guò)程中,教師團(tuán)隊(duì)人員對(duì)于MIT在促進(jìn)學(xué)生參與課程相關(guān)內(nèi)容研討方面的舉措印象深刻,并將值得借鑒的教學(xué)方式和方法進(jìn)行了歸納。
(1)學(xué)生參與課程相關(guān)內(nèi)容的討論需要相關(guān)知識(shí)的準(zhǔn)備,只有將相關(guān)知識(shí)積累到一定的程度,學(xué)生才會(huì)自然而然地愿意對(duì)相關(guān)問(wèn)題進(jìn)行討論,而課程教材和課堂講義對(duì)知識(shí)積累是遠(yuǎn)遠(yuǎn)不夠的。MIT在課程開(kāi)始時(shí)就由任課教師提供課程相關(guān)的文獻(xiàn)閱讀列表,閱讀完這些文獻(xiàn)所需要的時(shí)間大約為課程授課時(shí)間的3倍左右。對(duì)比復(fù)旦大學(xué)類似課程的文獻(xiàn)閱讀要求,發(fā)現(xiàn)中國(guó)學(xué)生在完成課程相關(guān)文獻(xiàn)閱讀量方面遠(yuǎn)遠(yuǎn)少于國(guó)際一流大學(xué)的學(xué)生。
(2)每一門課程除了提供網(wǎng)站用于下載課程相關(guān)的資料外,還有課程的BLOG便于學(xué)生和教師在線交流。利用這樣的系統(tǒng),教師往往規(guī)定在課程授課期間,學(xué)生至少針對(duì)數(shù)個(gè)課題(完成相關(guān)文獻(xiàn)的閱讀后)在BLOG上發(fā)表自己的觀點(diǎn)。由此促進(jìn)學(xué)生圍繞相關(guān)課題開(kāi)展討論,這樣的方式也為那些不太愿意在眾人面前發(fā)言的學(xué)生提供闡述自己觀點(diǎn)的機(jī)會(huì)。
(3)MIT的教室一般都是階梯教室,這樣既可以讓每一位學(xué)生能夠清楚地看到任課教師各種面部和身體語(yǔ)言,也使授課教師能夠看到所有的學(xué)生,時(shí)刻了解學(xué)生對(duì)課堂內(nèi)容的各種反饋。學(xué)生座位之間留有通道,授課時(shí)教師會(huì)在整個(gè)教室里走動(dòng),確保能夠走近每一位學(xué)生的身旁,讓每一位學(xué)生感受關(guān)注和重視,這樣也讓學(xué)生感到親切隨和。實(shí)踐表明,這樣做更能讓學(xué)生暢所欲言。
(4)教學(xué)內(nèi)容融合任課教師的研究成果。任課教師對(duì)于自身的研究?jī)?nèi)容一般都有較深的認(rèn)識(shí)和理解(甚至有些理論和技術(shù)是世界首創(chuàng)),講解過(guò)程中能夠廣征博引,相關(guān)難點(diǎn)都能夠娓娓道來(lái),所以往往更為生動(dòng)有趣,可以激發(fā)學(xué)生的提問(wèn)熱情和學(xué)習(xí)興趣。教師只有在相關(guān)領(lǐng)域內(nèi)具備一定的科研水平才能更好地講授相應(yīng)的課程內(nèi)容。
(5)在講解有關(guān)技術(shù)內(nèi)容時(shí),會(huì)邀請(qǐng)業(yè)界一些著名人物走進(jìn)課堂為學(xué)生講解其擅長(zhǎng)的話題。以MIT互聯(lián)網(wǎng)方面的課程為例,任課教師會(huì)請(qǐng)IBM、Google、Microsoft等著名科技公司副總裁或技術(shù)總監(jiān)級(jí)別的人物為學(xué)生講一堂課(有時(shí)是遠(yuǎn)程視頻連線,教室配有大屏幕高清投影和高速網(wǎng)絡(luò)),之后一般設(shè)有學(xué)生提問(wèn)環(huán)節(jié)。這樣的課程很受學(xué)生歡迎,學(xué)生提問(wèn)也非常踴躍。
綜上所述,在課程開(kāi)始前精心為學(xué)生挑選各章節(jié)相關(guān)的閱讀文獻(xiàn)(分為必讀和選讀部分)、建設(shè)課程BLOG促進(jìn)師生間交流、將研究?jī)?nèi)容融入課程內(nèi)容等教學(xué)方式和方法都值得借鑒,并且通過(guò)一段時(shí)間的準(zhǔn)備加以實(shí)施。但是中國(guó)學(xué)生不愿意上課發(fā)言和參與研討也有其成長(zhǎng)環(huán)境中文化背景的影響,例如,追求標(biāo)準(zhǔn)答案的應(yīng)試教育、謹(jǐn)守中庸之道處事態(tài)度等。而美國(guó)學(xué)生從小就讓他們不斷地進(jìn)行發(fā)言和表達(dá)的訓(xùn)練,從幼兒園開(kāi)始,每天都會(huì)讓小孩子輪流講一下昨天發(fā)生的事情。參加各種活動(dòng)和社團(tuán)也是如此,久而久之,養(yǎng)成了愿意并且善于表達(dá)自己觀點(diǎn)的習(xí)慣。所以對(duì)于我們的學(xué)生,不僅要營(yíng)造讓其發(fā)言的環(huán)境和氣氛,也需要有意識(shí)地利用各種機(jī)會(huì)培養(yǎng)他們發(fā)言的習(xí)慣。
2 學(xué)生不愿意在課堂上發(fā)言和參與研討的主要原因及改進(jìn)建議
課題組對(duì)兩個(gè)班52名學(xué)生針對(duì)不愿意在課堂上發(fā)言和參與研討的問(wèn)題進(jìn)行面談,每位學(xué)生面談時(shí)間為20~30分鐘。學(xué)生不愿意在課堂上發(fā)言和參與討論的主要原因可歸納為:害怕回答錯(cuò)誤后造成對(duì)自己不利的影響(特別是教師隨后會(huì)給出答案的情況)、沒(méi)有養(yǎng)成積極發(fā)表自己觀點(diǎn)的習(xí)慣(與成長(zhǎng)的文化和環(huán)境有關(guān))、擔(dān)心積極發(fā)言后被別人說(shuō)愛(ài)表現(xiàn)、課堂上沒(méi)有能夠很好地營(yíng)造出各抒己見(jiàn)氛圍。調(diào)查過(guò)程中同時(shí)也聽(tīng)取了學(xué)生對(duì)讓他們能夠積極主動(dòng)發(fā)言的一些建議和意見(jiàn),歸納為以下幾點(diǎn)。
(1)討論的問(wèn)題應(yīng)該是一些不存在對(duì)錯(cuò)的開(kāi)放性問(wèn)題。
(2)可以先由教師開(kāi)題和啟發(fā),然后找到學(xué)生感興趣的幾點(diǎn)展開(kāi)討論。
(3)教師要營(yíng)造隨和的課堂氣氛,需要有一個(gè)破冰的過(guò)程,讓學(xué)生放松不害怕。
(4)可以采取分組討論然后再由學(xué)生總結(jié)發(fā)言的方式。
(5)提出一些學(xué)生比較熟悉且有啟發(fā)的問(wèn)題比較容易讓學(xué)生展開(kāi)交流。
(6)發(fā)言和討論適當(dāng)增加一些平時(shí)成績(jī)(但也有學(xué)生擔(dān)心別人認(rèn)為他為了成績(jī)而發(fā)言,所以增加成績(jī)的比重也不宜過(guò)高)。
(7)不要僅對(duì)一個(gè)學(xué)生提問(wèn),要求其他學(xué)生可以隨時(shí)補(bǔ)充。
(8)對(duì)于有標(biāo)準(zhǔn)答案的問(wèn)題,可以采取按座位順序點(diǎn)名提問(wèn)回答的方式。
綜合以上學(xué)生的意見(jiàn)和建議,為了讓學(xué)生積極參與課堂發(fā)言和研討應(yīng)當(dāng)盡量營(yíng)造輕松隨意的課堂氣氛,提出的問(wèn)題也應(yīng)是開(kāi)放性的(即沒(méi)有標(biāo)準(zhǔn)的答案),任課教師要善于引導(dǎo)和組織課堂討論,在提出問(wèn)題前給予必要的講解和啟發(fā)。
3 教學(xué)方式調(diào)整和課堂教學(xué)實(shí)踐
通過(guò)借鑒國(guó)際一流大學(xué)和國(guó)內(nèi)名師的先進(jìn)教學(xué)經(jīng)驗(yàn),針對(duì)中國(guó)學(xué)生,特別就數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程的教學(xué)方式提出了一些方案和措施,并且進(jìn)行了相應(yīng)的課堂教學(xué)實(shí)踐。雖然這些方案和措施還有待進(jìn)一步完善和改進(jìn),但是課堂教學(xué)效果和學(xué)生參與研討和發(fā)言的意愿明顯提高。具體的方案和措施包括以下幾個(gè)方面。
3.1 嘗試誘導(dǎo)式、研討式和互動(dòng)式教學(xué)方式
任課教師要改進(jìn)之前以灌輸式知識(shí)傳授的教學(xué)方式,嘗試采用誘導(dǎo)式、研討式和互動(dòng)式教學(xué)方式。教學(xué)過(guò)程中一般首先給出實(shí)際的應(yīng)用問(wèn)題,然后要求學(xué)生嘗試提出解決問(wèn)題的算法,其他學(xué)生需對(duì)提出的方法進(jìn)行評(píng)價(jià),提出不足之處和改進(jìn)方法,然后通過(guò)討論這個(gè)算法的缺點(diǎn),引出克服這個(gè)缺點(diǎn)的其他算法,最后對(duì)解決相同問(wèn)題的不同算法進(jìn)行比較和歸納。適當(dāng)增加學(xué)生對(duì)相關(guān)重要文獻(xiàn)的閱讀量,并且根據(jù)閱讀和調(diào)研結(jié)果進(jìn)行課堂討論。以NP完全性問(wèn)題教學(xué)為例,由于學(xué)生還沒(méi)有學(xué)習(xí)計(jì)算理論方面的課程,對(duì)于理解NP問(wèn)題和NP完全性問(wèn)題有一定的困難。首先任課教師介紹旅行商問(wèn)題,接著讓學(xué)生嘗試尋找有效地求解算法,在教師引導(dǎo)下討論得出結(jié)論:在現(xiàn)有計(jì)算機(jī)體系結(jié)構(gòu)和運(yùn)算能力的基礎(chǔ)上,一定規(guī)模的旅行商問(wèn)題目前不存在找到最優(yōu)解的計(jì)算復(fù)雜性為多項(xiàng)式的算法;然后指出存在一類這樣的問(wèn)題,并且任取這類中的一個(gè)問(wèn)題,再任取這類中的另一個(gè)問(wèn)題,則一定存在多項(xiàng)式時(shí)間復(fù)雜性的算法,即可以把前者轉(zhuǎn)變?yōu)楹笳摺H绻嬖诮鉀Q前者的多項(xiàng)式算法,必定存在能夠解決后者的多項(xiàng)式算法;最后指出目前仍然沒(méi)有找到多項(xiàng)式算法來(lái)解決這類問(wèn)題,同時(shí)也不能證明這樣的多項(xiàng)式算法不存在。為了讓學(xué)生加深對(duì)上述問(wèn)題的體會(huì)并且熟知典型的NP問(wèn)題,將學(xué)生分成9組,每一組給出一對(duì)問(wèn)題,其中一個(gè)屬于P(多項(xiàng)式)問(wèn)題,一個(gè)屬于NP問(wèn)題。要求學(xué)生調(diào)查這一對(duì)問(wèn)題在應(yīng)用中出現(xiàn)的實(shí)例和變體,然后設(shè)計(jì)可行的解決方法。并且要求每組以課堂演講的方式向師生介紹他們的調(diào)查結(jié)果,聽(tīng)取報(bào)告的教師和學(xué)生可以隨時(shí)進(jìn)行提問(wèn),要求做報(bào)告的學(xué)生回答。教學(xué)實(shí)踐表明,此舉加深了學(xué)生對(duì)NP完全性問(wèn)題的認(rèn)識(shí)和理解。
3.2 從解決實(shí)際問(wèn)題出發(fā),培養(yǎng)學(xué)生提問(wèn)和思辨的能力
對(duì)于每個(gè)知識(shí)單元,首先提出若干個(gè)實(shí)際應(yīng)用中的問(wèn)題,在提出可行的數(shù)據(jù)結(jié)構(gòu)與算法前,引導(dǎo)學(xué)生進(jìn)行討論,并且提出自己的解決方案。通過(guò)分析學(xué)生所提出的各種方法,比較之前已學(xué)方法,歸納出新的數(shù)據(jù)結(jié)構(gòu)與算法的特點(diǎn)和用途,最后在深入剖析和討論的基礎(chǔ)上進(jìn)行擴(kuò)展和綜合。
3.3 借鑒國(guó)際一流大學(xué)的教學(xué)內(nèi)容和方式,彌補(bǔ)與國(guó)際先進(jìn)授課水平之間的差距
數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程的教學(xué)內(nèi)容和方式借鑒了美國(guó)麻省理工學(xué)院的同名課程,并嘗試進(jìn)行誘導(dǎo)式、研討式和互動(dòng)式教學(xué)。課程的教材、講義、作業(yè)、實(shí)踐和考試全部使用英文,外教采用英語(yǔ)授課。將世界頂尖級(jí)學(xué)者撰寫的經(jīng)典著作Introduction to Algorithms作為課程的教材,并且根據(jù)中國(guó)學(xué)生的生活經(jīng)歷和背景文化,對(duì)部分案例進(jìn)行相應(yīng)的增補(bǔ)和改寫。
3.4 以應(yīng)用為導(dǎo)向,培養(yǎng)綜合型人才
目前計(jì)算機(jī)學(xué)科方面的教學(xué),一般從計(jì)算機(jī)基礎(chǔ)知識(shí)和編程原理開(kāi)始,經(jīng)過(guò)若干中級(jí)課程,直至大學(xué)三、四年級(jí),學(xué)生才可能涉足整個(gè)軟件系統(tǒng)開(kāi)發(fā)的全過(guò)程,這樣往往造成“只見(jiàn)樹木,不見(jiàn)森林”的情況。學(xué)生已經(jīng)學(xué)習(xí)了構(gòu)成軟件系統(tǒng)所需的知識(shí)和技術(shù),但是難以針對(duì)某一現(xiàn)實(shí)應(yīng)用,將所學(xué)較好地綜合起來(lái)。在大學(xué)低年級(jí)時(shí),以完整系統(tǒng)開(kāi)發(fā)和應(yīng)用為目標(biāo),讓學(xué)生在專業(yè)學(xué)習(xí)的早期就能夠了解和體會(huì)實(shí)際應(yīng)用的復(fù)雜性,掌握并實(shí)踐綜合集成各項(xiàng)技術(shù)的方法和手段。學(xué)生只有較早地了解整個(gè)軟件系統(tǒng)的開(kāi)發(fā)與應(yīng)用,才能在今后創(chuàng)造性地綜合運(yùn)用所學(xué),成為既有較高專業(yè)水平,又對(duì)現(xiàn)實(shí)應(yīng)用有敏銳洞察能力的復(fù)合型人才。
3.5 以科研帶動(dòng)和促進(jìn)教學(xué),將最新技術(shù)的發(fā)展成果融入教學(xué)內(nèi)容中
數(shù)據(jù)結(jié)構(gòu)與算法的基本內(nèi)容雖然相對(duì)穩(wěn)定,但對(duì)已有數(shù)據(jù)結(jié)構(gòu)與算法的擴(kuò)展和結(jié)合,特別是解決新的應(yīng)用方面的發(fā)展卻日新月異,知識(shí)更新和演化速度較快。數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程組的教師在現(xiàn)有教材的理論體系和教學(xué)內(nèi)容的基礎(chǔ)上,及時(shí)了解和把握技術(shù)發(fā)展的新動(dòng)向,將最新的理論創(chuàng)新和技術(shù)進(jìn)步充實(shí)到教學(xué)內(nèi)容中,每年都增補(bǔ)緊跟學(xué)科發(fā)展的新內(nèi)容。此外,任課教師會(huì)指導(dǎo)學(xué)生參與自己的科研項(xiàng)目,或者推薦學(xué)生進(jìn)入其他教師的實(shí)驗(yàn)室從事相關(guān)的科研活動(dòng)。
這些方案和措施的實(shí)施,使得數(shù)據(jù)結(jié)構(gòu)與算法設(shè)計(jì)課程能夠在較短的時(shí)期內(nèi)形成科研和教學(xué)并線、講解和演示并重、理論和實(shí)踐并行的特色。課題組教師不斷用科學(xué)研究和國(guó)際學(xué)術(shù)交流的成果充實(shí)課程的內(nèi)容,使課程能夠充分體現(xiàn)目前算法理論和應(yīng)用方面最新的發(fā)展和動(dòng)向。在教學(xué)中始終堅(jiān)持理論與實(shí)踐相結(jié)合的原則,從經(jīng)典案例引出科學(xué)問(wèn)題,并強(qiáng)調(diào)對(duì)學(xué)生邏輯思維和動(dòng)手能力的培養(yǎng)。
4 結(jié)語(yǔ)
關(guān)鍵詞:大數(shù)據(jù);荷載與結(jié)構(gòu)設(shè)計(jì)方法課程;教學(xué)研究;教學(xué)現(xiàn)代化
中圖分類號(hào):G642.0;TU 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1005-2909(2016)05-0086-04
大數(shù)據(jù)是21世紀(jì)的重要技術(shù)革新成果,大數(shù)據(jù)開(kāi)發(fā)與應(yīng)用帶來(lái)更多新技術(shù)的出現(xiàn),各行各業(yè)也急需適應(yīng)大數(shù)據(jù)發(fā)展的人才。2015年8月國(guó)務(wù)院頒發(fā)的促進(jìn)大數(shù)據(jù)發(fā)展綱要提出了應(yīng)加快適應(yīng)大數(shù)據(jù)發(fā)展需求的人才培養(yǎng),所以培養(yǎng)適應(yīng)大數(shù)據(jù)時(shí)代需求的創(chuàng)新人才是擺在高等學(xué)校面前的重要任務(wù)[1-4]。目前,國(guó)內(nèi)高校土木工程專業(yè)人才的培養(yǎng)還不能滿足大數(shù)據(jù)產(chǎn)業(yè)的需求,基于大數(shù)據(jù)背景下的教學(xué)改革也比較少[5-8],所以應(yīng)積極推進(jìn)基于大數(shù)據(jù)背景下的土木工程專業(yè)課程改革。結(jié)合土木工程專業(yè)背景和社會(huì)實(shí)際需求,融合大數(shù)據(jù)時(shí)代的技術(shù)和思想開(kāi)展土木工程專業(yè)課程教學(xué)改革,除了要培養(yǎng)學(xué)生的基本技能,還應(yīng)注重培養(yǎng)學(xué)生對(duì)海量數(shù)據(jù)的采集、存儲(chǔ)、管理、挖掘與分析等綜合能力。黑龍江科技大學(xué)土木工程專業(yè)荷載與結(jié)構(gòu)設(shè)計(jì)方法課程組開(kāi)展了面向大數(shù)據(jù)需求的教學(xué)改革。該項(xiàng)改革以荷載與結(jié)構(gòu)設(shè)計(jì)方法課程的基本知識(shí)為基礎(chǔ),以項(xiàng)目為載體,以培養(yǎng)學(xué)生獲取信息的能力、分析能力、工程實(shí)踐能力和綜合應(yīng)用的能力為主線,從教學(xué)內(nèi)容、教學(xué)方法、教學(xué)手段等方面進(jìn)行改革探索,力求實(shí)現(xiàn)“信息―知識(shí)―能力”一體化課程教學(xué)目標(biāo)。
一、大數(shù)據(jù)背景下荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)現(xiàn)狀及存在問(wèn)題
(一)教學(xué)內(nèi)容離散,系統(tǒng)性差,知識(shí)跨越性大
由于該課程涵蓋了數(shù)學(xué)、力學(xué)及土木工程所有專業(yè)課程的荷載基本計(jì)算及原理知識(shí),而且教材各個(gè)章節(jié)的內(nèi)容聯(lián)系不緊密,所以各章節(jié)的知識(shí)跨越性大、連貫性差,導(dǎo)致學(xué)生學(xué)習(xí)效果不盡人意。此外,與修訂后的新規(guī)范相配套的教材內(nèi)容滯后,導(dǎo)致教學(xué)內(nèi)容差異性大,教師只能將新規(guī)范內(nèi)容融入教學(xué)中,學(xué)生學(xué)習(xí)起來(lái)常常感到很茫然。加上該課程是專業(yè)基礎(chǔ)課,其教學(xué)內(nèi)容很多是后續(xù)專業(yè)課的內(nèi)容,學(xué)生由于對(duì)專業(yè)課內(nèi)容不了解,也不明白該課程的具體實(shí)際用途,因此對(duì)課程的重要性認(rèn)識(shí)不夠,以致學(xué)習(xí)效果差。
(二)主導(dǎo)思想滯后,教學(xué)方法、教學(xué)手段更新慢
教學(xué)中盡管教師也不斷改進(jìn)教學(xué)方法和手段[9],如創(chuàng)設(shè)啟發(fā)式、討論式、案例式、比較式、互動(dòng)式等教學(xué)方法,但是并沒(méi)有從根本上改變以教師講授為主導(dǎo)的教學(xué)理念。在大數(shù)據(jù)時(shí)代,信息量大,而且傳播速度快,很多知識(shí)僅靠教師的講授是無(wú)法跟上信息時(shí)代步伐的。因此,教師必須要轉(zhuǎn)變教學(xué)思維,構(gòu)建教師與學(xué)生合作、協(xié)同參與的多元教學(xué)模式。
二、大數(shù)據(jù)時(shí)代背景下課程教學(xué)改革的總體思路
筆者所在學(xué)校荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)改革總體思路:遵照國(guó)家大數(shù)據(jù)時(shí)代加快創(chuàng)新人才培養(yǎng)的綱要要求,結(jié)合土木工程專業(yè)人才培養(yǎng)需求,以及荷載與結(jié)構(gòu)設(shè)計(jì)方法課程內(nèi)容特點(diǎn),借鑒國(guó)內(nèi)外先進(jìn)的教學(xué)理念、教學(xué)方式、方法和手段,以大數(shù)據(jù)建設(shè)為平臺(tái),以荷載與結(jié)構(gòu)設(shè)計(jì)方法課程建設(shè)項(xiàng)目為載體,以培養(yǎng)學(xué)生獲取信息的能力、分析能力、工程實(shí)踐能力和綜合應(yīng)用能力為主線,實(shí)現(xiàn)“信息―知識(shí)―能力”一體化課程教學(xué)目標(biāo)(見(jiàn)圖1)。大數(shù)據(jù)時(shí)代背景下,最大程度挖掘?qū)W生潛力,使荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)模式越來(lái)越趨于理性,教學(xué)活動(dòng)更多地開(kāi)展實(shí)踐教學(xué)和情感教學(xué),充分彰顯以學(xué)生為本的教學(xué)理念,讓教師與學(xué)生的溝通越來(lái)越多,讓教學(xué)互動(dòng)性越來(lái)越強(qiáng),進(jìn)一步完善該課程現(xiàn)代多元化的教學(xué)模式。
三、基于大數(shù)據(jù)需求的課程改革路徑
(一) 依托大數(shù)據(jù)平臺(tái)建設(shè),構(gòu)建分層次、分模塊的課程內(nèi)容體系
基于大綱要求,在改革原來(lái)課程內(nèi)容的基礎(chǔ)上進(jìn)一步梳理,分成荷載計(jì)算與結(jié)構(gòu)設(shè)計(jì)方法兩個(gè)層次,然后將荷載計(jì)算分成豎向荷載、水平荷載兩個(gè)大模塊,結(jié)構(gòu)設(shè)計(jì)方法分為結(jié)構(gòu)可靠度理論、規(guī)范設(shè)計(jì)方法,并注重內(nèi)容與新規(guī)范之間的差別,強(qiáng)調(diào)新舊規(guī)范的對(duì)比,同時(shí)更新規(guī)范知識(shí),突出以信息化為主導(dǎo),將各模塊的內(nèi)容與專業(yè)課程內(nèi)容銜接起來(lái),教學(xué)中引入各專業(yè)課程知識(shí),將荷載課程內(nèi)容平臺(tái)與專業(yè)課程平臺(tái)進(jìn)行合理的銜接。
(二)借鑒國(guó)內(nèi)外先進(jìn)的教學(xué)經(jīng)驗(yàn),構(gòu)建“信息化、開(kāi)放式、多元化”的教學(xué)模式
1.構(gòu)建“多元混合式”教學(xué)模式,實(shí)現(xiàn)翻轉(zhuǎn)課堂教學(xué)
借鑒“慕課”網(wǎng)絡(luò)教學(xué)平臺(tái)的教育模式,開(kāi)發(fā)該課程的網(wǎng)絡(luò)教學(xué)平臺(tái),構(gòu)建“多元混合式”教學(xué)模式,實(shí)現(xiàn)課程教學(xué)信息化。該課程教學(xué)中將網(wǎng)絡(luò)在線教學(xué)與課堂教學(xué)相結(jié)合,實(shí)現(xiàn)每節(jié)荷載課程的課前網(wǎng)絡(luò)在線導(dǎo)學(xué),特別對(duì)課程中涉及的相關(guān)專業(yè)課程內(nèi)容提前在導(dǎo)學(xué)內(nèi)容中進(jìn)行布置,學(xué)生可以利用多方資源有針對(duì)性地提前對(duì)相關(guān)內(nèi)容進(jìn)行學(xué)習(xí)。在課堂上教師可組織學(xué)生對(duì)學(xué)習(xí)過(guò)程中的收獲、問(wèn)題和心得進(jìn)行交流、解答和分享,并針對(duì)學(xué)生的學(xué)習(xí)情況進(jìn)行有針對(duì)性的指導(dǎo)和講解,對(duì)教學(xué)內(nèi)容的主要知識(shí)點(diǎn)進(jìn)行總體梳理和總結(jié),整個(gè)教學(xué)過(guò)程實(shí)現(xiàn)信息與知識(shí)的融合,加深教師與學(xué)生的溝通。可以說(shuō)這種“多元混合式”教學(xué)模式,實(shí)現(xiàn)了由傳統(tǒng)以教師為主的填鴨式課堂教學(xué)模式向以學(xué)生為主的翻轉(zhuǎn)課堂教學(xué)模式的轉(zhuǎn)變,有助于教學(xué)相長(zhǎng),有利于學(xué)生的全面發(fā)展。
2.采用微課教學(xué)的輔助模式,開(kāi)放、拓展教學(xué)和學(xué)習(xí)空間
在改革傳統(tǒng)教學(xué)模式的基礎(chǔ)上,引入現(xiàn)代化的微課教學(xué)模式,發(fā)揮微課內(nèi)容精短、主題鮮明的優(yōu)勢(shì),利用其形象性、精品化、便捷性等特征,將每一章的重點(diǎn)和難點(diǎn)內(nèi)容制作成微課。例如,水平荷載中的風(fēng)荷載、地震、土側(cè)壓力等的計(jì)算是學(xué)習(xí)的重點(diǎn),也是學(xué)習(xí)的難點(diǎn),將這部分內(nèi)容制作成微課后學(xué)生不僅在課堂上,而且在課堂后也可以對(duì)教師所講的內(nèi)容進(jìn)行學(xué)習(xí),非常方便。將微課教學(xué)與傳統(tǒng)教學(xué)相結(jié)合,拓展了教師教學(xué)和學(xué)生學(xué)習(xí)的空間,使教學(xué)任務(wù)和學(xué)習(xí)任務(wù)得到分解,解決了傳統(tǒng)教學(xué)中課堂時(shí)間緊、任務(wù)重的問(wèn)題。目前微課教學(xué)應(yīng)用越來(lái)越廣,因此,在荷載課程教學(xué)中將微課教學(xué)模式與傳統(tǒng)教學(xué)模式相結(jié)合,是大數(shù)據(jù)時(shí)代荷載課程教學(xué)模式改革的有效途徑之一。
3.加強(qiáng)傳統(tǒng)教學(xué)模式與新的教學(xué)模式的融合
一切事物都具有兩面性,優(yōu)缺點(diǎn)并存,教學(xué)模式也不例外,新的教學(xué)模式也存在弊端,需要與傳統(tǒng)教學(xué)模式進(jìn)行融合,這樣才可以達(dá)到事半功倍的效果。新的教學(xué)模式可以體現(xiàn)學(xué)生的自主性,引導(dǎo)學(xué)生自覺(jué)參與學(xué)習(xí)。但是針對(duì)目前學(xué)生的基本功、能力等狀況,荷載與結(jié)構(gòu)設(shè)計(jì)方法課程學(xué)習(xí)還需要教師的督促和指導(dǎo)。另外,對(duì)荷載課程中實(shí)際規(guī)范的應(yīng)用及新舊規(guī)范的對(duì)比,也需要在教師的指導(dǎo)下對(duì)具體實(shí)際問(wèn)題進(jìn)行分析,尤其需要教師與學(xué)生的及時(shí)溝通。因此,完全依靠學(xué)生通過(guò)網(wǎng)絡(luò)等新的教學(xué)模式仍然不能很好地解決學(xué)習(xí)中的實(shí)際問(wèn)題,現(xiàn)代教學(xué)與傳統(tǒng)教學(xué)的融合才是理想的教學(xué)方式。
(三) 依托大數(shù)據(jù)的平臺(tái)建設(shè),創(chuàng)建荷載課程的教學(xué)空間與學(xué)習(xí)環(huán)境
以土木工程專業(yè)大數(shù)據(jù)平臺(tái)建設(shè)為契機(jī),創(chuàng)建荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)現(xiàn)代化環(huán)境。通過(guò)大數(shù)據(jù)信息平臺(tái)建設(shè),建設(shè)并完善荷載與結(jié)構(gòu)設(shè)計(jì)優(yōu)秀課程網(wǎng)絡(luò)平臺(tái),為教師教學(xué)、學(xué)生學(xué)習(xí)和師生交流提供網(wǎng)絡(luò)空間,教師和學(xué)生都可以在網(wǎng)絡(luò)平臺(tái)上下載該課程的學(xué)習(xí)資源、作業(yè)要求,還可以實(shí)現(xiàn)學(xué)生和教師在線互動(dòng)、答疑解惑。此外,平臺(tái)還提供與該課程內(nèi)容相關(guān)的眾多專業(yè)課程優(yōu)秀網(wǎng)絡(luò)資源的鏈接地址(例如:土力學(xué)、工程結(jié)構(gòu)抗震、高層建筑結(jié)構(gòu)等精品課程資源網(wǎng)址),大家可以在這里獲取與課程相關(guān)內(nèi)容的有益資源。在此平臺(tái)還可獲取該課程在后續(xù)課程及工程中的實(shí)際應(yīng)用實(shí)例、工程事故案例等,幫助學(xué)生明確該課程學(xué)習(xí)的重要性,拓展學(xué)生專業(yè)視野。另外,可以建立該課程的微信群和QQ群,師生可以隨時(shí)隨地進(jìn)行溝通交流。教學(xué)和學(xué)習(xí)空間的拓展,能充分發(fā)揮學(xué)生和教師的主觀能動(dòng)性,開(kāi)闊學(xué)生的視野,增強(qiáng)學(xué)生的學(xué)習(xí)積極性。
(四) 依托荷載優(yōu)秀課程平臺(tái),建立“網(wǎng)上―課上―卷上”一體化、全方位的考核評(píng)價(jià)體系現(xiàn)代化的信息技術(shù),為荷載課程考核評(píng)價(jià)提供了眾多的評(píng)價(jià)手段。改革原有荷載與結(jié)構(gòu)設(shè)計(jì)方法課程評(píng)定辦法,在繼續(xù)采取將期末最終評(píng)定與平時(shí)考核相結(jié)合的考核辦法的基礎(chǔ)上,基于荷載優(yōu)秀課程網(wǎng)絡(luò)平臺(tái)建設(shè)增加網(wǎng)上評(píng)價(jià)的環(huán)節(jié),評(píng)定內(nèi)容更加全面,方式更加多樣。最終期末成績(jī)(100分)=網(wǎng)上(15分)+課上(15分)+創(chuàng)新(10分)+期末試卷(60分)。具體考核辦法網(wǎng)絡(luò)評(píng)價(jià)10分:由學(xué)生在荷載課程網(wǎng)絡(luò)學(xué)習(xí)平臺(tái)上完成各階段學(xué)習(xí)任務(wù)及作業(yè)情況,系統(tǒng)給出評(píng)價(jià);學(xué)生互評(píng)5分:通過(guò)網(wǎng)絡(luò)平臺(tái)學(xué)生提出并解決問(wèn)題,學(xué)生之間給出客觀評(píng)價(jià);創(chuàng)新實(shí)踐能力10分:學(xué)生應(yīng)用荷載課程的知識(shí)對(duì)實(shí)際工程事故案例提出自己的觀點(diǎn)和處理辦法;課堂作業(yè)、出勤率和課堂表現(xiàn)各5分:課堂上學(xué)生對(duì)該課程的重視程度,對(duì)教學(xué)內(nèi)容的掌握和課程參與互動(dòng)情況;試卷評(píng)價(jià)60分:通過(guò)期末考試考核學(xué)生對(duì)整體內(nèi)容的掌握情況。由此建立的“網(wǎng)上―課上―卷上”一體化、多樣性、全方位的考核評(píng)價(jià)體系(如圖2所示),打破了傳統(tǒng)的一張?jiān)嚲矶ǔ煽?jī)的考核辦法,是信息時(shí)代荷載課程教學(xué)改革的又一突破。
四、結(jié)語(yǔ)
大數(shù)據(jù)正在改變當(dāng)今的社會(huì)生活,對(duì)高等教育改革也提出了一個(gè)全新的課題。本文基于教育大數(shù)據(jù)平臺(tái)建設(shè),對(duì)荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)進(jìn)行前瞻性研究,從課程的教學(xué)內(nèi)容體系、教學(xué)模式、教學(xué)環(huán)境及考核評(píng)價(jià)體系進(jìn)行創(chuàng)新改革探索,立足該課程學(xué)科前沿,順應(yīng)大數(shù)據(jù)時(shí)代的需求,充分彰顯荷載課程教學(xué)以學(xué)生為本的教學(xué)理念,最大程度挖掘?qū)W生的潛力,實(shí)現(xiàn)教學(xué)方法手段的現(xiàn)代化、多元化,以及“信息―知識(shí)―能力”一體化的教學(xué)目標(biāo),使荷載與結(jié)構(gòu)設(shè)計(jì)方法課程教學(xué)符合時(shí)代的發(fā)展步伐。
參考文獻(xiàn):
[1]許曄.大數(shù)據(jù)時(shí)代中國(guó)面臨的挑戰(zhàn)與對(duì)策[J].中國(guó)科技論壇,2015(3):24-30.
[2]萬(wàn)靜.大數(shù)據(jù):大學(xué)變革的機(jī)遇[J].國(guó)家教育行政學(xué)院學(xué)報(bào),2015(4):67-72.
[3]黃晉.關(guān)于大數(shù)據(jù)人才培養(yǎng)的思考與探索[J].教育教學(xué)論壇,2014(45):201-204.
[4]楚文波.大數(shù)據(jù)背景下的教育教學(xué)改革[J].教學(xué)與教育信息化, 2015(13):181-183.
[5]孫鋒.面向大數(shù)據(jù)的信息與計(jì)算科學(xué)專業(yè)實(shí)驗(yàn)課程體系研究[J].福建電腦, 2014(2):57-59.
[6]詹少?gòu)?qiáng).大數(shù)據(jù)背景下的數(shù)據(jù)挖掘課程教學(xué)新探[J]. 長(zhǎng)春教育學(xué)院學(xué)報(bào),2014(22):30-33.
[7]曾祥蓉,陳進(jìn),謝孝,王薇.土木工程專業(yè)網(wǎng)絡(luò)課程推廣應(yīng)用研究與實(shí)踐――以混凝土結(jié)構(gòu)設(shè)計(jì)原理網(wǎng)絡(luò)課程為例[J].高等建筑教育, 2012,(21)5:142-145.
關(guān)鍵詞:數(shù)據(jù)結(jié)構(gòu);程序;教學(xué)模式;探索
中圖分類號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2007)18-31759-02
The Research of Program Teaching Patterm on Data Strucure
MO Jia-qing
(Dept. of Computer Science, Zhaoqing University, Zhaoqing 526061, China)
Abstract:The current teaching status of Data Structure is analysed and the teaching pattern which emphasizes on ability of programming based on comprehension is presented. Some research has been carried on ,such as curriculum introduction, systematic structure of Data Structure, setting of experiment subject,providing aid-studying system, curriculum design and approval. The teaching effect shows these methodes can improve the the student abilities on computer program designing effectively.
Key words:data structure; program; teaching patterm; research
1 引言
《數(shù)據(jù)結(jié)構(gòu)》是信息技術(shù)專業(yè)的核心課程,它的內(nèi)容主要是介紹如何根據(jù)具體情況合理地選擇邏輯結(jié)構(gòu)(表、樹、圖等)去組織數(shù)據(jù),并設(shè)計(jì)一定的物理存儲(chǔ)結(jié)構(gòu)(順序、鏈?zhǔn)降龋┯行У卮鎯?chǔ)這些數(shù)據(jù),同時(shí)設(shè)計(jì)正確的算法并對(duì)算法作出分析和評(píng)價(jià)。它在培養(yǎng)計(jì)算機(jī)專業(yè)學(xué)生嚴(yán)謹(jǐn)?shù)倪壿嬎季S能力和培養(yǎng)良好的編程開(kāi)發(fā)能力方面有著不可替代的作用,因此成為高校計(jì)算機(jī)專業(yè)研究生招生入學(xué)考試和軟件設(shè)計(jì)師認(rèn)證考試的首選課程。
《數(shù)據(jù)結(jié)構(gòu)》內(nèi)容廣泛,涉及到的知識(shí)點(diǎn)眾多,而且邏輯性和抽象性和動(dòng)態(tài)性都很強(qiáng),理論和實(shí)踐緊密結(jié)合,因此對(duì)學(xué)生而言學(xué)習(xí)難度大,對(duì)教師而言授課難度高。教學(xué)過(guò)程出現(xiàn)眾多問(wèn)題,具體表現(xiàn)如下:
(1)學(xué)生由于沒(méi)有編制過(guò)大程序和項(xiàng)目開(kāi)發(fā)的經(jīng)驗(yàn),雖然知道《數(shù)據(jù)結(jié)構(gòu)》的重要性,但是對(duì)于學(xué)習(xí)目的不明確。
(2)學(xué)生未能將所學(xué)內(nèi)容融會(huì)貫通,沒(méi)能將各大知識(shí)點(diǎn)的區(qū)別與聯(lián)系弄清楚。
(3)學(xué)生由于C語(yǔ)言基礎(chǔ)不扎實(shí),對(duì)結(jié)構(gòu)、指針、參數(shù)傳遞等概念掌握不好,在做作業(yè)或?qū)嶒?yàn)時(shí)如果題目要求與教材內(nèi)容相差較大,無(wú)法入手,導(dǎo)致信心受到打擊、畏難情緒增加。此后,為應(yīng)付作業(yè),出現(xiàn)抄襲別人作業(yè),或直接上網(wǎng)搜索現(xiàn)成程序的情況。
(4)雖然教師自己對(duì)教材內(nèi)容很熟悉,能夠?qū)⒏髦R(shí)點(diǎn)講得很透徹,但是沒(méi)考慮到學(xué)生的實(shí)際學(xué)習(xí)狀況和接收能力,出現(xiàn)學(xué)生越學(xué)越難,理論與實(shí)踐越脫節(jié),越學(xué)越不想學(xué)的情況。
(5)目前高校擴(kuò)招,入學(xué)的學(xué)生素質(zhì)有所下降,邏輯思維能力和自學(xué)能力不強(qiáng),也是造成教學(xué)效果不理想的原因之一。
《數(shù)據(jù)結(jié)構(gòu)》的教學(xué)目標(biāo)之一是提高學(xué)生的軟件編制能力,而上述問(wèn)題的出現(xiàn)使得這個(gè)目標(biāo)大打折扣,因此迫切需要運(yùn)用新的有針對(duì)性的教學(xué)模式。
2 《數(shù)據(jù)結(jié)構(gòu)》程序教學(xué)模式
2.1 加強(qiáng)技能,克服程序語(yǔ)言造成的困難
《數(shù)據(jù)結(jié)構(gòu)》中大量運(yùn)用了指針、地址、結(jié)構(gòu)體、函數(shù)參數(shù)傳遞等知識(shí),而這些知識(shí)又是C語(yǔ)言中的重點(diǎn)和難點(diǎn)。如果學(xué)生對(duì)這些內(nèi)容掌握不好的話,學(xué)習(xí)《數(shù)據(jù)結(jié)構(gòu)》將受到很大制約。因此在開(kāi)學(xué)時(shí),教師先幫助學(xué)生重點(diǎn)復(fù)習(xí)C語(yǔ)言中與數(shù)據(jù)結(jié)構(gòu)相關(guān)的知識(shí)點(diǎn),實(shí)現(xiàn)從C語(yǔ)言到數(shù)據(jù)結(jié)構(gòu)的平滑銜接。復(fù)習(xí)的題目形式可以是選擇、填空、編程題等。
目前高校普遍采用清華大學(xué)嚴(yán)蔚敏編著《數(shù)據(jù)結(jié)構(gòu)》(C語(yǔ)言版)作為教材,該教材側(cè)重于用類C語(yǔ)言描述各種數(shù)據(jù)結(jié)構(gòu)和算法,從頭到尾并沒(méi)有一個(gè)完整的C語(yǔ)言程序,并且該教材為使學(xué)生能方便地調(diào)用教材中的算法函數(shù),教材中的算法函數(shù)均采用了C++的“引用”作為參數(shù),這種“引用”參數(shù)貌似C語(yǔ)言中的地址,而教材并沒(méi)有著重強(qiáng)調(diào)。作者的初衷是好的,但此舉對(duì)于接觸過(guò)C++的初學(xué)者造成極大困惑。學(xué)習(xí)幾周后,學(xué)生發(fā)現(xiàn)程序調(diào)試?yán)щy,實(shí)驗(yàn)過(guò)程障礙重重,導(dǎo)致信心受到打擊、畏難情緒不斷增加。因而有必要讓學(xué)生熟悉C++中的“引用”。
以教材上的構(gòu)造空鏈表算法函數(shù)為例,函數(shù)參數(shù)使用“引用”調(diào)用和不使用“引用”的比較,幫助學(xué)生掌握“引用”并明白使用“引用”的好處。
typedef struct
{ElemType *elem;
int length;
int listsize;
} SqList;
使用“引用”傳遞參數(shù)定義函數(shù):
Status InitList_SqA(SqList &L) {//構(gòu)造空鏈表
L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L.elem) return ERROR; // 存儲(chǔ)分配失敗
L.length = 0; // 空表長(zhǎng)度為0
L.listsize = LIST_INIT_SIZE; // 初始存儲(chǔ)容量
return OK;
}
調(diào)用方式如下:
SqList LA;
InitList_SqA(LA);
使用指針傳遞參數(shù)定義函數(shù):
Status InitList_SqB(SqList *L) { //構(gòu)造空鏈表
L->elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if (!L->elem) return ERROR;// 存儲(chǔ)分配失敗
L->length = 0;// 空表長(zhǎng)度為0
L->listsize = LIST_INIT_SIZE; // 初始存儲(chǔ)容量
return OK;
}
調(diào)用方式如下:
SqList LB;
InitList_SqB(&LB),
可以看到,運(yùn)用“引用”作為參數(shù),教材上的函數(shù)基本上可以原封不動(dòng)地使用,而使用指針傳遞參數(shù),則需要對(duì)教材上的函數(shù)作大量修改。
另外教材為使算法描述更為簡(jiǎn)潔,算法函數(shù)內(nèi)部一律省略了變量定義,這對(duì)學(xué)生的學(xué)習(xí)也造成了很大困難。因此還需要作一些針對(duì)性的訓(xùn)練,如通過(guò)填空題等形式補(bǔ)充完整函數(shù),并適當(dāng)評(píng)講。
2.2 理解課程體系結(jié)構(gòu),融會(huì)貫通
《數(shù)據(jù)結(jié)構(gòu)》課程的內(nèi)容由簡(jiǎn)單到復(fù)雜,循序漸進(jìn)。從一般的線性表開(kāi)始,到后面的非線性的樹和更復(fù)雜的圖,都是討論各種數(shù)據(jù)結(jié)構(gòu)的邏輯結(jié)構(gòu)和保存這種邏輯結(jié)構(gòu)所采用的物理結(jié)構(gòu),以及在這種存儲(chǔ)結(jié)構(gòu)上的相關(guān)運(yùn)算。理解這個(gè)體系結(jié)構(gòu),有助于學(xué)生從整體上更深入地掌握數(shù)據(jù)結(jié)構(gòu)。
本文為全文原貌 未安裝PDF瀏覽器用戶請(qǐng)先下載安裝 原版全文
2.3 完善框架程序,培養(yǎng)自信
自信心是激發(fā)學(xué)生創(chuàng)新能力的積極情感和重要前提。為培養(yǎng)學(xué)生克服困難的自信心,筆者針對(duì)各種數(shù)據(jù)結(jié)構(gòu)類型設(shè)計(jì)了不同的框架程序,讓學(xué)生在實(shí)驗(yàn)過(guò)程中逐步完善,添加新功能,最終形式一個(gè)大的系統(tǒng)。例如針對(duì)線性表,筆者設(shè)計(jì)了線性表功能框架文本界面,其中的菜單功能分別為鏈表創(chuàng)建、鏈表插入、鏈表刪除、鏈表合并,其中鏈表合并又為一個(gè)鏈表合并至另一鏈表尾部、合并過(guò)程相同元素保留和不保留三個(gè)功能,讓學(xué)生逐步將單獨(dú)的小功能添加至該界面中。又例如,在學(xué)叉樹這一章內(nèi)容時(shí),筆者設(shè)計(jì)了二叉樹功能框架菜單,菜單包括二叉樹創(chuàng)建、先序遍歷、中序遍歷、后序遍歷、左右子樹交換、計(jì)算樹高度和葉子數(shù)量等,讓學(xué)生逐步完善。通過(guò)這種不斷添加小功能,最終形成一個(gè)大的系統(tǒng)的實(shí)驗(yàn)方法,使學(xué)生具有一定的成就感,自信心不斷增強(qiáng)。
2.4 提供學(xué)習(xí)輔助系統(tǒng),減輕實(shí)驗(yàn)負(fù)擔(dān)
《數(shù)據(jù)結(jié)構(gòu)》的不少實(shí)驗(yàn)是驗(yàn)證性實(shí)驗(yàn),為完成實(shí)驗(yàn),學(xué)生需要大量調(diào)用教材上的算法函數(shù)或?qū)@些函數(shù)作一定的修改。為了讓學(xué)生提高實(shí)驗(yàn)效率,將主要精力集中于程序調(diào)試而不是文字錄入,筆者設(shè)計(jì)了《數(shù)據(jù)結(jié)構(gòu)》學(xué)習(xí)輔助系統(tǒng)。該系統(tǒng)把各章的算法函數(shù)分門別類,供學(xué)生做實(shí)驗(yàn)時(shí)復(fù)制至其程序中,以減輕實(shí)驗(yàn)負(fù)擔(dān)。另外該系統(tǒng)還給出了一些調(diào)用這些算法函數(shù)的完整程序,供學(xué)生參考。
2.5 分組課程設(shè)計(jì),培養(yǎng)團(tuán)隊(duì)合作精神
課程設(shè)計(jì)是體現(xiàn)《數(shù)據(jù)結(jié)構(gòu)》理論和實(shí)踐緊密結(jié)合的重要環(huán)節(jié)。通過(guò)課程設(shè)計(jì),不但鍛練學(xué)生描述概念、構(gòu)建數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法的能力,而且鍛練學(xué)生運(yùn)用自己所學(xué)知識(shí)通過(guò)高級(jí)程序語(yǔ)言解決實(shí)際問(wèn)題的能力。
課程設(shè)計(jì)的題目一般選擇綜合設(shè)計(jì)類型,如風(fēng)景區(qū)景點(diǎn)路徑查詢、簡(jiǎn)單114查號(hào)臺(tái)等。要求學(xué)生首先進(jìn)行需要分析,明確目標(biāo)如何,需要實(shí)現(xiàn)那些功能;其次是進(jìn)行概要設(shè)計(jì)和數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),定義各功能模塊和其內(nèi)部流程、抽象數(shù)據(jù)結(jié)構(gòu),最后編碼調(diào)試并寫成小論文。
由于單個(gè)學(xué)生完成任務(wù)存在較大困難,課程設(shè)計(jì)還需要分組。分組時(shí)要考慮學(xué)生的實(shí)際情況,要考慮各個(gè)小組實(shí)力均衡,具體做法是把學(xué)習(xí)成績(jī)較好的學(xué)生和成績(jī)靠后的學(xué)生安排在同一組。課程設(shè)計(jì)完成后,還安排答辯。答辯的形式是隨機(jī)抽查小組內(nèi)的一個(gè)成員,由該成員代表小組進(jìn)行答辯,該成員的成績(jī)就是該小組的成績(jī)。要求學(xué)生回答系統(tǒng)設(shè)計(jì)思想、總體架構(gòu)、開(kāi)發(fā)過(guò)程碰到什么困難、整個(gè)系統(tǒng)有何優(yōu)缺點(diǎn)等。通過(guò)這種形式,可防止出現(xiàn)課程設(shè)計(jì)只是由小組內(nèi)水平高的學(xué)生單獨(dú)完成,而其他成員基本不參與的情況。這種答辯形式可以極大地調(diào)動(dòng)了學(xué)生的積極性。為了不讓自己拖小組的后腿,學(xué)生們相互學(xué)習(xí),熱烈討論,表現(xiàn)出極大的參與熱情。最后的結(jié)果是小組所有成員水平有了很大提高,培養(yǎng)了團(tuán)隊(duì)合作精神。
3 結(jié)束語(yǔ)
運(yùn)用高級(jí)語(yǔ)言進(jìn)行程序設(shè)計(jì)是一個(gè)創(chuàng)造性的過(guò)程。《數(shù)據(jù)結(jié)構(gòu)》課程的教學(xué)目標(biāo)之一就是要提高計(jì)算機(jī)專業(yè)學(xué)生的程序設(shè)計(jì)語(yǔ)言能力。筆者在《數(shù)據(jù)結(jié)構(gòu)》教學(xué)過(guò)程中的上述措施,目的就是要解決學(xué)生在學(xué)習(xí)過(guò)程中由語(yǔ)言所造成的困難,最終提高其程序設(shè)計(jì)能力。教學(xué)實(shí)踐也證明,上述措施提高了學(xué)生C語(yǔ)言技能,降低由程序語(yǔ)言造成的難度;而且針對(duì)性的訓(xùn)練可讓學(xué)生很快地掌握調(diào)用教材上的算法函數(shù),理解了教材的知識(shí)體系結(jié)構(gòu)。程序功能整合使學(xué)生有成就感和增強(qiáng)自信,需要答辯的課程設(shè)計(jì)使鍛練了學(xué)生運(yùn)用所學(xué)理論解決實(shí)際問(wèn)題的能力,也培養(yǎng)了團(tuán)隊(duì)合作精神。這種側(cè)重程序的教學(xué)模式取得良好的教學(xué)效果。
參考文獻(xiàn):
[1]嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)(C語(yǔ)言版)[M]. 北京:清華大學(xué)出版社,2006.
[2]嚴(yán)蔚敏,吳偉民. 數(shù)據(jù)結(jié)構(gòu)題集(C語(yǔ)言版)[M]. 北京:清華大學(xué)出版社,2004.
[3]黃揚(yáng)銘. 數(shù)據(jù)結(jié)構(gòu)[M]. 北京:科學(xué)出版社,2005.
數(shù)據(jù)報(bào)告 數(shù)據(jù)采集論文 數(shù)據(jù)安全論文 數(shù)據(jù)采集 數(shù)據(jù)挖掘總結(jié) 數(shù)據(jù)安全 數(shù)據(jù)統(tǒng)計(jì)論文 數(shù)據(jù)挖掘 數(shù)據(jù)理論論文 數(shù)據(jù)通信論文 紀(jì)律教育問(wèn)題 新時(shí)代教育價(jià)值觀