请注意,Warald这里说的不是如何成为大牛或者技术达人,无论成为高人靠先天灵性还是后天苦练,跟俺这个帖子的主旨无关。我这里说的是:如果一个人,从来没学过cs(比如非cs专业的),想学cs,但是毫无头绪,那他/他该如何入手?有哪些书籍、课程材料或者网上的资源,对于入门,会很有帮助?
Warald以前写过《[EECS申请与就业专辑]之计算机专业在美国的就业情况+如何选课如何学习》一文,尤其是在该系列文章下篇里谈过需要学习的三样基本功:
1)一门编程语言
2)一个操作系统
3)一个数据库
其中编程语言从学习的角度,无非是C++ or Java。但是学习的时候,最好结合着
4)Data Structure
论坛里一直有这方面的讨论,比如这几天的《难道只要练好coding就行了???》,但是依然不够具体,我想要的是很清楚的回答“具体看这本书、学习这个资料”对于你上路最有帮助,而不仅仅是点评。前段时间我也发起过《【活动号召-呼唤参与】我在美国上课的感受和总结》,但是这个可能侧重研究生层次的,再一个,对于新人来说,依然不够具体。
Warald毕业多年,早就过了翻书学基础的阶段,这里想跟各位在读的同学问一下,你们有没有好的资料可以推荐给新手学习?比如
a)浅显易懂的课本,不需要从技术的角度,讲的多么深入。for example,<A First Course in Database Systems>就是一本很容易懂的数据库入门书籍,没cs基础的人也可以拿来学。读过这本书的同学,也知道我说的“通俗易懂”是以什么为标杆的吧?我这里说的是“筑基”。
b)老师的slides、notes、assignments等等,比如美国这里,很多老师有自己的course page,有的老师隐藏不公开,但是也有些老师是资料公开的,这里尤其想问问美本,你们上课的时候,觉得哪门功课、哪位老师的课程资料好而且公开在网上,能否推荐一下,给出链接?
c)open courses。比如MIT, harvard等学校都有
d)任何其他资料,各位还知道吗?
如果你知道我说的四门课程的资料,那最好,我觉得新人应该从这些方面开始学起来打好基础;如果你有其他功课的资料,也欢迎share给大家。我觉得简洁易懂和侧重应用而不是理论的,对新人更合适。
谢谢你的参与!肯回答的筒子们,rp好,后面要被offer雨淋透~~我跟在后面加分!
请各位发言按照以下四门功课组织
1)Programming Language
2)Operating Systems
3)Database
4)Data Structure
把你认为好的资料回复在每个功课下; feel free to add other courses,但是这个帖子征集的简洁应用的入门性质资料,而不是高深理论;中英文不限,尽管我个人推荐直接看英文。
计算机(CS)专业在美国最好找工作已是共识,Warald在《[美国就业Warald指数]数据分析各专业在美国找工作难易程度和工资水平》中已经指出。现在想找计算机软件工作的人很多,各个专业学生都有想转CS的。关于该如何动手、该学习哪些知识,网上有各种推荐、众说芸芸。
周星驰版的《鹿鼎记》里,陈近南指着高高的绝世武功书架,对不会武功的小宝说:我是看了三年,练了三十年,才有今天的境界。Warald不会像陈师傅那样,不会对着薄弱甚至零基础的你,潇洒指一下算法导论、career cup、leetCode,然后做高人状飘然而去,留下你硬啃天书~
Warald希望提供一个可行也相对容易实现的学习计划,希望你能从入门学起、循序渐进。Warald综合各种信息,针对如何在美国IT公司找工作,给出了下面这个书籍和课程名单。
如果你基础很好,读算法导论易如反掌、应付各种面试题目不在话下,那你当然应该跳过这个文章,早点去搞定工作。Warald敬请您在找到工作之后,来一亩三分地找工求职版分享一下经验、提供一下公司内推,帮帮其他人。
先说两个网站,一个是udacity.com,一个是coursera.org,都提供免费的在线公开课程,很多功课全球几十万人一起学习。
. Waral 鍗氬鏈夋洿澶氭枃绔�,
《第一阶段》筑基
如果你不知道什么是for/while lopp、不知道什么是list,建议你先上这门公开课:
UDacity CS101:Introduction to Computer Science/Building a Search Engine
https://www.udacity.com/course/cs101
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的工作是最多的。这本书最大的优点就是容易读懂,无论是内容讲解还是大量图片设计,都非常容易理解。
Amazon链接:
用SQL查询数据库是基本技能。基本上你会英语就能读懂这本书、学会SQL。这本书Amazon上也有,图片链接:
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/ 使用的课本如下:
据joyce在一亩三分地里说,这个老师是berkeley计算机系本科教课最清楚的老师之一,所有的lecture video都在youtube上,notes都可以自由下载。作业和projects也都在网上,可以自己练习。这门课程是给大一新生上的,并不高深,里面推荐了head first java,也推荐了Data Structures and Algorithms in Java。
另一个选择是coursera的algorithm课程,Princeton大学Robert Sedgewick教授开的,算法跟数据结构都有了,作业不错,也是用Java,以前开课时一亩三分地里有人组织一起上课:http://www.1point3acres.com/bbs/thread-37519-1-1.html。最近正好在开Round II。
. 鐗涗汉浜戦泦,涓€浜╀笁鍒嗗湴
公开课最大的好处是可以得到及时的feedback,而berkeley的CS61b这类传统的video下载观看模式,你只能闷头做题,作对作错都不知道。
如果你们学校有类似课程,你可以去选课或者旁听,但是一定要做作业、练习编程!否则这门课就算是白上了!
熬到这里为止,你已经具备最基本的能力了!如果这些你早就会了,恭喜!你的书没白念!
下面Warald建议你更深入的学习Java:
. 1point3acres.com/bbs
下面Warald建议你更深入的学习Java:
. 1point3acres.com/bbs
4)Thinking in Java
然后是一个重头戏:
5)Programming Interview Exposed
这本书籍不是“课本”,不是“课程”,而是教你做各种常见面试题目的。
很多人来问Warald:我是小白,请问该如何准备面试求职?这本书就是我的回答。熟练掌握这本书籍的内容,是你找到工作的基础。
完成了上面这五步,你就已经具备了在美国找工作的基本条件了;尽管没人敢保证你一定能找到工作,但是即使只会这些,你已经“有可能”找到工作,尤其是不瞄准google、facebook等热门公司,或者找对软件开发技能要求不高的工作。. 涓€浜�-涓夊垎-鍦帮紝鐙鍙戝竷
各位同学,计算机/CS和其他专业一个很大的不同,就是容易上手、容易自学成才!你不需要焊电路板、做化学实验(这些都需要设备和钱),下载电子书和免费软件,spend your time,use your talent,就可以了! 你离在美国找到工作的距离,可能只有这五本书的厚度。
《第三阶段》进级. From 1point 3acres bbs
要全面扎实的掌握计算机学科知识,要想在找工作的时候稳拿offer、获得更多更佳的就业选择,当然不可能只学前面的五本书。基础教育可以有稳定可循的套路,而往高处进级就复杂了,有些人也未必能训练出来,否则岂不是人人都去google、linkedin、微软工作了?. 1point3acres.com/bbs
从找工作的角度来看,下面是你应该做的:
6)刷cracking the coding interview和leetcode题目
. 鍥磋鎴戜滑@1point 3 acres6)刷cracking the coding interview和leetcode题目
前者是本书,带答案讲解:
一亩三分地论坛有个编程算法面试题专版(http://www.1point3acres.com/bbs/forum-84-1.html),近期有人组织大家一起刷题讨论:http://www.1point3acres.com/bbs/thread-48094-1-1.html。. Waral 鍗氬鏈夋洿澶氭枃绔�,
同时,Warald建议你继续在udacity和coursera上课比如machine learning和algorithm,学了都会很有帮助。如果你在本校选计算机课程没选上,那更是应该利用这种免费的机会,听斯坦福等牛校牛人讲课。
对于在美国读书的同学来说,进入这个进级阶段,往往也是你在美国读书的中晚期了,你已经上了网路、操作系统、软件工程等课程,简历逐渐充实了,甚至对于将来做哪个行业或者方向也大体有眉目了,然后就是根据自己的兴趣,补充该领域的专业知识了。
地里很多同学表示:网上信息太多,书籍太多,不知道看什么好。地里很多人推荐过其他书籍,举几个例子。操作系统方面,拿到Google和Facebook的bumbing在求职总结里推荐:
-google 1point3acres
传送门:
OS还有另外一本赞誉很高的书籍,传送门:
最后,Warald提醒:
1)如果你要在美国找工作,看书就看英文的。
2)如果要来讨论A语言比B语言好啊,C书籍比D书籍好啊,D功课讲的太浅啊,请去一亩三分地EECS专版或者编程算法面试题版块里找共鸣。Again,Warald提供这个名单的目的,是从在美国找工作的角度,循序渐进、从入门讲起,而且我也只讲较为主流的Java路线。
3)无论别人提供的书籍和课程名单有多好,最终还是要靠你坚持不懈学下来。
1)如果你要在美国找工作,看书就看英文的。
2)如果要来讨论A语言比B语言好啊,C书籍比D书籍好啊,D功课讲的太浅啊,请去一亩三分地EECS专版或者编程算法面试题版块里找共鸣。Again,Warald提供这个名单的目的,是从在美国找工作的角度,循序渐进、从入门讲起,而且我也只讲较为主流的Java路线。
3)无论别人提供的书籍和课程名单有多好,最终还是要靠你坚持不懈学下来。

