受康奈爾筆記法啟發設計的程式設計師演算法手寫本

世紀緣發表於2016-11-28

 大多數程式設計師都習慣了平時在電腦上敲程式碼,但也有些情境要求我們手寫程式碼,比如平時學習時做紙質筆記,完成老師佈置的課程作業,同事之間交流討論講解思路,ACM比賽時手寫分析演算法,還有最常見的面試手寫演算法等。昨天看了康奈爾筆記法,覺得有點意思,於是想著把它應用到程式設計師的圈子裡來,可以在面試等場合很好的向面試官闡述演算法思路同時規範書寫,希望能給大家帶來一些幫助。

一、什麼是康奈爾筆記法

圖1.康奈爾筆記法

  5R筆記法,又叫做康奈爾筆記法,是用產生這種筆記法的大學校名命名的。這一方法幾乎適用於一切講授或閱讀課,特別是對於聽課筆記,5R筆記法應是最佳首選。這種方法是記與學,思考與運用相結合的有效方法。

  康奈爾筆記系統把一頁紙分成了三部分,就是左邊四分之一左右和下面五分之一左右的空間單獨劃撥出來。右上那最大的空間是我們平時做筆記的地方,你按照你的習慣記錄就行了;左邊那豎著的一條空間叫做“線索欄”,是用來歸納右邊的內容的,寫一些提綱挈領的東西,這個工作不要在做筆記的時候做,而是在上完課之後馬上回顧,然後把要點都寫到左邊,這樣一方面馬上覆習了內容,另一方面理清了頭緒。下面那橫著的一欄是用來做總結的,就是用一兩句話總結你這頁記錄的內容,這個工作可以延後一點兒做,起到促進你思考消化的作用,另外也是筆記內容的極度濃縮和昇華。

  自從沃爾特·波克博士發明了康奈爾筆記法以來,這一筆記法被廣泛應用於聽課、閱讀、複習和記憶材料。使用這一筆記法可以讓你的筆記系統化,使你主動融入到知識的創造中去,提高你的學習力,從而幫助你取得學習成果。

 二、程式設計師演算法手寫本設計思想

圖2.程式設計師演算法手寫本設計圖

  程式設計師演算法手寫本採用了康奈爾筆記法的三大模組劃分原則,同時結合了程式書寫本身的特性,共分為以下三個部分:

(1)【思路】:理清演算法思路,可以圖文並茂的分析演算法,寫出演算法實現步驟、邊界條件和測試用例等,為演算法實現奠定基礎,好的思路不僅能有效的向他人展示你的思考過程,幫助你清晰地寫出演算法,更能有效減少手寫演算法程式碼難以反覆修改的弊端。(tip:可在“思路”上方留白處簡單寫上演算法題目作為標題。)

(2)【演算法實現】:根據上一步已經形成的思路,一步步寫出相應的演算法實現,行號模擬平時編譯器裡寫程式碼的習慣,有助於規範格式和向他人講解演算法實現思路,為演算法交流提供便利,為什麼設計32行我想你們都會懂,因為程式設計師對這個數字很敏感,希望你也喜歡。(tip:可在“演算法實現”上方寫出對程式的命名,如程式需要幾頁紙共同實現也可以在這裡標明頁碼。)

(3)【總結反思】:分析演算法的時間複雜度和空間複雜度,總結所用的方法和可以進一步優化改進的地方,為解決follow up問題提供方案,寫完程式碼後和麵試官的交流過程都可以在這裡繼續進行分析。

三、如何使用

 筆者自己製作成了A4豎開的本子以方便使用,大家在寫程式碼時可以自己在白紙本上畫出這樣的框架來啟迪思路,讓你的手寫演算法更規整更具說服力,也可以和現在非常流行的“方格本”結合使用(《聰明人用方格筆記本》這本書裡詳細講解了它的用法和好處,此處不再贅述。),同時筆者提供了一個word版的“程式設計師演算法手寫紙”,很方便修改和定製,大家如果需要可以直接列印使用。東西雖然很簡單,但筆者很用心的思考怎樣才能用紙寫出更優雅的程式,打動你的面試官。

  好了,輪子做好交給你們了,希望你們喜歡,如轉載或用作其他用途請留言告知^__^。

 

  附:“程式設計師演算法手寫紙word版”百度雲連結:http://pan.baidu.com/s/1pLi1aeZ 密碼:oltr

相關文章