Giter Club home page Giter Club logo

geekquad / algobook Goto Github PK

View Code? Open in Web Editor NEW
288.0 11.0 301.0 1.1 GB

A beginner-friendly project to help you in open-source contributions. Data Structures & Algorithms in various programming languages Please leave a star ⭐ to support this project! ✨

Home Page: https://discord.gg/ZMmwsWvsFj

License: MIT License

Python 4.23% Jupyter Notebook 91.99% C++ 2.96% Go 0.22% Java 0.60%
first-timers first-pull-request first-pull-request-and-commit first-contributions good-first-issue beginner beginner-friendly up-for-grabs python python3

algobook's Introduction

Algo-Book-poster.png

License: MIT made-with-python Open Source Love svg1 PRs Welcome first-timers-only contributions welcome  GitHub contributors Maintenance GitHub forks GitHub Repo stars

A beginner friendly project to help you in open source contributions. An attempt to bring all the algorithms together.

Please see the Contributing Guidelines .

Overview

The goal of this project is to help the beginners with their contributions in Open Source and bring all the possible algorithms of Machine Learning and Python together. We aim to achieve this collaboratively, so feel free to contribute in any way you want, just make sure to follow the contribution guidelines.

What is Open - Source? Open Source Love svg3

The open source community provides a great opportunity for aspiring programmers to distinguish themselves; and by contributing to various projects, developers can improve their skills and get inspiration and support from like-minded people. When you contribute to something you already know and love, it can have so much more meaning, because you know how the tool is used and the good it does for you. Being part of an open source community opens you up to a broader range of people to interact with.

Read more about it here.

Let's Get Started:

Step 1. Create a Copy of this Repository

In order to work on an open-source project, you will first need to make your own copy of the repository. To do this, you should fork the repository and then clone it so that you have a local working copy.

Fork 🍴 this repo. Click on the Fork button at the top right corner.

With the repository forked, you’re ready to clone it so that you have a local working copy of the code base.

Clone the Repository

To make your own local copy of the repository you would like to contribute to, let’s first open up a terminal window.

We’ll use the git clone command along with the URL that points to your fork of the repository.

  • Open the Command Prompt
  • Type this command:
git clone https://github.com/your_username/AlgoBook

Step 2: Creating a New Branch

It is important to branch the repository so that you are able to manage the workflow, isolate your code, and control what features make it back to the main branch of the project repository.

When creating a branch, it is very important that you create your new branch off of the master branch. To create a new branch, from your terminal window, follow:

git branch new-branch
git checkout new-branch

Once you enter the git checkout command, you will receive the following output:

Switched to branch 'new-branch'

Step 3: Contribute

Make relevant changes. Add new algorithms. Add Readme files. Contribute in any way you feel like :)

Step 4: Commiting and Pushing:

Once you have modified an existing file or added a new file to the project, you can add it to your local repository, which we can do with the git add command.

git add filename or git add .

You can type the command git add -A or alternatively git add -all for all new files to be staged.

With our file staged, we’ll want to record the changes that we made to the repository with the git commit command.

The commit message is an important aspect of your code contribution; it helps the other contributors fully understand the change you have made, why you made it, and how significant it is.

git commit -m "commit message"

At this point you can use the git push command to push the changes to the current branch of your forked repository:

git push --set-upstream origin new-branch

Step 6: Create Pull Request

At this point, you are ready to make a pull request to the original repository.

You should navigate to your forked repository, and press the “Compare & pull request” button on the page.

GitHub will alert you that you are able to merge the two branches because there is no competing code. You should add in a title, a comment, and then press the “Create pull request” button.

Step 7: CONGRATULATIONS 💥 👏 ☺️

You have made it till the end. Kudos to you!!


Contents

Our content is basically divided into 5 segments for now. Please create an issue if you wish to add code in a language that we don't currently have here.

Where to upload the files

  • Your files should be uploaded directly into the corresponding folder (For instance, if you wrote code for an Algorithm Implementation in Python, it goes inside the Python folder and same goes for the ML Algorithm)
  • Under no circumstances create new folders within the language folders to upload your code unless specifically told to do so.

For any more issues and queries, please join our Discord server.

Feel free to reach out to us. Remember, collaboration is the key to open-source.


Please STAR 🌟 this repository if you liked it and had fun :)

Maintainers! 😊


Aditya Kumar Gupta

💻 🖋

Paurush Tiwari

💻 🖋

Community

Join our Discord Server to get help in contributing, as well as stay up-to-date on issues and best practices.

As always, thanks to our amazing contributors!

Stargazers over time

Stargazers over time

algobook's People

Contributors

18pranjul avatar a-pandey20 avatar aarushi11h avatar abhi-kmr2046 avatar akash22022 avatar anagha-2000 avatar arihantbansal avatar arunkumar-25 avatar bera5186 avatar codesudo avatar geekquad avatar iamkushagra avatar kamesh-mishra avatar kritikaparmar-programmer avatar major-beast avatar manish2202 avatar manthan89-py avatar pranjalmishra30 avatar preyam2002 avatar saileshbro avatar sarthakregmi avatar soumyamalgonde avatar sounakmandal avatar srirupa19 avatar subhash1612 avatar thisislazaruss avatar vardhanaleti avatar vijay5158 avatar vlx01 avatar vrindagupta6828 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

algobook's Issues

Dimensionality Reduction Algorithms

Implementation of the following:

  • Principal Component Analysis (PCA)

  • Principal Component Regression (PCR)

  • Partial Least Squares Regression (PLSR)

  • Sammon Mapping

  • Multidimensional Scaling (MDS)

  • Projection Pursuit

  • Linear Discriminant Analysis (LDA)

  • Mixture Discriminant Analysis (MDA)

  • Quadratic Discriminant Analysis (QDA)

  • Flexible Discriminant Analysis (FDA)

Needs to be merged in Dimensionality Reduction Algorithms folder.

RNN Architecture

Implementation of the following RNN Architectures:

  • RNN

  • LSTM

  • GRU

Should be pushed into dl folder with respective folder name along with requirements.txt file.

Sorting Algorithms in Cpp

  • Insertion Sort

  • Selection Sort

  • Bubble Sort

  • Heap Sort

  • Quick Sort

  • Radix Sort

  • Merge Sort

  • Wiggle sort

  • Tree sort

  • Shell sort

  • Tim sort

  • Stooge sort

  • Recursive Quick Sort

  • Recursive Insertion Sort

  • Recursive Bubble Sort

  • Random Pivot Quick Sort

  • Bead Sort

  • Bitonic Sort

  • Bogo Sort

  • Bucket Sort

  • Cocktail Shaker Sort

  • Comb Sort

  • Counting Sort

  • Pigeon Sort

  • Pancake Sort

  • Gnome Sort

  • External Sort

  • Double Sort

  • Cycle Sort

  • Slow Sort

Please comment on which one you would like to work on so that we can assign you.
Please make separate PRs for every algorithm so that it gets easy for us to review as well.
Join our slack channel here. . Keep Contributing. Thankyou :)

Greedy Algorithms

Implementation of the following in Python:

  • Egyptian Fraction

  • Huffman Coding

  • Huffman Decoding

  • Job Sequencing Problem

NEEDS TO BE PUSHED INTO "Python/Greedy Algorithms"

Scheduling Algorithms in Python

scheduling algorithms used in operating system like First come first served (FCFS), shortest job first (SJF), Priority Scheduling

CNN Architectures

Implementation of the following CNN Architectures:

  • LeNet5

  • AlexNet

  • VGG

  • ResNets

  • Inception

  • FCN

  • UNet

Should be pushed into dl folder with respective folder name along with requirements.txt file.

Maths

Implementation of the following in Python:

  • Find volumes of various shapes (cube, cuboid, cone, right circular cone, prism, pyramid, sphere, circular cylinder)

  • Zellers Congruence Algorithm

  • Ugly numbers

  • Sum of n terms in a Geometric Progression

  • Sum of Digits of a number

  • Sum of n terms in an Arithmetic progression

  • Simpson Rule

  • Segmented Sieve

  • Roots for any Quadratic Equation

  • QR-decomposition of the matrix A using Householder reflection

  • Pythagoras Implementation

  • Prime Numbers up to N numbers

  • Area under the curve using the trapezoidal rule

  • Newton-Raphson method

  • Lucas Sequence Using Recursion

  • Least common multiple of two numbers

  • Peterson Number

  • Jaccard similarity

  • Greatest Common Divisor

  • Extended Euclidean Algorithm

  • Bailey-Borwein-Plouffe (BBP) Implementation

Needs to be merged in "python/maths"

Direction Catastrophe

Problem Statement:

A man was given directions to go from point A to point B. The directions were: “SOUTH”, “NORTH”, “WEST”, “EAST”. Clearly “NORTH” and “SOUTH” are opposite, “WEST” and “EAST” too. Going to one direction and coming back in the opposite direction is a waste of time and energy. So, we need to help the man by writing a program that will eliminate the useless steps and will contain only the necessary directions.

A cheat sheet folder

A cheat sheet is a quick guide to everything and I have an abundance of cheat sheets of different topics.
For example, Python cheat sheet, Big-O cheat sheet, react cheat sheet, and many more.
You can tell me which topics I would be including.
I'm glad to contribute to your resources.

Binary Tree

Implementation of the following in Cpp:

  • AVL Tree

  • Binary Search Tree

  • Binary Tree traversal

  • Recursive Binary Search Tree

  • Lazy Segment Tree

  • Fenwick Tree

  • Non-Recursive Segment Tree

  • Red-Black Tree

Algorithms in C++

I'd be happy to contribute algorithms in C++. @geekquad let me know what you think of starting contributions in C++.

Sorting Algorithms in C++

  • Bubble Sort
  • Comb Sort
  • Heap Sort
  • Insertion Sort
  • Merge Sort
  • Quick Sort
  • Selection Sort
  • Radix Sort
  • Bucket Sort
  • Counting Sort
  • Gnome Sort

Sorting in GO

Implementation of the following Sorting Algorithms in GoLang:

  • Bubble Sort

  • Heap Sort

  • Insertion Sort

  • Merge Sort

  • Quick Sort

  • Radix Sort

  • Selection Sort

  • Topological Sort

  • Double Sort

  • Pigeon Sort

  • Pancake Sort

  • Gnome Sort

  • Bogo Sort

  • Bitonic Sort

  • Comb Sort

  • Bead Sort

Needs to be merged in "go/sorting"

Linked List

Implementation of the following in Python:

  • Singly Linked List

  • Doubly Linked List

  • Circular Linked List

  • Implementing Deque using DoublyLinkedList

  • Printing the elements of a linked list in reverse

NEEDS TO BE PUSHED INTO "Python/Linked List"

MATRIX Algorithm

Implementation of Basic Matrix Algorithms
Needs to be merged in Python/Matrix

  • Inverse of Matrix

  • Rotate Matrix

  • Sorting a Matrix

  • Spiral Print

  • Sherman Morrison

  • Count Islands in Matrix

  • Matrix Manipulation and Multiplication

  • nth Fibonacci number using matrix exponentiation

Graph Algorithms

Implementation of Graph Algorithms:
Needs to be merged in Python/Graphs.

  • A* (A star)

  • Dijkstra’s shortest path algorithm

  • Dijkstra’s Algorithm for Adjacency List Representation

  • Kruskal’s Minimum Spanning Tree Algorithm

  • Bellman-Ford Algorithm

  • Floyd Warshall Algorithm

  • Kahns Algorithm

  • Peterson Graph Problem

  • Steiner Tree

  • Boruvka’s algorithm for Minimum Spanning Tree

  • Karp’s minimum mean weight cycle algorithm

String algorithm

Best string algorithms:

  • String Hashing

  • Rabin-Karp for String Matching

  • Prefix function - Knuth-Morris-Pratt

  • Z-function

  • Suffix Array

  • Aho-Corasick algorithm

Intermediate Sorting Algorithms in Python

List of beginner to intermediate algorithms in Python:

  • Wiggle sort

  • Tree sort

  • Shell sort

  • Tim sort

  • Stooge sort

  • Recursive Quick Sort

  • Recursive Insertion Sort

  • Recursive Bubble Sort

  • Random Pivot Quick Sort

  • Bead Sort

  • Bitonic Sort

  • Bogo Sort

  • Bucket Sort

  • Cocktail Shaker Sort

  • Comb Sort

  • Pigeon Sort

  • Pancake Sort

  • Gnome Sort

  • External Sort

  • Double Sort

  • Cycle Sort

  • Counting sort

  • Strand sort

Please comment on which one you would like to work on so that we can assign you.
Please make separate PRs for every algorithm so that it gets easy for us to review as well.
Join our slack channel here. . Keep Contributing. Thankyou :)

Backtracking Problems in Python

Implementation of the following in Python:

  • The Knight’s tour problem

  • Rat in a Maze

  • N Queen Problem

  • Subset Sum

  • m Coloring Problem

  • Hamiltonian Cycle

  • Magnet Puzzle

To be merged in "python/backtracking" folder.

Backtracking Problems in Cpp

Implementation of the following in Cpp:

  • The Knight’s tour problem

  • Rat in a Maze

  • N Queen Problem

  • Subset Sum

  • m Coloring Problem

  • Hamiltonian Cycle

  • Magnet Puzzle

To be merged in "cpp/backtracking" folder.

Want to add arrays folder

Arrays.py
Implementing an array.py
Merge Sorted Arrays.py
Reversing a string.py
These will be the files and their name says all about their content.
All will be in PYTHON

Graph Algo in GO

Implementation of the following Graph Algorithms in Golang:

  • Breadth-First Search

  • Depth First Search

  • Cycle Detection in DAG (Directed Acyclic Graph)

  • Prim's Algorithm

  • Kruskal's Algorithm

  • Bellman-Ford Algorithm

  • Floyd Warshall Algorithm

  • Dijkstra Algorithm

  • Johnson Algorithm

  • Kosaraju's Algorithm

  • Tarjans Algorithm

  • Ford-Fulkerson Algorithm (The Maximum Flow Problem)

Needs to be merged in "go/graph_algorithms"

Maths CPP

Implementation of the following in C++:

  • Find volumes of various shapes (cube, cuboid, cone, right circular cone, prism, pyramid, sphere, circular cylinder)

  • Zellers Congruence Algorithm

  • Ugly numbers

  • Sum of n terms in a Geometric Progression

  • Sum of Digits of a number

  • Sum of n terms in an Arithmetic progression

  • Simpson Rule

  • Segmented Sieve

  • Roots for any Quadratic Equation

  • QR-decomposition of the matrix A using Householder reflection

  • Pythagoras Implementation

  • Prime Numbers up to N numbers

  • Area under the curve using the trapezoidal rule

  • Newton-Raphson method

  • Lucas Sequence Using Recursion

  • Least common multiple of two numbers

  • Peterson Number

  • Jaccard similarity

  • Greatest Common Divisor

  • Extended Euclidean Algorithm

  • Bailey-Borwein-Plouffe (BBP) Implementation

Needs to be merged in "cpp/maths"

Perceptrons

Implementations of the following:

  • Perceptron

  • Perceptron as AND operator

  • Perceptron as NAND operator

  • Perceptron as NOR operator

  • Perceptron as NOT operator

  • Perceptron as OR operator

  • Perceptron as XNOR operator

  • Perceptron as XOR operator

  • Softmax function

  • ReLU function

Needs to be added in "ml\Perceptrons" folder.

Searching Algorithms in CPP

  • Linear Search

  • Binary Search

  • Bilinear Search (Improvised version of Linear Search)

  • Breadth-First Search

  • Depth First Search

  • Exponential Search

  • Interpolation Search

  • Z Algorithm

  • Fibonacci Search

  • Jump Search

  • Ternary Search

  • Sublist Search

  • Hash Search

Binary Tree

Implementation of the following in Python:

  • AVL Tree

  • Basic Binary Tree

  • Binary Search Tree

  • Binary Tree traversal

  • Recursive Binary Search Tree

  • Lazy Segment Tree

  • Fenwick Tree

  • Non-Recursive Segment Tree

  • Red-Black Tree

NEEDS TO BE PUSHED INTO "Python/Binary Tree"

Bayesian Algorithms

Implementation of the following:

  • Naive Bayes

  • Gaussian Naive Bayes

  • Multinomial Naive Bayes

  • Averaged One-Dependence Estimators (AODE)

  • Bayesian Belief Network (BBN)

  • Bayesian Network (BN)

Needs to be merged in Bayesian Algorithms folder.

Recommender system

Hello, can I add notebooks for a recommender system?

I worked on one recently and it could fit here quite well.

Thanks.

Want to add an excel file

The file contains 450+ questions of DSA with direct links to solutions and tutorials. The questions are sorted according to different topics of DSA. It is named as DSA cracker series. Once you solve all the questions, you will cover all the patterns and types of questions and can ace your problem-solving skills.
I'll love to contribute to all the students like me out there.

Searching Algorithms in Python

  • Linear Search

  • Binary Search

  • Bilinear Search (Improvised version of Linear Search)

  • Breadth First Search

  • Depth First Search

  • Exponential Search

  • Interpolation Search

  • Z Algorithm

  • Fibonacci Search

  • Jump Search

  • Ternary Search

  • Sublist Search

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.