This guide provides tips and resources to help you develop your technical skills (academically and non-academically) through self-paced, hands-on learning.
This guide is intended to target Computer Science students seeking an internship or university grad role at Google.
|Take an “Introduction to CS” course||Focus on basic coding instructionsOnline resources:|
|Code in (at least) ONE object-oriented programming language (C++, Java®, Python®)||Beginner online resources:
Intermediate online resources:
|Learn other programming languages||Add to your repertoire:
|Test your code||Learn how to catch bugs, create tests, and break your softwareOnline resources:|
|Develop logical reasoning and knowledge of discrete math||Online resources:|
|Develop a strong understanding of algorithms and data structures||Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), data structures (binary search trees, red-black trees, hash tables), and Big O.Online resources:|
|Develop a strong knowledge of operating systems||Online resources:UC Berkeley Computer Science 162|
|Learn UX design||Online resources:Udacity – UX Design for Mobile Developers|
|Learn artificial intelligence||Online resources:|
|Learn how to build compilers||Online resources:Coursera – Compilers|
|Learn cryptography||Online resources:|
|Learn parallel programming||Online Resources:Coursera – Heterogeneous Parallel Programming|
|Work on projects outside of the classroom||Create and maintain a website, build your own server, or build a robotOnline resources:|
|Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug||GitHub is a great way to read other people’s code or contribute to a projectOnline resources:|
|Work on projects with other programmers||This will help you improve your ability to work well in a team and enable you to learn from others.|
|Practice your algorithmic knowledge and coding skills||Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.Online resources:|
|Become a teaching assistant||Helping to teach other students will help enhance your knowledge in the subject matter.|
|Gain internship experience in software engineering||In the U.S., internships take place during summer (May–September). Applications are usually accepted several months in advance.|
This list is adapted from Google Careers: Official Technical Development Guide.
Spread the word. Share the article with your friends who may find it helpful. Like our page to get additional tips and resources like this.