网上偶尔发现的一篇好文,读完顺手推荐给大家。
英文原版
中文翻译版
另外在推荐一下孙志刚老师在知乎的回答Google发布了程序员养成指南,国内互联网巨头是否也有类似的指南和课程推荐?
Recommendations for Academic Learnings
Introduction to CS Course
Intro to Computer Science
Computer Science 101
Code in at least one object oriented programming language
这里根据自己的兴趣选择了相关的几门。
入门
Learn to Program: The fundamentals
Google’s Python Class
An Introduction to Interactive Programing in Python
How to Think Like a Compter Scientist
高阶
Design of Computer Programs
Learn to Program: Crafting Quality Code
更多地其他语言的课程,可以上w3cschool.com和codeacademy.com上去自己找。
Test Your Code
Software Testing: How to make software fail
Software Debugging: Automating the Boring Tasks
Develop logical reasoning and knowledge of discrete math
Mathematics for Computer Science
Introduction to Logic
Linear and Discrete Optimization
Probabilistic Graphical Models
Game Theory
Game Theory II: Advanced Applications
Algorithms and Data Structures
Introduction to Algorithms
Algorithms, Part I
Algorithms, Part II
List of algorithms
List of data structures
The Algorithm Design Manual
Develop a strong knowledge of operating systems
注:下面这个链接是YouTube上的,请首先学会科学上网。
UC Berkeley Computer Science 162
另课件PPT在这里
AI, Compilers 和Cryptography暂略过
Learn Parallel Programming
Heterogeneous Parallel Programming
Recommendations for Non-Academic Learnings
这部分是一些实践相关的建议,赞啊!
Work on project outsides of the classroom.
Create and maintain a website
Build your own server
Build a robot
Work on a small piece of a large system, read and understand existing code, track down documentation, and debug things.
Github is a great way to read other people's code or contribute to a project.
Work on project with other programmmers.
Practice your algorithmic knowledge and coding skills.
CodeJam
ACM
我补充几个:leetcode, hackrank, codeforces.
Become a Teaching Assistant
Intership experience in software engineering