震撼:在清华听朱仲涛老师的"数据结构"课

admin 1月前 78

2005年准备研究生考试的时候,我旁听了朱仲涛老师的"数据结构"课,当时的感觉只能用两个字来形容:震撼。在他的课上,我对数据结构有了全新的认识,对计算机也有了一点与以往不同的了解。


他的讲课风格非常独特,他只用1/5的时间简述一下要讲的内容,剩下的时间都是当场写程序。著名的约瑟夫环、Dijkstra算法、Prime算法、快速排序、堆排序、锦标赛排序、Tarjin强连通分量、Convex Hull等深的浅的,教材上有的没有的,全部在课堂上从0开始实现:每遇到一个算法,一边写程序,一边讲解,不懂就将程序的运行结构拿出来分析,并不时地穿插离散数学、概率论、内存管理、C语言、汇编语言等知识,几乎将我们学到的东西非常恰到好处地拿出来,让我们从心里面觉得原来所有的知识是连贯的,我们之前的积累都是有用的,并且富有成就感。


我清晰地记得他在工业工程系课堂上讲"栈"的时候,用计算几何中的Convex Hull(计算几何中求凸包的算法,由美国ACM大牛Graham发明,该算法通过nlogn复杂度求出平面中一堆点的最外层包围矩形边界)来显示栈的使用。这个算法在A4纸上写说明最少也要两页,加上里面具体的技术,个人觉得可以给3个小时的时间来考查一个训练有素的程序员是否合格。而朱老师在1.5小时的时间里,一边讲,一边写,用最优雅的方式,完整地实现了这个算法,写完程序,一个编译错误也没有,成功运行,随机的点,优雅的边界,当时全班鼓掌两分钟。他说:"我很自信,即使是最顶级的程序员,也不能将我的代码优化多少了。"


他的课让我明白:"数据结构",以及一切计算的课程里面,凡是自己不理解的东西,自己说不清道不明的东西,其实有很多人是理解的。我的老师没有给我必要的关键性指导,但,不可否认有一些同学,他们总是先知先觉,他们总是会问"为什么这门课程要这么上",他们总是会思考自己是不是走在正确的路上,于是他们大量丰富自己的实践,从而也优雅地完成了本科学业。但遗憾的是,我和大部分我的同学们,就这样,因为缺乏必要的指导,迷迷糊糊、庸庸碌碌地过完了本科。
现在回想过去,才发现自己当时多么无知、多么机械。其实,不懂的时候,不管任何时候,你都可以去问老师、同学,从而节省大量的时间和精力。我们必须在年轻的时候有意地培养自己独立思考的能力,经常想一想,我要的是什么、为什么要做这件事、做这件事有什么好方法、这样做有什么好处和坏处、如何改进等,也要与人交流、沟通,讲出自己的想法,请别人指正。我们需要培养的是自己的思考方式,而不是简单地获取知识。


计算机专业需要大量时间,需要付出大量精力,也需要极大的耐心。但大部分像我一样的80后都做不到。而做到的,现在几乎没有例外地都找到了很好的工作。

最新回复 (0)
返回
发新帖