转:Google技术开发指南:给大学生自学的建议
原文来自于:http://blog.jobbole.com/80621/
技术开发指南
想要成为成功的软件工程师,必须拥有坚实的计算机科学的基础。本指南针对大学生,给出一条自学途径,让学生以科班和非科班方式提高技术技能。读者可以学习本指南中介绍的课程,但是为了能正常毕业,还是请侧重于自己本身的专业。本指南中介绍的在线课程无法代替你在大学中的课程。但可以作为其补充,或者作为计算机方面的介绍。
使用说明:
- 请自行决定如何使用本指南
- 除了本指南中介绍的内容,如果你有其他想学的,尽情去学吧!
- 即使学习了本指南中所有内容,也不能一定保证你能获得Google的工作。
- 本指南会随时更新或修改,记得随时回来看看。
- 关注我们的Google+上的Google for Student账号可以获得进一步的提示、资源,并认识其他对开发感兴趣的学生。
科班式建议
- 计算机科学简介
说明:计算机科学简介是介绍编码相关的基础内容。
在线资源:Udacity – intro to CS course、Coursera – Computer Science 101
- 至少学习一门面向对象编程语言:C++、Java或Python
初学者在线资源:Learn to Program: The Fundamentals、MIT Intro to Programming in Java、Google’s Python Class、Coursera – Introduction to Python、Python Open Source E-Book
中级在线资源:Udacity’s Design of Computer Programs、Coursera – Learn to Program: Crafting Quality Code、Coursera – Programming Languages、Brown University – Introduction to Programming Languages
- 学习其他编程语言:
提示:你可以选择这些语言中的一种或多种——Java Script、CSS、HTML、Ruby、PHP、C、Perl、Shell、Lisp、 Scheme。
在线资源:w3school.com – HTML Tutorial、CodeAcademy.com
- 测试你的代码
提示:学习如何追踪bug、创建测试和断点。
在线资源:Udacity – Software Testing Methods、Udacity – Software Debugging
- 开发逻辑思维并学习离散数学
在线资源:MIT Mathematics for Computer Science、Coursera – Introduction to Logic、Coursera – Linear and Discrete Optimization、Coursera – Probabilistic Graphical Models、Coursera – Game Theory
- 深入理解算法和数据结构
提示:学习基本的数据类型(栈、队列和背包)、排序算法(快速排序、归并排序、堆排序)、数据结构(二叉搜索树、红黑树、散列表)、大O表示法。
在线资源:MIT Introduction to Algorithms、Coursera Introduction to Algorithms Part 1& Part 2、List of Algorithms、List of Data Structures、Book: The Algorithm Design Manual
- 深入了解操作系统相关知识
在线资源:UC Berkeley Computer Science 162
- 学习人工智能
在线资源:Stanford University – Introduction to Robotics、Natural Language Processing、Machine Learning
- 学习如何构建编译器
在线资源:Coursera – Compilers
- 学习密码学
在线资源:Coursera – Cryptography、Udacity – Applied Cryptography
- 学习并行编程
Online Resources: Coursera – Heterogeneous Parallel Programming
在线资源:Coursera – Heterogeneous Parallel Programming
非科班的学习建议
- 接触课堂之外的项目
提示:创建并维护一个网站、构建自己的服务器、或构建一个机器人。
在线资源:Apache List of Projects、Google Summer of Code、Google Developer Group
- 处理一个非常大的系统(代码库)中的一小部分,阅读并理解已有的代码、文档,并进行调试。
提示:Github可以用来阅读源码并为某个项目做贡献。
- 与其他开发者共同工作
提示:这将帮你提升团队工作工作的能力,同时从他人那可以学到新东西。
- 有针对性的学习算法知识并提升编码能力
提示:可以在CodeJam或ACM 这些编程竞赛上练习算法知识。
- 做一个教学助手,帮助他人
提示:帮助他人可以加深你对该领域的理解。
- 软件工程师方面的实习经验
提示:实习申请要在实习开始前提前申请。在美国,实习期是在夏季(5月到9月),申请一般会提前几个月。
在线资源:google.com/jobs
转:Google技术开发指南:给大学生自学的建议的更多相关文章
- 《Google Glass开发指南》
<Google Glass开发指南> 基本信息 作者: BestApp工作室 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115349477 上架时间:2014-3-19 ...
- 移动IM开发指南1:如何进行技术选型
<移动IM开发指南>系列文章将会介绍一个IM APP的方方面面,包括技术选型.登陆优化等.此外,本文作者会结合他在网易云信多年iOS IM SDK开发的经验,深度分析实际开发中的各种常见问 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- Knockout应用开发指南(完整版) 目录索引
http://learn.knockoutjs.com/ 所有示例和代码都在在上面直接运行预览 注意:因为它用了google的cdn加速,所要要用代_理+_翻_墙才能正常加载 使用Knockout有 ...
- Knockout应用开发指南 第十章:更多信息(完结篇)
原文:Knockout应用开发指南 第十章:更多信息(完结篇) 1 浏览器支持 Knockout在如下浏览器通过测试: Mozilla Firefox 2.0+(最新测试版本:3.6.8) Goo ...
- [翻译]现代java开发指南 第二部分
现代java开发指南 第二部分 第二部分:部署.监控 & 管理,性能分析和基准测试 第一部分,第二部分 =================== 欢迎来到现代 Java 开发指南第二部分.在第一 ...
- [翻译]现代java开发指南 第一部分
现代java开发指南 第一部分 第一部分:Java已不是你父亲那一代的样子 第一部分,第二部分 =================== 与历史上任何其他的语言相比,这里要排除c语言和cobol语言,现 ...
- 腾讯云安全:开发者必看|Android 8.0 新特性及开发指南
欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 背景介绍 谷歌2017 I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 A ...
- [翻译]现代java开发指南 第三部分
现代java开发指南 第三部分 第三部分:Web开发 第一部分,第二部分,第三部分 =========================== 欢迎来到现代 Java 开发指南第三部分.在第一部分中,我们 ...
随机推荐
- UVa1628 UVaLive5847 Pizza Delivery
填坑系列(p.302) 既然不知道后面还要卖多少个就加一维状态嘛.. lrj写的O(n)转移?其实转移可以O(1) 貌似按x排序有奇效? #include<cstdio> #include ...
- C#多线程(下) 分类: C# 线程 2015-03-09 10:41 153人阅读 评论(0) 收藏
四.多线程的自动管理(线程池) 在多线程的程序中,经常会出现两种情况: 一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应 这一般使用ThreadPool(线 ...
- IIS7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理。=
本文转载:http://www.cnblogs.com/ctcx/archive/2012/07/19/2599741.html 在 Microsoft Visual Studio 2010 打开看了 ...
- Java HexString
byte[]和十六进制字符串相互转换 Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示. 所以我们就可以把每个byte转换成两个相应的16进制字符,即把by ...
- Delphi中一些常用的组合键值
Delphi中一些常用的组合键值 CTRL+A: #1 CTRL+B: #2 CTRL+C: #3 CTRL+D: #4 CTRL+E: #5 CTRL+F: #6 CTRL+G: #7 ...
- cflow察看工程函数调用关系+Linux 0.11 内核实验环境
http://savannah.gnu.org/projects/cflow http://tinylab.org/linux-0.11-lab/ http://ftp.gnu.org/gnu/cfl ...
- Java基础知识强化14:Java死亡竞赛题目解析
一个小型网站上发布了一个称为Java“死亡竞赛”的新项目.测验发布后,超过20000位开发者参加了测验.网站以20道关于Java的多选题为主.我们得到了众多开发者的测验统计数据,今天,我们非常乐意 ...
- Java——(八)Map之LinkedHashMap、TreeMap、EnumMap实现类
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.LinkedHashMap实现类 LinkedHashMap需要维护意识的插入顺序,因此性能 ...
- thread跟Runnable实现多线程
//两种实现方式的区别和联系: //在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处: //避免点继承的局限,一个类可以继承 ...
- 别人走的路--uap
首先,我先谈谈我个人的经历,我今年34岁了,做了10多年的ERP实施顾问,大学刚毕业的时候是做ERP软件开发的,后来转岗做了实施顾问.根据我的个人经验,我给你几点建议.1.既然是很大的公司,那么ERP ...