打下電腦科學的堅實基礎對成為成功的軟體工程師至關重要。本文這些建議來自Google,給大學生提供通過自學實踐學習以開發學術和非學術技能的路徑。
技術開發指南
想要成為成功的軟體工程師,必須擁有堅實的電腦科學的基礎。本指南針對大學生,給出一條自學途徑,讓學生以科班和非科班方式提高技術技能。讀者可以學習本指南中介紹的課程,但是為了能正常畢業,還是請側重於自己本身的專業。本指南中介紹的線上課程無法代替你在大學中的課程。但可以作為其補充,或者作為計算機方面的介紹。
使用說明:
- 請自行決定如何使用本指南
- 除了本指南中介紹的內容,如果你有其他想學的,盡情去學吧!
- 即使學習了本指南中所有內容,也不能一定保證你能獲得Google的工作。
- 本指南會隨時更新或修改,記得隨時回來看看。
- 關注我們的Google+上的Google for Student賬號可以獲得進一步的提示、資源,並認識其他對開發感興趣的學生。
科班式建議
- 電腦科學簡介
說明:電腦科學簡介是介紹編碼相關的基礎內容。
線上資源:Udacity – intro to CS course、Coursera – Computer Science 101
- 至少學習一門物件導向程式語言:C++、Java或Python
初學者線上資源: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
- 深入理解演算法和資料結構
提示:學習基本的資料型別(棧、佇列和揹包)、排序演算法(快速排序、歸併排序、堆排序)、資料結構(二叉搜尋樹、紅黑樹、雜湊表)、大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
- 學習並行程式設計
Online Resources: Coursera – Heterogeneous Parallel Programming
線上資源:Coursera – Heterogeneous Parallel Programming
非科班的學習建議
- 接觸課堂之外的專案
提示:建立並維護一個網站、構建自己的伺服器、或構建一個機器人。
線上資源:Apache List of Projects、Google Summer of Code、Google Developer Group
- 處理一個非常大的系統(程式碼庫)中的一小部分,閱讀並理解已有的程式碼、文件,並進行除錯。
提示:Github可以用來閱讀原始碼併為某個專案做貢獻。
- 與其他開發者共同工作
提示:這將幫你提升團隊工作工作的能力,同時從他人那可以學到新東西。
- 有針對性的學習演算法知識並提升編碼能力
提示:可以在CodeJam或ACM 這些程式設計競賽上練習演算法知識。
- 做一個教學助手,幫助他人
提示:幫助他人可以加深你對該領域的理解。
- 軟體工程師方面的實習經驗
提示:實習申請要在實習開始前提前申請。在美國,實習期是在夏季(5月到9月),申請一般會提前幾個月。
線上資源:google.com/jobs
打賞支援我翻譯更多好文章,謝謝!
打賞譯者
打賞支援我翻譯更多好文章,謝謝!
任選一種支付方式