Originally from: http://blog.jobbole.com/80621/
Technical Development Guide
To be a successful software engineer, you must have a solid foundation of computer science. This guide provides a self-learning pathway for college students to improve their technical skills in a professional and non-professional way. The reader can learn the courses described in this guide, but in order to graduate normally, please focus on your own professional. The online courses described in this guide are not a substitute for your college courses. But it can be added as a supplement, or as a computer-related introduction.
Instructions for use:
- Please decide for yourself how to use this guide
- In addition to what is covered in this guide, if you have anything else you want to learn, go ahead and learn!
- Even if you have studied everything in this guide, you cannot be sure that you will get Google's job.
- This guide will be updated or modified at any time, remember to check back anytime.
- Follow our Google for student account on Google + to get further tips, resources, and other students interested in development.
The recommendation of a preparatory style
- Introduction to Computer Science
Description: A computer science introduction is the basic content of the introduction of coding.
Online resources: Udacity–intro to CS Course, Coursera–computer Science 101
- Learn at least one object-oriented programming language: C + +, Java, or Python
Beginner Online Resources: 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 Lan Guages, Brown university–introduction to programming Languages
- Learn other programming languages:
Tip: You can choose one or more of these languages--java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell, Lisp, Scheme.
Online resources: w3school.com–html Tutorial, codeacademy.com
Tip: Learn how to track bugs, create tests, and breakpoints.
Online resources: Udacity–software testing Methods, Udacity–software debugging
- Develop logical thinking and learn discrete mathematics
Online resources: MIT Mathematics for Computer Science, coursera–introduction to Logic, coursera–linear and discrete optimization, Cou Rsera–probabilistic graphical Models, coursera–game theory
- Deep understanding of algorithms and data structures
Tip: Learn the basic data types (stacks, queues, and backpacks), sorting algorithms (Quick sort, merge sort, heap sort), data structures (binary search tree, red black tree, hash list), large O notation.
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
- Gain insight into operating system knowledge
Online resources: UC Berkeley Computer Science 162
Online resources: Stanford university–introduction to robotics, Natural Language processing, machine learning
- Learn how to build a compiler
Online resources: Coursera–compilers
Online resources: coursera–cryptography, udacity–applied cryptography
- Learn Parallel programming
Online resources:coursera–heterogeneous Parallel Programming
Online resources: coursera–heterogeneous Parallel Programming
- Access to projects outside the classroom
Tip: Create and maintain a Web site, build your own server, or build a robot.
Online resources: Apache List of Projects, Google Summer of Code, Google Developer Group
- Handle a small part of a very large system (code base), read and understand existing code, documentation, and Debug.
Tip: GitHub can be used to read the source code and contribute to a project.
Online resources: Github, Kiln
- Working together with other developers
Tip: This will help you improve your team's ability to work and learn new things from others.
- Targeted learning algorithm knowledge and improved coding capabilities
Tip: You can practice algorithmic knowledge in the Codejam or ACM programming contests.
Online resources: Codejam, ACM ICPC
- Be a teaching assistant to help others
Tip: Helping others can deepen your understanding of the field.
- Internship experience in software engineering
Note: The internship application should be applied in advance before the commencement of the internship. In the United States, the internship is in the summer (May to September), the application will generally be several months in advance.
Online resources: Google.com/jobs
Go: Google Technology Development Guide: Advice for college students to learn by themselves