堅實的計算機科學基礎是成爲一名成功軟件工程師的重要條件,該指南爲那些想進入學術研究和非學術研究領域的學生們提供了編程知識學習路徑。你可能會使用該指南來選擇課程,但爲了能圓滿畢業,請保證你對專業課程的學習。該指南中提供的在線資源並不能取代你在大學中的課程...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 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
不只要會測試代碼,還要會測試本身開發的應用的漏洞,學會利用工具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 Robotics, Natural Language Processing, Machine Learning
學習如何構建編譯器
在線資源: Coursera - Compilers
加密
在線資源: Coursera - Cryptography, Udacity - Applied Cryptography, http://t.cn/zQ6JvmN
學習並行編程
在線資源: Coursera - Heterogeneous Parallel Programming
非學術方向課程推薦
課堂以外的項目工做
創建並維護網站、搭建本身的服務器以及構建機器人。
在線資源: Apache List of Projects, Google Summer of Code, Google Developer Group
操做大型系統中的一小部分
好比代碼庫,閱讀和理解現有的代碼,跟蹤文檔以及進行調試。Github是一個閱讀學習其餘人代碼或者提交項目的好地方。
和其餘程序員合做項目
可幫你提高團隊工做中的溝通合做能力,並從其餘團隊成員身上學到本身不具有的東西。
練習算法知識和編程技巧
經過編程競賽來聯繫你的算法知識,好比CodeJam或者ACM的International Collegiate Programming Contest.
學會10大編碼原則:http://t.cn/RzSNLMo
成爲助教
經過教授學生來鞏固本身的知識。
軟件工程實習經歷
要在實習開始前就申請實習。在美國,學生的實習時間是夏季的5-9月,但會提早幾個月開放申請。
在線資源: google.com/jobs