首页 > 代码库 > 受康奈尔笔记法启发设计的程序员算法手写本

受康奈尔笔记法启发设计的程序员算法手写本

  大多数程序员都习惯了平时在电脑上敲代码,但也有些情境要求我们手写代码,比如平时学习时做纸质笔记,完成老师布置的课程作业,同事之间交流讨论讲解思路,ACM比赛时手写分析算法,还有最常见的面试手写算法等。昨天看了康奈尔笔记法,觉得有点意思,于是想着把它应用到程序员的圈子里来,可以在面试等场合很好的向面试官阐述算法思路同时规范书写,希望能给大家带来一些帮助。

一、什么是康奈尔笔记法

技术分享

图1.康奈尔笔记法

  5R笔记法,又叫做康奈尔笔记法,是用产生这种笔记法的大学校名命名的。这一方法几乎适用于一切讲授或阅读课,特别是对于听课笔记,5R笔记法应是最佳首选。这种方法是记与学,思考与运用相结合的有效方法。

  康奈尔笔记系统把一页纸分成了三部分,就是左边四分之一左右和下面五分之一左右的空间单独划拨出来。右上那最大的空间是我们平时做笔记的地方,你按照你的习惯记录就行了;左边那竖着的一条空间叫做“线索栏”,是用来归纳右边的内容的,写一些提纲挈领的东西,这个工作不要在做笔记的时候做,而是在上完课之后马上回顾,然后把要点都写到左边,这样一方面马上复习了内容,另一方面理清了头绪。下面那横着的一栏是用来做总结的,就是用一两句话总结你这页记录的内容,这个工作可以延后一点儿做,起到促进你思考消化的作用,另外也是笔记内容的极度浓缩和升华。

  自从沃尔特·波克博士发明了康奈尔笔记法以来,这一笔记法被广泛应用于听课、阅读、复习和记忆材料。使用这一笔记法可以让你的笔记系统化,使你主动融入到知识的创造中去,提高你的学习力,从而帮助你取得学习成果。

 二、程序员算法手写本设计思想

技术分享

图2.程序员算法手写本设计图

  程序员算法手写本采用了康奈尔笔记法的三大模块划分原则,同时结合了程序书写本身的特性,共分为以下三个部分:

(1)【思路】:理清算法思路,可以图文并茂的分析算法,写出算法实现步骤、边界条件和测试用例等,为算法实现奠定基础,好的思路不仅能有效的向他人展示你的思考过程,帮助你清晰地写出算法,更能有效减少手写算法代码难以反复修改的弊端。(tip:可在“思路”上方留白处简单写上算法题目作为标题。)

(2)【算法实现】:根据上一步已经形成的思路,一步步写出相应的算法实现,行号模拟平时编译器里写代码的习惯,有助于规范格式和向他人讲解算法实现思路,为算法交流提供便利,为什么设计32行我想你们都会懂,因为程序员对这个数字很敏感,希望你也喜欢。(tip:可在“算法实现”上方写出对程序的命名,如程序需要几页纸共同实现也可以在这里标明页码。)

(3)【总结反思】:分析算法的时间复杂度和空间复杂度,总结所用的方法和可以进一步优化改进的地方,为解决follow up问题提供方案,写完代码后和面试官的交流过程都可以在这里继续进行分析。

三、如何使用

 笔者自己制作成了A4竖开的本子以方便使用,大家在写代码时可以自己在白纸本上画出这样的框架来启迪思路,让你的手写算法更规整更具说服力,也可以和现在非常流行的“方格本”结合使用(《聪明人用方格笔记本》这本书里详细讲解了它的用法和好处,此处不再赘述。),同时笔者提供了一个word版的“程序员算法手写纸”,很方便修改和定制,大家如果需要可以直接打印使用。东西虽然很简单,但笔者很用心的思考怎样才能用纸写出更优雅的程序,打动你的面试官。

  好了,轮子做好交给你们了,希望你们喜欢,如转载或用作其他用途请留言告知^__^。

 

  附:“程序员算法手写纸word版”百度云链接:http://pan.baidu.com/s/1pLi1aeZ 密码:oltr

受康奈尔笔记法启发设计的程序员算法手写本