Skip to content
This repository was archived by the owner on Aug 14, 2023. It is now read-only.
/ Google Public archive

365 Days of study and preparation to get an internship and then a job at Google.

License

Notifications You must be signed in to change notification settings

365DaysTo/Google

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

365DaysToGoogle

365 Days of study and preparation to get an internship and then a job at Google.

Study Program

Introduction

Let's make a quick introduction to Computer Science, since we're trying to become Software Engineers, we should try and understand or rehash the fundamentals of our craft and using the old "Google dev guide" we will do the following courses:

  1. Harvard - CS50: https://cs50.harvard.edu/college/2022/spring/
  2. Udemy - CS101 - Intro to computer programming: https://www.udacity.com/course/introduction-to-python--ud1110

Programming

We should start reading "Composing programs", then "Structure and Interpretation of Computer Programs" which is free on the internet, later on we should read "How to design programs"

Also we should grasp the fundamental (but try and master for the end of the year) of:

  1. JavaScript
  2. C++
  3. Java
  4. CSS & HTML
  5. Ruby
  6. PHP
  7. C
  8. Perl
  9. Shell script
  10. Lisp
  11. Scheme

Also we should complete

"Free Code Camp": https://freecodecamp.org (we will try and get all the certifications for our linkedin and portfolio) and Code Academy.

We can use our udemy accounts and make all the course we can in there to add certificates and expand our profiles as developers.

For a more in deep learning about programming with a more hands-on approach we should do the following courses:

https://www.mooc.fi/en/

At the end of the day, we can make a Code Kata in codewars

Go development

  1. https://www.youtube.com/watch?v=YS4e4q9oBaU&pp=ugMICgJlcxABGAE%3D
  2. https://www.youtube.com/watch?v=e37Q4SLC-30&list=PLV-IZMSUqzrNkcKRCw2cjKrW0a8l5qvgb
  3. https://www.youtube.com/watch?v=etSN4X_fCnM&list=PL4cUxeGkcC9gC88BEo9czgyS72A3doDeM

Android development

Let's watch some tutorial and make some projects

  1. https://www.youtube.com/watch?v=fis26HvvDII&pp=ugMICgJlcxABGAE%3D
  2. https://www.youtube.com/watch?v=pdYkmCcQFd8&list=PLU8oAlHdN5Bkn-KS1sRFlSEnXXcAtAJ9P
  3. https://www.youtube.com/watch?v=tyx05coXixw&list=PLyvsggKtwbLX06iMtXnRGX5lyjiiMaT2y
  4. https://developer.android.com/courses
  5. https://www.youtube.com/results?search_query=android+projects+for+beginners
  6. https://www.youtube.com/results?search_query=android+projects

Algorithms and Data Structures

Let's read some more n.n

  1. The Algorithm Design Manual
  2. How to solve it

Also we can add the following courses:

  1. https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-spring-2008/index.htm
  2. https://www.coursera.org/learn/algorithms-part1
  3. https://www.coursera.org/learn/algorithms-part2
  4. https://people.eecs.berkeley.edu/~jrs/61b/
  5. https://en.wikipedia.org/wiki/List_of_algorithms
  6. https://en.wikipedia.org/wiki/List_of_data_structures
  7. http://timroughgarden.org/videos.html

Computer Architecture

Let's read again

  1. Computer Systems: A Programmer's Perspective
  2. The Elements of Computing Systems (nand2tetris)
  3. Computer Organization and Design

Testing our Code

We need to learn how to catch bugs, create tests and break our own software

  1. https://www.udacity.com/course/software-testing--cs258
  2. https://www.udacity.com/course/software-debugging--cs259

Mathematics for Computer Science

Let's read some cute books:

  1. Professor Lovász lectures: https://cims.nyu.edu/~regev/teaching/discrete_math_fall_2005/dmbook.pdf
  2. Mathematics for Computer Science: https://courses.csail.mit.edu/6.042/spring17/mcs.pdf

And now, let's watch some courses:

  1. https://www.coursera.org/learn/mathematical-thinking
  2. https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/index.htm
  3. https://www.coursera.org/specializations/discrete-mathematics
  4. https://www.coursera.org/learn/probabilistic-graphical-models
  5. https://www.coursera.org/learn/game-theory-1

Operative Systems

Booky books:

  1. Operating Systems Concepts (The dinosaur book)
  2. Moderm Operating Systems (The Tanembaum big one)

After those books we can read and watch the following: https://pages.cs.wisc.edu/~remzi/OSTEP/

Also, we can watch the following tutorial and build a bugged OS as a presentation card:

https://www.youtube.com/watch?v=1rnA6wpF0o4&list=PLHh55M_Kq4OApWScZyPl5HhgsTJS9MZ6M

Computer Networking

Let's do more reading n.n

  1. Computer Networking: a top down approach

And watch more Mooc's

https://www.youtube.com/playlist?list=PLoCMsyE1cvdWKsLVyf6cPwCLDIZnOj0NS

Databases

Let's start with these videos: https://www.youtube.com/user/CS186Berkeley/videos

And then we have a ton of books to read:

  1. SQL querys for mere mortals
  2. http://www.redbook.io/
  3. https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf
  4. Database Management Systems
  5. Transaction Processing: Concepts and Techniques (The Morgan Kaufmann Series in Data Management Systems)
  6. Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World

Languages and Compilers

Ok, more books, I know you're probably tired of reading a ton of books BUT it's programming, reading it's kind of the thing.

  1. https://craftinginterpreters.com/contents.html
  2. Compilers: Principles, Techniques, and Tools

Also we can see some stuff about it

https://www.edx.org/course/compilers

Distributed systems

Books:

  1. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
  2. https://www.distributed-systems.net/index.php/books/ds3/

IA & Machine Learning

Now, let's watch some videos:

  1. https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189
  2. https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187
  3. https://see.stanford.edu/Course/CS229

Another developer skills

https://developers.google.com/learn

Cryptography for begginers

  1. https://www.coursera.org/learn/crypto
  2. https://www.udacity.com/course/applied-cryptography--cs387

NOW, let's work on some real projects for our profile

Start by reading how to contribute to open source, here: https://opensource.guide/how-to-contribute/

  1. https://www.coursera.org/learn/java-programming-recommender
  2. https://projects.apache.org/
  3. https://www.google-melange.com/archive/gsoc

After that, let's work on some colaborative competitions like hacktober fest and advent of code for xmas

  1. https://hacktoberfest.digitalocean.com/
  2. https://adventofcode.com/

Final Stage.

  1. Read: Cracking the coding interview & Programming Interviews Exposed
  2. Watch: https://www.coursera.org/learn/cs-tech-interview

Start applying to Google positions!!!

About

365 Days of study and preparation to get an internship and then a job at Google.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published