本文转自w大

《第一阶段》筑基

如果你不知道什么是for/while lopp、不知道什么是list,建议你先上这门公开课: UDacity CS101:Introduction to Computer Science/Building a Search Engine https://www.udacity.com/course/cs101 学完了以后,好歹对基本的programming control flow, very basic data structure熟悉一下。

绝大多数的理工科学生,本科期间是上了C语言的;如果你是美本,很可能上过其他编程语言,这就算消除了零基础了。

《第二阶段》入门

你必须先学Java和SQL,Warald推荐的书籍如下: 1)Head First Java 目前市面上要求Object oriented programming尤其是Java的工作是最多的。这本书最大的优点就是容易读懂,无论是内容讲解还是大量图片设计,都非常容易理解。 2)A First Course in Database Systems,作者是Jeffrey D. Ullman, Jennifer Widom 用SQL查询数据库是基本技能。基本上你会英语就能读懂这本书、学会SQL。 Warald非常推荐转专业学CS的同学从这本书入手来培养兴趣,计算机/管理信息系统甚至Business/Marketing等行业,有些人的日常工作就是用SQL处理数据。

coursera之前有过Daphne Koller的database公开课,貌似下面要换成Jennifer Widom来教(https://class.coursera.org/db/class/index),上这门课程也可以。

读完这两本书,下面你要继续学Java和数据结构: 3)Data Structures and Algorithms in Java Warald推荐Berkeley CS61b:http://www.cs.berkeley.edu/~jrs/61b/。这门课程是给大一新生上的,并不高深,里面推荐了head first java,也推荐了Data Structures and Algorithms in Java。据joyce在一亩三分地里说,这个老师是berkeley计算机系本科教课最清楚的老师之一,所有的lecture video都在youtube上,notes都可以自由下载。作业和projects也都在网上,可以自己练习。 另一个选择是coursera的algorithm课程,Princeton大学Robert Sedgewick教授开的,算法跟数据结构都有了,作业不错,也是用Java,以前开课时一亩三分地里有人组织一起上课:http://www.1point3acres.com/bbs/thread-37519-1-1.html。最近正好在开Round II。

公开课最大的好处是可以得到及时的feedback,而berkeley的CS61b这类传统的video下载观看模式,你只能闷头做题,作对作错都不知道。

如果你们学校有类似课程,你可以去选课或者旁听,但是一定要做作业、练习编程!否则这门课就算是白上了!

熬到这里为止,你已经具备最基本的能力了!如果这些你早就会了,恭喜!你的书没白念!

下面Warald建议你更深入的学习Java: 4)Thinking in Java 这本书很经典,但是不适合作为入门书籍。学完了前面两本java书,你可以翻着看看这本,会有帮助。 然后是一个重头戏: 5)Programming Interview Exposed 这本书籍不是“课本”,不是“课程”,而是教你做各种常见面试题目的。 很多人来问Warald:我是小白,请问该如何准备面试求职?这本书就是我的回答。熟练掌握这本书籍的内容,是你找到工作的基础。

完成了上面这五步,你就已经具备了在美国找工作的基本条件了;尽管没人敢保证你一定能找到工作,但是即使只会这些,你已经“有可能”找到工作,尤其是不瞄准google、facebook等热门公司,或者找对软件开发技能要求不高的工作。

各位同学,计算机/CS和其他专业一个很大的不同,就是容易上手、容易自学成才!你不需要焊电路板、做化学实验(这些都需要设备和钱),下载电子书和免费软件,spend your time,use your talent,就可以了! 你离在美国找到工作的距离,可能只有这五本书的厚度。

《第三阶段》进级

要全面扎实的掌握计算机学科知识,要想在找工作的时候稳拿offer、获得更多更佳的就业选择,当然不可能只学前面的五本书。基础教育可以有稳定可循的套路,而往高处进级就复杂了,有些人也未必能训练出来,否则岂不是人人都去google、linkedin、微软工作了?

从找工作的角度来看,下面是你应该做的: 6)刷career cup和leetcode题目 一亩三分地论坛有个编程算法面试题专版(http://www.1point3acres.com/bbs/forum-84-1.html),近期有人组织大家一起刷题讨论:http://www.1point3acres.com/bbs/thread-48094-1-1.html。 同时,Warald建议你继续在udacity和coursera上课比如machine learning、artificial intelligence,学了都会很有帮助。如果你在本校选计算机课程没选上,那更是应该利用这种免费的机会,听斯坦福等牛校牛人讲课。

对于在美国读书的同学来说,进入这个进级阶段,往往也是你在美国读书的中晚期了,你已经上了网路、操作系统、软件工程等课程,简历逐渐充实了,甚至对于将来做哪个行业或者方向(data management/mobile/web front-end/etc)也大体有眉目了,然后就是根据自己的兴趣,补充相关专业知识了。

http://www.horstmann.com/corejava.html