大三下快结束了。从大二转到计科到现在算是学了编程两年了。
在准备考研之前,总结下这两年吧。
可以说从大二下开始才算是入了编程的门。在这之前,
大一学C++,当时根本不懂,就考试之前拿着课本赶紧看,什么多维数组,指针,类,虚函数,看着看着就记混了,当时只想应付考试,复习的时候只知道看书,根本不上机练习的。想理解并且记住是真的难。大一下在生科学的数据结构也等于没学,就考试周之前算略懂了套路。
到大二上,再一次学计科的数据结构,也没好好学,只是理解了包括树以前的基本概念,图一直都没看。直到考试才匆匆弄懂了希尔排序,BST什么的,图还是基本不懂。到最后六个作业要结束了才会写第一个多项式链表加减乘除那个题。
但大二上期间把计科的C++的教材认真看了几遍,并把例子都敲了下。可以说终于不再是纯小白了,至少会用C++,理解了初级的东西。当时还把之前生科那本数据结构书上的链表,栈,队列,树的内容照着敲,但理解的还是一般。
直到最后会了多项式链表那个题之后偶尔还对链表的next产生疑惑…,没弄清楚指针。
所以可以说截止到大二下开始,我的水平是:
会C++
数据结构,图以前的还行,(包括)图以后的不会。
- 其他技能基本没有
大二下的计组,数据库,也是马马虎虎,java选了但是混过来的,考试一点不会勉强60…。为了补数据结构,买了邓俊辉那本数据结构,跟着mooc学,大部分代码都实践了,包括之前的数据结构的书又反复看了很多遍。终于数据结构感觉都理解了。第二次感觉入门了(第一次是在认真看完计科的C++书之后)。
还买了《C++ primer》大致地都看了一下,除了基础语法又打牢了一些之外还会了STL基本用法。
大二下结束水平:
- c++还可以,也会STL
- 数据结构自认为都理解了,没有问题
- 学了计组、数据库,但是考完试就忘了…
- 暑假把java补了一下
真正好好学,进步最快的是大三上的那段时间。
- 买了《算法》,把数据结构的重点又实现了一遍,这时候各种排序才理解的非常清楚(之前学数据结构一直没看排序那部分)
- 刷了一段时间leetcode以及其他oj,对编程能力提升很大。回头看大二数据结构那些题感觉真的好简单,为什么当时就不懂呢…
这学期专业课有操作系统 ,编译原理,计网。当时并没有意识到这三门基础课有多重要,感觉没什么用,就又打算混过去。期间大部分时间都花在oj上了,还顺便学了下cocos2d-x。后来后半段觉得不能就这么再混过去了,才把这三门课拾起来。
操作系统留的实验室MIT的jos。算是半混过去了。不过后来又把答案的代码认真看懂并写了实验报告算是弥补了。理论部分就是看学堂在线的视频。
编译原理一开始看龙书,感觉难得爆批,又听说这课以后基本用不到,真的是一点都不想学了。但多亏了我们编译原理老师,真的很负责任,大学还没见过这么严格课。所以混不过去了只能好好做。汇编不会,就看了王爽的《汇编语言》前半部分。然后在网易云课堂找到了中科大的编译原理课,看了才恍然大悟,也不难嘛。这里真的得吐槽下龙书,对新手太不友好了。然后又回头把龙书看了下,好理解多了。最后从词法分析器,语法分析器到最后的C编译器都自己实现了。虽然功能简单但要求的都实现了,花了很多功夫,也算目前为止做的最大的一个东西了。给编译原理老师点赞,如果不是老师的严格要求,现在我对编译原理恐怕还是又厌又怕。
计网就不说了,因为本身基本的东西比较简单,补起来快。看看书就好了。
总之大三上这一学期可以说是最充实的一学期,学到的东西远远多于之前两年。感觉真正入了编程的门。
大三寒假在家20多天
- 又再一次补了javaSE
- 跟着视频去学了html,css,mysql
- 看了一些javaEE的东西,至少知道了一些名词…比如servlet,三大框架什么的。
- 装了linux,win双系统。想学linux,以及linux C编程但最后也没看几页。
- 以前一直不想考研的,大三上刷OJ,其实一直想的是赶紧刷完算法题然后做个项目,毕业工作。但这期间通过看知乎,论坛等等,明白了计算机基础真的很重要,所以好好学了那三门专业课,就没有去接着刷题以及做项目什么的。最后在家认真考虑自己的情况后还是决定考研。
大三下课变少了。一方面复习了些考研的东西,一方面开始看CSAPP。由于选了移动平台开发这门课,也做了些安卓。
大二就买了CSAPP准备看。但由于汇编太薄弱,每一次看到第三章后半部分的时候就放弃了。
看了小土刀的博客后,决心好好看完CSAPP并做完配套lab。但这一次还是在第三章的时候卡住了,又搁置了一段时间。
在反复思考学习方法和路线之后,终于决定必须攻克了CSAPP,就像小土刀说的
谁不想用最简单的方法获得最强大的能力,但是这又怎么可能。捷径,如果指的是最短的路径,那么也就是梯度上升最快的路径,更是最难的路径。靠什么去走完这段旅程呢?
靠自己。靠自己的思考。靠自己的百折不挠。
经过两个月终于把CSAPP和lab(除了architecture lab)都完成了。反思自己,以前学习总是想为了什么,什么有用就去学什么,所以每当看到前边那些汇编代码,想到自己以后可能很少会用到这些知识的时候,就总想赶紧跳过。为了现实的目的去学习固然也是对的,但是它让你少了一些沉静,多了一些浮躁。而学计算机偏底层一些的知识是不能急的,总想快点学完而囫囵吞枣是学不好的。
当你真的沉下心来,为了知识本身,为了那种对原理通透的感觉去学习的时候,什么都无法阻挡你的前进,路上还会充满乐趣。
这一次终于坚持到了最后,解锁了CSAPP!
CSAPP让我对学过的计组,操作系统都有了更清晰的理解。
掌握了C和汇编,弥补上了一直缺少的东西。
linux下命令,gcc,gdb等以及git都会了一些,而且有了学习linux兴趣。对考研计算机专业课的复习也会很有帮助(也是我最决定看CSAPP的一个原因)。
不得不说CSAPP真的是一本神书,配套的lab更是精华所在。都完成后,对内功,即整个CS体系的理解和计算机基础都有很大的提升。对自己的自信心也有很大的提升。
考完研后还想看的:
还想要看的:
《编码》
《SICP》(mooc)
《编译原理》 compiler这门mooc
《c++primer》配合习题要好好巩固
python,shell
《算法4》配合mooc
刷题:
leetcode刷完
PAT可以考试一波
《编程珠玑》
《剑指offer》
java通过《算法》这门课再进一步巩固,总结java类的一直重点,不熟的地方理解,总结
Linux方面:
关于linux下工作,命令的书籍:《鸟哥的linux私房菜》或者别的书。
gcc,gdb,makefile -> 《程序员的自我修养》
《Unix编程艺术》
《UNIX环境高级编程》
git、github 配合mooc
完成上边这些,计算机内外功就都挺扎实和全面了,可以说九阴九阳都会了。之后再学其他招式肯定轻松很多。想想还有点激动…
完成一项之后一定要总结成体系。只学不总结,那忘得比学的还快。
这学期要补大一电路的课,和学当时模电一样难受…,不禁觉得能学自己想学的东西,就挺幸福的了。
差不多就这样吧,到了大三结束,终于觉得自己初步明白了CS的道路要怎么走。只有不断地去学习,去思考,才会让你明白到底应该怎么学。
我们羡慕成功的人。乔丹六冠王篮球之神,科比无数次绝杀比赛,詹姆斯一比三大逆转终为克城捧杯。还记得刘翔雅典跳上领奖台的一刻,让多少国人自豪。里约中国乒乓,捍卫国球荣耀时的感动。Faker从巅峰到底谷再回巅峰的传奇,又让多少人热血沸腾。
我们都为英雄热血,为传奇感动。梦中谁不曾幻想过自己是他们中的某一个,甚至是小时候的奥特曼,孙悟空。
但他们谁又不是经历了千辛万苦?考研难么,难。但有上边那些人达成的成就难么?你敢幻想成为他们,那现在,考研这么一件远不及那些事的难度的事,你都不敢接么?你的勇气,难道只活在梦里?人生只有一次,为什么不follow your heart?
所以没什么好说的,也没什么好犹豫的。选的学校只有一个,也是最初的选择。
暑假就要正式复习了,加油吧!
清华计算机系已录取,我没有让自己失望。