中级农民
- 积分
- 104
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2016-12-24
- 最后登录
- 1970-1-1
|
最近剛跟完了演算法的上下部份
大概花了三個月的時間
這是我寫在長期加分帖的心得
希望分享給每個對這門課有興趣的同學
也歡迎一起討論
這是我作業:https://github.com/yhtsao/princeton-algs
1. 課程的基本信息:課程平台,開課學校,課程全名,開課時間,課程鏈接。
課程平台:Coursera
開課學校:Princeton University
課程全名:Algorithms, Part I & II
開課時間:一直都會開
課程鏈接:Part I - https://www.coursera.org/learn/algorithms-part1/
Part II - https://www.coursera.org/learn/algorithms-part2/
2. 課程難度,作業量,每週花在這門課的時間,以及你的基礎(是初學者?還是本來就是你的專業內容?)
我的背景:本科CS, 碩士CS, 以前已經在學校修過演算法相關課程,目前工作也是在寫JAVA
課程難度:對本科生來說,不會太難
花的時間:我花了大概三個月的時間把兩個部分上完,上跟下分別都拆成六週的課程,
每週的視頻大概都是三到四個小時,前五週都會有作業,總共是10次作業,每次作業大概會花5-6小時完成
如果認真一點,空閒時間不要打混,用平日晚上還有週末的時間,應該兩個月就夠了
3. 各種感想、收穫、課程內容介紹、你對這門課的評價等等~~這個就自己發揮啦(請具體!)
這是我第一次跟的公開課,原本只想把第一部分跟完就好,後來還有點時間就繼續把第二部分也上完了。
第一部分:Stack, Queue, Sorting, Symbol table, BST, Hash Table
第二部分:Graph (DFS, BFS), MST, Shortest Path, Max Flow & Min Cut, String processing (Radix sort, trie, substring)
因為本身是CS專業出身,對於大部分的演算法都是有點基礎的
但我必須說這堂課最值得上的地方,就是老師在介紹每個演算法的時候,都會把前因後果說明得非常清楚
假設為瞭解決A問題,一開始一定是用brute-force的解法,之後才介紹了B解法,
但B解法有memory complexity的issue,為瞭解決這issue,又有了另一個C解法
老師介紹每個演算法,都會在最後放上java sample code來佐證這個演算法,會讓人對這個演算法有更直覺的理解
以前上課,大部分放上的都是pseudo code,就會比較沒感覺
也會對於介紹演算法的各種應用,這部分也是我覺得很棒的地方
因為以前學演算法都像是為了考試而理解它,學完還是不懂為什麼需要有這些算法的存在
大部分的作業也都是讓你用課堂上的演算法去應用在現實情況,
例如:他會讓你用graph去解決word net (每個詞彙跟另一個詞彙的關係)的問題,而不是實作graph
4. 如果讓你重新學過這門課,你會在學習方法上,背景提升上會有什麼樣的改進(選答)
我會先把課程講義看一遍再開始上課,會更容易跟上老師上課內容
5. 這門課和其他你跟過的課,用過的資源或者是學校上過的課有什麼區別?(選答,如果你還跟過其他類似的課的話)
這門課用的課本不是聖經本(Introduction to Algorithm),而是用Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne
以前上演算法課程有一段介紹divide and conquer 和 dynamic programing
但這門公開課沒有特別針對這兩個概念去做說明
6. 給以後打算學這門課的同學一些建議(請具體!可包括任何方面)
如果是CS專業的同學,但還不會寫JAVA,可以直接來上,裡面沒用到太難JAVA的語法,還算好懂
如果不是CS專業的同學,建議先會寫一點JAVA再來跟這堂課,畢竟這堂課JAVA只是輔助,
如果上這堂課花太多時間在理解JAVA code,就跟這堂課的目的背道而馳了
視頻的部分,老師講話的語速很慢,所以理解上不會有太大問題,我都是開1.25x速在上課
作業的部分,建議都是跟完當週視頻在開始寫,
因為老師在課程介紹的演算法應用,通常會是當次作業的內容
我寫作業的順序是看完spec之後,他還會有個checklist的網頁
裡面都是一些以前被提問過的問題,已經相對應的回答,可以讓你避開一些雷
還有一個區塊是Possible Progress Steps,會有一些實作的步驟讓你參考
我大部分都是跟著他的progress steps去實作,會比較快上手
如果滿分十分,我會給這門課十分
真心推薦給每個對演算法有興趣的同學,或是對演算法感到疑惑的人
|
|