Skip to content

Latest commit

 

History

137 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithms & Data Structures

A comprehensive collection of data structures, algorithms, and problem-solving exercises implemented in Python.

This repository serves as a practical reference for computer science fundamentals, technical interview preparation, and algorithmic problem solving. It contains implementations of common data structures, classic algorithms, and coding interview patterns frequently encountered in software engineering interviews.


Overview

Software engineering extends beyond frameworks and libraries.

Strong understanding of algorithms and data structures is essential for building scalable systems, analysing performance, and solving complex technical problems.

This repository was created to strengthen core computer science knowledge through hands-on implementation and deliberate practice.

Focus Areas

  • Data Structure Implementation
  • Algorithm Design
  • Time & Space Complexity Analysis
  • Technical Interview Preparation
  • Problem-Solving Patterns
  • Clean and Maintainable Code

Technical Skills Demonstrated

Data Structure Design

Implemented fundamental data structures from scratch to understand internal behaviour, performance characteristics, and trade-offs.

Algorithmic Problem Solving

Applied common problem-solving approaches including recursion, dynamic programming, graph traversal, greedy algorithms, and divide-and-conquer techniques.

Complexity Analysis

Evaluated solutions using Big O notation and optimised implementations for efficiency and scalability.

Software Engineering Practices

  • Modular code organisation
  • Consistent documentation
  • Readable implementation patterns
  • Reusable components
  • Incremental testing and validation

Repository Structure

algorithms-datastructures/
│
├── algorithms/
│   ├── sorting/
│   ├── searching/
│   ├── dynamic_programming/
│   ├── recursion/
│   ├── graph/
│   └── greedy/
│
├── data_structures/
│   ├── linked_list/
│   ├── tree/
│   ├── stack_queue/
│   ├── hash_table/
│   ├── heap/
│   └── graph/
│
├── practice_problems/
│
├── tests/
│
└── README.md

Data Structures

The repository includes implementations and exercises covering:

Linear Data Structures

  • Arrays
  • Strings
  • Linked Lists
  • Stacks
  • Queues
  • Hash Tables
  • Sets

Tree Structures

  • Binary Trees
  • Binary Search Trees
  • AVL Trees
  • Tries

Graph Structures

  • Directed Graphs
  • Undirected Graphs
  • Weighted Graphs

Advanced Structures

  • Heaps
  • Priority Queues
  • Disjoint Sets (Union-Find)

Algorithms

Sorting

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Merge Sort
  • Quick Sort
  • Heap Sort
  • Counting Sort

Searching

  • Linear Search
  • Binary Search
  • Depth-First Search
  • Breadth-First Search

Dynamic Programming

  • Memoisation
  • Tabulation
  • Classic optimisation problems

Graph Algorithms

  • BFS
  • DFS
  • Dijkstra's Algorithm
  • A* Search
  • Shortest Path Problems

Additional Topics

  • Recursion
  • Backtracking
  • Greedy Algorithms
  • Divide & Conquer
  • Bit Manipulation
  • Number Theory

Learning Outcomes

Through this repository I have strengthened my understanding of:

Performance Optimisation

  • Time Complexity Analysis
  • Space Complexity Analysis
  • Trade-offs between approaches

Problem Solving

  • Pattern Recognition
  • Algorithm Selection
  • Data Structure Selection
  • Debugging Strategies

Technical Interview Readiness

Preparation for software engineering interviews through practical implementation of commonly assessed concepts and coding challenges.


Example Topics Practiced

Arrays & Strings

  • Two Pointers
  • Sliding Window
  • Prefix Sums

Trees

  • Traversals
  • Binary Search Trees
  • Tree Construction
  • Lowest Common Ancestor

Graphs

  • Connected Components
  • Cycle Detection
  • Shortest Path
  • Topological Sort

Dynamic Programming

  • Fibonacci Variants
  • Knapsack Problems
  • Longest Common Subsequence
  • Coin Change

Running Locally

Clone the repository:

git clone https://github.com/harrywardy-cmd/algorithms-datastructures.git

cd algorithms-datastructures

Install dependencies:

pip install -r requirements.txt

Run individual implementations or exercises as required.


Why I Built This Repository

Modern software development requires more than framework knowledge.

This repository was created to build a stronger foundation in computer science fundamentals through direct implementation and experimentation. It serves as both a personal learning resource and a demonstration of ongoing commitment to improving software engineering skills.

By implementing algorithms and data structures from first principles, I have developed a deeper understanding of performance optimisation, problem solving, and the trade-offs involved in software design.


Technologies

  • Python 3
  • Object-Oriented Programming
  • Algorithm Analysis
  • Data Structure Design
  • Unit Testing

Future Improvements

  • Additional LeetCode solutions
  • Competitive programming exercises
  • Benchmarking and performance comparisons
  • Visualisation tools for algorithms
  • Expanded test coverage
  • Advanced graph algorithms

Author

Harry Ward

GitHub: https://github.com/harrywardy-cmd

LinkedIn: https://www.linkedin.com/in/harry-ward-b2b9b4319

About

A GitHub repository where I store My solutions to algorithm & data structure problems

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages