Introduction to Algorithms

Algorithms are often called the heart of computer science. Ponder over that - computers are basically dumb machines which need step-by-step instructions for performing any given task. One wrong instruction and things are bound to go wrong where wrongness ranges from a minor error to never producing any output (and anything and everything in between). At this point, let’s re-iterate - Algorithms are the heart of the science of utilizing a machine which needs precise step-by-step instructions for finishing a job. That implies - An algorithm is a precise set of instructions to get a job done.

Remember that precision is one of the key elements of algorithms. Remember, Precision is the difference between a good athelete and an average one. It is the difference between a good shooter and a bad one. Precision is the difference between Sherlock and Professor Moriarty. It is the difference between Ironman and Whiplash. Precision is also the difference between a good programmer and a bad one. In the world of computer science, an imprecise algorithm is in most cases a useless one e.g. an algorithm which sorts all elements in a list except the last one cannot be trusted; you would not want such an algorithm to be used when listing your financial transactions by date; would you?

What do I need to learn?

The answer to this question is a very diplomatic one: “It depends”. If you are a painter whose hobby is to learn how to code, you probably don’t want to learn too much about algorithms; if you are a computer science student, you might want to learn analysis and design of algorithms, asymptotic notation and how to figure out the best algorithms for a job among many, different types of problems and strategies for solving problems and much more.

This course is targetted towards someone with a basic understanding of programming and how computers work, for a beginner who wants to start off with algorithms and thus, this course covers enough to get the gray cells firing enough electric signals to make you inquisitive. It can also be used by someone who has been programming since some time but has forgotten the basics. It is by no way a course for a human who is already an expert at algorithms.

In this course we will go through some data structures (they are actually not that intimidating as they sound) and algorithms around things we encounter in everyday life like:

  • Data Structures (Ways of organizing data in different manners)
  • Searching
  • Sorting
  • Basic Statistics
  • Graphs and Tree Traversals (believe me, you do this every single day)

How do I start?

There is a quote by Arthur Ashe:

Start where you are. Use what you have. Do what you can.

There are a lot of courses and books both online and offline that teach you about algorithms. This one is only one of them. If you are new to computer science or have forgotten about algorithms after having studied them in college, you would like this course. If you have never programmed, you are going to have to learn some to make the most out this course (fret not, for we are going to help you with that too).

Coming back to the original question “_How do I start?_”, you are going to need the access to a computer. It is better if the computer runs a Unix-Like OS. Linux and macOS are thus perfect. While we are going to tell you how to use Windows for installing different languages and frameworks, the course will be developed on macOS and will remain compatible with Linux.

Get ready to dive in.