My work on the Google Tech Dev Guide. (I have included task lists to check my progress)
Follow me on my journey, the road is still long 😁
Note: in the External Resources section, I will add free and always-available public sources, such as YouTube videos, tutorials, etc ... that I will use along my path.
-
Take an "Introduction to CS" course
- CS101 - Intro to Computer Science, Udacity [assignments]
- CS50x - Introduction to Computer Science, Harvard, edX
-
Learn to code in (at least) one object-oriented programming language (C++, Java, Python)
- Learn to Program: The Fundamentals (Python), University of Toronto, Coursera
- Google's Python Class
- Introduction to Interactive Programming in Python, Rice University, Coursera
- Java Programming: An Introduction to Software, Duke University, Coursera
- Introduction to Programming in Java, MIT OpenCourseWare
- Java Programming: Data Structures and Beyond, University of California San Diego, specialization on Coursera
- Design of Computer Programs (Python), Udacity
- Learn to Program: Crafting Quality Code (Python), University of Toronto, Coursera
- Introduction to Programming Languages, Brown University
-
Learn other programming languages
- JavaScript
- CSS & HTML
- Ruby
- PHP
- C
- Perl
- Shell script
- Lisp
- Scheme
-
Test your code
- Software Testing, Udacity
- Software Debugging, Udacity
-
Develop logical reasoning and knowledge of discrete math
- Mathematics for Computer Science, MIT OpenCourseWare
- Discrete Mathematics Specialization University of California San Diego, Coursera
- Introduction to Mathematical Thinking, Stanford, Coursera
- Effective thinking through mathematics, University of Texas at Austin, edX
- Probabilistic Graphical Models, Stanford, Coursera
- Game Theory, Stanford and University of British Columbia, Coursera
-
Develop a strong understanding of algorithms and data structures
- Introduction to Algorithms, MIT OpenCourseWare
- Algorithms Part 1 & Algorithms Part 2, Princeton, Coursera
- CS61B - Data Structures (and video lectures), UC Berkeley
- List of Algorithms, Wikipedia
- List of Data Structures, Wikipedia
- Book: The Algorithm Design Manual, Steven S. Skiena
-
Develop a strong knowledge of operating systems
- CS162 - Operating Systems and Systems Programming, UC Berkeley, YouTube
-
Learn artificial intelligence and machine learning
- Machine Learning Engineer nanodegree, Udacity
- Deep Learning, Udacity
- Introduction to Robotics, Stanford University
- Machine Learning, Stanford University
-
Learn Android development
- Google Developer Training for Android, on Udacity
-
Learn web development
-
Learn other developer skills
-
Learn cryptography
- Cryptography, Stanford, Coursera
- Applied Cryptography, Udacity
-
Work on projects outside of the classroom
- Capstone project: Analyzing (Social) Network Data - scroll down to bottom of page, UCSD, Coursera
- Capstone project: Java Programming: A DIY Version of Netflix and Amazon Recommendation Engines, Duke Univ., Coursera
- Project Directory, Apache
- Google Summer of Code Project Archive
-
Prepare for the interview
- Mastering the Software Engineering Interview, UCSD, Coursera
- Book: Cracking the Coding Interview
- Book: Programming Interviews Exposed
CS50’s Understanding Technology
Hello, world!
This course is for students who don’t (yet) consider themselves computer persons. Designed for students who work with technology every day but don’t necessarily understand how it all works underneath the hood or how to solve problems when something goes wrong, this course fills in the gaps, empowering students to use and troubleshoot technology more effectively. Through lectures on hardware, the Internet, multimedia, security, programming, and web development as well as through readings on current events, this course equips students for today’s technology and prepares them for tomorrow’s as well.
Learn SQL Course, Codecademy
Learn to communicate with databases using SQL, the standard data management language.
SQLCourse
Beginner Course
Our Beginner SQL Course is the perfect place to start if you are new to the world of database programming or database administration. In addition to learning basic SQL commands and syntax – such as how to insert, update, and delete information from tables – users will be able to practice those same commands through our free online SQL interpreter. Enter SQL commands to receive immediate results and experiment to better understand how database concepts such as table drops and table selects work.
The SQL tutorial and online interpreter currently supports a subset of ANSI SQL. The basics of commands such as select, insert, update, delete, and drop will be covered in this gentle introduction to Structured Query Language (SQL).
If you are already familiar with the basics of SQL, you can still use this database course as a refresher and practice common SQL commands and statements.
Advanced Course
This unique SQL database tutorial builds on the Beginner Course on this site. It provides budding database programmers and db admins with more advanced, easy-to-follow SQL instructions and the ability to practice what you learn on-line with immediate feedback, thanks to our SQL interpreter! You will receive immediate results on a web page after submitting your SQL Commands.
This continuation course will provide you with critical need-to-know advanced features and clauses of the select statement that were not supported in the previous SQLCourse.com site. Everything you learn here will be ANSI SQL compliant and should work with most SQL databases, including Oracle, SQL Server, MySQL, MS Access, Informix, Sybase, or any other ANSI SQL compliant database.
If you are already familiar with advanced SQL commands and database administration concepts, you can still use this course as a refresher, and practice some SQL statements.
For more information on this guide take a look at the link below: