本科阶段的学生缺少一定的学习方法,本文列举出了一些建议(经验之谈,可能不一定对)。
在大一阶段:如果说对programming不感兴趣,那建议是转专业,并适当考虑以后的发展方向。
在大二阶段:应该能够确定自己在接下来的大学3年,想在哪方面得到强化。除了成为程序员,也有其他路可以走,那就要着重精力在自己的兴趣上面。
以下是为希望成为程序员的学生的建议:
每天敲50+行代码,以保证对编程的一种直觉。代码哪里来?教材,Leetcode,projecteuler.net,etc。抄嘛! 书非抄不能读也。
务必学好两组基础知识体系:《数据结构》&《面向对象》,这两组基础知识体系决定了以后的高度。
数据结构可参考教材,面向对象可参考之前给同学们发的Booch的代表作(几百页那个,英文可通过知云文献翻译,速度很快),如果觉得难,也可以看国人翻译的面向对象书籍(自己找)。
关于框架技术:不建议在没学数据结构和面向对象之前学习框架,学习应该是一个稳步上升的过程,步子不能迈太大,迈太大要扯到蛋!
框架技术其实水很深(要用容易,但要理解内部机制还是难):对于一般的软件开发框架比如SSM,里面最主要的知识其实来源于《软件工程》、《设计模式》,最核心也最难的知识来源于数据结构与算法。但对于算法框架比如OpenCV,CUDA,etc,数据结构与算法占主要,《软件工程》与《设计模式》占次要。
PS: 设计模式和软件体系结构高度相关,前者更直接,后者是为同学们开设的课程(大三)。
(希望成为合格的程序员)大二~大四阶段:积极参与学科竞赛或自己动手设计项目,一方面保证不盲目的编程,提升兴趣;另外一方面也为求职打好硬性条件基础。
(希望成为优秀的程序员):英语学好,算法学好,参考书目《算法导论》。其他的我也不知道了,我也只能算是一个合格的程序员。
如果希望考研:有针对性地准备考研课程,同时如果是考计算机专业的研究生,那就更要在编程上下功夫。并且注重绩点!加分项(但不必要):本科发表核心及以上级别的文章。
如果希望考公:这是我的知识盲区,不懂。
强调:除非是希望考研,不要过分注重绩点!编程能力和项目经验、竞赛经验比绩点在以后的求职过程中(程序员岗)更重要。