This repository contains three major projects completed as part of the CS3364: Design and Analysis of Algorithms course at Texas Tech University. These projects focus on implementing and analyzing various algorithms to solve complex real-world problems efficiently.
Each project demonstrates a different algorithmic approach, including sorting algorithms, graph traversal algorithms, and shortest path algorithms, applied to specific problem domains. The projects are designed to highlight the power of algorithmic solutions in computer science.
This repository contains the following projects:
-
Project 1: Evaluating Search Engine Reliability through Sorting Algorithms
- This project focuses sorting algorithms, Merge Sort, Quick Sort and Insertion Sort are applied to assess the reliability of search engines by analyzing inversion counts in the ranking of web pages.
- Read More
-
Project 2: Course Scheduling Using Topological Sorting
- This project focuses on using Depth-First Search (DFS) for topological sorting to determine the optimal order in which a student should complete courses based on prerequisites.
- Read More
-
Project 3: Shortest Path Finder
- The project implements the Bellman-Ford and Dijkstra algorithms to calculate the shortest path between different buildings on a university campus, considering both positive and negative edge weights.
- Read More
This repository primarily utilizes the following technologies:
Python: Used for implementing the algorithms.
- Data Structures: Employed across projects to efficiently handle data and optimize algorithm performance.
- Clone the repository:
git clone https://github.com/your-repo/design-and-analysis-of-algorithms.git
- Navigate to the folder of the project you want to run.
- Follow the specific instructions in the
README.md
file within each project folder to execute the code.
These projects provided hands-on experience in algorithm design, analysis, and implementation:
- Algorithm Optimization and Complexity Analysis: Gained an in-depth understanding of analyzing algorithmic efficiency, comparing time complexities, and selecting optimal solutions for different problem types.
- Sorting Algorithms: Enhanced knowledge of sorting algorithms Merge Sort, Quick Sort and Insertion Sort and their applications, particularly in ranking and reliability analysis.
- Graph Traversal and Topological Sorting: Applied Depth-First Search (DFS) for topological sorting, learning to solve dependency and scheduling problems effectively.
- Shortest Path Algorithms: Implemented Dijkstra’s and Bellman-Ford algorithms for shortest path calculations, mastering techniques in graph-based problem-solving, including handling negative weights.
- Real-World Problem Solving: Developed skills in applying theoretical algorithmic concepts to practical scenarios, reinforcing the importance of robust, efficient solutions in software engineering.
These projects collectively strengthened my ability to design, implement, and evaluate advanced algorithms, preparing me to tackle complex computational challenges.