Tech Skills And Courses Google Recommends For Software Engineers

Having a solid foundation in Computer Science is important in being a successful Software Engineer. This guide is a suggested path for University students to develop their technical skills academically and non-academically through self paced hands-on learning. You may use this guide to determine courses to take but please make sure you are taking courses required for your major or faculty in order to graduate. The online resources provided in this guide are not meant to replace courses available at your University. However, they may help supplement your learnings or provide an introduction to the topic.

Using this guide:

Please use this guide at your discretion

– There may be other things you want to learn or do outside of this guide – go for it!

– Checking off all items in this guide does not guarantee a job at Google

– This guide will evolve or change – check back for updates

– Follow our Google for Students +Page to get additional tips, resources, and other students interested in development.

Recommendations for Academic Learnings

– Introduction to CS Course

Notes: Introduction to Computer Science Course that provides instructions on coding Online Resources: Udacity – intro to CS course, Coursera – Computer Science 101

– Code in at least one object oriented programming language: 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

Notes: Add to your repertoire – Java Script, CSS, HTML, Ruby, PHP, C, Perl, Shell. Lisp, Scheme.

Online Resources: – HTML Tutorial,

– Test Your Code

Notes: Learn how to catch bugs, create tests, and break your software

Online Resources: Udacity – Software Testing Methods, Udacity – Software Debugging

– Develop logical reasoning and knowledge of discrete math

Online Resources: MIT Mathematics for Computer Science, Coursera – Introduction to Logic, Coursera – Linear and Discrete Optimization, Coursera – Probabilistic Graphical Models, Coursera – Game Theory

– Develop strong understanding of Algorithms and Data Structures

Notes: Learn about fundamental data types (stack, queues, and bags), sorting algorithms (quicksort, mergesort, heapsort), and data structures (binary search trees, red-black trees, hash tables), Big O.

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

– Develop a strong knowledge of operating systems

Online Resources: UC Berkeley Computer Science 162

– Learn Artificial Intelligence Online Resources:

Stanford University – Introduction to Robotics, Natural Language Processing, Machine Learning

– Learn how to build compilers

Online Resources: Coursera – Compilers

– Learn cryptography

Online Resources: Coursera – Cryptography, Udacity – Applied Cryptography

– Learn Parallel Programming

Online Resources: Coursera – Heterogeneous Parallel Programming

Recommendations for Non-Academic Learnings

Work on project outside of the classroom.

Notes: Create and maintain a website, build your own server, or build a robot.

Online Resources: Apache List of Projects, Google Summer of Code, Google Developer Group

Work on a small piece of a large system (codebase), read and understand existing code, track down documentation, and debug things.

Notes: Github is a great way to read other people’s code or contribute to a project.

Online Resources: Github, Kiln

Work on project with other programmers.

Notes: 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

Notes: Practice your algorithmic knowledge through coding competitions like CodeJam or ACM’s International Collegiate Programming Contest.

Online Resources: CodeJam, ACM ICPC

Become a Teaching Assistant

Notes: Helping to teach other students will help enhance your knowledge in the subject matter.

Internship experience in software engineering

Notes: Make sure you apply for internships well in advance of the period internships take place. In the US, internships take place during the summer, May-September, and applications are usually open several months in advance.

Online Resources:


About lankapage

We are an online publication (Educational Purpose Blog) made up largely of what we call “disintermediated” news – that is news without a spin put on it by a journalist, published as it’s delivered to Lankapage. All copyrights belong to their respective owners. Images and text owned by other copyright holders are used here under the guidelines of the Fair Use provisions of United States Copyright Law. Images and text are used here only for the education purpose and are not intended to generate income for the blog, its employees, or its students. That makes us unique. All content is delivered to you as the writer or producer intended — leaving only you to make judgments about what you read or watch, not us.

Posted on January 2, 2015, in Sri Lanka. Bookmark the permalink. Comments Off on Tech Skills And Courses Google Recommends For Software Engineers.

Comments are closed.

%d bloggers like this: