程序员养成指南

        坚实的计算机科学基础是成为一名成功软件工程师的重要条件,该指南为那些想进入学术研究和非学术研究领域的学生们提供了编程知识学习路径。你可能会使用该指南来选择课程,但为了能圆满毕业,请保证你对专业课程的学习。该指南中提供的在线资源并不能取代你在大学中的课程...java

        指南使用须知:python

        1.请根据本身的具体状况使用该指南。git

        2.在指南以外,可能仍有不少其余须要学习的内容。程序员

        3.学完本指南的内容并不能保证你能得到谷歌的某项工做。github

        4.该指南会依状况更新或者更改。算法

        你能够在Google +上关注“Google Students”学习额外的技巧、资源或者其余学生感兴趣的开发内容。spring

        学术研究方向课程推荐apache

        CS Course入门编程

        在线资源:Udacity - intro to CS course 和 Coursera - Computer Science 101.服务器

        至少使用一门面向对象编程语言编码:C++, Java, or Python

        初级在线资源: Coursera - Learn to Program: The FundamentalsMIT Intro to Programming in JavaGoogle's Python ClassCoursera - Introduction to PythonPython Open Source E-Book

        中级在线资源:  Udacity's Design of Computer ProgramsCoursera - Learn to Program: Crafting Quality CodeCoursera - Programming LanguagesBrown University - Introduction to Programming Languages

        学习其余编程语言

        好比:Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.

        在线资源: w3school.com - HTML TutorialCodeAcademy.com

        测试代码

        学习如何捕捉bug,建立测试以及破解你的软件。

        在线资源: Udacity - Software Testing MethodsUdacity - Software Debugging

        不只要会测试代码,还要会测试本身开发的应用的漏洞,学会利用工具http://t.cn/8F3RM1V

        学习逻辑推理和离散数学内容

        在线资源: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 RoboticsNatural Language ProcessingMachine Learning

        学习如何构建编译器

        在线资源: Coursera - Compilers

        加密

        在线资源: Coursera - CryptographyUdacity - Applied Cryptographyhttp://t.cn/zQ6JvmN

        学习并行编程

        在线资源: Coursera - Heterogeneous Parallel Programming


        非学术方向课程推荐

        课堂以外的项目工做

        创建并维护网站、搭建本身的服务器以及构建机器人。

        在线资源: Apache List of ProjectsGoogle Summer of CodeGoogle Developer Group

        操做大型系统中的一小部分

        好比代码库,阅读和理解现有的代码,跟踪文档以及进行调试。Github是一个阅读学习其余人代码或者提交项目的好地方。

        在线资源: GithubKiln

        和其余程序员合做项目

        可帮你提高团队工做中的沟通合做能力,并从其余团队成员身上学到本身不具有的东西。

         练习算法知识和编程技巧

         经过编程竞赛来联系你的算法知识,好比CodeJam或者ACM的International Collegiate Programming Contest.

         在线资源: CodeJamACM ICPC

         学会10大编码原则:http://t.cn/RzSNLMo

        成为助教

        经过教授学生来巩固本身的知识。

        软件工程实习经历

        要在实习开始前就申请实习。在美国,学生的实习时间是夏季的5-9月,但会提早几个月开放申请。

        在线资源: google.com/jobs

相关文章
相关标签/搜索