谷歌推薦的電腦科學學習路線
要成為一名成功的軟體工程師,你必須具備紮實的電腦科學基礎。本自學指南適用於想要學習程式設計的大學生們,分為專業方向和非專業方向兩個系列。你可以藉助這個指南進行自學,但請首先修夠你的專業學分,以保證順利畢業。
本課程表中的課程不能代替大學課程,但它們能夠幫助你進一步學習電腦科學,或者對這個領域建立初步理解。
關於如何使用本學習指南的4點建議:
請考慮自己的實際情況進行學習。
如果你還想學習《指南》之外的其他課程,儘管上吧!
本指南僅供參考,即使學完這上面的所有課程,也不能保證你一定能進入谷歌工作。
本指南不定期更新。你可以在Google +上關注 Google for Students
【計算機專業方向的課程】
電腦科學導論課程
你可以選擇提供線上程式設計工具的計算機導論課程。
課程推薦:
學習至少一種面向物件程式語言,如C++,Java 或Python
入門課程:
中級課程:
學習其他的程式語言
To learn list:Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.
相關線上學習資源:
測試和提高自己的程式設計能力
例如:排查故障,建立測試,破解軟體
相關課程:
學習邏輯推理和離散數學
相關課程:
深入理解演算法和資料結構
學習基本的資料型別,如堆疊、佇列和資料包;
瞭解排序演演算法,如快速排序,二路歸併排序和堆排序;
瞭解資料結構,如二叉搜尋樹,紅黑樹和雜湊表。
相關課程:
深入瞭解作業系統
人工智慧相關課程
Stanford University:
如何開發一個編譯器
密碼學
並行程式設計
相關課程:Coursera - Heterogeneous Parallel Programming 【伊利諾伊大學香檳分校:異構並行程式設計】
https://www.coursera.org/course/hetero
【如果你側重應用方向】
專案開發相關課程
這方面的內容包括建立和維護一個網站,建立自己的伺服器,或開發一個機器人。
相關課程:
Apache List of Projects(注:這是apache.org提供的教程)
http://projects.apache.org/
如果你想了解一個大型系統的一部分(如程式碼庫),閱讀和理解程式碼,或跟蹤文件和排查故障,那麼你可以到Github上圍觀和學習別人的程式碼,並嘗試開發自己的專案。相關資源:Github, Kiln
如果你想通過學習提高與程式設計師合作的能力,那麼你可以先嚐試和程式設計師們共同完成一個專案。
如果你想補充演算法知識,練習程式設計技巧,可以參加CodeJam、ACM舉辦的國際程式設計大賽等活動。相關資源:CodeJam, ACM ICPC
如果你通過教學加深自己對計算機的理解,獲得軟體工程等相關領域的實習經驗,那麼你可以申請擔任相關課程的助教。注意要在實習期開始前提前申請喲!
在美國,學生通常在五月到九月參加實習,一般需要提前幾個月進行申請。