I want to learn algorithms and data structures to improve my engineering and program design thinking skills. I will use this repository to track my progress, take notes, and to practice.
Algorithms and data structures are two of the most important pieces of computer science. They are not only important for getting around coding interviews but also for solving computational problems efficiently. To day, there are massive datasets that are being generated instantly. Developing efficient algorithms that work on those massive datasets is one of the important and biggest problems. Choosing a right algorithm and data structure that suit a particular computation problem is also a critical thing that can influence the efficiency of the program. Chip Huyen puts it nice when she said in her book that "if our world is run by data, then data structures are what keep us from descending into chaos." Algorithms then represents different sets of operations that can be performed on data stored by data structures.
- Insertion Sort: code, notes
- Quick Sort: code, notes
- Merge Sort: code, notes
- Heap Sort: code, notes
- Binary Search: code, notes
- Breadth-First Search: code, notes
- Depth-First Search: code, notes
- Linked lists: code, notes
- Stacks and Queues: code, notes
- Arrays: Static Array code, Dynamic Array code, notes
- Hash tables: Direct Access Array code, Hash Table Code, notes
- Graphs: notes
- Binary Search Trees: code, notes
- Heaps: notes
- Measuring Algorithm Efficiency with Big-O: notes
- Recursion: notes
- Dynamic Programming: notes
- Bit Manipulation: notes
- Python - Basics
- Python - Advanced - Ongoing
- Maths for ML: EXTERNAL LINK
- Course: MIT Introduction to Algorithms, Youtube, Website
- Book: Algorithms Design Manual by Steven S. Skiena
- Book: Cracking the Coding Interviews
- Book: Introduction to Algorithms by Thomas H. Cormen, et .al
- Course: Algorithms by Abdul Bari, Youtube
- Book: Introduction to Machine Learning Interviews by Chip Huyen
- Book: Deep Learning Interviews
- Book: Tech Interview Handbook
- Book: Data Structures and Algorithms in Python by Michael T. Goodrich
- Course: Princeton Algorithms and Data Structures by Robert Sedgewick and Kevin Wayne. There is also a Coursera course on this.
- Course: Data Structures and Algorithms in Python on Free Code Camp, Youtube, Website
- Awesome Algorithms
- Data Structures and Algorithms
- Interactive Coding Challenges
- Python Data Structures and Algorithms
- The Algorithms - Python
The notes about algorithms and data structures in this repo were compiled for learning purpose. They are are the most important takeaways from the mentioned resources. I tried to take simplified notes and added extra ideas wherever necessary, but some lines/ideas may be completely similar or closely connected to those resources. This repo was done for learning purpose and to act as a reference.
For any error or any suggestion, fill an issue or let me know here or here.
Thanks to my friend Gedeon Muhawenayo for supporting me and suggesting good algorithm's resources!