Saturday, September 9, 2017

Google Technical Developer Guide

Google Technical Development Guide

This guide helps you to develop your technical skills  through self-paced, hands-on learning. This guide is meant for Computer Science students those who seeking an internship at Google.

Note: Following the guide does not guarantee a job at Google.

Recommended Learnings

“Introduction to CS” course Focus on basic coding instructions.

Online resources:
Introduction to Computer Science, Udacity
Learn to code in (at least) one object-oriented programming language (C++, Java®, Python®) Online resources for beginning programmers:
  1. Java Programming: An Introduction to Software, Duke University, Coursera
  2. Learn to Program: The Fundamentals, University of Toronto, Coursera
  3. Introduction to Programming in Java, MIT
  4. Google's Python Class
  5. Introduction to Interactive Programming in Python, Rice University, Coursera
Online resources for more experienced programmers:
  1. Java Programming: Data Structures and Beyond, University of California San Diego, specialization on Coursera
  2. Design of Computer Programs, Udacity
  3. Learn to Program: Crafting Quality Code, University of Toronto, Coursera
  4. Introduction to Programming Languages, Brown University
Learn other programming languages
JavaScript®
CSS & HTML
Ruby®
PHP®

Perl®
Shell® script
Lisp®
Scheme®
Online resources:
Codecademy
Test your code Learn how to catch bugs, create tests, and break your software.
Online resources:
Develop logical reasoning and knowledge of discrete math Online resources:
  1. Mathematics for Computer Science, MIT
  2. Introduction to Mathematical Thinking, Stanford, Coursera
  3. Probabilistic Graphical Models, Stanford, Coursera
  4. Game Theory, Stanford and University of British Columbia, Coursera
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:
  1. Introduction to Algorithms, MIT
  2. Algorithms Part 1 & Algorithms Part 2, Princeton, Coursera
  3. List of Algorithms, Wikipedia
  4. List of Data Structures Wikipedia
  5. Book: The Algorithm Design Manual, Steven S. Skiena
Develop a strong knowledge of operating systems Online resources:
Computer Science 162, UC Berkeley, YouTube
Learn artificial intelligence and machine learning Online resources:
  1. Machine Learning Engineer nanodegree, Udacity
  2. Deep Learning, Udacity
  3. Introduction to Robotics, Stanford University
  4. Machine Learning, Stanford University
Learn Android development Online resources:
Google Developer Training for Android, on Udacity
Learn web development Online resources:
Google Developer Training for Web, on Udacity
Learn other developer skills Online resources:
Google Developer Training site
Learn cryptography Online resources:
  1. Cryptography, Stanford, Coursera
  2. Applied Cryptography, Udacity
Work on projects outside of the classroom Create and maintain a website, build your own server, or build a robot.
Online resources:
  1. Capstone project: Analyzing (Social) Network Data - scroll down to bottom of page, UCSD, Coursera
  2. Capstone project: Java Programming: A DIY Version of Netflix and Amazon Recommendation Engines, Duke University, Coursera
  3. Project Directory, Apache
  4. Google Summer of Code Project Archive
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 project.
Online resources:
  1. GitHub®
  2. Kiln™
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 Code Jam or ACM’s International Collegiate Programming Contest.
Online resources:
  1. Code Jam
  2. Kickstart, a Code Jam competition, is for university students looking to develop their coding skills and pursue a Google career
  3. ACM ICPC
Become a teaching assistant Helping to teach other students will help enhance your knowledge of the subject matter.
Gain internship experience in software engineering Find Google’s internships in Engineering and Technology on our Students site.
Online resource to prepare to interview for software engineering positions, including for internships:
Mastering the Software Engineering Interview, UCSD, Coursera

Reference -  https://techdevguide.withgoogle.com/

No comments:

Post a Comment