第一篇:算法設計與分析課程的心得體會
《算法設計與分析》課程的心得體會
以最少的成本、最快的速度、最好的質量開發出合適各種各樣應用需求的軟件,必須遵循軟件工程的原則,設計出高效率的程序。一個高效的程序不僅需要編程技巧,更需要合理的數據組織和清晰高效的算法。這正是計算機科學領域里數據結構與算法設計所研究的主要內容。一些著名的計算機科學家認為,算法是一種創造性思維活動,并且處于計算機科學與技術學科的核心。
在計算機軟件專業中算法分析與設計是一門非常重要的課程,很多人為它如癡如醉。很多問題的解決,程序的編寫都要依賴它,在軟件還是面向過程的階段,就有程序=算法+數據結構這個公式。算法的學習對于培養一個人的邏輯思維能力是有極大幫助的,它可以培養我們養成思考分析問題,解決問題的能力。
如果一個算法有缺陷,或不適合某個問題,執行這個算法將不會解決這個問題。不同的算法可能用不同的時間、空間或效率來完成同樣的任務。一個算法的優劣可以用空間復雜性和時間復雜度來衡量。算法可以使用自然語言、偽代碼、流程圖等多種不同的方法來描述。
計算機系統中的操作系統、語言編譯系統、數據庫管理系統以及各種各樣的計算機應用系統中的軟件,都必須使用具體的算法來實現。
算法設計與分析是計算機科學與技術的一個核心問題。因此,學習算法無疑會增強自己的競爭力,提高自己的修為,為自己增彩。
那么,什么是算法呢?算法是指解決問題的方法或過程。算法滿足四個性質,即輸入、輸出、確定性和有限性。為了了解算法,這個學期馬老師帶我們走進了算法的世界。
馬老師這學期提出不少實際的問題,以及解決問題的算法。我在此只說比較記憶深刻的問題,即0-1背包的問題。
0-1背包問題可以描述為:給定一組物品,每種物品都有自己的重量和價格,在限定的總重量內,我們如何選擇,才能使得物品的總價格最高。問題的名稱來源于如何選擇最合適的物品放置于給定背包中。
首先,0-1背包問題具有最優子結構性質和子問題重疊性質,適于采用動態規劃方法求解。動態規劃算法與分治法類似,其基本思想是將待求解問題分解成若干個子問題,然后從這些子問題的解得到原問題的解。與分治法不同的是,用動態規劃法求解的問題,經分解得到的子問題往往不是互相獨立的,若用分治法解這類問題,則分解得到的子問題數目太多,以至于最后解決原問題需要耗費過多的時間。動態規劃法又和貪婪算法有些一樣,在動態規劃中,可將一個問題的解決方案視為一系列決策的結果。不同的是,在貪婪算法中,每采用一次貪婪準則便做出一個不可撤回的決策,而在動態規劃中,還要考察每個最優決策序列中是否包含一個最優子序列。
用動態規劃法解決問題的思路如下:
最優決策序列由最優決策子序列組成。假設f(i,y)表示剩余容量為y,剩余物品為i, i+1, ?, n時的最優解的值,即:
f(n,y)= Pn,if y≥Wn f(n,y)= 0, if 0≤y≤Wn 和
f(i,y)=max(f(i+1,y),f(i+1,y-Wi)+Pi)y≥Wi f(i,y)=f(i+1,y)0≤y≤Wi 這個方程非常重要,基本上所有跟背包相關的問題的方程都是由它衍生出來的,所以有必要將它詳細解釋一下:“將前i件物品放入容量為y的背包中”這個子問題,若只考慮第i件物品的策略(放或不放),那么就可以轉化為一個只牽扯前i-1件物品的問題。如果不放第i件物品,那么問題就轉化為“前i-1件物品放入容量為y的背包中”,價值為f[i-1][y];如果放第i件物品,那么問題就轉化為“前i-1件物品放入剩下的容量為y-Wi的背包中”,此時能獲得的最大價值就是f[i-1][y-Wi]再加上通過放入第i件物品獲得的價值Pi。
用貪心算法解決問題的基本思路如下:
由所有解元素組合成問題的一個可行解;從問題的某一個初始解出發逐步逼近給定的目標,以盡可能快的地求得更好的解。當達到某算法中的某一步不能再繼續前進時,算法停止。
實現該算法的過程: 從問題的某一初始解出發;while 能朝給定總目標前進一步do求出可行解的一個解元素;
該算法存在問題:首先不能保證求得的最后解是最佳的;其次不能用來求最大或最小解問題,并且只能求滿足某些約束條件的可行解的范圍。
回溯法是一個既帶有系統性又帶有跳躍性的的搜索算法。所以0-1背包問題也可以用回溯法解決。其基本思路是可先將物品依其單位重量價值從大到小排序,此后只要順序考察各物品即可,這是為了便于計算上界。在實現時,由bound計算當前結點處的上界。在搜索解空間樹時,只要其左兒子節點是一個可行結點,搜索就進入左子樹,在右子樹中有可能包含最優解是才進入右子樹搜索。否則將右子樹剪去。
當然0-1背包問題還有許多的解決方案,此處就不一一列出。不過通過0-1背包問題,我深刻體會到算法的魅力,體會到同一個問題用不同的方法解決的妙處。學無止境,《算法設計與分析》僅僅是我學習算法知識入門課,我不會停下腳步,在此之后我依然會努力學習算法知識。
第二篇:算法設計與分析課程論文
“卓越工程師教育培養計劃”(簡稱卓越計劃)旨在培養一批創新能力強、適應經濟社會發展需要的高質量工程技術人才。在南通大學計算機科學與技術學院制定的軟件工程專業卓越工程師的培養計劃中,算法設計與分析被設置為一門核心必修課程。通過該門課程的系統授課,重點培養學生的計算機問題求解能力,該能力是軟件工程專業學生成長為卓越工程師必備的一項核心競爭力。一個典型的計算機問題的求解一般需要經歷5個階段:①問題的分析和建模;②算法設計方法和相應數據結構的選擇;③算法的實現;④算法的正確性證明和復雜度分析;⑤算法實現的優化等。
經過多輪的教學實踐發現,學生之間水平參差不齊是教學過程中面臨的最大問題。隨著高校招生規模的不斷增大,不同學生之間在基礎知識、智力水平、興趣愛好、學習動機和學習方法上存在較大的差異性。相同的教學內容,對于一些基礎較好的學生來說理解難度不大,但對于一些基礎較弱的學生來說,則難以理解。因此,如何尊重學生個性差異、發展學生個性特長,在考慮學生整體發展的同時兼顧學生的個性特長發展,從而最終提高各個層次學生的綜合素質是算法設計與分析課程的教學改革實踐中需要重點關注的問題。
通過多次與學生的深入交流發現,學生在這門課程的學習過程中面臨如下問題:
1)課程教學內容難度高。課程需要學生掌握常見的算法設計策略,如分治法、動態規劃法和貪婪法等,對設計出的算法能進行正確性證明和復雜度分析。很多知識點抽象層次高,需要學生具備一定的數學分析能力,同時,通常算法內部邏輯比較復雜,因此需要學生具備較強的編程功底。筆者在講授這些知識點時,均假設學生具備一定的數學分析能力和編程基礎,但實際情況卻不容樂觀,很多學生在大一和大二的時候并未重視相關課程的學習,很多知識點都已經還給授課老師,在課堂上需要花費一定時間幫助學生回憶這些知識點。同時,部分學生因編程經驗較為匾乏,難以順利地將偽代碼轉化成可運行的程序代碼。
2)學生問題求解能力弱。為輔助學生對知識點的理解,授課老師一般在實例選擇時均采用一些經典實例,例如歸并排序、最小生成樹等。這些問題在一些預修課程(例如高級程序設計語言或數據結構)中均進行過講解,因此理解起來難度不大。但是,學生在上機實踐時,面對老師布置的新問題,卻很難將學到的知識進行靈活運用,難以選擇合理的算法設計策略,并借助熟悉的高級編程語言去解決。
3)學生自主學習意識薄弱。該門課程本身課時較少(僅有犯學時),其中8學時為上機實踐,在剩余的24學時內,僅能講授基本的算法設計與分析策略。學生即使了解常見的算法設計與分析方法,但現實生活中問題千變萬化,更需要學生靈活使用學到的知識。因此,要提高學習效果和實踐能力,需要學生在課外花費更多時間,閱讀相關資料和進行大量編碼。但是,授課過程中發現,真正能夠完成自主學習的學生并不多。一方面,很多學生長期受應試教育的影響,習慣于填鴨式的教學模式,同時,學習時具有較強的功利性,很多學生普遍有應付考試和及格萬歲的思想,有的學生甚至為了應付老師的作業檢查,大量抄襲作業,僅做一些表面上的修改來敷衍了事。另一方面,即使有少量同學對新知識比較好奇,愿意自己去積極探索,但在選擇相關經典資料時經驗不足、效率較低,因此,需要有經驗的老師進行有效引導。
目前高校很多教室都配有多媒體設備,造成大部分專業課程均采用多媒體課件方式進行授課。多媒體課件雖然具有豐富的表現力、良好的交互性和較高的共享性,但與其他核心專業課程相比,算法設計與分析課程的理論程度更高,數學推導較多,因此筆者認為,采用板書為主的教學方式可能會效果更好。為驗證該推測,對Leiserson教授和Demaine教授開設的麻省理工學院公開課的在線視頻進行分析,發現他們在授課時,絕大部分教學內容均采用板書方式進行講解,通過在黑板上一步一步地推導,在一些關鍵節點上與學生充分交互,使得學生可以更好地掌握算法設計與分析過程中的一些重要技巧。筆者在實際教學中通過精心設計板書,取得了較好的課堂效果。
綜上所述,在學生水平參差不齊的情況下,針對算法課程教學中存在的問題,提出了一系列教學改革措施以提高不同層次學生的計算機問題求解能力。其中將教學問題與教學改革措施的對應關系,以及教學改革措施與不同層次學生的對應關系進行總結。而且具備良好的交叉學科基礎和文化底蘊,能培養出滿足市場需要的復合型人才。
如何使相關專業的教育教學滿足將來ICT產業的發展是個相當復雜的問題,希望筆者提出的一些改進措施能對信息科學相關專業的工程教育具有參考意義,并對其他領域也有借鑒之處。
第三篇:“算法設計與分析”課程教學方法探究(精選)
“算法設計與分析”課程教學方法探究
摘要:該文分析了算法設計與分析課程教學和學生學習時存在的問題,根據近幾年積累的教學經驗,提出了一些教學方法的建議,如互動式教學,板書和多媒體相結合,重視上機練習以及考核方式的改革。
關鍵詞:計算機;算法設計與分析;教學方法
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)08-0102-02
21世紀以來,計算機的普及極大地改變了人們的生活。目前,各行業、各領域都廣泛采用了計算機信息技術,并由此產生出設計并開發各種應用軟件的需求。為了以最小的成本、最快的速度、最好的質量開發出應用軟件,就必須掌握并能設計出高效的算法。算法分析與設計是一門理論性與實踐性兼顧的課程,是計算機科學與技術專業的一門很重要的專業課,該課程在整個教學體系中占有非常重要的地位。通過對計算機算法系統的學習與研究,理解和掌握算法設計的主要方法,培養對算法的計算復雜性進行正確分析的能力,為獨立地設計算法和對給定算法進行復雜性分析奠定堅實的理論基礎[1]。
該課程不像其他記憶性的課程,它重在理解并能應用到實際中,是一門集應用性、實踐性及創新性為一體的綜合性課程。再加上這門課程相對枯燥、難度大,因此,對于很多教師來說,要想上好這門課程,成了一個很大的挑戰。該課程要求教師要有扎實的數學和數據結構理論基礎,還要有編程和科研經歷,還要結合本課程的特點,采用適當的教學方法,才能使得學生把枯燥,難學的算法真正學會,并應用到以后的開發實踐中。
本文根據筆者的教學經驗,總結了一些教學方法,包括互動式教學,板書和多媒體相結合以及考核方式的改革等。算法課程教學及學生學習存在的問題
現在,算法設計與分析課程在教學和學生學習方面都存在著問題,經過分析總結如下:
1)該課程難度較大:算法設計與分析課程中介紹的都是數學或計算機專業領域的經典算法,例如動態規劃和分支限界法。單純的算法思想比較抽象,課程本身難度較大,容易使學生對該門課程產生恐懼心理。
2)學生不感興趣:現在大多數學生功利性比較強,學習一門課程時,希望它馬上就能應用到實際中。比如學習了靜態網頁設計就可以做網站,學習了asp、jsp等動態網頁設計就可以開發系統。學會了開發網站和系統,就可以找到工作。所以學生對這些課程很感興趣。剛才提到的課程都是立竿見影,學完后都知道最終的目的,而算法設計與分析課程則不同。算法設計與分析課程屬于高層次的課程,各種編程語言是它的先修課程。沒有編程基礎,沒有開發經驗,談論算法就相當于紙上談兵。因此,學生學習算法設計與分析課程時,他們感覺不能立即用上,甚至覺得與以后找工作沒有太大關系。這種心理導致學生對該課程不感興趣,緊緊抱著混學分的思想去學習,給教師授課帶來了很大的困難。
3)考核方式不太合理:目前,在大多數高校中針對算法設計與分析課程采用的考核方式和其他課程一樣,總成績=試卷成績*70%+平時成績*30%。這里的平時成績包括作業,考勤和課堂表現。這種考核方式只能反映出學生對理論知識的掌握程度,但無法考核出學生對知識的真正應用能力。采用這種傳統的考核方式檢驗學生是否能把算法思想應用到編程中,無法學以致用。
2教學方法探討
近年來,本人一直教授該門課程,現將自己教學過程中摸索的教學經驗以及教學改革建議進行總結,希望能對廣大教師有所幫助。
2.1互動式教學
講授算法課程過程中,由于該門課程具有很強的邏輯性和抽象性,并且要求有較好的數學基礎,很容易形成教師向學生的單向傳輸教學。這種情況下,課堂教學枯燥無味,學生沒有興趣去思考和回答教師的問題,以至于形成課堂氣氛死氣沉沉,教師自問自答的局面。
在講課過程中,教師應時刻注意和學生的互動。互動式教學可以變傳統教學中的單向傳輸式教學為雙向互動式,這樣可以提高學生學習該門課程的興趣。興趣是最好的老師,只有學生產生了興趣,才能更好的掌握算法知識并應用到實際中。
教師實現互動式教學的方法有很多種,比如可以通過提問的方式。這就要求教師在備課時下功夫,而不是簡單的備課本上的知識點,而是吃透每一個知識點,然后在相應的知識點上為學生設置相應的思考方向,提出問題,充分調動學生的積極性,讓學生參與到課堂中來。同時,學生也會在枯燥的理論知識中尋找到樂趣。
2.2傳統的板書教學和多媒體教學相結合,齊頭并進
目前大多數高校計算機類的課程基本都使用多媒體進行教學。傳統的黑板教學和多媒體教學各有利弊,我們應根據教學內容的需要,揚長避短,選擇適當的教學手段,而不是因多媒體的方便性,將單純的將黑板教學摒棄。在講解算法課程過程中,更是需要兩者的結合,才能收到良好的課堂教學效果。
采用多媒體教學的好處是可以加大課堂信息量,使得講課更加形象生動。在講解算法課程第2章中的插入排序,選擇排序,歸并排序時,就可以采用多媒體教學中視頻教學。三種排序算法很抽象,單純的靠講述加上板書教學,學生很難掌握三種排序的算法思想,并且容易混淆。本人在講解該部分內容時,從網上找到了真人以民族舞蹈形式來表現各種計算機排序算法的工作原理的視頻。首先口頭介紹某種排序的算法思想,然后在學生對此排序有初步了解的基礎上,讓其觀看相應的視頻,使得學生在輕松快樂的氛圍中掌握了排序算法,收到了很好的教學效果。
有些情況下,掌握某些經典算法的核心思想需要教師采用傳統的黑板教學,一步一步帶著學生去推導,最終得到答案。如果此時采用ppt課件進行教學,就會加快講課的進度,向下翻一頁可能答案就會直接出來,沒有給學生充分多的思考時間,沒有在學生腦中留下深刻的印象。比如講解棋盤覆蓋問題時(如圖1,圖2),如果采用板書教學,一步一步去演示覆蓋的過程,學生的思路經歷了從有到無的過程,在循序漸進中掌握了知識。整個推導過程學生如同細細咀嚼了一個蘋果,不僅嘗到了味道,也吸收了營養。
2.3 重視上機練習
教室課堂上,教師向學生講授的是算法的基本思想。算法僅僅靠掌握理論知識是不夠的,必須把它應用到編程中,才能真正去領會算法的思想和靈魂。脫離計算機和編程去談論算法就如同紙上談兵,是不切實際的。
在教學過程中,教師至少應把1/3的課程分給上機實驗課,只有給學生充足的上機時間,才可以將算法的思想應到實際中。當然,作為教師必須努力找一些難度合適的題目,讓學生在實驗課上完成,將教室課堂上學的理論知識有所應用。通過上機實際操練,促進學生真正掌握算法的精髓。
2.4考核方式改革
本文前面已經分析過現在算法課程大多數學校采用的是以紙質試卷為主的考核方式算作期末成績,其實這種考核方式和課程的性質是互相矛盾的。算法課程是理論和實踐都很重要的一門課程,傳統的考核方式只能考查學生對理論知識的掌握程度。
本人對算法課程采用如下考核方式:
除常規期末試卷成績外,實驗成績占的比例為40%,加大了實驗成績所占的比例。這樣可以增強學生對實驗上機課的重視程度,上機實驗時,學生會比較認真,有助于他們能將算法的思想應用編程中,培養學生的動手和實踐能力。
3總結
筆者結合近幾年的課堂教學情況,分析了算法課程教學存在的問題,并針對這些問題提出了一些教學方法。當然這些方法還需要進一步的完善,進而使算法課程的教學質量能得到很大的提高。
參考文獻:
[1] 李涵.“算法分析與設計”課程改革和實踐[J].中國電力教育,2010(16):74-75.[2] 王曉東.計算機算法設計與分析[M].北京:電子工業出版社,2008.[3] 劉波“.算法設計與分析”教學探討[J].高等理科教育,2007(4):78-80.[4] 余祥宣,崔國華,鄒海明.計算機算法基礎[M].武漢:華中科技大學出版社,2006.[5]馬健.啟發式教學法在課堂教學中的應用[J].中國電子教育,2008(3):68-71.
第四篇:“算法設計與分析”課程教學大綱與教學規程
“算法設計與分析”課程教學大綱和教學規程
1.課程基本信息
課程編號:
課程名稱(中文):算法設計與分析
課程名稱(英文):The design and analysis of algorithms 開課學期: 見培養方案與教學計劃 課程類別: 專業基礎課程
課程學時數與學分: 56學時(4學分,不含實驗課時,4學時/周)
實驗學時數與學分: 28學時(學分計算并入計算機科學實驗課程,4學時/次/周)先修課程: 高等數學或數學分析,線性代數或高等代數,概率論與數理統計,離散數學,高級語言程序設計,數據結構
教學形式: 課堂講授 + 課外教學 + 實驗教學(實驗課程實行單列)使用教材:
張德富,算法設計與分析,國防工業出版社,2009,8。教學參考書:
[1] T.H.Cormen, C.E.Leiserson, R.L.Rivest and C.Stein, Introduction to Algorithms(the second edition),The MIT Press,2001 該書國內已引進,見《算法導論(第二版)》(影印版,中文本),高等教育出版社,2003 [2] M.H.Alsuwaiyel,Algorithms Design Techniques and Analysis,World Scientific Publishing Company,1998 M.H.Alsuwaiyel,吳偉昶 等譯,《算法設計技巧與分析》(中文版),電子工業出版社,2004 [3] Sartaj Sahni著,汪詩林等譯,《數據結構、算法與應用--C++語言描述》,機械工業出版社,2003 [4] 王曉東編著,《計算機算法設計與分析》,電子工業出版社,2005 [5] Gilles Brassard, Paul Bratley.《FUNDAMENTALS OF ALGORITHMICS》(算法基礎),清華大學出版社,2005 注:[1]和[2]兩本書為主要教學參考書。
大綱制定者: 張德富、趙致琢、蘇 暢(廈門大學計算機科學系)大綱審定者: 趙致琢(廈門大學計算機科學系)
2.課程性質、類別與任務
“算法設計與分析”是計算機科學與技術專業一門重點專業基礎課程,也是學科核心專業基礎課程之一,屬于必修課程。本課程主要介紹算法的基礎知識,包括抽象計算模型、算法基本概念、算法復雜性分析基礎、算法設計的基本方法、以及算法復雜性理論基礎。通過本課程的學習,要求學生理解并熟練掌握:了解可支持算法運行的抽象機器計算模型,算法的定義和復雜性概念,算法設計的基本技術方法,包括遞歸與分治法、貪心法、動態規劃方法、回溯法、分支限界法以及高級圖論算法等,理解并掌握算法復雜性的分析方法、NP完全性理論基礎等計算復雜性的基本知識以及完全性證明概要。通過教學和實踐,培養學生運用數學工具和方法分析問題和從算法的角度運用數學工具解決問題的基本能力,培養學生設計算法和分析算法復雜性的基本能力,訓練學生的邏輯思維能力和想象力,從而使他們能夠正確地分析和評價一個算法,進一步設計出真正有效或更有效的算法,并使之了解算法理論的基礎知識和發展概況。在教學中,鼓勵學生運用算法知識解決各個學科的實際計算問題,培養學生初步的獨立開展科研工作的能力和理論聯系實踐,解決實際問題的能力,同時,為后續課程以及將來的研究工作提供必要的算法設計與分析的基礎。
此外,配合實驗課程的教學,學生應理論聯系實際,理論指導實踐,通過規范地完成一系列算法設計實驗進一步鞏固所學的相關書本知識,在知識、能力、素質上得到進一步的提高。
3.課程教學的基本要求(教學內容和教學重點)
“算法設計與分析”內容的重點是各種常用的算法設計方法和復雜性分析方法,包括遞歸與分治法、貪心法、動態規劃方法、回溯法、分支限界法,以及高級圖論算法、時空復雜性的分析方法、NP完全性理論基礎。課程教學的基本要求是通過教學活動,使每一個學生較好地掌握課程的主要內容,同時具備對實際問題應用所學知識設計出有效算法并編程實現這些算法的能力。課程的教學內容主要包括如下知識點,其中,屬于重點的內容用黑體標示,今后教學改革擬增加的內容用“{??}”標示,部分非重要內容用括弧標注為“一般了解”: 基本概念:問題;抽象計算模型;算法的概念;算法正確性;算法效率;問題下界 算法的評估:時間復雜性和空間復雜性分析;算法的最優、最差和平均效率;漸近復雜性符號和基本效率類型;非遞歸算法的數學分析;{概率分析(一般了解);分攤分析(一般了解);算法的經驗分析;算法可視計算方法}; 遞歸:遞歸設計;遞歸算法轉非遞歸算法;遞歸算法的設計實例;遞歸算法的數學分析,{三種求解遞歸方程的方法};
分治法:分治法的基本思想;分治法設計的特點;分治法的時間復雜性;分治法的應用(大整數乘法和Strassen矩陣乘法;棋盤覆蓋); 基本的排序算法及其復雜性分析:插入排序;堆排序;快速排序;排序算法復雜度分析及其比較(此處的教學重點在于算法分析,透過算法分析從中深入了解算法的特性,進一步揭示設計更為有效的算法的思路和途徑); 動態規劃方法:動態規劃的基本要素(含最優性原理);矩陣連乘問題;0/1背包問題;裝配線的調度問題;最長公共子序列;
貪心算法:貪心算法的基本要素;背包問題;哈夫曼編碼;活動選擇問題;{貪心算法的理論基礎(一般了解)};
回溯法:回溯法的基本思想;裝載問題;0/1背包問題;旅行商問題;批處理的作業調度問題;n皇后問題;子集合問題;回溯法的效率分析;
分支限界法(分支定界法):分支限界算法的基本思想;裝載問題;0/1背包問題;旅行商問題;批處理的作業調度問題;分支限界法的效率分析;
網絡與高級圖論算法:最短路徑問題(Prim算法;Kruskal算法;Dijkstra算法;Warshall算法和Floyd算法);最大流問題(Ford-Fulkerson標號算法等);最小費用最大流問題(最小費用算法等);{匹配問題及其求解算法}; 問題的復雜性:NP完全性理論基礎(P類與NP類問題,NP完全性問題及其歸約;NP完全性證明;典型的NP完全問題);{ 如何求算法復雜性的下界(一般了解)}。
4.關于教學目標、教學內容的建議和教學過程中應該注意的事項
算法設計與分析是計算機科學的核心問題之一。由于計算機科學與技術的大多數研究都與算法緊密相關,因此,高起點的算法理論基礎逐步成為了高素質計算機科學與技術專門人才應該具備的必要的理論修養。設計算法的目的是要解決大量實際問題,對于較復雜的問題要求能設計出有效的算法。大量的研究實踐表明,一個問題求解質量和效率的高低,主要取決于算法設計的質量。因此,算法設計與分析的重點是掌握算法的概念和基礎理論,運用數學工具分析問題,從計算方法的角度如何給出非數值計算問題的計算方法、采用算法設計的常用方法設計算法,掌握分析和估計算法復雜性的方法,并特別注意以下幾點:
第一,在介紹算法的基本概念時,應該著重介紹計算模型、算法的概念、考察算法的角度和算法評估的標準、復雜性分析的方法以及算法研究的目標與實際問題的關系;
第二,在介紹一些數據結構已經學習過的排序算法時,不應過多強調算法設計,而應該重點結合算法分析技術,用分析的方法評價算法的優劣,從分析結果得到設計更優算法的啟示。在介紹高級的數據結構時,重點應放在對數據結構的復雜性分析上;
第三,在介紹算法設計的基本方法(例如分治法、貪心法、動態規劃方法、回溯法與分支限界法)時,應該通過對大量經典問題的算法設計與分析,使學生逐漸掌握算法設計與分析的技巧,并特別注意各種算法的比較分析。例如,遞歸與分治、貪心與動態規劃、回溯與分支限界;
第四,在介紹NP完全性理論時,應該著重從問題的分類以及各類問題的性質、相互關系入手進行研究,揭示問題的本質,從而為算法的設計提供方法指導。另外,應該著重掌握問題的轉化及NP完全性理論的有關證明思想;
第五,在介紹線性規劃問題及其相應算法時,應該著重介紹該算法的應用;
第六,鼓勵教師將自己的研究或最新算法設計與分析的思想,結合到教學過程之中,鼓勵和幫助學生運用所學的知識去解決實際問題,掌握理論與實踐相結合的思想方法。第七,鼓勵教師結合學科范型(也稱范式),將學科方法論的內容融入教學過程之中(對教師暫不作基本要求),以幫助學生建立與“算法設計與分析”課程內容相關的科學的思想方法。
5.課外教學要求
本課程的課外教學內容和形式主要由學生閱讀經典教材,任課教師輔導、答疑、批改作業、實踐環節等幾部分構成。本課程要求學生在有時間的情況下,盡可能完成教材中所有的習題。學生應在任課教師的幫助下,認真聽課,反復思考,大量完成作業,在學習中反復進行閱讀、思考、做習題,通過閱讀、思考、做習題、分析、聯想、概括、歸納、總結等多種有效的方式方法,比較全面、準確地掌握課程的主要內容和教學重點。
任課教師(包括助教)每周安排1次輔導、答疑,每次2小時。每次輔導、答疑至少應有一位教師參加,一般不得合并執行。主講教師應批改全班學生作業量的5%,參加輔導、答疑的次數不少于總次數的1/5,以掌握教學的效果,調控教學進度。
課程對學生作業的質量要求是:正確、簡潔、規范。
要求做題正確,意味著學生必須掌握基本概念、基本原理、基本方法、基本技術等課程的基本知識,基本知識不掌握,就很難正確解答問題,這是對學生知識水平和解決問題能力的考核。要求做題簡潔和規范,意味著在正確解題的情況下,不應該存在“拖泥帶水”和“東拉西扯”的問題,書面表達簡練、規范,與教材中例題求解的表述基本一致。這些,正反映出學生在這方面訓練有素,這是對學生素質的考核。
6.課程的實驗教學
實驗課程將安排一些有代表性的上機實驗單元與本課程相呼應,目的是通過實驗讓學生體會理論與實踐高度統一的學科特點,進一步認識理論、抽象、算法設計等三個過程及其相互關系,形成對學科范型更深入的體會和認識。它要求學生從分析問題出發,利用所學的算法設計技術去解決某一實際問題。通過實驗工作,借助程序設計語言,掌握運用數據結構、算法和程序解決一些實際問題的方法。
學生應按照理論聯系實際,理論指導實踐的要求,在實際操作中規范地完成各項實驗。通過實驗工作,借助程序設計語言,設計并實現算法,進一步掌握運用數學工具,分析問題,提出求解方法,設計算法,分析算法的復雜性,對算法進行科學的評價等方面得到嚴格的訓練。
實驗教學按照實驗單元進行,一個實驗單元完成后或相近內容的一組實驗單元完成后,每一個學生要撰寫和提交實驗報告。任課教師應依據每一個學生的實驗報告和完成實驗的情況,在學期結束時給出學生該門課程的學術評語和成績,并與四個學年所有實驗課程評語一起,最終產生對學生的實踐能力作出綜合評定的學術評語與成績。學術評語應著重從發展的眼光和視角,考察學生是否能夠理論聯系實際,理論指導實踐,按照實驗課程的教學要求,規范地完成實驗單元,較好或基本掌握了實驗教學的內容。
在實驗課程單列之前,課程的實踐環節擬安排28學時(實際執行7次共7*4=28學時),教學內容由大綱確定,實驗課程單列之后,實驗考核成績單獨計算,不計入課程考核成績。各實驗單元和內容如下:
實驗單元一:用貪心法求解一個具體問題的實驗(程序實現); 實驗單元二:用動態規劃方法求解一個具體問題的實驗(程序實現); 實驗單元二:用回溯法求解一個具體問題的實驗(程序實現); 實驗單元四:用分支限界法求解一個具體問題的實驗(程序實現); 實驗單元五:用高級圖論算法求解一個具體問題的實驗(程序實現)。
上述五個實驗完成后,每個學生應提交二個實驗報告。前三個實驗完成后提交一個實驗報告,后兩個實驗完成后,提交一個實驗報告。
7.考核的方式方法
課程結束考核方式: 閉卷考試 課堂考試時間: 3小時(180分鐘)
考試命題: 任課教師命題,教研室分管該課程的負責人和分管教學的系副主任審題; 課程考試的命題內容要從大綱的要求出發,圍繞本課程的教學內容、知識點和教學要求,著重從知識、能力、素質三個方面對學生進行全面的考核,重點考核學生運用知識解決問題的能力,同時考察學生的綜合素質??己朔秶鸀槌俗詈笠恢芙虒W的內容外,其他大綱確定的知識點都在考試范圍之內,課程考試的試卷命題范圍不得免除期中考試已經考過的內容。試卷中不少于85%的內容應來自課程重點內容的范圍,不少于10%的內容應來自課程非重點內容的范圍,要求學生全面復習,以達到系統掌握,全面考核的目的。試卷的題型要力戒避免文科標準化試卷的題型,避免出現簡單概念問答題和簡答題。試卷題目數量一般為5、6、7題,以優秀學生在全部會做的情況下正常書寫速度能夠在120分鐘內完成為宜。試卷題目數量的減少與全面考核的目的并不矛盾。由于考核的范圍是明確的,只要教師不透露題型和范圍,學生就必須全面復習,這樣,即使題目不覆蓋某些教學內容,也不會影響實際的教學效果。
隨堂監考授權: 主講教師和助教
期中考試: 由任課教師決定是否安排期中考試,主要用于檢查教學情況。最后成績計算辦法: 期終考試成績80%+平時成績20%
第五篇:數據結構算法設計與分析
數據結構算法設計與分析、計算機網絡、計算機組成原理、操作系統原理、編譯原理、數據庫原理及應用、軟件工程、軟件測試等計算機基礎理論課程;
網頁制作、程序設計Java、JSP程序設計、Oracle、XML程序設計、計算機網絡、SSH(Struts+Spring+Hibernate)框架、Java EE程序設計、Ajax程序設計、Linux+PHP+MySQL程序設計、Android手機開發、UML系統分析與設計、性能測試、自動化軟件測試、軟件質量保證、畢業設計及項目綜合實訓等。
數據結構、計算機網絡、計算機組成原理、操作系統原理、編譯原理、數據庫原理及應用、金融學概論、西方經濟學等基礎理論課程;
網頁制作、程序設計Java、JSP程序設計、J2EE程序設計、SQL Server數據庫、Oracle數據庫、Linux操作系統、UML系統分析與設計、軟件工程、XML程序設計、SSH框架、金融市場學、ERP財務管理、管理信息系統、投資銀行學、商業銀行學、國際金融管理、畢業設計及項目綜合實訓等專業課程。
數據結構、計算機網絡、計算機組成原理、操作系統原理、數據庫原理及應用、軟件工程、軟件測試等計算機基礎理論課程;
網頁制作、程序設計Java、JSP程序設計、J2EE程序設計、XML程序設計、Ajax程序設計、SSH框架、Android手機開發、Linux+PHP+MySQL程序設計、SQL Server數據庫、Linux操作系統、UML系統分析與設計、軟件項目管理、行業標準與規范、IT服務管理、IT職業英語、畢業設計及項目綜合實訓等專業課程