译者注:本文是翻译自 Google Career 的一篇职业规划指南,需阅读原文的请自备墙梯。如下是译文:java
打好扎实的计算机科学基础对于成为一个成功的软件工程师是很是重要的。本指南主要关于如何提高本身的技术能力,很是适合学生用于制定教学课程,固然这里提供的网络资源,并不意味着就能够彻底取代现有的课程,正式的课程安排仍是要学的(除非你不想拿到毕业证书)。python
计算机科学课程导论,介绍编码的基本知识。git
在线资源:Udacity – intro to CS course, Coursera – Computer Science 101程序员
社区源码案例分享:http://www.jinhusns.com/Products/Download/?type=xcjgithub
初级在线资源: Coursera – 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 Languagesspring
注:添加到你的知识库中——JavaScript、CSS & HTML、Ruby、PHP、C、Perl、shell script、Lisp和Schemeshell
在线资源: w3school.com – HTML Tutorial, Codecademy, Udacity – Mobile Web Development, Udacity – HTML5 Game Developmentapache
注:学习如何捕捉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
注:了解基本的数据类型(栈、队列和包),排序算法(快速排序、归并排序、堆排序),数据结构(二叉搜索树、红黑树、哈希表),和算法的时间复杂度.
在线资源: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2, List of Algorithms, List of Data Structures, 书籍: The Algorithm Design Manual
在线资源:UC Berkeley Computer Science 162
在线资源: Udacity – UX Design for Mobile Developers
在线资源: Stanford University - Introduction to Robotics, Natural Language Processing, Machine Learning
在线资源:Coursera – Compilers
在线资源:Coursera – Cryptography, Udacity – Applied Cryptography
在线资源: Coursera – Heterogeneous Parallel Programming
注:能够是建立和维护网站,构建服务器,或打造机器人。
在线资源: Apache List of Projects, Google Summer of Code, Google Developer Group
注:能够在GitHub上阅读他人的代码,研究他们的项目。
注:这能有助于你提升团队合做能力,同时还能够取长补短。
注:经过相似于CodeJam和ACM国际大学生程序设计竞赛的方式来实践本身的算法知识。
这有利于加强和巩固自个人学科知识。
注:提早申请实习。好比说美国的实习期是在夏天的5至9月,那么你应该提早几个月就开始申请。