This repository hosts materials for the course, Data Structures and Algorithms Specialization, offered by Coursera and UC San Diego, including my own solutions to the problems.
This specialization explores fundamental in data structures and algorithms and is divided into six series courses:
The initial course covers algorithmic strategies, including greedy algorithms, divide-and-conquer algorithms, and dynamic programming. These three techniques are better described as strategic approaches rather than specific algorithms. The principles underlying these strategies are readily observable in more specialized algorithms. For instance, merge sort exemplifies the divide-and-conquer algorithm, and dynamic programming can be applied to solve problems like finding the shortest path in an undirected graph.
The second course, Data Structures, is the cornerstone of this specialization. To harness the full potential of effective algorithms, efficient data structures for data manipulation are indispensable. Among these, arrays and singly/doubly linked lists represent two concrete data structures. At the same time, there are many abstract data structures such as stacks, queues, priority queues, disjoint sets, hash tables, and binary trees. This course dives into the comprehensive theory and implementation of both concrete and abstract data structures, offering insights into their strengths and weaknesses and guidance on when to deploy them in various contexts.
Graph theory is a mathematical discipline that studies graph structures comprised of vertices connected by edges. Its significance extends to diverse fields, like computer science, cryptography, logistics, transportation, urban planning, and economics. This course introduces fundamental graph theory concepts, including identifying strongly connected components, finding shortest paths, and determining minimum spanning trees.
In this repository, all data structures and algorithms are developed from scratch. There is no requirement to install any additional dependencies; all you need is a Python3 or C++ compiler installed on your system.
Any feedback, comments, and questions are welcome.
- 2.0.0
- Continue this course in 2023 and aim to understand EVERYTHING.
- 1.0.0
- Finish first three courses in 2016, but didn't continue till the end.
This project is licensed under the [NAME HERE] License - see the LICENSE.md file for details
Explore the inspiration and references listed here to further expand your knowledge and sharpen your skills.
- Ace Your Next Coding Interview by Learning Algorithms
- DISCRETE MATHEMATICS for Computer Science
- [DPV] Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani. Algorithms (1st Edition). McGraw-Hill Higher Education. 2008.
- [CP] Phillip Compeau, Pavel Pevzner. Bioinformatics Algorithms: An Active Learning Approach. Active Learning Publishers. 2014.
- Bioinformatics Algorithms: An Active Learning Approach: it talks a lot of things about string pattern matching.