前言:中文期刊網精心挑選了數據結構課程設計范文供你參考和學習,希望我們的參考范文能激發你的文章創作靈感,歡迎閱讀。
數據結構課程設計范文1
(中北大學 計算機與控制工程學院,山西 太原 030051)
摘要:介紹數據結構課程設計輔助教學平臺的設計過程,說明其構建思路、系統結構和實現方法,闡述該平臺集內容提供、多媒體資料庫瀏覽、流媒體播放和交流互動于一身,采用Adobe Flex、PHP、MySQL、Apache和flash Media Server等技術,以純Flash方式展現,指出使用該平臺可以更好地發揮教師引導、啟發、監控教學過程的主導作用,同時又能充分體現學生作為學習過程主體的主動性和創造性,有利于教師啟發教學和學生自主建構知識體系。
關鍵詞 :數據結構;課程設計;教學平臺
基金項目:國家自然科學基金項目(61379125);山西省自然科學基金項目(2012011015-3);山西省高等學??萍紕撔马椖浚?014143)。
第一作者簡介:龐曉瓊,女,講師,研究方向為信息安全與密碼學,xqpang@nuc.edu.cn。
0 引言
數據結構是計算機相關專業的核心基礎課程,根據教學大綱安排,各章節安排相應教學內容的驗證性上機實驗,還設置針對課程內容的綜合設計實驗環節,這是考查學生理論聯系實際動手能力的重要環節,對鍛煉學生發現問題、解決問題的能力也很有裨益。數據結構課程設計實驗步驟如下:需求分析——選擇并構造合適的數據結構——功能函數設計——具體編碼實現——運行測試——完成課程設計說明書。在傳統的教學安排中,實驗過程由學生獨立完成,教師的作用主要是答疑、過程監督和成果驗收等方面,這種強調學生的“學”而忽視教師主導作用的教學過程雖然會涌現出一些優秀的作品,但也存在一些問題:一是學生自由度過大,容易偏離課程設計教學目標;二是部分學生由于缺乏專業訓練,沒有形成正解的思維方法,拿到題目無從下手,只能生搬硬套基本數據結構;三是代碼編寫不夠規范,可讀性差,也不注重文檔的整理;四是存在照抄他人課程設計的現象 [1-3] 。
數據結構課程設計是個綜合性實踐環節,不僅需要數據結構知識,還是對計算機程序設計語言、離散數學和軟件工程等課程的綜合運用。學生的自主學習和教師的主導學習相結合十分重要,為更好地發揮教師引導、啟發、監控教學過程的主導作用,結合當前互聯網應用開發的主流技術,我們設計實現了數據結構課程設計輔助教學平臺,用于指導和幫助學生完成課程設計。
1 設計過程
1.1 目的與思想
數據結構課程設計輔助教學平臺的主要目的包括:①通過優化學生自主學習環境,完善學習策略,充分發揮教師引導、啟發、監控教學過程的主導作用;②為學生自主建構知識體系創造條件,使學生系統掌握數據結構課程內容、鍛煉和提高編程能力,充分體現學生的主動性、創造性并得到成就感。設計思想主要體現在:①充分發揮互聯網作用,互聯網應用已成為學生課余生活的重要組成部分,教師應因勢利導,利用互聯網對學生進行指導和輔導;②要激發學生的興趣,興趣是最好的老師,教學平臺的界面要美觀大方和簡潔明朗,注重多媒體組件的選擇和使用;③學習環節的設計要貫穿整個課程設計過程,覆蓋不同知識層面的學生;④注重新媒介和新技術的使用,緊跟時展步伐;⑤尊重互聯網規律,在知識大爆炸時代,微課堂、“短平快”是主流,注重化繁為簡和突出重點。
1.2 內容構建
(1)教師可結合數據結構實驗環節的特點,挑選綜合性強、涉及知識面廣、適合學生自主創新的經典案例,由教師制作成設計分析講解、代碼編寫講解和運行測試講解等分段視頻,學生根據需要可自主點播。教師通過引導和啟發,開拓學生思維,鼓勵學生自主構造更合理的數據結構,實現更完善的功能。平臺選取的案例均可用多種數據結構實現,適用于不同層次的學生,同時也考查學生對于算法設計、內外排序、文件存取和實現效率等各方面知識點的掌握情況,是對學生綜合能力的考驗。
(2)為了使學生能夠學以致用,教師可通過咨詢社會上相關領域的工程師、系統分析師和從業人員并對歷屆畢業、就業的學生進行問卷調查,在資源選擇和案例講解中注重理論聯系實際,著力從項目管理、軟件工程、測試驅動開發等方面傳授從業經驗,為提高學生的就業能力打下堅實基礎。
(3)在教學資源的運用上,教師可提供視頻、音像、文檔、幻燈片、表格、圖形圖像和電子書籍等多種媒體形式,涵蓋數據結構課程設計涉及的C語言程序設計、C++語言、算法設計、離散數學等資源內容;尊重原創者的版權,培養學生的版權意識,對所有引用的資源均詳細標明來源及版權信息。
(4)注重有教無類,使不同能力水平的學生都能從中汲取養分。對于初級水平的學生,通過學習視頻講解、參考優秀作品和閱讀教師點評,找到完成課程設計的入口,自主完成課程設計;對于能力強、學有余力的學生,通過查看共享資源和在自主探索中挑戰自我,鍛煉駕馭問題的能力,規范編程風格并實踐軟件工程。
(5)注重溝通交流,授人以漁。平臺中開設釋疑解惑欄目和課程設計論壇,預留微信公眾賬號,學生可以提出問題及求解,促進和強化師生間、學生間的互動交流,從點點滴滴中積累學習。
2 實現過程
2.1 系統架構
數據結構課程設計輔助教學平臺的系統架構如圖1所示。
數據結構課程設計輔助教學平臺Web服務器采用Apache服務器,以純Flex技術實現,數據庫采用MySQL,由PHP從數據庫中讀取數據形成XML文件提供給Flex使用,用戶通過瀏覽器以HTTP協議訪問該平臺。媒體播放采用兩種形式:一是普通的媒體文件,均以Flash形式提供,包括幻燈片、課件、文檔和書籍等;二是流媒體,通過FMS(Adobe Flash Media Server)流媒體服務器以RTMP協議向客戶端推送。相對于下載后觀看的網絡播放形式而言,流媒體的典型特征是把連續的音頻和視頻信息壓縮后放到網絡服務器上,用戶可以邊下載邊觀看。采用流媒體方式和流媒體服務器還可以減輕服務器的訪問壓力,使得平臺能夠同時處理更多的用戶視頻點播請求。
2.2 技術特點
(1)平臺是一個典型的富互聯網應用(rich internet application,RIA),RIA的好處在于比用HTML能實現的接口更加健壯,反應更加靈敏,可視化特性更加出色。RIA的實現技術包括Ajax、Flex和Silverlight等,本平臺使用的是Flex技術。Flex結合了音頻、視頻和實時通訊,用戶體驗極佳,具備桌面應用程序的用戶交互感和傳統網絡應用的部署便利性。
(2)平臺開發堅持跨平臺、跨瀏覽器的特性,使用技術及組件包括Adobe Flex、Apache、PHP、MySQL、Adobe Flash Media Server等,均具備良好跨平臺特性,后臺服務器支持Windows、Linux和Unix等不同操作系統。平臺以純粹的Flash形式展現,具備良好跨瀏覽器特性,只要裝有Flash Player的瀏覽器都能夠正常瀏覽,支持所有主流瀏覽器,如IE、火狐、UC、Chrome等,客戶端支持Windows、Linux等主流操作系統,同樣也支持移動互聯網以及基于Android、iOS的平板電腦、手機等便攜設備。
(3)平臺中使用到的視頻、音像、文檔、幻燈片、表格、圖形圖像和書籍等統一轉換為flv格式文件,用戶只需要通過瀏覽器就可以在線查看上述各種形式的媒體資源,不需安裝任何其他插件或應用軟件(如Word、 Excel、 Powerpoint等),充分考慮了客戶端的跨平臺和多樣性。
(4)視頻點播和視頻直播中采用了FMS(Adobe Flash Media Server)流媒體服務器,該技術是主流的視頻傳播實現技術。通過FMS,流媒體文件將通過RTMP協議向客戶端推送,圖像壓縮率更高,播放流暢清晰。與下載視頻文件到本地后觀看的網絡播放形式相比,流媒體的典型特征是用戶可以邊下載邊觀看,瀏覽速度快,播放中支持拖拽和定位。此外,FMS還具備良好的可擴展能力,可根據用戶群規模增加邊緣服務器(edge server)迅速提高訪問能力。
(5)流媒體視頻講解中充分利用了電子黑板軟件,結合數位板硬件,在多媒體教學結合“板書”講解,既“現代”又“傳統”,讓教師能夠把握教學的主線,學生有充分的消化時間,彌補了多媒體教學中的不足。
(6)設計細節上注重界面設計,功能分區清晰、導航明確、操作簡便、提示信息豐富;而Flash的動態特點可以增強平臺的動感效果,使得顏色搭配賞心悅目、色調把握得當并以CSS樣式表統一平臺的風格,提高學生的使用興趣。
2.3 功能模塊
平臺目前具備7個模塊,分別是首頁、影音中心、堂件集萃、資源共享、自主探索、優秀作品和釋疑解惑,如圖2所示。
1) 首頁模塊。
首頁模塊(如圖3所示)是平臺的門面,介紹平臺的目的和特色,展示最新的信息和媒體介紹。首頁分為4個功能區域:1是新聞區,用來最新的通知、相關信息、教師布置的作業等;2是最新媒體資源展示區;3是平臺的菜單導航區;4是網絡資源鏈接區。
2) 影音中心模塊。
影音中心模塊(如圖4所示)集中展現平臺中所有的媒體資源,包括flv形式的流媒體視頻,Flash形式的教學堂件、幻燈片,Flash形式的文檔、表格、書籍、代碼和資料,分為3個功能區域:1是資源類目區,以樹型結構展示;2是媒體放映區,支持各種格式的文檔(如圖5所示),也能進行視頻點播和在線視頻直播;3是資源區,顯示當前類目對應的視頻、幻燈和文檔資源。
3) 堂件集萃模塊。
堂件集萃模塊(如圖6所示)以圖像列表方式展現理論課堂教學和案例視頻教學中的堂件,每個堂件均配有標題、所屬類目、內容介紹等文字信息。所有堂件都是以Flash的形式展現,支持聲音、動畫、切換等功能(如圖7所示)。
4) 資源共享模塊。
資源共享模塊匯集教師和學生提供的電子書、國內外經典數據結構教材等信息資源和學習輔助材料,每個文檔均注明資源名稱、來源、所屬類目、內容介紹、版權信息等情況。該模塊以文字列表形式展現,通過點擊單條記錄可在線閱覽相應文檔。所有文檔資料均采用FlashPaper形式提供在線閱讀,不需安裝其他插件或軟件。
5) 自主探索模塊。
自主探索模塊提供一些課程設計實踐環節要求之外的、富有挑戰性的課題,方便學生開拓思維、勇攀高峰、鍛煉挑戰自我能力,促進學生自學。
6) 優秀作品模塊。
優秀作品模塊提供歷屆學生的優秀作品,這些作品均完成得較為出色且富有創新性,具有參考價值,可供廣大學生下載和學習。每個作品都包含作者信息,詳細注明題目要求和設計內容,有些還附有教師點評。
7) 釋疑解惑模塊。
釋疑解惑模塊(如圖8所示)是師生之間、學生與學生間互助學習的園地,分為3個功能區域:1區顯示既往學生提出的問題及教師的答復;2區是學生向教師提出問題的區域;3區提供“中北大學數據結構論壇”的鏈接。
3 結語
數據結構課程設計輔助教學平臺已在3屆計算機、網絡工程、軟件工程專業學生的數據結構課程設計過程中使用。通過指導教師和每個學生進行一對一答辯的結果來看,學生的課程設計水平有了明顯提高,對數據結構的運用更加靈活,思路也更加開闊,達到了建設該輔助教學平臺的初衷。下一步,我們將設計開發與該平臺對應的微信公眾賬號,使平臺成為師生課余交流的重要途徑。
參考文獻:
[1] 龐曉瓊. 案例驅動的數據結構課程設計教學改革實踐[J]. 計算機教育, 2009(1): 53-55.
[2] 馬巧梅, 龐曉瓊, 楊秋翔. 數據結構課程設計案例教程[M]. 北京: 人民郵電出版社, 2012: 1-3.
數據結構課程設計范文2
關鍵詞:程序設計基礎;數據結構;計算思維;教學銜接
0、引言
程序設計基礎與數據結構是計算機類專業的兩門專業基礎課,在計算機類專業教學中具有舉足輕重的作用,都旨在培養學生的編程能力和計算思維能力,并為后續課程打下堅實的專業基礎,但在這兩門課程的教學過程中,存在一系列問題,嚴重影響課程的教學效果。筆者分析和研究產生這些實際問題的原因,對這兩門課程的知識融合、內容銜接以及教學實踐等進行探討,提出切實可行的解決方案,更好地實現兩門課程的教學目標。
1、課程教學內容和教學目標
程序設計基礎課程是學生接觸的第一門專業基礎課,也是進行計算機編程的入門課程。課程的教學目標是使學生掌握程序設計的基本方法,培養其擁有良好的程序設計風格、較強的軟件開發能力以及一定的計算思維能力,為后續課程打下良好的基礎。
數據結構是繼程序設計基礎課程之后的一門綜合專業基礎課,是計算機類專業的核心課程之一,具有舉足輕重的作用。它是程序設計基礎課程所講知識的自然延伸和具體應用。對數據結構的理解、掌握和應用拓展,將對學生解決具體實際問題時的數據分析、數據組織、數據處理和編程能力有著深遠的影響。課程的教學目標是培養學生縝密的邏輯思維和數據抽象能力以及學生在軟件設計領域中科學的計算思維能力,幫助學生將數據結構和算法與具體的編程實現相結合并靈活地應用到實踐和工程實際中。
2、兩門課程間的關系
從程序與數據結構本身的關系來說,一個好的程序離不開合適的數據結構,而數據結構中算法的實現離不開具體的程序設計。在計算機類專業的課程體系中,數據結構和程序設計基礎課程雖然獨立開設,但是它們之間的聯系是緊密的。在課程設置上,程序設計基礎是數據結構的前導課程,兩門課程一脈相承,不可分割。
學生對程序設計基礎課程的掌握程度、具備的計算思維和編程能力,直接關系到以程序設計語言實現算法的數據結構課程的教學效果。數據結構課程通過創造性思維的訓練,重點突出數據抽象與程序抽象能力的培養,從而進一步提升學生的計算思維能力和編程能力,但兩門課程在實際教學中存在一些問題,主要原因是課程設置、教學內容、教學方法和教學實踐方式等多方面存在缺陷。經分析,對程序設計基礎和數據結構課程進行知識整合和內容銜接,采用適當的教學方式,改進教學實踐是探討和研究的主要內容。
3、兩門課程在實際教學中存在的銜接問題
3.1 兩門課程教學內容的脫離
目前,在實際教學中,程序設計基礎和數據結構課程雖然關系緊密,但是一直被設定為兩門完全獨立的課程,而且教師在制訂教學大綱和教學目標時容易忽視兩門課程問的聯系,在教學過程中出現一些盲區,要么兩門課程在教學內容上出現不同程度的交叉,要么出現知識銜接的斷層,令學生對兩門課程的內在聯系沒有整體概念和認識,從而導致不能深入系統地學習相關知識。尤其是先行課程序設計基礎的教學內容和課程案例完全脫離了數據結構課程,使數據結構中最頻繁使用的知識和內容在程序設計基礎課程中甚少提及,不能為數據結構課程的講解打下扎實的程序設計基礎。
3.2 程序設計編程語言與數據結構實現語言不一致
程序設計基礎課程所教授的編程語言與數據結構教材或實驗所使用的實現語言不一致,如將C++語言作為程序設計基礎的教授語言,而在數據結構的實現上選擇c語言或Java語言,以至于數據結構的理論教學與具體上機編程實現脫節,嚴重影響了上機實驗和課程設計環節。
3.3 程序設計方法與數據結構實現方法不一致
程序設計基礎課程中或注重面向過程的程序設計方法,或注重面向對象的程序設計方法,但在數據結構課程中卻很難利用前導課程中學到的程序設計方法實現相關的數據結構和算法,從而影響了學生對數據結構課程知識的應用與實現。另一方面,學生在學習過程中沒有充分理解數據結構課程的作用和實際意義,以至于在實際項目和問題中不知使用什么方法(面向過程或面向對象)分析解決問題,不知如何運用數據結構知識解決實際問題。
3.4 前導課程對后續課程實踐環節的影響
數據結構實驗環節相對課堂理論環節較薄弱。此問題的存在多半是因為數據結構具體實現的關鍵技術在程序設計基礎課中未被講解或強調,在進行數據結構算法從理論到偽代碼、再由偽代碼到真代碼轉換的過程中難以真正編程實現,使學生對數據結構的理解和掌握僅停留在抽象層、概念層、理論層,難以上升到實現層,從而影響學生的學習興趣和積極性。同時,課程中的實踐項目過于單一且相對獨立,使實踐環節與實際項目的聯系過于松散,學生運用所學知識解決實際問題的能力和實際工程能力很難得以鍛煉。
3.5 缺少計算思維能力的培養,缺乏理論知識與實際應用的聯系
提高學生計算思維能力是程序設計基礎和數據結構課程共同的目標。計算思維是抽象的多個層次上的思維,而抽象是表達實際的方法。然而,現行教學方法過多關注程序設計和數據結構知識點的講解,缺乏對學生思維能力的培養。
如果缺乏理論聯系實際,那么將影響學生計算思維的培養。數據結構中的知識又太抽象,如果缺乏相應的實際案例對抽象知識加以應用,那么就會導致學生不知道怎樣將所學的知識應用到實際中,缺乏具體問題具體分析和解決的能力。
3.6 教師本身知識結構欠缺,上機實踐指導教師數量不足
授課教師知識結構的缺乏將導致一些現實問題:如果程序設計基礎的教師不懂數據結構,那么其自然不會將相關知識引入課堂,同時也缺乏用所教授的語言具體實現數據結構中結構和算法的能力;如果數據結構的教師缺乏相關編程語言知識,那么就會給上機輔導帶來困難。同時,兩門課程具有很強的實踐性,若上機實踐輔導教師不足,將不利于學生編程能力的提升以及相關軟件大賽學生的培養和輔導。
針對以上實際教學中存在的問題,可知為提高程序設計基礎與數據結構課程的教學效果,根據計算機類專業這兩門課程教學內容和目標,對兩門課程進行知識整合和內容銜接的必要性,對課程銜接的方法和思路等進行探討勢在必行。同時,課程教學不僅要關注知識的傳授,還要培養學生主動獲取知識并綜合已有知識創造新知識的能力。
4、程序設計基礎和數據結構課程銜接的新方法和思路
4.1 做好兩門課程教學內容的融合和銜接
教師需緊密結合計算機類專業的培養目標,精心設計程序設計基礎和數據結構課程的教學內容,既要滿足課程的專業基礎性,又要滿足后續課程學習的需要,嚴密制訂教學大綱,做好程序設計基礎與數據結構教學內容的銜接以及相關教材的選定。
在程序設計基礎課程教學中,教師需要關注學生計算思維能力的培養,將重點放在講解思路上,教學生如何對問題進行抽象,還要介紹一些簡單的基礎算法和數據結構。程序設計與數據結構的聯系過程必須做到循序漸進,若引入的數據結構相關知識過難,會打擊學生的學習積極性。例如,教師講數組時可引入幾種數據結構中簡單的排序算法冒泡排序、選擇排序等;講完指針和結構體后可引入最基本的數據結構――鏈表;講完嵌套函數調用后可引入“遞歸”,它是數據結構中解決問題的常見思想和算法,可以通過簡單的遞歸函數幫助學生理解遞歸思想和遞歸調用過程,這些是理解數據結構中復雜遞歸函數的基礎。在程序設計基礎教學中,只講遞歸函數的簡單應用,而在數據結構教學中,需要介紹遞歸函數的復雜應用:棧、樹、八皇后問題、N個數的全排列等。圍繞“遞歸”這一重要知識點,從易到難并結合課程本身特點進行理論分析,將有益于整合課程教學內容,引導學生循序漸進地學習和思考。
針對在程序設計基礎課程中不重要但在數據結構及算法中被廣泛使用的知識點,教師需要在講解程序設計課程時將其點出并告訴學生此知識在后續數據結構課中的重要性,引起學生對該知識點的興趣和重視,如指針的靈活使用、結構體類型的復雜應用、類型重命名、類的拷貝構造函數(深拷貝)、函數模板、類模版等。
同時,教師要對程序設計基礎課程內容進行適當補充和擴充,如增加c++函數模板、類模板的相關知識,為將泛型程序設計、c++的STL引人數據結構課程奠定知識基礎,縮小教學知識與實際運用的距離,提高學生的動手編程能力和知識運用能力。
4.2 保證程序設計編程語言與數據結構實現語言的一致
程序設計基礎課程所教授的編程語言要與數據結構教材或實驗所使用的編程語言一致,這樣不僅能大大提高學生的編程能力,還有利于數據結構課程的上機實現。
4.3 將面向對象思想引入程序設計與數據結構中
隨著程序設計方法從傳統的結構化程序設計演化到面向對象程序設計,數據結構在面向對象程序設計中也將成為面向對象的數據結構,且將隨著程序設計理論和技術的發展而不斷變化發展。在程序設計基礎課程中講授面向對象的編程語言如c++語言,既可以實現面向過程的數據結構,又能實現面向對象的數據結構。數據結構課程采用面向對象的觀點講授并以C++語言作為算法的描述工具,從而強化數據結構基本知識和面向對象高級程序設計基本能力的雙基訓練以及實際動手能力培養。在設計數據結構實踐項目時,將面向對象的程序設計思想、面向對象的程序設計語言和數據結構課程教學內容恰當地融合,有效整合兩門課程中的重疊部分,突出各自的側重點,符合當前軟件設計思想和軟件開發趨勢。
4.4 加強課程中計算思維能力的培養
在程序設計和數據結構的教學方法上,將面向語法為中心的教學逐漸轉變為面向問題求解的教學,從問題出發采用適當的數據結構,將其抽象成解決問題的算法描述,用程序設計語言實現問題求解,使課程從過去的僅講授孤立的知識點,轉變為講授計算思維和問題求解的過程,從而達到突出思維方法訓練的目的。在程序設計基礎和數據結構授課時盡量將理論聯系實際,將知識點解釋和應用為身邊容易理解的真實案例。例如,講“圖”時,可以把現在流行的復雜網絡、社交網絡引入其中;講解“隊列”時,可將春節買票引入其中,讓學生從身邊的例子理解理論知識的具體應用。對有些案例可以提倡“一題多解”,不局限于一種數據結構、解題思路和實現方法,通過一題多問、一題多解帶動學生探索、比較、尋求更好的解決途徑,達到學生分析解決問題能力的提高和計算思維能力的培養。
4.5 提升教師能力,配備充足的上機輔導教師
學校要加強程序設計基礎與數據結構課程相關授課教師整體能力的提升。教師不僅要掌握自己所教授課程的知識,還要對該課程的前續及后續課程內容有所了解,便于維護教學的整體秩序和融合學生的知識體系。同時,教師要積極參與各種軟件大賽和企業培訓,將教授的理論知識和實際項目相結合,達到應用知識解決復雜問題的目的。此外,兩門課程的上機實踐環節要配備足量的輔導教師,不讓學生輸在編程入門的起跑線上。
4.6 依托程序設計競賽,提高學生的編程能力
依托全國軟件大賽、ACM大賽等程序設計競賽,將競賽題目引入程序設計基礎和數據結構課堂中。此類題目強調考查學生對各種算法的應用能力,綜合性較強,非常適合輔助學生學習和體會數據結構的妙用,提升學生分析和解決實際問題的能力,引導學生將所學知識準確而靈活地運用到實際生活中,大大提高學生的實踐動手和程序設計能力,促進其知識的融會貫通。另外,通過競賽等多種活動可以為學生提供展現程序設計能力的舞臺,激發學生學習的主動性,培養其計算思維能力。
例如,在教授程序設計基礎時,講完邏輯表達式和多重循環結構后,可以將大賽中的邏輯推理題目引入教學中并引出常見的解題方法和思路一枚舉法,從而加深對枚舉法的認識。通過采用數據結構中的雙向鏈表和線性數組兩種方式實現大賽中常見的約瑟夫環問題。
4.7 引入OJ平臺。加強課程實踐環節
引人在線判題(Online Judge,oJ)系統,提高學生的實踐能力。能力需要以豐富的知識作為支撐,而實踐是能力賴以生長的土壤。在OJ系統中,學生可以在線提交程序源代碼,系統對源代碼進行編譯和執行并通過預先設計的測試數據檢驗程序源代碼的正確性。引入0J系統不僅可以輔助教師批改作業,減輕教師工作壓力,還可以促使學生加強平時上機編程練習,通過編程排名方式提高學生的學習興趣。OJ系統中擁有大量題庫,可以讓學生進行上機實踐,培養自身的計算思維能力,提高編程能力。0J系統不僅可以作為程序設計基礎課程的實踐平臺,還可作為數據結構課程的實踐平臺。
數據結構課程設計范文3
關鍵詞:數據結構課程;實驗;設計;Java;軟件工程
數據結構是計算機類專業的核心專業基礎課之一,主要討論數據的合理組織和有效存儲、處理以及算法的正確設計、分析和評價,課程本身概念抽象、方法靈活、強調邏輯思維能力、難度較大,同時課程實踐性強,實驗是該課程不可或缺的重要環節[1-4]。通常數據結構課程實驗是由教師將問題描述和基本要求作為實驗題目給出,但又絕不是讓學生拿到實驗題目就直接上機進行編程調試,而是要通過在實驗中貫穿軟件工程的方法和原理,嚴格按照分析、設計、實現、測試等軟件工程過程并結合具體的實現語言來完成實驗,培養學生養成良好的實驗習慣。下文針對課程實驗特點和目標,結合軟件工程思想、面向對象語言Java,在課程的實驗組織、過程設計、保障等方面進行了一些探索。
1課程實驗特點和目標
由于面向對象方法已經成為目前系統開發和程序設計的主流方式,而Java語言是一種目前使用最為廣泛的面向對象程序設計語言,因此不少計算機類專業的數據結構課程采用了Java語言描述。作為是一種完全面向對象的程序設計語言,Java在提高程序的復用性和安全性時,在不同類的資源配置方面,較面向過程的程序設計語言有更高層面的要求[3],通過Java語言表現各種數據結構、實現相關算法是數據結構課程的難點之一,這給語言基礎薄弱的學生完成實驗帶來很大困難,迫切需要在目標、過程、方法等各方面精心組織和設計實驗。
如圖1所示,作為課程教學的重要組成部分,課程實驗的目標主要圍繞數據結構與算法、軟件分析與設計、程序實現與驗證、抽象邏輯思維等方面展開[4-7],即:①以數據結構和算法為核心,幫助學生加深對數據結構的理解;②以軟件工程思想為基礎,反復練習包括軟件分析與設計在內的軟件開發過程,培養分析問題、解決問題和程序設計的能力;③以面向對象的Java程序設計語言為工具,提高學生利用Java語言實現和驗證算法的能力;④在理解掌握數據結構、應用軟件工程思想、熟練使用Java語言的同時,還要培養嚴密的抽象邏輯思維能力。
上述實驗目標師生都提出了更高的要求,為了更好地達到上述目標,并幫助學生在學習過程中充分發揮主觀能動作用,圍繞課程在數據結構、軟件開發、程序實現、邏輯思維各個方面的目標,進行了課程實驗的設計,主要包括切實可行的實驗任務組織、科學合理的實驗過程設計、結合多種方法的嚴格過程保障等方面,如圖2所示。
2實驗任務組織
根據課程實驗特點和目標,對實驗任務進行了精心組織,主要是針對不同基礎和層次的學生進行了任務的劃分,如圖3所示。
2.1基本任務
對于所有的學生,不管其基礎或層次如何,都必須完成一定的基本任務,那就是用程序驗證各種邏輯結構的基本實現和算法,在實驗的總體結構中實現函數的編寫、測試、調試、驗證,通過這一驗證過程達到加深理解各種數據結構和算法、掌握基本教學內容的目的,這也是傳統的數據結構課程實驗所要求的任務。
2.2基礎強化
部分學生學習基礎較差,特別是Java語言的編程能力不足,對類、接口、封裝、多態、方法調用等的認識較模糊,需要在基本的Java語言以及基本的方法功能理解、方法編寫及調用等方面加強實驗,通過對基本數據結構和算法與對應程序的反復閱讀、編寫、測試等訓練,達到提高對Java程序結構、語法以及Java方法在程序設計中作用的認識。
2.3能力提升
針對基礎較好、學習興趣較濃的學生,為提供其發揮能力的空間,有效提高其學習興趣,提出一些要求更高、具有一定挑戰性的任務,要求能進行分析、設計并實現、測試,包括:完成比教材里典型基本功能更強的拓展功能,開拓學生的思路,如統計線性表中給定值的元素個數;使用已學的邏輯結構和物理結構完成一些擴展任務,提高學生分析問題、解決問題的能力,如統計二叉樹的結點個數;靈活應用編寫的方法,實現不同的功能要求,培養學生對實驗總體結構配置、方法外特性的認識,如利用隊列和堆棧實現單鏈表的逆序排列。
總之,在課程實驗組織中,做到有對整體結構加以介紹的說明;有給學生完成實驗的思路提示;對有一定難度的任務還給出具有參考價值的實現作為參照。這樣,根據課程實驗目標和學生的基礎、興趣設計客觀、可行的實驗要求和過程,符合人們認識事物的特點,避免了因為要求難度太大挫傷學生的學習熱情。
3實驗過程設計
如果僅僅依靠傳統的驗證型實驗,學生只是將課本中算法的對應程序敲入計算機,運行一下程序、驗證一下結論而已,基本上沒有涉及到問題思考、分析分析、總體結構設計、程序設計等軟件工程所強調的工作,而如果教師沒有嚴格要求、反復強調、嚴格考核,多數學生都不做預習準備工作,更不用說養成分析、設計、比較和總結的習慣,結果是學生來作實驗了,但不了解實驗的目標、流程、問題產生的原因,實驗效果、課程學習效果大打折扣。
3.1實驗過程的規范
首先嚴格規范實驗流程,讓學生反復體會從接受任務到分析、設計、編碼、測試的軟件開發過程[5]。在最初的兩三個實驗時,由教師根據實驗題目指導學生一步一步完成圖4所示內容:①問題描述,即實驗要解決問題的描述;②基本要求,即實驗要達到的具體要求;③測試數據,即設計能達到測試目的的測試數據;④算法思想,即描述解決相應問題的算法思想;⑤類劃分,即分析問題所需的類,并給出類的邏輯功能描述;⑥源程序,即有充分注釋的參考實現源程序清單;⑦測試情況,即程序的測試情況以及必要的分析和說明。由于數據結構實驗尚未要求進行較強功能軟件的開發,故上述過程中雖然涉及了軟件工程思想和軟件開發過程,但一般并不強調過分詳細的需求分析、概要設計、詳細設計等步驟,也不必要求提供詳細的使用手冊。在隨后的整個課程實驗過程中,對學生嚴格要求、反復強調必須嚴格遵守圖4的實驗過程,并采用抽查等方式保證其嚴格執行。
3.2關注點的分離
為了將數據結構與Java語言、軟件工程有效結合,要求在課程的實驗過程中也始終與理論教學中一樣,按圖5所示的三個典型步驟來解決所遇到的數據結構和算法問題:①抽象,即分析問題需求,抽象出一個解決該問題的適當的數學模型(抽象數據類型ADT);②接口設計,即對應地設計一個規格說明來描述ADT應支持的操作,并將這個規格說明用Java接口來表示;③實現,即選擇合適的數據結構和算法來實現上述Java接口,最后對各種不同實現的代價進行分析和比較。這樣的步驟清楚地區分了ADT的接口與實現,體現了軟件工程中分離關注點的重要原則[6],同時很好地利用了Java語言在抽象、封裝等方面的優勢。
4實驗保障措施
通過已有的實驗過程發現,僅有實驗任務組織和實驗過程設計是不夠的,還必須要有良好的動手習慣培養、基本知識積累以及編程能力提高等作為保障措施,才能較好地達到所提出的課程實驗目標。
4.1動手習慣的培養
部分學生沒有動手的習慣,實踐教學中應注重培養學生的動手習慣,特別是培養記錄、畫圖、打草稿等基本的動手習慣,避免學生對知識把握不準、似是而非。如在講解、演示或討論時,讓學生跟隨教師動手在草稿紙上畫圖、記錄,講解完立即就剛剛所學內容的部分關鍵步驟再抽查學生重新講解,并要求輔以圖、表等(當然抽查也可以在下一次課進行),如果存在問題可以由其他同學糾正,最后由教師進一步分析、總結,讓學生深刻體會動手習慣對知識學習所起的鞏固作用。
4.2簡單知識的積累
部分學生不注重積累那些功能簡單的小算法,實踐教學中教師應注重培養學生對簡單知識的理解、記憶、積累,經常抽查,在面對那些較為復雜的數據結構和算法時,充分分析、分解其中涉及到的基本知識點之間、算法之間的聯系,提示學生注意類的小型化、原子化,只有長期注重對基本知識點的理解、記憶和積累,才能避免遇到問題時無從下手,避免理論與實踐脫節。
4.3編程能力的提高
由于前導課程如C語言、Java等掌握不好、認識不深、基礎不牢,不少學生編程能力較弱,缺乏把數據結構和算法轉化成代碼實現的能力,部分學生甚至不能把一些簡單的算法轉換成完整的程序,以及缺乏基本的排錯能力,都大大影響了這些學生學習這門課的積極性和效果。
為了使實驗過程清晰并降低實現的難度、提高可操作性,要求學生一開始所設計的ADT不一定功能很完備,只要具有那些典型的、能初步表現問題需求的基本功能即可,隨著上述步驟的一作結束,根據問題的需求,進一步完善現有的ADT及其實現。讓學生既在運用中逐步體會了軟件工程原理和應用,又對通過不斷運用Java的基本知識,提高了編程能力。
另外,加強現場指導、交流、溝通,及時發現學生的困難,有針對性地幫助學生提高認識、解決問題,以及實驗完成后進行分析總結,集中討論實驗中的一些普遍問題,都是提升實驗效果的有力措施。
5結語
基于實驗在數據結構教學中的重要地位,精心的任務組織、科學的過程設計和嚴格的保障措施是十分必要的。一段時間的運行表明,上述做法對于促進學生在學習過程中充分發揮主觀能動作用,增強對數據對象特征的理解、數據組織方法的掌握、軟件開發過程的熟悉、程序實現技能的培養以及抽象邏輯思維能力的提高等方面都起到了積極的作用。
參考文獻:
[1] 楊紅賓. 數據結構課程改革探討[J]. 教育與職業,2009(32):131-132.
[2] 沈根海. 高職院校數據結構實驗教學的探索[J]. 電腦知識與技術,2008(33):1427-1428.
[3] 張濟礎,楊亞莉. 高職院?!皵祿Y構Java語言描述”課程的實驗設計[J]. 計算機教育,2010(1):64-65.
[4] 楊曉波. 淺析數據結構課程教學中的實驗環節[J]. 甘肅高師學報,2003(5):49-50.
[5] 朱戰立. 數據結構Java語言描述[M]. 北京:清華大學出版社,2005:295-299.
[6] 周大慶. 實用數據結構教程Java語言描述[M]. 北京:人民郵電出版社,2007:1-2.
[7] WEISS M A. Data structure and problem solving using Java[M]. London:Pearson Education,2006:1-5.
Experimental Design of Data Structure Course Using Java
LI Gang, HUANG Tongyuan, ZHANG Xiaochuan
(School of Computer, Chongqing University of Technology, Chongqing 400050, China)
數據結構課程設計范文4
關鍵詞:迭代增化增量模型;工作任務;數據結構
中圖分類號:G642 文獻標識碼:B
1引言
“數據結構”是高職學院計算機專業的核心課程,是程序設計的重要理論技術基礎,為后繼專業課的學習提供必要的基礎知識、基本理論和方法。教學目的包括:熟練掌握基本的數據結構和算法;能應用重要的算法策略和分析方法;在實際的工程設計中應用算法。
“數據結構”是一門技術性很強的課程,以高職學生的思維習慣和抽象思維能力,在有限的時間里很難對課程的原理和方法的應用有清楚的認識。他們學習更注重知識和理論的應用性,而傳統的實驗課缺少有實用價值的工程應用設計,內容枯燥而缺乏創造性,學生的主動性和積極性不高。
為了將嚴謹抽象的理論教學延伸至現實生活中的問題情境,提高學生將數據結構中的知識應用于實際問題的能力,本文首先提出了基于迭代增量的開發方式設計實踐學習情境,從接受任務到任務完成都遵循“需求分析數據結構/算法設計編碼實現測試”這一基本的工作流程,然后根據數據結構課程知識體系結構設計了具有連續性和序列性的實驗任務,進而分析各個任務如何在迭代增量過程具體實施操作,最后對比傳統的實驗教學來評價該實踐方法的有效性。
2實驗教學過程設計
迭代增量模型是軟件開發過程中常用的開發模型,將其引入數據結構的實踐教學中設置教學場景,使實踐教學處于開放狀態,不拘泥課堂內外的界限,也不受制于數據結構課程通常的總課時數。將設計的30個實驗任務平鋪于整個學期,每個任務從接受到任務完成都遵循“需求分析數據結構/算法設計編碼實現測試”這一基本的工作流程,如圖1所示。
從圖中可知,迭代增量的迭代是通過對核心開發活動的重復應用,包括了對問題解決方案定義以及解決方案實現的連續細化,其中的增量是指:軟件開發過程中,隨著數據結構理論課程知識由少至多的學習,在一次迭代運行的周期中,學生對問題的理解以及解決方案提供的功能均會增長,先開發每個實驗任務的主要功能模塊,再開發次要功能模塊,逐步完善,最終開發出相對完整的符合需求的軟件作品。這樣將整個實踐的全過程都融入在一系列的工程任務中,在實踐開發中,其中連續地組織起來數個或更多的應用,以構成一個完整的項目。
學生按照上面的開發模型,在實驗課程中引入軟件工程的原理,按照規范的開發過程學習和應用數據結構原理和方法,故而開展小規模軟件數據管理系統調研,設計,編碼測試工作。另外根據“軟件技術應用崗位職業標準”,分析工作過程中的一系列真實職業角色,指導學生按照“需求分析員架構架構師編碼員測試員”等不同角色的轉換在迭代增量過程中完成任務,著力培養學生的職業能力。
3實驗教學內容的組織與設計
本課程實踐教學內容的組織、安排的基本思路是遵循迭代增量的開發基本流程,以真實工作任務及其工作過程為依據整合、序化教學內容,精心設計了30個學習性工作任務。從課程教學內容組織而言,考慮對于正在發生迅速變革的計算機領域,選擇那些相對穩定、長期有用的、對應用領域必不可少的知識結構作為實驗任務設計的內容。課程教學內容和學習工作任務的總體組織安排如圖2所示。
其中,課程教學內容共計14個專題模塊與30個學習工作任務交叉對應,全部任務將所有知識結構迭代覆蓋,各個工作任務按教學內容的先后依照進度逐一展開。30個
結合具體問題構造的軟件設計工作任務經常會要求學生“用特定的數據結構/算法”來解決某個問題,學生需要撰寫詳細的設計,描述現在要解決的問題和最后的結果。對于算法的描述,應該按照4點要求執行:
(1) 算法的中英文描述,提供偽代碼(pseudocode)。
(2) 最少以一個工作例子或圖表來更明確的顯示算法怎樣運作。
(3) 算法正確性的一個證明(或表示)。
(4) 算法執行時間的分析。
這樣數據結構和算法設計這一核心工作流程尤為重要,教師必須加強的指導力度,做到邊講邊練、邊學邊做。而在需求分析過程中,教師帶領學生深入現實實際獲取和調研需求,學生會跟隨理論課知識進一步學習和調研,增加需求,迭代需求分析這一核心工作過程。每個任務持續的時間和任務本身的規模有關,如某個超市購物系統會持續到學期末,如后期學習的排序,查找會在系統中得到應用設計,整個迭代的過程會持續至數據結構課程全部結束,這樣基于迭代增量過程就能發揮更大作用。而編碼和測試過程則以學生為主導,自主自覺地根據前期的分析和設計展開具體的實現過程。在此過程中,學生覺得編碼過程不再困難,而有想早點實現以見其效的積極想法。對每個任務,以軟件工程流程或者角色為軸線的迭代,學生在教師的指導下參與所有的工作活動,按照如圖3進行多次迭代開發設計。
根據迭代增量的工程流程,我們篩選了主要的項目活動:需求分析、分析設計、編碼實現、測試、項目管理。理論上,每種軟件工程流程都會對應一個單獨的計劃,而且每個軟件工程流程會定義自己的迭代周期和迭代次數。教師的重要職責之一就是識別和管理各個任務與知識結構的依賴關系,保證各個設計任務的順利進行。此外,在考核方面重點放在過程考核,強調素質與能力,不再進行單獨的課程考核,按照工作任務評估表對學生的工作過程進行評價,課程成績計算按任務的難度工作量規模大小分配權重,進行最后總評,直至完成整個工作任務的實施。
4實踐教學評價與結論
我院從2005年開始在計算機專業采用基于迭代化的增量軟件開發方式開放數據結構的實驗教學,通過實驗對比方法,將3年制計算機專業學生分為實驗組和對照組,從定性和定量兩個方面科學地觀察實踐課程的教學效果。通過學生數據結構課程考試成績的對比分析、問卷調查以及實踐成果的對比分析,匯總情況如表1所示:
從上表可知,實驗組學生在基礎數據結構系統知識學習、分析問題和解決問題能力以及后期專業知識的學習方面均具有更好的效果。此外,后期的問卷調查結果也表明,實驗班學生對課程的總體印象在優良以上的占83%,教師對“實施基于迭代增量的實踐課程總體印象”表示“較好”以上的為81%。
目前,數據結構課程實驗課程的設計和實施還存在著一定問題,如同一任務體系間的相互融合貫通還不夠,在教學方法上的改革還不足等;將來還需要進一步改進迭代增量法在教學情境的實施應用,研究和開發更多實用性實踐課程工作任務,發揮其在后期專業課程學習中的延伸效果,持續提高高職計算機學生的專業和工程應用設計能力。
參考文獻:
[1] [美]沙赫查. 面向對象軟件工程[M]. 黃林鵬,T小輝,伍建j,譯. 北京:機械工業出版社,2009.
[2] 殷人昆. 數據結構(用面向對象方法與C++語言描述)[M]. 北京:機械工業出版社,2007.
[3] [美]B.S.布盧姆. 教育目標分類學[M]. 羅黎輝,譯. 上海:華東師范大學出版社,1986.
[4] 劉韶濤,王寧生. 軟件體系結構的迭代增量構建方法[J]. 計算機應用研究,2003(20).
[5] 羅偉,張翠英. 對高職院校實踐教學中“關鍵能力”培養的探討[J]. 職業教育研究,2008(3).
數據結構課程設計范文5
【關鍵詞】數據結構;知識體系;教學設計
1 課程的地位與作用
《數據結構》是計算機科學與技術專業的核心專業基礎課程,是計算機程序設計的重要理論和實踐基礎,是計算機理論與技術的重要基石?!稊祿Y構》上承高級語言程序設計,下啟算法分析與設計,是計算機科學與技術人才素質框架中的脊梁骨,對學生能力培養至關重要,向來是計算機本科教學的重中之重。調查表明已畢業的學生通過他們的工作實踐認為《數據結構》是最有用的課程之一,這也從另一方面說明了該課程的重要性。
計算機科學與技術專業的培養目標之一是掌握計算機科學與技術的基本理論、計算機軟/硬件基本知識及應用技術,《數據結構》在培養目標的實現中具有舉足輕重的作用,是理解計算機科學與程序開發技術的關鍵課程。作為一門重要的專業必修課程,《數據結構》課程既是對以往課程的深入和擴展,也是為將來更加深入地學習其他專業課程打下基礎。課程中所學習的排序問題的算法,以及基本的樹、圖等數據結構,是計算機科學的基本功。B+樹等高級數據結構,也是數據庫、操作系統、編譯原理、計算機網絡等后續課程的基礎?!稊祿Y構》是計算機專業考研的統考課程,也是很多大賽(“藍橋杯”、ACM等)必涉及的知識。
《數據結構》與其它課程關系如圖1所示。
圖1 《數據結構》與其它課程關系
《數據結構》在培養目標中的作用如圖2所示。
圖2 《數據結構》在培養目標中的作用
2 課程的教學目標與主要內容
2.1 課程的教學目標
學習本課程后,應達到下列基本要求:
(1)理解數據結構的基本概念;
(2)熟練掌握線性表、棧、隊列、樹、圖等常用數據結構的基本運算的實現及應用;
(3)熟練掌握排序和查找的常用算法及應用;
(4)能夠對算法進行時間復雜度度、空間復雜度的分析;
(5)培養學生分析數據、組織數據的能力,能夠根據實際問題來選擇合適的數據結構,設計有效的算法。
2.2 教材與主要參考資料
教材
耿國華《數據結構(用C語言描述)》,高等教育出版社,2011年
教材選擇的依據:
(1)該教材跟蹤技術發展需要,體系科學,是“十一五”國家級規劃教材。
(2)該教材理論的闡述由淺入深、通俗易懂。
(3)該教材理論結合實際,配有大量的例題、習題與實習題。
主要參考資料
[1]嚴蔚敏,吳偉民《數據結構(C語言版)》,清華大學出版社,2006年
[2]張銘,王騰蛟,趙海燕《數據結構與算法》,高等教育出版社,2008年
[3]朱戰立《數據結構――使用C語言(第4版)》,電子工業出版社,2009年
[4]王曉東《數據結構(C語言版).》電子工業出版社,2007年
[5]西北大學數據結構精品課程網站
http//:/datastr
[6]北大數據結構與算法課程網站
http:///pkujpk/course/sjjg/
[7]洛陽理工學院數據結構精品課程網站
http//:/sjjg
[8]洛陽理工學院數據結構精品資源共享課程網站
http//:/ds
2.3 知識體系
《數據結構》知識體系可分為分為三大塊,如圖3所示。
圖3 《數據結構》知識體系
數據結構課程的基本知識模塊是以數據的邏輯結構為主線,順序介紹線性結構(線性表、棧、隊列、串、數組、廣義表)、樹形結構、圖結構。在介紹每種數據結構時,再討論其存儲結構以及相關的算法。在介紹完基本的數據結構及其存儲結構和相關的算法后,介紹了兩種常用技術:查找和排序。
3 課程教學內容安排
3.1 課程重點、難點
重點:線性表、棧、隊列、二叉樹、圖典型數據結構的邏輯結構、存儲結構和操作的實現方法,各種典型的排序和查找算法思想。
難點:各種數據結構的操作實現和應用
第1章是對數據結構課程的認識,基本概念比較多,概念要講清楚、準確,第一章要通過豐富的例子講解如何分析算法時間復雜度,這是貫穿整門課程的內容,也是本課程的一個難點,第2章是整個課程的重要基礎,要講得十分詳細,為后面的章節打下良好的基礎,第3章的棧與遞歸的實現是本書的一個難點,要通過例子講透,并且在第6章還要進一步地講遞歸到非遞歸的轉換。第四章內容較簡單,而且學生在高級語言程序設計中學習過字符串,因此留給學生自學,也可以培養學生的自學能力。第五章數組和廣義表一般講解即可。第6章的二叉樹要詳細講解,第7章的幾個關于圖的算法較難,要結合例子講解,第8章中的難點是平衡二叉樹的調整和B樹,要通過例子把算法的思想講清楚,使學生能實際操作。第9章要把各種排序的思想、特點講清楚,特別是較難的希爾排序、快速排序、堆排序、基數排序一定要結合實例講解。
3.2 課時分配
表1 總課時:72;理論授課:58,實驗:14
4 課程實踐環節
數據結構是與實踐緊密結合的課程,學生學習的理論必須經過大量的實踐才能更好的掌握,因此必須強化實踐教學。數據結構實踐分兩部分:一部分是隨課程進行的實驗,另一部分是課程結束后為期一周的課程設計。通過合理、有效地設計上機題目,改進實驗考核方式,調動學生的積極性,啟發引導學生掌握基礎理論并能創新應用,增強學生綜合運用有關知識的能力。
實驗內容包括六個實驗項目,分別為:線性表的基本操作(2學時),棧的基本操作(2學時),隊列的基本操作(2學時),二叉樹的建立及遍歷(2學時),圖的遍歷的實現(2學時),宿舍管理查詢系統(4學時)。其中宿舍管理查詢系統實驗為三性實驗。
課程設計是課程結束后進行的很重要的實踐環節,本課程課程設計給出14個題目,這些題目都是綜合性的,學生可任選一題,完成后要寫出課程設計報告。通過課程設計,使學生進一步理解和掌握所學各種基本知識,培養學生綜合運用所學的理論知識和方法獨立分析和解決問題的能力;訓練學生用系統的觀點和軟件開發一般規范進行軟件開發,使學生具備軟件工作者所應具備的科學的工作方法和作風。
學生完成實驗后,不僅要求學生提交高質量的規范的實驗報告,還要引導學生互相交流,開闊視野。好的實驗作業要放到班級公共郵箱里和所有學生共享。
5 課程的建設情況
5.1 課程資源情況
該課程教學文件完備。通過多年的教學,積累了必要的一些輔助教學資料(包括教學參考書、參考課件、聲像、影像等),并且使用效果良好。補充的學習資料有:
(1)教學網站:http:///sjjg/
http:///ds/
(2)搜集了大量探討數據結構理論與算法、介紹學科前沿動態的中、英文學術論文和碩、博論文,對其分類整理后在課程教學網站上提供下載鏈接,以供學生深入研究、學習;
(3)自編《數據結構實驗指導書》;
(4)多媒體電子教案的紙制版和網絡版;
(5)數據結構與課程實驗指導書的紙制版和網絡版;
(6)自編的算法演示器;
(7)Flash課件和Flash算法演示;
(8)圖書館內,國外優秀的經典教材。
5.2 實驗實習條件
所有實驗在計算機系機房進行,機房現有的實驗平臺功能齊全,課程中所涉及的實驗項目均可在平臺上完成。目前課程實驗大綱中所列的實驗開出率達到100%,實驗教學效果良好。
5.3 課程成果
該課程2010年被評為河南省級精品課程,2012河南省級精品資源課程。
6 教學設計
《數據結構》是一門理論與實踐相結合的課程。由于理論的抽象性,學生難以建立起數據結構的相應算法概念,容易產生畏懼和茫然的情緒。因此教學中在積極引導學生、啟發學生,激發學生學習的積極性。教學以課堂講授為主,同時借助網絡教學平臺,拓展課堂講授的相關知識,便于同學自主學習、鞏固課堂所學內容。另外,組織獨立習題課,針對學生作業中出現的典型問題進行深入探討。
在教學中要貫徹“以理論學習為主線,以課程實驗、課程設計為補充”的教學思想。
6.1 精心組織教學內容
分析學生的需求和現實,同時緊緊抓住教學目的,參考相關院校的教材和教學計劃,取長補短,參考考研大綱、軟考大綱,對課程的內容進行嚴格的篩選,刪除一些較深且應用不是很廣泛的內容,對于重點的內容要精講、細講,而對于有些較簡單且與先修課程交叉的內容(如字符串與數組),就粗講,甚至可以留給學生去自學。這樣重點突出,簡潔明了。在課程內容的安排上由淺入深,循序漸進。對每種數據結構都按三個層次來組織教學內容,并且把這三個層次的思想貫穿于數據結構教學的各個環節。第一個層次,基本概念、方法,這是最基本的內容,學生必須掌握,在學生很好地掌握了這個層次的內容后,可進入第二個層次,基本概念、知識的簡單應用,這一層次是對基本概念、知識加深理解,這個層次學生必須達到。第三個層次就是基本概念、方法的深入應用,把所學的知識、方法串起來靈活運用。要達到這個層次,需經過大量的訓練才行。
6.2 實現數據結構課程與其先修和后續課程的無縫銜接
程序設計語言(如C語言)是本課程的一門非常重要的先修課程,數據庫原理、編譯原理、操作系統是該課程的后續課程,這些課程不能各自為政,而要無縫銜接,教這些課程的老師要互相交流,這樣在講程序設計語言時可以有的放矢的把和數據結構聯系緊密的內容預先告知學生,這樣學生就會對相關知識印象深刻,到數據結構課中就很容易用的得心應手。在數據結構課中講到各種后續課程中用到的數據結構時也告訴學生,并且在后續課程中用到相關數據結構時提醒學生這是這種數據結構在本課程中的應用。這樣使學生的知識一脈相承,使學生在學習各門課程時把知識融會貫通。
6.3 精講多練,加強實踐環節,培養學生分析問題解決問題的能力
數據結構既有大量的理論又是實踐性很強的課程,學生要很好地掌握這門課,必須要有一定的理論知識,又要經過大量的上機實踐。因此,針對應用型本科的特點,在教學過程中,即注重理論,又重視實踐,加大上機實踐的力度。實踐由與理論課同時進行的上機實驗和理論課講授完畢后的課程設計兩部分組成。對所學的每一部分內容都要要求學生完成相應的實驗習題。整個實踐過程要結合教學進度與學生的實際情況,制定實踐的內容。每部分的實驗習題必須精心挑選,和上述三個層次對應,分為基礎與驗證型實驗、設計與綜合型實驗,開發與創新型實驗。既要把基本知識掌握好,又要會靈活運用。基礎與驗證型實驗是基本的、較簡單的題目,主要結合課堂理論教學內容展開,學生可以對在課堂上學到的基本算法進行驗證;設計與綜合型實驗是具有挑戰性的較難的新穎有趣的題目,讓學生充分利用所學的理論知識進行相對較復雜的應用設計,培養學生綜合能力;開發與創新型實驗培養學生的創新意識,提高綜合能力和創新實踐能力。
6.4 多樣化的教學方法
6.4.1 啟發式教學
教師主要起引導的作用,激發學生的學習興趣,發揮學生的學習積極性,與學生進行互動,鼓勵學生對教學內容提出問題,師生共同討論,提高教學和學習水平。鼓勵學生多動腦子進行思考,在學習過程中不拘于以往的解法,對同一個問題可以提出不同的解法,深化對問題的理解。另外還要強調學生自己學會對知識的總結、梳理、推演和挖掘??偨Y是教學中一個非常重要的環節,不可忽視。通過對所學內容的總結、梳理、推演和挖掘,理清內容的內在聯系,使知識條理化、系統化,加強對知識的理解和掌握,培養學生的歸納總結能力和思維創造能力,對所學內容提煉出精華的東西。(下轉第260頁)
(上接第167頁)6.4.2 對比式教學
對同一問題,引導學生從不同的角度去思考,找出多種方法來解決。比如,在解決約瑟夫環問題時,可以采用循環鏈表作存儲結構,或采用線性表的順序存儲結構,也可以采用數組作存儲結構。這種對同一問題尋找不同算法實現的教學方式,有效地開闊了學生的思路,同時通過對不同算法的比較,加深了學生對算法的理解和掌握。
6.4.3案例教學
通過實例引入知識點。比如講最小生成樹可以通過城市間建立通信聯絡網為例引入最小生成樹及其求解算法,再比如講最短路徑可以通過去旅游選擇最短路徑為例引入最短路徑及其求解方法。
6.5 把課程與考研、軟考、相關競賽有機的結合起來
數據結構是計算機專業考研和軟考的必考科目,在教學過程中有意識地把考研和軟考引入教學中,使學生學完本課程后能夠從容應對考研和軟考中的數據結構題目。組織和鼓勵學生參加程序員,高級程序員證書考試,輔導學生參加各種編程競賽比如ACM大賽。
7 考核方法
要加強平時的學習過程管理,不定時地進行一些隨堂的小測試,課堂提問等。考試以學生完成日常作業和實驗環節為必要條件,期末考試采用筆試方式。成績評定由三部分組成:期末考試占總成績的60%,平時成績占總成績的20%,實驗占總成績的20%,綜合考核學生該科成績。
8 結語
《數據結構》對計算機科學與技術專業的學生來說是非常重要的課程,組織好教學,使學生通過該課程的教學,很好地掌握數據結構的相關知識,為今后的學習奠定良好的基礎是非常重要的。
【參考文獻】
數據結構課程設計范文6
關鍵詞:課程教學改革;課程群;民辦獨立高校;數據結構
中圖分類號:G642.0 文獻標志碼:A 文章編號:1674-9324(2016)46-0073-02
高等教育是培養高級專門人才的主要社會活動[1]。隨著社會的不斷發展,承擔高等教育工作的公辦高校已不能滿足日益增長的就學需求;作為補充,民辦獨立高校為社會提供了高質量本科層次的大眾化高等教育服務[2]。民辦獨立高校辦學靈活,直面社會和職場,以培養高素質應用型人才為目標,因此其教育模式與傳統公辦研究型高校有所不同;這一差異也直接體現在其教學活動中。
課程是教學活動的組織方式,是實現教學目標的基本途徑,因此課程建設直接關系到人才培養的質量,是高等教育改革的核心[3]。本世紀90年代以來,作為高等教育改革的熱點問題之一,高校課程建設中的重要一環,課程群建設逐漸引起人們的重視。
課程群(以下簡稱課群)是某一學科內的諸多課程的集合,是“從屬于某個學科,相互間性質相關或相近,如相承、滲透、互補等課程的集合體”[4]。顯然,課程是課群的要素;課程教學改革則是從微觀角度,以某一課程為對象,以提高教學效果為目標,對課程的實施手段和教學方法進行改進。
本文以南京航空航天大學金城學院(以下簡稱南航金城學院)信息工程系“數據結構”課程教學改革為例,探討在“數據結構和算法”課群建設中“數據結構”課程教學改革方案的實施。在不改動課程原有學時的前提下,通過調整該門課程的具體教學內容和方法、考核方案,達到優化課程知識體系,提高教學質量的目的;同時滿足民辦獨立高校因材施教、分層次、多渠道的人才培養模式的要求。
一、數據結構和算法課群的建立
“數據結構和算法”課群是以南航金城學院信息工程系計算機科學與技術專業的人才培養計劃為指導,包含“離散數學”、“數據結構”、“數據結構課程設計”以及“算法設計與分析”四門課程;具體課群體系結構如圖1所示。
其中“數據結構”是計算機科學與技術專業的專業基礎課程;是“算法設計與分析”的重要先修課程。其教學目標是通過分析數據的結構特性,為具體應用(例如,建立用戶廣告服務系統)涉及的數據選擇適當的邏輯結構、存儲結構及其相應的解題算法;同時涉及算法的時間、空間效率分析技術。整個課程同時也是一個復雜程序設計的訓練過程;要求學生編寫的程序結構清楚,正確易讀,符合軟件工程的規范。而這一要求也直接體現在“數據結構課程設計”的實踐教學過程中。“算法設計與分析”是計算機科學與軟件工程中的核心研究領域之一。許多實際問題的求解都依賴于有效算法的設計與實現:如用戶廣告服務系統等一旦深入下去就能夠被描述成一組以網絡流為模型的問題[5]?!半x散數學”是研究離散量的結構及其相互關系的數學類課程。“離散數學”在計算機科學與技術領域有著廣泛的應用,同時也是“數據結構”和“算法設計與分析”的重要先修課程。
在課群建設中,首先處理數據結構和算法之間的關系,離散數學與數據結構、算法之間的關系;其次以數據結構為主線,結合算法設計技術對如何選擇數據結構的教學內容進行分析,靈活處理離散數學中的基礎知識,突出算法設計的中心思想,強化實踐教學環節。整個課群建設遵循:“單門課程建設課群建設”模式;以單門課程教學改革為點,課群建設為線,專業建設為面?!包c、線、面”逐步推進,從而達到優化課程知識體系,提高教學質量,滿足民辦獨立高校高素質應用型人才培養的目標。
二、數據結構課程改革方案
1.理論教學改革。“數據結構”課程的理論教學內容主要包括:線性結構、非線性結構、查找和排序三大部分。其中前兩部涉及線性表、棧和隊列、字符串、數組和廣義表、樹和二叉樹、圖等多種基本數據結構。在實際教學中,任課教師多遵循“邏輯結構存儲結構相關操作”的主線,對所涉及的知識點進行逐個講解。查找和排序部分,則羅列出多種不同的解決計算機查找和排列數據的算法,講解時需要比較不同算法在時間和空間上的性能差異。針對“數據結構和算法”課群建設的要求,“數據結構”課程的理論教學內容和教學方式做了如下調整:
(1)以實際案例為主線,將各個知識點串聯起來。比如,在講授圖的應用時,最短路徑算法是重點也是難點;不僅因為知識點本身在原理的理解上較為困難,同時學生也不太能夠接觸到該算法的實際應用。因此在實際教學過程中,以“游戲地圖的查找”為例說明該算法,并強調圖的結構特性(邏輯結構、存儲結構以及涉及的基本操作);這實際上是一種案例分析方法。
(2)強調課程間的知識點的銜接。例如,講解最短路徑算法時,將案例(交通咨詢系統)的實現,放置在“數據結構課程設計”的實踐環節中;該算法的正確性證明則在“算法設計與分析”課程中給予解釋。又如,講解快速排序和簡單交換排序時,重點讓學生能夠區分不同算法的執行步驟;著重強調程序本身的特性,操作對象的特性等涉及數據結構的知識點。而算法時間性能的比較則放在“算法設計與分析”課程中來解決。此外,“離散數學”中圖論部分的知識點教學也需要和“數據結構”中圖部分的知識點教學內容相銜接。
(3)在課程考核上增加平時成績,提高理論知識點的實際掌握程度的考核比重;避免一次考試成績定成敗。將最終的考核總評成績分為三部分:平時成績(課后練習成績、課堂回答問題成績、出勤率等綜合考評成績)占總成績的20%;上機實驗環節評分(線性結構、非線性結構、查找和排序)占30%;結課考試(筆試)占50%??傮w評分標準中,理論知識點的實際掌握程度通過實踐環節來進行考核;對不同學生進行差異化教學(能力強、對知識點理解深入的學生可以選擇難度較大的案例來實現)。事實證明,在2015年秋季的實際教學活動中,取得了較好的教學效果,很多同學的學習積極性被調動起來了;課堂回答問題的熱情較高,同時課后提問的次數也明顯增多。
2.實踐教學改革。與“數據結構”課程密切相關的實踐教學環節主要分兩部分:一是理論課程中的實驗上機環節;二是“數據結構課程設計”環節。將“數據結構”理論教學內容所涉及的應用案例分別安排在兩個實踐教學環節中,要求學生編程實現。同時,另外再增設多個較為復雜的典型案例實現。
在實踐教學內容設置上,不但系統地闡述了“數據結構”的基本原理,同時也給出了一些的典型案例。每個案例的敘述完全按照解決實際問題的思路進行,這對學生如何面對實際工程項目問題有著很好的啟迪作用。
三、結論
“數據結構”這門課程的開設如何滿足民辦獨立高校的人才培養目標,如何滿足課群建設的實際要求,是一個值得不斷探索的課題。本文從南航金城學院信息工程系計算機科學與技術專業核心課程“數據結構”的課程教學改革出發,從課程的理論教學和實踐教學兩方面進行探討,提出了相應的改革思路。在2015年秋季的實際教學過程中,取得了較為明顯的效果。顯然,學生不但獲得了扎實的理論基礎,同時也掌握了一定的專業技能:以數據結構知識為基礎,分析案例、解決實際問題的能力。
參考文獻:
[1]楊樹勛.現代高等教育學[M].北京:化學工業出版社,1999:97-98.
[2]齊鳳和.民辦獨立學院的四大困惑及解決途徑[J].現代教育科學:高教研究,2005,(6):53-56.
[3]黃偉娣.課程與課程建設[J].杭州師范學院學報,1994,(5):116-120.