想要系統學習演算法,斯坦福大學開設的MOOC課程《Algorithms: Design and Analysis》合適嗎?

題主有一定的編程基礎,能夠熟練地使用pascal和c++語言,也對一些基礎演算法有了解。但是最近想要系統地進行學習,於是報了這門課,卻感覺有些費勁。不知是我思考的不夠,還是這門課本身不適合入門?如果不適合,能否推薦一些適合系統入門的材料呢?


個人認為這門課是現階段非常適合演算法學習的一門課。當然本人並沒有上過國內開的演算法課,所以無法和國內的課程比較。

不過題主說有一定困難,想必是對這種風格的課不太適應。

這門課其實並不怎麼講編程,講的主要是演算法思想。老師也很少去寫代碼給你看,都是拿出問題來給你畫圖分析應該如何思考問題。而一些解決某類問題的著名的成型的演算法,則只是為了說明思路舉例子帶來的副產品。課程作業則是在演算法思想的指導下具體的實現某個經典演算法。我覺得這屬於授之以漁的講法:告訴你捕魚的思路,剩下的事情都看你自己了,哪怕是製作工具都要自己動手。至於魚呢。。。有一天你會捕到的。

作為與之對比,你可以看看Princeton的演算法課:Algorithms I。Knuth的高徒Robert Sedgewick直接授課。這門課的講法就完全不同。老師是一個一個給你介紹那些解決問題的經典演算法,並且每個演算法都有久經考驗的代碼展示給你看,老師還會仔細分析每個演算法的效率,提示你一些需要注意的問題。課程作業則基本是應用這些經典演算法解決各式問題。不過這門課的評分系統是我見過的MOOC課程里最完善的,全面檢查你的代碼風格,時間空間效率等等各項標準。對於你養成規範的代碼習慣也有很大幫助。作為和上面的對比,這種講法應該是屬於教你使用各種捕魚工具,很快就能捕到魚了。

可能一些人更喜歡下面的方式吧。不過等你學多了用多了就能體會到,思路才是根本。那些經典的演算法,不經常用的都快忘光了……


合適, 本課程自給自足, 基本學校的話也就是這個順序, 另外這門課有編程作業, 可以用來練習。


演算法導論這樣的課算入門嗎


推薦閱讀:

哪種編程語言的代碼可讀性比較高?
學習編程,讀大學的和自學的有何區別?
實際軟體工程中是否真的需要100%代碼覆蓋率(code coverage)?
除了計算機相關專業,大學裡哪些專業也在學習編程?
什麼是「編程天賦」?你見到的最有「編程天賦」的人是什麼樣的?

TAG:演算法 | 編程 | 計算機科學 | MOOCs |