Google Image Logo

A Comprehensive Learning Path Recommended by Google

July 22, 2016

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.

How to use this guide

  • You can use this guide to determine which courses to take, but be sure stay on track with your courses required for your major to graduate.
  • Google encourages you to learn more outside of this guide. The more you know, the better!
  • The online resources Google have cited aren’t meant to replace courses available at your university, but they may help supplement your education or provide an introduction to a topic.
  • The information and recommendations in this guide were gathered through Google engagements with students and candidates in the field. It is a work-in-progress, living document, so be sure to periodically check back for updates.

Google Careers: Official Technical Development Guide

Recommendations and Resources

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:

  • JavaScript®
  • CSS & HTML
  • Ruby®
  • PHP®
  • Perl®
  • Shell® script
  • Lisp®
  • Scheme®

Online resources:

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.


  1. This is really helpful and overwhelming. How long would it typically take to grab all this content please?

  2. Vandana kumari says:

    Its really helpful…thanks for the post

  3. Lohitaksh Trehan says:

    awesome , now thats what i wanted

What do you think?

Leave a Reply