A few weeks ago I came across a list of courses that should give you a similar level of knowledge to someone who got a bachelor degree in CS. As someone who is not just interested in web development, but rather CS in general and as fan of open course ware I find this is an interesting resource worth looking into.
Maybe some of you are already studying CS and have trouble understanding a topic. Maybe the same course taught by a different person can help you.
But even if you aren’t interested in all of these topics, there might be a few subjects that can boost your understanding of programming.
All the credits go to agupieware. Make sure to check out that site as it has a lot of other interesting content.
Here is the list:
Introductory Courses
Intro to Computer Science:
Introduction to Computer Science and Programming - MIT
Intensive Introduction to Computer Science - Harvard (CS50)
Programming Methology - Stanford
Programming Abstractions (Second Course in Unit) - Stanford
Mathematics:
Mathematics for Computer Science - MIT
Discrete Mathematics - ArsDigita
Programming:
Programming I - University of Toronto
Programming II - University of Toronto
Theory of Computation:
Introduction to the Theory of Computation - Stonehill
Data Structures and Algorithms:
Introduction to Data Structures and Algorithms - UNSW
Introduction to Algorithms - MIT
Core Courses
Theory:
Theory of Computation - UC Davis
Algorithms and Data Structures:
Efficient Algorithms and Intractable Problems - UC Berkeley
Data Structures - UC Berkeley
Mathematics:
Discrete Math and Probability Theory - UC Berkeley
Operating Systems:
Operating Systems and System Programming - Berkeley
Introduction to Linux - edX
Computer Programming:
Programming Paradigms - Stanford
Object Oriented Programming - MIT
Object Oriented Programming in C++ - ITU
Software Engineering:
Software Engineering - UC Berkeley
Computer Architecture:
Computer Architecture - Carnegie Mellon
Computer Architecture - Princeton
Data Management:
Introduction to modern Database Systems
Networking and Data Communications:
Fundamentals of Computer Networking - Manhattan College
Introduction to Data Communications - Thammasat University
Cryptography and Security:
Introduction to Cryptography - Ruhr University
Introduction to IT Security - Thammasat University
Artificial Intelligence:
Introduction to Artificial Intelligence - UC Berkeley
Intermediate and Advanced Courses
Algorithms and Data Structures:
Advanced Data Structures - MIT
Analytic Combinatorics - Princeton
Systems:
Computer System Engineering
Programming:
Design in Computing - UNSW
Principles of Programming Languages - IIT
C++ for C Programmers - UC Santa Cruz
Software Engineering:
Software Engineering for Scientific Computing - UC Berkeley
Fundamentals of Project Planning and Management - University of Virginia
Mobile App Development:
Building Mobile Applications - Harvard
iPhone Application Development - ITU
Android Application Development - ITU
Web Development:
Building Dynamic Websites - Harvard
Databases and Data Management:
Database Management Systems - Ars Digita
Advanced Databases - Saylor
Security:
Security and Cryptography - Thammasat University
Cryptography:
Cryptography I - Stanford
Cryptography II -Stanford
Bilinear Pairings in Cryptography - BIU
Artificial Intelligence and Machine Learning:
Artificial Intelligence - HRW
Artificial Intelligence - UC Berkeley
Machine Learning - Stanford
Digital Media:
Digital Image Processing - Purdue
Computer Graphics - Berkeley
Computer Graphics - ITU
Networking and Communications:
Internet Technologies and Applications - Thammasat University
Statistics and Probability:
Satistics and Probability - Harvard
Probabilistic Systems Analysis and Applied Probability - MIT
Statistical Inference - John Hopkins
Data Analysis and Statistical Inference - Duke
Note:
- For better understanding do assignments if there are any!
- Don’t stop coding! Theory is nice and all, but don’t forget to something practical. You may use a resource of you choice and maybe think about a “final project” that you can do.
- Act like you are an actual college student. Take notes!
- This list is not a replacement for a real college degree program. However the aim is to provide you a similar amount of knowledge
- As some courses cover the same topic you don’t have to do everyone of these.
- If there aren’t assignments, use the Feynman technique: Explain it to someone (or yourself) in simple words. Then explain it, as if your would explain it to a kindergardener.
- Some links of the original lists are not included as they don’t exist anymore.
This list is actually an extension to a shorter list that aGupieware published before. If the list above seems a bit overwhelming to you, you can find the core version of it here.
Leave any suggestions for improvements or additions in the comments!
Updates:
08.04.2017 - As suggested by @astv99 astv99 I included the course “Fundamentals of Project Planning and Management” which also covers software engineering methodologies like agile, scrum and kanban.