# The Most Epic Algorithm Collection

## This GitHub Repository Has Over 110k Popular Algorithms + Open Source!

# Algorithms — What are they?

Techopedia describes algorithm as:

In its purest sense, an

algorithmis a mathematical process to solve a problem using a finite number of steps. In the world of computers, analgorithmis the set of instructions that defines not just what needs to be done but how to do it.

Still don't understand? Think of it something like this: An algorithm is essentially a recipe for a cake. There are many ways to bake a cake, but by following a recipe, a person knows when to first preheat the oven, then measure out the flour, add butter, flavouring and so on until the cake is baked. This applies to computer science as well. Algorithms are always unambiguous and are used as specifications for performing calculations, data processing, automated reasoning, and other tasks.

Algorithms are nothing new. As noted above, they are simply mathematical instructions. Their use in computers can be traced back to one of the giants in computational theory Alan Turing, back in 1952. Fast track to 2020, algorithms are essentially everywhere.

# The Repository — Biggest Collection of Algo

There are over few hundred ‘ready-to-code’ algorithms that are implemented across different programming languages. Few of the popular ones are listed below which you can find in the repository.

**From**:

Arithmetic, Blockchain, Boolean Algebra, Statistics, Compression, Data Structure, Hashes, Fuzzy Logic, Probability, etc.

**To**:

Machine Learning, Neural Network, Networking, Quantum Computing, Optimisation, Web Programming, etc.

The repository has it in **Python, Java, C++, Javascript, C and Go.**

## Data Structure

- Data Structure is a way of collecting and organising data in such a way that we can perform operations on these data in an effective way. Data Structures is all about rendering data elements in terms of some relationship, for better organization and storage.
- The basic data structure can be about
**linked list, tree diagram, graph, stack, queue**and etc.

## Compression

- Compression algorithms reduce the number of bytes required to represent data. They allow large number of images (or any data) to be stored on a given medium and increases the amount of data that can be sent over the internet. It relies on two main strategies: redundancy reduction and irrelevancy reduction.
**Redundancy reduction**, used during lossless encoding, searches for patterns that can be expressed more efficiently whereas**irrelevancy reduction**, utilises a means for averaging or discarding the least significant information.- The repository features burrows wheeler transform, Huffman compression and Lempel–Ziv–Welch (LZW)

## Machine Learning

- Machine-learning are algorithms that use statistics to find patterns in massive amounts of data. And data, here, encompasses a lot of things — numbers, words, images, clicks, what have you. If it can be digitally stored, it can be fed into a machine-learning algorithm.
- At a very high level, machine learning is the process of
**teaching a computer system**how to make accurate predictions when fed data. - The repository contains quite a number of popular ML algorithms such as decision tree, gradient descent, support vector machines (SVM) and etc.

## Neural Network

- A neural network is defined as a system that consist of a number of simple but highly interconnected elements or nodes, called ‘neurons’, which are organized in multiple layers or nodes which process information using dynamic state responses to external inputs and biases.
- Each node is a perceptron and is similar to a multiple linear regression. The perceptron feeds the signal produced by a multiple linear regression into an activation function that may be nonlinear.
- The repo contains a complete code implementation on how to build a simple back-propagation model using Python

## Web Scrapper

- Web scraping is an automated method used to extract large amounts of data from websites. Web scraping helps to collect these unstructured data and store it in a structured form. There are different ways to scrape websites such as online services, APIs such as BeautifulSoup or even writing your own code.
- To put it in simple terms, when you run the code for web scraping, a request is sent to the URL that you want to scrap. As a response to the request, the server sends the data and allows you to read the HTML or XML page. The code then, parses the HTML or XML page, finds the data and extracts it.
- There are many APIs that are specifically designed to perform this web scrapping such as
**Selenium**,**Pandas**,**BeautifulSoup**and etc.

# In the end

There are tons of algorithms that are open source for just about anybody to implement it on their daily task. These algorithms are the basic blocks of just about any computer systems that can be scaled.

*If I have managed to retain your attention to this point, please leave a comment if you have any advice for this series as it would greatly increase my knowledge and improve my way of writing. **Prem Kumar** **is a selfless learner that is passionate about the everyday data that revolves us. Please connect with me on **LinkedIn** **mentioning this story if you would want to speak about this and the future developments that awaits.*