Skip to main content
Navigation
HomeTechnical ReferenceJournalGitHubGitHub
Sidebar — toggle document categories via the logo
Algorithmic Toolbox — CS Algorithms Collection

Algorithmic Toolbox — CS Algorithms Collection

July 15, 2020

Overview​

Algorithmic Toolbox is a curated collection of classic computer science algorithms organized by algorithmic paradigm. Each algorithm lives in its own directory with a complete test suite — minimal tests for correctness and stress tests for robustness. The collection spans divide and conquer, dynamic programming, greedy strategies, and fundamental number theory operations.

Built as a companion to the Algorithms and Data Structures Specialization on Coursera, the toolbox uses a standardized testing framework that leverages the algorithm-testing library for consistent validation across all algorithm implementations.


Key Features​

  • Organized by paradigm: Algorithms grouped into clean directories — divide_algorithms/, dynamic_programming/, greedy_algorithms/, plus standalone modules for GCD, LCM, Fibonacci, and pairwise max product
  • Comprehensive test coverage: Every algorithm includes minimal test data, deterministic comparison tests, and stochastic stress tests
  • Reusable test modules: Standardized test structure (algorithm.py, algorithm_test.py, stress_test.py, implementations.py) shared across all algorithms
  • Coverage across paradigms: Binary search, improved quicksort, majority element, edit distance, primitive calculator, car refueling, fractional knapsack, and more

Algorithm Catalog​

Divide & Conquer​

  • Binary search
  • Improved quicksort (3-way partitioning)
  • Majority element detection

Dynamic Programming​

  • Money change (minimum coins)
  • Maximum gold (0/1 knapsack)
  • Primitive calculator (minimum operations)
  • Edit distance (Levenshtein)
  • Placing parentheses (arithmetic expression maximization)

Greedy Algorithms​

  • Car refueling (minimum stops)
  • Fractional knapsack (loot optimization)
  • Money change (greedy approach)

Number Theory​

  • Greatest Common Divisor (GCD)
  • Least Common Multiple (LCM)
  • Fibonacci (fast doubling, modulo m, last digit)
  • Maximum pairwise product (fast algorithm with stress testing)

Architecture​

Each algorithm follows a consistent project structure:

<algorithm_name>/
├── main.py # Entry point
├── <algorithm_name>.py # Core implementation
├── algorithm_test.py # Deterministic comparison test
├── stress_test.py # Randomized stress test
├── minimal_test.py # Minimal correctness check
├── minimal_test_data.py # Test data definitions
├── implementations.py # Alternative implementations for comparison
└── test_result.py # Result validation

The algorithm/ root directory provides the shared test framework that each algorithm directory imports, ensuring consistent validation across all paradigms.


Tech Stack​

LayerTechnology
LanguagePython
TestingCustom framework with the Strategy Pattern
Use CaseAlgorithm education, Coursera coursework