清華學生總結的算法學習方法
點擊關注公眾號,干貨及時送達
? ?一、事半功倍
???二、經(jīng)歷描述
在我初學編程時,因沒有掌握計算機相關專業(yè)的學習方法,走了不少彎路。
我總是想先“打好基礎”,再走下一步,但這需要時間、毅力與堅持。
我花了很大氣力學習,但都事倍功半!
我想找到效率更高的學習方法,于是我開始瀏覽美國計算機四大名校的課程網(wǎng)站。
經(jīng)過一番研究,自學幾門課程后,我發(fā)現(xiàn)了他們的教學套路:
教授理論知識(一),小作業(yè),用于鞏固理論知識(一)
教授理論知識(二),小作業(yè),用于鞏固理論知識(二)
大作業(yè),編程實踐,需要用到理論知識(一)與(二)
教授理論知識(三),小作業(yè),用于鞏固理論知識(三)
教授理論知識(四),小作業(yè),用于鞏固理論知識(四)
大作業(yè),編程實踐,需要用到理論知識(三)與(四)
項目作業(yè),編程實踐,多人協(xié)作,需要用到理論知識(一)~(四)+ hits
重復上述過程,一般重復4~6次,中間穿插期中考試,最后期末考試
由此“套路”總結出另一種學習方法——“迭代學習”法:
理解待解決的問題
學習部分理論知識
動手實踐嘗試解決,無法解決,回到1或2
成功解決抓緊總結
???三、經(jīng)驗總結
越早適應“迭代”學習法對你越有利。
大多數(shù)時候你沒有足夠的時間來“學完再做”。
若你在“迭代”學習過程產(chǎn)生的焦慮、沮喪、挫敗感,請及時排解
排解后記得回來,堅持才能勝利!
???四、個人建議
學習《算法設計》在借鑒學習《數(shù)據(jù)結構》的經(jīng)驗的同時,需要做適當調整——在每次大迭代中應用“迭代”學習法:
第一次迭代,熟悉常用的算法設計策略,掌握策略的使用方法及適用的場景
其實學習《數(shù)據(jù)結構》時你已經(jīng)學了不少經(jīng)典算法
帶著學到的算法設計策略回頭總結、歸納經(jīng)典算法
可以在紙上畫畫設計策略與經(jīng)典算法的關系圖,是一對一,一對多,還是多對多
這個階段的重點,在腦中建立常用算法設計策略與經(jīng)典算法的對應關系
如果個人能力不錯,可考慮與《數(shù)據(jù)結構》第三次迭代同時進行
第二次迭代,靈活運用算法設計策略,解決實際問題
大量的解決問題,在此過程中總結出你個人解決問題的流程
可以針對某項設計策略進行專項訓練,但要考慮實際需求——工作、面試、競賽
此階段的重點就是解決《數(shù)據(jù)結構》第三次迭代中的隱藏關卡,同時培養(yǎng)解決問題的感覺、自覺
別忘了“迭代”學習方法
大量訓練、多與他人探討、擴展自己的思路并及時總結
第三次迭代,對給定問題能運用數(shù)學證明你的算法設計策略是正確的、可行的、高效的
這個階段要做的事本應該融入到前兩次迭代中的,甚至更早比如在離散數(shù)學課上
之所以單抽出來是因為有太多的人因這個“攔路虎”而徘徊在“算法設計”的大門前遲遲不敢踏入半步,更有甚者轉身離開了就再也沒回來......
如果你不擅長數(shù)學,或不打算從事科研及對數(shù)學要求較高的工作,可以跳過
對于打算從事科研及對數(shù)學要求較高的工作的人來說,這也可以算迂回策略
可以先從教材對經(jīng)典算法的證明學習,然后重走第二次迭代實踐(這才是看CLRS的時機)
這個階段的重點,有意識地運用數(shù)學來決定設計策略的選取
???五、追求目標
推薦閱讀
(點擊標題可跳轉閱讀)
老鐵,三連支持一下,好嗎?↓↓↓
