Programmer Development Guide and programmer Guide
A solid foundation in computer science is an important condition for a successful software engineer. This Guide provides programming knowledge learning paths for students who want to enter academic and non-academic fields. You may use this guide to select a course, but ensure that you study the professional course to complete graduation. The online resources provided in this Guide cannot replace your college courses...
Instructions for use:
1. Please use this Guide according to your actual situation.
2. In addition to the Guide, there may still be many other things to learn.
3. After learning the content of this Guide, you cannot guarantee that you can get a job from Google.
4. This Guide will be updated or changed as needed.
You can follow "Google Students" on Google + to learn additional skills, resources, or development content that other Students are interested in.
Recommended courses for academic research
CS Course getting started
Online Resources: Udacity-intro to CS course and Coursera-Computer Science 101.
Use at least one object-oriented programming language encoding: C ++, Java, or Python
Beginner online resources: 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
Intermediate online resources: Udacity's Design of Computer Programs, Coursera-Learn to Program: Crafting Quality Code, Coursera-Programming Languages, Brown University-Introduction to Programming Languages
Learn other programming languages
For example: Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.
Online Resources: w3school.com-HTML Tutorial, CodeAcademy.com
Test code
Learn how to capture bugs, create tests, and crack your software.
Online Resources: Udacity-Software Testing Methods, Udacity-Software Debugging
Not only to test the code, but also to test their own development of application vulnerabilities, learn to use the tool http://t.cn/8F3RM1V
Learning logical reasoning and discrete mathematics content
Online Resources: MIT Mathematics for Computer Science, Coursera-Introduction to Logic, Coursera-Linear and Discrete Optimization, Coursera-Probabilistic Graphical Models, Coursera-Game Theory
Learning logical algorithms and data structures
Learn Basic Data Types (stacks, queues, and packages), sorting algorithms (fast sorting, Merge Sorting, and heap sorting), data structures (Binary Search Tree, red/black tree, and hash table) and Big O problems.
Online Resources: MIT Introduction to Algorithms, Coursera Introduction to Algorithms Part 1 & Part 2, List of Algorithms, List of Data Structures,
Book: The Algorithm Design Manual
Learn operating system knowledge
Online Resource: computing UC Berkeley Computer Science 162
Artificial Intelligence
Online Resources: Stanford University-Introduction to Robotics, Natural Language Processing, Machine Learning
Learn how to build a compiler
Online Resource: Coursera-Compilers
Encryption
Online Resources: Coursera-Cryptography, Udacity-Applied Cryptography, http://t.cn/zQ6JvmN
Learning parallel programming
Online Resource: Coursera-Heterogeneous Parallel Programming
Non-academic course recommendations
Projects outside the classroom
Build and maintain websites, build your own servers, and build robots.
Online Resources: Apache List of Projects, Google Summer of Code, Google Developer Group
A small part of a large operating system
For example, you can read and understand the existing code library, trace documents, and perform debugging. Github is a good place to read and learn other people's code or submit projects.
Online Resources: Github, Kiln
Partners with other programmers
It helps you improve your team's Communication and Cooperation skills and learn from other team members what you don't have.
Practice algorithm knowledge and programming skills
Contact your algorithm knowledge through a Programming competition, such as CodeJam or ACM's International Collegiate Programming Contest.
Online Resources: CodeJam, ACM ICPC
Learn 10Big coding principles: Http://t.cn/RzSNLMo
Become Ta
Consolidate your knowledge by teaching students.
Software Engineering Practice
Apply for an internship before the internship starts. In the United States, students are offered internships between 5 and 9 months in the summer, but applications will be made available several months in advance.
Online Resources: google.com/jobs