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