Recommendations for Academic Learning
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
- Learn to code
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,
- Wikipedia- List of Algorithms,
- Wikipedia- 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
- Stanford University- Natural Language Processing
- Stanford University- 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 Learning
Work on project outside of the classroom.
Notes: Create and maintain a website, build your own server, or build a robot. Online Resources:
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:
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:
Also Learn:
- Linear Algebra | Mathematics | MIT OpenCourseWare
- Coding the Matrix: Linear Algebra Through Computer Science Application
Learning these will help you understand Regression Model in future- The basic step of Machine Learning. You won’t be taught these linear algebra courses in any school, colleges, research labs or institution. Learn it on your own. Calculus
- Calculus 1 – Ohio State University
- Pre-Calculus Courses – Universitat Autonoma de Barcelona
- Calculus for Beginners and Artists – MIT
Statistics & Probability