程式員養成指南,程式員指南
堅實的電腦科學基礎是成為一名成功軟體工程師的重要條件,該指南為那些想進入學術研究和非學術研究領域的學生們提供了編程知識學習路徑。你可能會使用該指南來選擇課程,但為了能圓滿畢業,請保證你對專業課程的學習。該指南中提供的線上資源並不能取代你在大學中的課程...
指南使用須知:
1.請根據自己的具體情況使用該指南。
2.在指南之外,可能仍有很多其他需要學習的內容。
3.學完本指南的內容並不能保證你能獲得Google的某項工作。
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
不僅要會測試代碼,還要會測試自己開發的應用的漏洞,學會利用工具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是一個閱讀學習其他人代碼或者提交項目的好地方。
線上資源: Github, Kiln
和其他程式員合作項目
可幫你提升團隊工作中的溝通合作能力,並從其他團隊成員身上學到自己不具備的東西。
練習演算法知識和編程技巧
通過編程競賽來聯絡你的演算法知識,比如CodeJam或者ACM的International Collegiate Programming Contest.
線上資源: CodeJam, ACM ICPC
學會10大編碼原則:http://t.cn/RzSNLMo
成為助教
通過教授學生來鞏固自己的知識。
軟體工程實習經曆
要在實習開始前就申請實習。在美國,學生的實習時間是夏季的5-9月,但會提前幾個月開放申請。
線上資源: google.com/jobs