劉曉靜,王曉英
數(shù)據(jù)結構與算法課程是計算機科學中一門綜合性的專業(yè)基礎課,是計算機科學課程體系中核心課程之首,作為學科的專業(yè)基礎課,具有承上啟下的重要作用。課程主要研究系統(tǒng)開發(fā)過程中有關設計的若干基本問題,不僅是一般程序設計的基礎,而且是設計和實現(xiàn)編譯程序、操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)及其它系統(tǒng)程序和大型應用程序的重要基礎[1,2]。
數(shù)據(jù)結構與算法課程的學習過程也是算法設計的技巧和能力的訓練過程,以構造性思維訓練為重點,培養(yǎng)學生的數(shù)據(jù)抽象能力、算法設計能力和軟件開發(fā)能力。通過本課程的學習,使學生獲得編寫結構、正確易讀、符合軟件工程規(guī)范的理論、技巧和能力,使學生初步具備分析問題、解決問題的能力,養(yǎng)成良好的程序設計風格,為學生在此領域中繼續(xù)學習和研究打下堅實基礎。計算機應用人才如何發(fā)現(xiàn)應用問題、軟件設計人才如何進行概念層與實現(xiàn)層的抽象、計算機系統(tǒng)人才如何進行綜合設計,為了解決這些問題,在課堂教學與實踐中采用項目導向的方法[3]。
數(shù)據(jù)結構與算法課程主要內容包括數(shù)據(jù)在計算機中的存儲、組織,不同數(shù)據(jù)類型的基本操作實現(xiàn),以及將現(xiàn)實世界轉化為計算機世界中的抽象的數(shù)據(jù)描述等等。這門課程既包含較多的抽象的概念、算法和編程思想,又包含許多前驅課程的知識,再有對程序實踐又有一定的要求。因此,該課程的教學難度很大。而學生在學習過程中經(jīng)常感到困難,甚至產生厭學情緒。此外,學生對前導課程程序設計基礎I、程序設計基礎II學習不夠扎實,尤其對結構體、指針這兩種數(shù)據(jù)結構與算法課程中常用數(shù)據(jù)類型的認識和理解不夠透徹,這就需要在數(shù)據(jù)結構與算法課程教學初期,通過項目實踐來彌補。
項目導向的教學模式是指將項目這個載體運用于工作過程中,具體是指通過師生的共同作用,實施完成一個項目的教學活動?;陧椖繉虻臄?shù)據(jù)結構與算法課程教學,可以培養(yǎng)和深化學生對計算機知識的理解,運用計算機工具解決實際問題的能力;能充分調動學生的學習熱情和求知欲望,使學生根據(jù)自己內在的需要去探究和學習,充分發(fā)揮自身的積極性、主動性和創(chuàng)造性,從而培養(yǎng)出獨立探索、勇于開拓進取的自主學習能力,以促進他們獲得良好的學習效果。
基于項目導向的數(shù)據(jù)結構與算法課程教學,以培養(yǎng)服務于青海計算機和IT企業(yè)的復合型計算機專業(yè)人才為指導思想,以培養(yǎng)創(chuàng)新型人才為目標,以研究為導向的實踐教學,可以在充分把握國內外專業(yè)教育的最新動態(tài)、吸納融合本學科最新研究成果和實踐經(jīng)驗的基礎上,不斷更新和豐富課程內容,以項目工作任務為驅動,將知識、方法和技能有機融合,建立以項目驅動、知識點串行、課程設計并行“教、學、做”一體化的教學模式,以工作過程為主線、讓學生在問題解決過程中進行學習。
基于項目為導向的數(shù)據(jù)結構與算法課程教學以培養(yǎng)動手能力強的專業(yè)技術人才為目標,分析當前高校計算機類專業(yè)群的工作崗位、人才的職業(yè)能力、工作任務和工作內容,確定典型工作任務,建立基于工作過程的課程體系。圍繞該思路,主要研究內容包括建立3個項目驅動化教學所需要的開發(fā)項目,如圖1所示:
圖1 案例系統(tǒng)界面
2.1.1 任務內容
編寫一個簡易的學生成績管理系統(tǒng)(假定有5個學生)。要求:
1.程序能實現(xiàn)以下功能:從鍵盤輸入成績、從文件讀取成績(5個學生的成績)、輸出成績到屏幕、保存成績到文件、計算并輸出最高分明、計算并輸出最低分;
2.程序能檢查輸入成績的合法性(0~100);3.程序能提供菜單共用戶選擇。
2.1.2 涉及知識
1.全局變量局部變量的使用;
2.循環(huán)語句;
3.函數(shù)的定義和調用;
4.排序算法;
5.鏈表;
6.文件的打開、文件的關閉、文件格式輸入函數(shù)、文件格式輸出函數(shù)。
2.1.3 學生成績管理案例界面
如圖2所示:
圖2 學生成績管理案例界面
2.2.1 任務內容
建立一個景區(qū)旅游信息管理系統(tǒng),實現(xiàn)的主要功能:
1.制定旅游景點導游線路策略;
2.制定景區(qū)道路鋪設策略。
2.2.2 涉及知識
1.圖的建立;
2.拓撲排序;
3.圖的遍歷;
4.求圖中節(jié)點的最短路徑;
5.求最小生成樹。
2.2.3 景區(qū)旅游管理案例界面
如圖3所示:
圖3 景區(qū)旅游管理案例界面
2.3.1 任務內容
航空客運訂票系統(tǒng)的功能包括:
1.管理員登陸后,能夠修改個人信息和密碼,添加客機,安排航班,搜索查看航班,刪除航班/客機;
2.客戶登錄后,能夠修改個人信息和密碼,搜索查看航班,預定航班,退訂航班。
(1)航線信息:航線編號,客機編號,起飛時間,歷時,余票,候補客戶名單,已定票客戶名單;
(2)客戶信息:用戶昵稱(唯一標識),登錄密碼,注冊身份證,真實姓名,郵箱,性別,預定候補航線編號,已定航線編號(對于某一用戶不限制其定多個航線)。
2.3.2 涉及知識
1.鏈表;
2.隊列;
3.查找。
2.3.3 航空訂票管理案例界面
如圖4所示:
圖4 航空訂票管理案例界面
學生成績管理案例、景區(qū)旅游管理案例以及航空訂票管理案例 3個案例基本將數(shù)據(jù)結構與算法課程的主要內容涵蓋進來,其中包括單鏈表、隊列、最小生成樹、查找與排序、圖的建立、圖的遍歷以及最短路徑等知識點。
當今世界已進入信息化、網(wǎng)絡化時代。對于西部地區(qū)特別是青海作為經(jīng)濟欠發(fā)達地區(qū)來說,實現(xiàn)青海省對信息化人才培養(yǎng)提出的“以培養(yǎng)應用型人才為目標”,已成為一個重要的研究課題。以項目為導向,把“提高課堂教學效果,提高教學質量,加強學生的實踐動手能力”作為突破口,將課堂教學與實踐教學融為一體,讓學生在做中學,目的是充分調動學生的學習熱情和求知欲望,提高和增強學生的實踐能力、社會適應能力以及創(chuàng)新能力,從而適應新經(jīng)濟條件下對信息技術人才的需求[4]。
在理論課的講解過程中,主講教師以學生成績管理案例、景區(qū)旅游管理案例以及航空訂票管理案例的工作步驟為主線,以項目工作任務為驅動,將數(shù)據(jù)結構與算法中的線性表、棧、隊列、數(shù)組、樹、圖以及查找與排序等知識點和一些方法、技能有機融合,在問題解決過程中進行學習,從而真正做到讓學生通過該課程建立數(shù)據(jù)結構和數(shù)據(jù)處理的概念,掌握數(shù)據(jù)邏輯結構分析、存儲和算法編寫的基本流程、步驟、內容及操作方法,具備完成相關工作的能力。
這種以項目為導向的教學方法既突出了知識的應用性,又讓學生對項目開發(fā)工作的整體框架有了更清晰的了解,可以對不同程度的學生,特別是青海少數(shù)民族學生,進行個性化培養(yǎng),以激發(fā)他們的學習熱情,培養(yǎng)和鍛煉他們的創(chuàng)新精神和實踐能力,使他們都能在不同程度上得到提高和發(fā)展。這種教學方法能將書本上的知識變“活”,可以使學生更好地理解課堂教學內容,拓展知識面,延伸和擴展課堂教學,提高學生的抽象能力、思維能力、算法和數(shù)據(jù)結構的設計與分析能力,從而使學生學會如何把書上學到的知識用于解決實際問題,以培養(yǎng)軟件工作所需要的動手能力。
在實驗課中提倡同學之間相互指導,加強學習交流,引導大家分享學習成果,從而共同進步。在本課程的學習中,將全班同學分成若干個學習小組,每組3-4人,將班里編程好的同學分插到各組。在課程設計中,教師提供多個不同項目化的題目供學生選擇,這樣可以給予學生更廣闊的思路去實現(xiàn)課程設計的任務從而達到鞏固所學的數(shù)據(jù)結構。同時。題目多樣化的方式也杜絕了同學們的抄襲現(xiàn)象。同學們以學習小組作為一個項目組,按照要求進行構思共同商討設計思路,然后進行算法設計,接著由項目組長進行分工各自負責不同部分,大家分頭去實現(xiàn)算法,最后項目組將大家的實現(xiàn)部分匯總在一起進行整個項目的運作并撰寫課程設計報告。在整個課程設計過程中同學們在完成自己負責模塊的同時,也需要不斷地參與討論和設計其他同學的模塊中,通過這種方式可以讓同學們在較短的時間內對本課程的知識進行較全面的復習和鞏固。
在課程設計的驗收時,教師安排開展一堂集研究、研討、趣味于一體的數(shù)據(jù)結構與算法課程設計答辯會,并邀請系里教師作為嘉賓出席,整個活動由同學們進行策劃、設計,并有班里同學推薦主持人。課程設計中,同學經(jīng)過查閱資料->構思整體方案->算法設計->編碼實現(xiàn)->調試運行->總結,整個過程中不斷地討論、不斷地解決問題,每一個環(huán)節(jié)都可以鍛煉學生的溝通能力、解決問題能力以及團隊協(xié)作精神,讓大家都受益匪淺。
通過多種實踐環(huán)節(jié),使學生更好地理解課堂教學內容,拓展知識面,延伸和擴展了課堂教學。全面地培養(yǎng)了學生的素質,提高了學生的抽象能力、思維能力、算法和數(shù)據(jù)結構的設計與分析能力、科學報告的撰寫和表達能力,同時在這個過程中也培養(yǎng)了學生獨立分析實際問題的能力。此外,在作業(yè)批改中,采用作業(yè)相似度檢測工具,杜絕了學生對編程作業(yè)的抄襲行為,從而培養(yǎng)了學生程序設計的實踐能力[5,6]。
基于項目導向的數(shù)據(jù)結構與算法課程教學,目標是建立若干個項目驅動化教學所需要的開發(fā)項目,以實現(xiàn)以項目為導向、以需求學理論、以實踐為主導的數(shù)據(jù)結構與算法教學模式,從而幫助任課老師提高教學效果。在本研究中主要案例項目包括建立3個項目驅動化教學所需要的開發(fā)項目,學生成績管理案例、景區(qū)旅游管理案例以及航空訂票管理案例,將數(shù)據(jù)結構與算法課程的主要內容涵蓋進來。在教學過程中采用動畫、視頻、演示等多種形式的多媒體教學手段,充分調動學生的眼、手、耳,以實現(xiàn)以項目為導向、以實踐為主導的數(shù)據(jù)結構與算法教學模式。
基于項目為導向的數(shù)據(jù)結構與算法課程教學方法以學生為中心,強調小組合作學習和自主學習,注重培養(yǎng)專業(yè)技術應用能力、團隊協(xié)作交流能力、系統(tǒng)工程分析能力和自我提升能力。該教學方法可以讓我們的學生深入理解數(shù)據(jù)結構與算法相關理論、扎實掌握面向對象開發(fā)的技能,全面培養(yǎng)學生在學科技術和個人與專業(yè)素質、人際等多個方面的能力,從而在本科層次培養(yǎng)出具備終身學習能力的高素質計算機應用和開發(fā)人才,并且最終能讓我們的每個學生帶著自己的作品走上工作崗位。
[1]劉曉靜,王曉英,薛媛媛等.讓趣味教學進駐數(shù)據(jù)結構與算法課堂[J].青海大學學報,2011,29(5):95-97.
[2]沈華.數(shù)據(jù)結構、算法和程序之間關系的探討[J].計算機教育,2013,4:58-61.
[3]熊岳山,錢程東,徐凱.數(shù)據(jù)結構課程教學中的數(shù)據(jù)抽象能力培養(yǎng)體會[J].計算機工程與科學.2014,36(4):27-30.
[4]李和平,龔波林,劉萬毅.深化實驗教學改革,強化技能型人才培養(yǎng)[J].實驗技術與管理,2013,30(2):159-161.
[5]劉曉靜,黃維通,王曉英.西部地區(qū) CDIO 理念下的數(shù)據(jù)結構與算法課程建設[J].計算機教育,2013,17:107-111.
[6]王曉英,靳力,王曉青等.基于序列匹配的作業(yè)相似度檢測系統(tǒng)[J].計算機工程,2012,38(24):53-61.