One of the major incentives for taking up online courses is that all of them are certified, credible and are taught by professors of world class universities. They can be learnt at our own place and pace. There is an immense potential seen in open education in the form of MOOCs. The extent of resources available online is infinite, but we refrain from using it because we don’t know where to start from and what to invest our time on.
Thus, we present the bucket list for Online Courses in Computer Science starting from scratch and including courses on various different subjects to save you the trouble of going through yet another “200+ Free Online Courses” listicle. We, at Hashtag, have tried our best to compile the best among the available options, and the following handpicked courses include personal feedback from people who themselves have tried these courses to give a better clarity of how they function. We hope that each one of you will find something that interests you. Feel free to share your opinions and feedback in the comments.
CS50 by Harvard University: Intro to CS and the Art of Programming
CS50, is Harvard University’s introduction to the intellectual enterprises of computer science and the art of programming for students, with or without prior programming experience. It’s an entry-level course taught by David J. Malan, one of the most innovative and engaging professor today in the field of Computer Science, who still uses things like light bulbs, and telephone directories in his lectures, not for the reason you’re thinking, but to introduce concepts like binary numbers or abstract algorithms like binary search, merge sort and many other notions that might frustrate everyone (read : pointers) at first sight.
Many concepts like abstraction, algorithms, data structures, encapsulation, resource management, security, software engineering, and web development are included in this course. It is the most sought-after course at Harvard and is available as CS50x on EdX for free.
“I might sound a bit hyperbolic when someone asks me about CS50, but hands down it’s the best course online. CS50 might seem a bit overwhelming and demanding but is extremely helpful in building strong fundamentals which makes things easier for you when you jump into new fields in future. Unlike many other courses and tutorials out there, CS50 highly emphasises not only on how to get things done, but also on how things are getting done under the hood. Don’t be the person who “never quite understood” something like recursion or pointers. If you don’t want to be that person, this course is for you“
-Shivaji Reddy, II Year CSE
Algorithms and Data Structures
Algorithms are much more than instructions. Algorithms help us to define clear steps and conceptualize solutions in terms of distinct steps in a process. A good algorithm usually comes together with a set of good data structures that allow the algorithm to manipulate the data efficiently. If you don’t know how to use ubiquitous data structures like stacks, queues, trees, and graphs, you won’t be able to solve hard problems. In short, algorithms and data structures are at the heart of Computer Science. This is also a great place to train one’s general problem-solving abilities, which will pay off in every other area of study.
Here are a few courses we recommend for Algorithms and DS (in no particular order):
University of California, San Diego – Data Structures (Coursera)
Algorithms, Princeton University Part 1 and Part 2
Learn To Think like a Computer Scientist, Stanford University
“The course is pretty good. Programming assignments are a little challenging. The content is extremely well made and can be downloaded. Some of the instructors are Russian so the accent might be a little difficult to understand, but it’s mostly fine. It’s not a beginner’s course and doesn’t require a specific language. Basic programming experience is needed.”
-Kunal Joshi, completed UCSD Data structures
“Course is pretty good, and a little intensive for people who haven’t had any prior coding experience. Concepts are explained clearly, and exercises are accompanied with each and every algorithm explained. It is not a self paced course because you need to stick to the assignment deadlines.”
-Vishnu Dasu, completed the Stanford University Algorithms Course
Mathematics For Computer Science
Course link: https://ocw.mit.edu
We know a lot of you aren’t fans of math, but unfortunately, math is very important for anyone who wants to be taken seriously as a programmer.
The most relevant area of math for CS is broadly called “discrete mathematics”, where “discrete” is the opposite of “continuous” and is loosely a collection of interesting applied math topics outside of calculus.
In some ways, Computer Science is an overgrown branch of applied mathematics. While many software engineers try — and to varying degrees succeed — at ignoring this, we highly encourage you to embrace it with direct study since with a solid background in maths, you’ll have enormous advantage over others while solving problems in software.
What you’ll learn:
Fundamental concepts of mathematics: Definitions, proofs, sets, functions, relations
Discrete structures: graphs, state machines, modular arithmetic, counting
Discrete probability theory
“Essential for almost any other advanced course that you will do, so don’t miss out of this one. Assignments are quite tough, but you can get help from the online forums.”
-Dheeraj R. Reddy
If you’re interested in building Android apps, but have no clue from where to start, Android Nanodegree is for you.
This course is designed in such a way that even people without prior programming experience can learn how to build apps by simultaneously learning Java. If you’ve been using a smartphone to surf the web and chat with friends, then you’re our perfect target student!
“This course is taught by experts from Google on Udacity, and the content, online support and mentorship for projects is amazing.
It covers all the topics in android development right from placing XML layouts to fetching data from servers . Though this is an expensive course as a whole, the content can be accessed for free by enrolling in individual modules.”
-Shivaji Reddy, Doing Android Nanodegree
Also Recommended for android: The New Boston
Web development broadly refers to the tasks associated with developing websites for hosting via intranet or internet. The web development process includes web design, web content development, client-side/server-side scripting and network security configuration, among other tasks.
Here are a some websites that offer great courses, tutorials and help online:
With the recent boom in AI, both from an industrial as well as research point of view, it is essential that the next generation of programmers recognise its advantage and learn to utilize it effectively.
Machine learning is a subset of AI, that allows computers to act without any explicit instructions. In the past decade, ML has given us self-driving cars, practical speech recognition, effective web search, a pocket popstar and a someone to play a duet with. Machine learning is so vastly used today that you probably use it dozens of times a day without knowing it.
Released in 2011, it covers all aspects of the machine learning workflow. The estimated timeline is eleven weeks, with two weeks dedicated to neural networks and deep learning.
What you’ll learn:
- Supervised learning
Support vector machines
- Unsupervised Learning
- Best practises in machine learning
The art (yes, really) of training machine learning models
“Probably the best online course I’ve taken. It does a great job of spending time to explain the basics before building on them to cover a wide range of much more complex topics. The assignments are in Octave (similar to Matlab), and are a little tough to grasp at first, but the fruits of your hard work will be well deserved, so I suggest that you grind your way through them. Although it initially looks like pure magic, you’ll soon realize that it’s all just very clever programming.”
-Dheeraj R. Reddy
Machine Learning (Columbia University via edX)
Machine Learning A-Z™: Hands-On Python & R In Data Science (Kirill Eremenko, Hadelin de Ponteves, and the SuperDataScience Team via Udemy)
The Analytics Edge (Massachusetts Institute of Technology/edX)
Deep learning is a subfield of machine learning concerned with algorithms inspired by the structure and function of the brain called artificial neural networks. It allows for some of the most mind blowing applications of computers in all fields of science.
“This course definitely requires prerequisite knowledge of neural network as this course is heavily focused on implementation in Tensorflow rather than the theoretical aspect of the science. Recommended for those proficient in the concepts of machine and deep learning. An alternative course for theory is the Geoffrey Hinton’s Neural Networks course”
-Vishnu Dasu, completed Udacity UD730