谷歌公司发布的程序员养成指南
本文转载至 http://www.cocoachina.com/programmer/20141126/10268.html
程序员学习编程
坚实的计算机科学基础是成为一名成功软件工程师的重要条件,该指南为那些想进入学术研究和非学术研究领域的学生们提供了编程知识学习路径。你可能会使用该指南来选择课程,但为了能圆满毕业,请保证你对专业课程的学习。该指南中提供的在线资源并不能取代你在大学中的课程...
指南使用须知:
1.请根据自己的具体情况使用该指南。
2.在指南之外,可能仍有很多其他需要学习的内容。
3.学完本指南的内容并不能保证你能获得谷歌的某项工作。
4.该指南会依情况更新或者更改。
你可以在Google +上关注“Google Students”学习额外的技巧、资源或者其他学生感兴趣的开发内容。
学术研究方向课程推荐
CS Course入门
在线资源:Udacity - intro to CS course 和 Coursera - Computer Science 101.
至少使用一门面向对象编程语言编码:C++, Java, or Python
初级在线资源: 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 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
学习逻辑算法和数据结构
学习基础数据类型(堆栈、队列和包)、排序算法(快速排序、归并排序以及堆排序)、数据结构(二叉搜索树、红黑树以及哈希表)以及Big 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
学习并行编程
在线资源: Coursera - Heterogeneous Parallel Programming
非学术方向课程推荐
课堂之外的项目工作
建立并维护网站、搭建自己的服务器以及构建机器人。
在线资源: Apache List of Projects, Google Summer of Code, Google Developer Group
操作大型系统中的一小部分
比如代码库,阅读和理解现有的代码,跟踪文档以及进行调试。Github是一个阅读学习其他人代码或者提交项目的好地方。
和其他程序员合作项目
可帮你提升团队工作中的沟通合作能力,并从其他团队成员身上学到自己不具备的东西。
练习算法知识和编程技巧
通过编程竞赛来联系你的算法知识,比如CodeJam或者ACM的International Collegiate Programming Contest.
成为助教
通过教授学生来巩固自己的知识。
软件工程实习经历
要在实习开始前就申请实习。在美国,学生的实习时间是夏季的5-9月,但会提前几个月开放申请。
在线资源: google.com/jobs