Skip to main content

想在美国找CS软件工作?WARALD提供需要学习的书籍和课程名单,绝对从入门级讲解!

Make a Donation
FatWallet Coupons and Deals计算机(CS)专业在美国最好找工作,Warald在《[美国就业Warald指数]数据分析各专业在美国找工作难易程度和工资水平》中已经指出。现在想找计算机软件工作的人很多,各个专业学生都有想转CS的。关于该如何动手、该学习哪些知识,网上有各种推荐、众说芸芸。
周星驰版的《鹿鼎记》里,陈近南指着高高的绝世武功书架,对不会武功的小宝说:我是看了三年,练了三十年,才有今天的境界。Warald不会像陈师傅那样,不会对着薄弱甚至零基础的你,潇洒指一下算法导论、career cup、leetCode,然后做高人状飘然而去,留下你硬啃天书~
Warald希望提供一个可行也相对容易实现的学习计划,希望你能从入门学起、循序渐进。Warald综合各种信息,针对如何在美国IT公司找工作,给出了下面这个书籍和课程名单。所有推荐的东西,在网上都有能搜索到、都有免费下载。
如果你基础很好,读算法导论易如反掌、应付各种面试题目不在话下,那你当然应该跳过这个文章,早点去搞定工作。Warald敬请您在找到工作之后,来一亩三分地找工求职版分享一下经验、提供一下公司内推,帮帮其他人。
Warald提供留学申请服务,每年都有客户转专业甚至零基础读CS类专业,我也提供后期就业辅导。这个帖子的部分内容,也来自于我跟客户之间的一些讨论。
先说两个网站,一个是udacity.com,一个是coursera.org,都提供免费的在线公开课程,很多功课全球几十万人一起学习。
《第一阶段》筑基
如果你不知道什么是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)也大体有眉目了,然后就是根据自己的兴趣,补充相关专业知识了。
最后,Warald提醒:
1)如果你要在美国找工作,看书就看英文的。
2)如果要来讨论A语言比B语言好啊,C书籍比D书籍好啊,D功课讲的太浅啊,请去一亩三分地EECS专版或者编程算法面试题版块里找共鸣。Again,Warald提供这个名单的目的,是从在美国找工作的角度,循序渐进、从入门讲起,而且我也只讲较为主流的Java路线。
3)无论别人提供的书籍和课程名单有多好,最终还是要靠你坚持不懈学下来。
4)我不打算劝所有人转cs;要不要转,你自己拿主意。这个帖子的读者应该是已经决定要转cs的,我这里提供how。
–Warald (Email: iamxiaoning@gmail.com)
博客: http://www.1point3acres.com/
微博:http://www.weibo.com/warald
欢迎转载,转载必须在标题注明转载,在文章正文开始之前而不是最后,用不小于正文的字体大小,肉眼可以清楚识别的颜色,一字不漏的附带以上三行内容。否则视为侵权!感谢合作。

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...