Coursera《程序设计与算法》笔记——写在前面

2016/04/23
写在前面

本学期初想要开发一个Android App,从三月到现在,结合《JAVA语言程序设计》,把《Java核心技术 卷一 基础知识》基本过了一遍,跟着大神敲了几个Demo,当然因为懒,博客上的笔记就写了一份,其他的直接在书上画出来了事。

学完JavaSE基础后,一般来说,便要在JavaEE和Android Development中选择一个方向。结合寒假的阅读,草草地翻阅了郭霖大神的《第一行代码:Android》前九章和JavaEE的知识谱系,深感想要在CS领域有所建树,是需要一个完整的知识体系的。计算机系统、网络、算法与数据结构、数据库等领域的知识,也许已经有各种各样现成的库,但如果基础不扎实,自己永远造不了新的轮子,只能做一个码农的工作。很多前辈说,大多数科班出身的程序员相比培训班出身,最大优势就载于基础知识。当然,我同样怀疑在僵化的高校体制下,一个并不突出的学校的计算机课程能够给一个人的知识体系带来多大的提升。好在这也许是在教育资源方面最为公平的领域了,前辈的博客、MOOC、Stackoverflow、Github、优秀书籍(能快速阅读原著多么重要)给任何一个想学习的人提供了近乎无限的资源,我所需要投入的,是努力和智力,于是下决心把Computer Science的核心课程系统完整地过一遍。

CS2013 Final Report

暂时搁置了久负盛名的《Effective Java》和TIJ,转从最基础的课程开始。在几门基础课中,跟数学关系最密切的大概是算法和数据结构吧。写得比数学书还数学书的算导对于初学者确实不够友好,加上自己Java的基础,决定从Robert Sedgewick与Kevin Wayne合著的《算法(第四版)》开始,用一周多的时间刷掉了第一章。虽说自己是数学系的学生,可是那些组合数学、图论、抽象代数的内容还是超出了自己的能力范围,需要一些指导和适当的压力才能继续,不巧的是,Courera上来自Princeton University两位本书作者开设的Course已经在今年3月12日结束,便决定调整自己的计划,等待下一次开课。

Course

在此期间,一方面过一过网络方面的基础知识,另一方面,Coursera上正在进行授课的北京大学《程序设计与算法》(7门课程专项)风评不错,便决定Follow它们,学一学C++和基础的算法知识。便有了这系列的笔记。跟着Courera的好处是,学习的过程容易量化,可以很方便地给自己顶下每天的目标。有课程作业和助教批改,也能比较容易地更正自己的错误(有些经典书有习题没答案简直折磨人)。我给自己的目标是,在《计算导论与C语言基础》和《C程序设计进阶》阶段,每周完成不少于10Week的Lecture及附带的Assignments,并把每节课的笔记发在博客上,虽无多大参考价值,但也能激励自己按计划学习、课后认真整理吧。

Just do it!

2016-04-23

Post Directory