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:
- Harvard - CS50: https://cs50.harvard.edu/college/2022/spring/
- 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:
- JavaScript
- C++
- Java
- CSS & HTML
- Ruby
- PHP
- C
- Perl
- Shell script
- Lisp
- 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:
At the end of the day, we can make a Code Kata in codewars
Go development
- https://www.youtube.com/watch?v=YS4e4q9oBaU&pp=ugMICgJlcxABGAE%3D
- https://www.youtube.com/watch?v=e37Q4SLC-30&list=PLV-IZMSUqzrNkcKRCw2cjKrW0a8l5qvgb
- https://www.youtube.com/watch?v=etSN4X_fCnM&list=PL4cUxeGkcC9gC88BEo9czgyS72A3doDeM
Android development
Let's watch some tutorial and make some projects
- https://www.youtube.com/watch?v=fis26HvvDII&pp=ugMICgJlcxABGAE%3D
- https://www.youtube.com/watch?v=pdYkmCcQFd8&list=PLU8oAlHdN5Bkn-KS1sRFlSEnXXcAtAJ9P
- https://www.youtube.com/watch?v=tyx05coXixw&list=PLyvsggKtwbLX06iMtXnRGX5lyjiiMaT2y
- https://developer.android.com/courses
- https://www.youtube.com/results?search_query=android+projects+for+beginners
- https://www.youtube.com/results?search_query=android+projects
Algorithms and Data Structures
Let's read some more n.n
- The Algorithm Design Manual
- How to solve it
Also we can add the following courses:
- https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-spring-2008/index.htm
- https://www.coursera.org/learn/algorithms-part1
- https://www.coursera.org/learn/algorithms-part2
- https://people.eecs.berkeley.edu/~jrs/61b/
- https://en.wikipedia.org/wiki/List_of_algorithms
- https://en.wikipedia.org/wiki/List_of_data_structures
- http://timroughgarden.org/videos.html
Computer Architecture
Let's read again
- Computer Systems: A Programmer's Perspective
- The Elements of Computing Systems (nand2tetris)
- Computer Organization and Design
Testing our Code
We need to learn how to catch bugs, create tests and break our own software
- https://www.udacity.com/course/software-testing--cs258
- https://www.udacity.com/course/software-debugging--cs259
Mathematics for Computer Science
Let's read some cute books:
- Professor Lovász lectures: https://cims.nyu.edu/~regev/teaching/discrete_math_fall_2005/dmbook.pdf
- Mathematics for Computer Science: https://courses.csail.mit.edu/6.042/spring17/mcs.pdf
And now, let's watch some courses:
- https://www.coursera.org/learn/mathematical-thinking
- https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/index.htm
- https://www.coursera.org/specializations/discrete-mathematics
- https://www.coursera.org/learn/probabilistic-graphical-models
- https://www.coursera.org/learn/game-theory-1
Operative Systems
Booky books:
- Operating Systems Concepts (The dinosaur book)
- 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
- 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:
- SQL querys for mere mortals
- http://www.redbook.io/
- https://dsf.berkeley.edu/papers/fntdb07-architecture.pdf
- Database Management Systems
- Transaction Processing: Concepts and Techniques (The Morgan Kaufmann Series in Data Management Systems)
- 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.
- https://craftinginterpreters.com/contents.html
- Compilers: Principles, Techniques, and Tools
Also we can see some stuff about it
https://www.edx.org/course/compilers
Distributed systems
Books:
- Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
- https://www.distributed-systems.net/index.php/books/ds3/
IA & Machine Learning
Now, let's watch some videos:
- https://www.udacity.com/course/aws-machine-learning-engineer-nanodegree--nd189
- https://www.udacity.com/course/intro-to-tensorflow-for-deep-learning--ud187
- https://see.stanford.edu/Course/CS229
Another developer skills
https://developers.google.com/learn
Cryptography for begginers
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/
- https://www.coursera.org/learn/java-programming-recommender
- https://projects.apache.org/
- 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
Final Stage.
- Read: Cracking the coding interview & Programming Interviews Exposed
- Watch: https://www.coursera.org/learn/cs-tech-interview