GS
Viewed 1163 Times
Viewed by 600 People
The lack of skilled IT workers is hurting the deployment of emerging technology, according to a new survey from Gartner. In areas from cloud to cybersecurity, this crisis is expected to last for years to come.
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: w3school.com - HTML Tutorial, CodeAcademy.com
- 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.
Comments:(0)