[CSIE 2136](02) Algorithm Design and Analysis Prof. Michael Tsai Fall 2012 (updated 09/20/2012)
目標: 在真實世界中, 知道怎麼 設計/寫/教別人 寫 好程式 演算法設計與分析 這堂課上什麼? 接續上學期的”資料結構”後, 本學期的課題: 1. 設計演算法的一些原則/方法/效能分析 2. 軟體設計世界(業界)中的一些經驗談 (聽別人的經驗談) – 非專業版 專業版請上李允中老師的軟體工程課程 本課程很有可能是您大學最後一門跟”程式設計”直接相關的課程 目標: 在真實世界中, 知道怎麼 設計/寫/教別人 寫 好程式
課程大綱 演算法方面: (2/3) Divide-and-Conquer Dynamic Programming Greedy Algorithms Amortized Analysis NP-Completeness Multi-threaded Algorithms Some Graph Algorithms Other Advanced Topics Algorithm Design Strategy Algorithm Analysis Specific Algorithm Design
要記得我第一堂課就有講課程大綱囉, 期末的時候填課程意見問卷的時候不要再說我沒有先講了. T_T 軟體工程方面: (1/3) Manage your development schedule The software company game Functional specifications Paper prototyping (還有…看狀況)
上課地點與時間 實際的上課時間: 教室: CSIE Building R104 時間: 每週四, 6, 7, 8節 第二節 14:20-15:10 第三節 15:30-16:20 第四節 16:30-17:20 實際的上課時間: 大約為14:20-15:10, 15:20-16:10, 16:20-17:10 看大家的”想睡程度”決定下課時間
蘇雅韻老師的同一門課程… 在人數上許可的範圍內,歡迎單雙班的同學自由轉班 授課內容及範圍大致相同 本班的程式實作部分可能略重,請自行考量 演算法設計與分析的部分大致相同 本班不教基礎圖論(Graph)的部分/蘇雅韻老師有教 補充的軟體工程部分可能略為不同 本班的程式實作部分可能略重,請自行考量 本班的授課教師上課愛耍寶耍冷搞笑、喜歡找同學回答問題,請自行考量 喔不! 冷!
加簽原則 人數上限90人 本系優先 (大二&研究所應修>大四>大三>大一) 外系(上學期修過我的DSA>其他外系同學) 今天先登記(姓名, 系級, 學號及E-mail), 待名單確定後寄送授權碼或拒絕鼓勵信
重要日期 11/8: 期中考 (於學校期中考周) 12/7: 老師出國 1/10: 期末考 (於學校期末考周) 可能解決方案 (決定之後會跟各位確認): Option 1: 助教群於當周輪番上陣上課 Option 2: 尋找另外時間補課 (可能於校慶當周11/12-11/16某個晚上直播補課 + 錄影檔) 1/10: 期末考 (於學校期末考周)
課本 (需要買) Introduction to Algorithms, 3rd edition, 2009, MIT Press by Cormen, Leiserson, Rivest, and Stein *借用呂學一老師2010 Fall投影片中的圖片
參考資料 (不需要買, 線上有) “Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity” (勒勒長的書名) “More Joel on Software: Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity” (勒勒長again) by Joel Spolsky, 2004 & 2008, Apress
課程特色 “上課簡單、作業難” “動畫為主”的上課解說 80%以上的同學可以了解80%以上上課的東西 大量的時間花在作業上 ACM比賽世界等級功力的的四位神級助教 (都比我強) 上課你沒有弄懂, 我不會放棄的 你沒聽懂, 我就再講一次 你有問題(沒有笨問題), 我就回答你(如果我會的話) 當我問有沒有聽懂的時候, 請理我一下 Q_Q
改變 Some English Lectures (to improve my own English fluency) 上課步調加快/作業變得更難-大二進階課程 使用點名機點人回答 (by立翔助教) 課程內容中更多的證明 (會試著用動畫解釋)
成績計算方式 6次作業, 占42%, Software Company Game (team project) 12% 最佳的一次加重50%, 最差的一次減重50% Sum(HW1-6)+Max(HW1-6)*.5-Min(HW1-6)*.5 Software Company Game (team project) 12% 期中考 20% (涵蓋期中考前課程內容) 期末考 or final project 26% (涵蓋全課程內容) 細節: 期末成績加總後之原始分數不會調整 等第之對應由老師與助教於學期末決定 根據經驗, 只要作業都有交, 考試考卷每題都有寫不放棄, 就很難被當
作業 分程式作業 + 手寫作業 程式作業: 每次1題 手寫作業: 每次3-4題 使用劉邦鋒老師的批改娘系統 網址: http://katrina.csie.ntu.edu.tw/judgegirl/ Source Code和上學期一樣, 使用Subversion繳交 記住, 批改娘只能幫你”用部分答案檢查你的程式對不對” 自己思考怎麼產生測試資料也是作業的一部分 手寫作業: 每次3-4題 用手寫的方法做演算法的證明與分析 或者用手寫的方式設計演算法 作業繳交期限皆為星期四下午2點
作業 鼓勵討論 每一題都請註明參考的資料/討論的同學 絕對不能照抄等同於抄襲 (請了解之後, 用自己的話寫/自己撰寫程式碼) 例1: 本題參考wikipedia上面的Divide-and-Conquer 網頁(網址...) 例2: 本題跟小可魚&蚯蚓討論過 例3: 本題參考課本第xxx頁 絕對不能照抄等同於抄襲 (請了解之後, 用自己的話寫/自己撰寫程式碼) 抓到抄襲的, 本課程成績為F (當掉)
Zero-tolerance政策: 遲交&抄襲 遲交 = 該次作業0分 (但是如果你願意交上來, 助教會幫你批改) 作業抄襲(程式或手寫) = 本學期成績為F (不是只有該次0分) 考試作弊 =本學期成績為F 以上均無第二次機會 請注意! 抄襲/作弊 以校規論處.
教學團隊 E-mail: ada@csie.ntu.edu.tw Name Office Office Hour 蔡欣穆(Michael) CSIE R316 Fridays 16:20-17:20 陳立翔 博理R314 Tuesdays 15:30-16:30 簡伯宇 (簡伯) CSIE R217 Tuesdays 13:00-14:00 許祐程 (Akira) Mondays 10:20-11:10 陳庭緯 (Shik) 歐志先 CSIE R424 (Grading) 張偉凱
通訊 課程網頁: http://www.csie.ntu.edu.tw/~hsinmu/courses/ada_12fall [Office hours] 請多加利用. [學生老師/助教] 課程相關的所有問題, 請 寄e-mail給 ada@csie.ntu.edu.tw 發文在ptt2上的HsinMu板 (乾旱中) FB Group: http://www.facebook.com/groups/335809569795582/ 請來我們的Office hour發問 [老師/助教學生] [主要]會寄e-mail到CEIBA上登記的e-mail信箱 (大部分人是學校e-mail, 不是系上信箱, 請注意!) [次要]部分訊息會請助教發在ptt2上HsinMu板+FB Group上
記得要做的事情 CEIBA上的e-mail確定收得到 課本趕快買(拿)到 (大部分人應該拿到了) 每天睡飽(not in the class), 迎接本學期的挑戰 助教寄出批改娘帳號後,請先寫題目0測試看看! 已選課者今天會收到 加選者下周上課前會收到