堅實的計算機科學基礎是成為1名成功軟件工程師的重要條件,該指南為那些想進入學術研究和非學術研究領域的學生們提供了編程知識學習路徑。你可能會使用該指南來選擇課程,但為了能美滿畢業,請保證你對專業課程的學習。該指南中提供的在線資源其實不能取代你在大學中的課程...
指南使用須知:
1.請根據自己的具體情況使用該指南。
2.在指南以外,可能仍有很多其他需要學習的內容。
3.學完本指南的內容其實不能保證你能取得谷歌的某項工作。
4.該指南會依情況更新或更改。
你可以在Google +上關注“Google Students”學習額外的技能、資源或其他學生感興趣的開發內容。
學術研究方向課程推薦
CS Course入門
在線資源:Udacity - intro to CS course 和 Coursera - Computer Science 101.
最少使用1門面向對象編程語言編碼: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
學習邏輯算法和數據結構
學習基礎數據類型(堆棧、隊列和包)、排序算法(快速排序、歸并排序和堆排序)、數據結構(2叉搜索樹、紅黑樹和哈希表)和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
操作大型系統中的1小部份
比如代碼庫,瀏覽和理解現有的代碼,跟蹤文檔和進行調試。Github是1個瀏覽學習其他人代碼或提交項目的好地方。
在線資源: Github, Kiln
和其他程序員合作項目
可幫你提升團隊工作中的溝通合作能力,并從其他團隊成員身上學到自己不具有的東西。
練習算法知識和編程技能
通過編程比賽來聯系你的算法知識,比如CodeJam或ACM的International Collegiate Programming Contest.
在線資源: CodeJam, ACM ICPC
學會10大編碼原則:http://t.cn/RzSNLMo
成為助教
通過教授學生來鞏固自己的知識。
軟件工程實習經歷
要在實習開始前就申請實習。在美國,學生的實習時間是夏季的5⑼月,但會提早幾個月開放申請。
在線資源: google.com/jobs