My List of Awesome (and Free!) Computer Science Courses
Programming, Algorithms, Machine Learning, and more!
--
Nowadays, there are a whole lot of resources to get you started in the huge field of Computer Science. There’s so much stuff out there that many people—including me—face choice overload (yep, that’s a thing) when trying to learn something new. This is a huge turn-off for beginners getting into web development, artificial intelligence, or just CS in general. Luckily, I’ve compiled a set of some of the best and FREE courses/tutorials along my journey in CS, so you don’t have to do any of that dirty work. Let’s get started!
Note: This list is compiled through my experiences in taking such CS courses, and I admit having a bias towards video courses and certain topics within CS. If you have any suggestions for more awesome courses/tutorials, feel free to post in the comments for me and other viewers!
Note #2: Keep in mind that some of these courses may come with a certification, however, these certifications may come with a price tag. Nonetheless, all course content is free and open for anyone.
1) CS50x — Harvard University
CS50 (CS50x) is here to provide a broad, fun, and challenging introduction to the art of programming. The course begins with programming in Scratch, and immediately takes students into C the next lecture, which the course somehow pulls off really well. In all honesty, this course is the most enjoyable I have ever taken in the CS domain (admittedly beating the college courses I’m taking now)! What sold it for me was the quality of the labs and problem sets. Professor David J. Mallan should also get props for his insanely awesome lectures.
Links
- CS50x Website
- edX Course Listing (for those wanting to get a license)
Topics Covered
- Scratch 🐱
- The C language 💻
- Basic Data Structures and Algorithms 👾
- Python & Flask 🐍
- Databasing w/ SQL 💾
- HTML, CSS, & JS 🧑💻
Prerequisites
- None!
2) Data Analysis w/ Python: Zero to Pandas — Jovian
If you’re looking to dive straight into crunching data and numbers with programming, look no further. Jovian’s Data Analysis course covers the very basics of python to visualizing and exploring data with libraries such as Pandas, MatPlotLib, and NumPy. What I love best about this course (and all of Jovian’s other courses as well) is how they get you to test your skills with a cumulative project and numerous case studies. The course also allows you to publish and share your code with peers—like a real class—as you progress. If you can’t wait to begin your Data Science journey, this course is for you!
Links
Topics Covered
- Python Fundamentals 🐍
- NumPy & Multi-Dimensional Arrays 🔢
- Data Handling w/ Pandas 🐼
- Visualizing w/ MatPlotLib & Seaborn 📈
- Data Preprocessing & Cleaning 💾
Prerequisites
- None!
3) Practical Machine Learning with Python — sentdex
Sentdex’s course in Practical ML was my saving grace at one point. In my time jumping into the machine learning craze, I was immediately longing to make new side projects with ML. But (as expected), I had tough luck finding a course that both: (1) centered on learning ML hands-on, and (2) explained ML theory intuitively to a newbie like me at that time. I almost gave up on my search, until I found this amazing 72-video collection! If you have an intermediate grasp of Python and are looking to get started on ML quickly, definitely take this one a look.
Links
- Youtube Playlist (72 Videos)
- Complementary website (for the readers out there!)
Topics Covered
- Linear Regressions 📈
- K Nearest Neighbors, K-Means 📍
- Support Vector Machines (SVMs) 📊
- Neural Networks 🧠
- Recurrent Neural Networks & Long Short-Term Memory 🔄
- Convolutional Neural Networks (3D Conv-Nets) 🖼
Prerequisites
- Knowledge of Python programming
4) Machine Learning — Andrew Ng
If you prefer a more traditional and intensive course in machine learning, you should check out the goat Andrew Ng and his creatively-named course: Machine Learning. Traditional because it focuses on ML theory and math over programming, and intensive because it’s an 11-week course (with a recommended 61 hours to complete). Don’t let this intimidate you—this ML course has a whopping 4.9/5 stars on Coursera. For your information, this course is taught in the open-sourced Matlab equivalent: Octave. Consider Andrew Ng’s course if a bit of calculus and linear algebra won’t scare you!
Links
- Coursera Page
- Youtube Playlist (112 videos!)
Topics Covered
- Supervised vs. Unsupervised Learning 🧑🏫
- Linear and Logistic Regression 📈
- Linear Algebra Fundamentals 🔢
- Neural Networks 🧠
- Support Vector Machines 📊
- Recommender Systems 🧐
- Advice for Applying Machine Learning 📍
Prerequisites
- Some knowledge on Linear Algebra and Calculus
5) Neural Network Programming & Deep Learning w/ PyTorch—DeepLizard
The end of sentdex’s course began covering neural network programming with the deep learning framework TensorFlow. However, PyTorch is quickly becoming the crowd favorite among the community, especially in academia. DeepLizard has you covered from simple tensor (matrix) operations with PyTorch to hyper tuning your programmed neural network. The explanations in course videos were probably the most thorough I’ve ever listened to with regards to PyTorch tutorials, and believe me, I’ve tried a heck ton of them!
Links
- Youtube Playlist (39 videos)
- Course Website (Highly suggested!)
Topics Covered
- Tensor Concepts & Operations 🧱
- Data Processing & Handling w/ PyTorch Dataloaders 🔄
- Building Neural Networks w/ PyTorch 🤓
- Experimenting w/ and Optimizing Hyperparameters and the Network 💻
Prerequisites
- Python programming
- Solid grasp of common programming paradigms (loops, functions, etc.)
6) Algorithms (Part I & II) — Princeton University
Everyone knows that job/internship/co-op hunting in the CS industry means algorithm programming interviews and leetcode grinding. Whether you want a head start or are looking to solidify your knowledge of algorithms, take the 2-part course series on Algorithms from Princeton, taught primarily by Professor Robert Sedgewick. The series is taught in Java, but through my experience, you’re mostly okay if you know the fundamental programming paradigms.
Links
Topics Covered
- Union-Find & Dynamic Connectivity 🔗
- Asymptotics & Big O 🅾️
- Stacks & Queues 📚
- Elementary Sorts, Merge Sort, & Quick Sort 📊
- Hash Tables 🧩
- Undirected/Directed Graphs 📈 (Part 2)
- Trees and Shortest Paths 🌳 (Part 2)
- Substring search & Reg Exp 🔎 (Part 2)
- more…
Prerequisites
- Java Object-Oriented Programming (Visit here for a MOOC course in Java OOP)
7) Extra Goodies
Here are some more courses (also free) that I’ve heard good things about but personally haven’t taken extensively, or are very similar to the recommendations I have above:
- Intro to Java and Object-Oriented Programming — University of Helsinki
- Javascript30 Challenge — Wes Bos
- Intro & Advanced Programming in C++ — NYUx
- Practical Deep Learning for Coders — Fast.ai
- Neural Networks & Deep Learning — Michael Nielsen
- Cryptography I — Stanford University
- Computer Networking — Georgia Tech (go yellow jackets!)
Well, there you have it! I hope this list has saved you a massive amount of time and money trying to find tutorials in the huge, beautiful world of CS. Let me know in the comments if you finished any, and how it went for you!