Enhancement Two: Algorithms and Data Structures

Abram Steinbrenner

Artifact Description

The artifact selected for this enhancement is the Grazioso Salvare Animal Shelter Dashboard, originally developed during CS 340: Client/Server Development. The project consists of a MongoDB backend and a Python-based dashboard built with Dash and Plotly that allows users to filter, analyze, and visualize animal shelter records.

The system supports identifying dogs suitable for specialized rescue training such as water rescue, disaster response, and wilderness search operations. The original version of the dashboard was functionally correct but relied heavily on client-side data processing and repetitive conditional logic for filtering and aggregation.

Justification for Inclusion in the ePortfolio

This artifact was selected for inclusion in my ePortfolio because it demonstrates applied algorithmic reasoning in a realistic, data-driven application. The project requires efficient handling of structured datasets, careful selection of algorithms, and explicit trade-off analysis between competing design approaches.

Key components of the enhancement showcase my skills in algorithms and data structures, including centralized query mappings to reduce conditional complexity, database-side filtering to minimize unnecessary data transfer, and aggregation logic that groups and summarizes large datasets efficiently. The enhancement emphasizes scalability, maintainability, and correctness rather than surface-level functionality.

Alignment With Planned Course Outcomes

This enhancement aligns with the course outcomes identified earlier in the term. In particular, it demonstrates the ability to design and evaluate computing solutions using algorithmic principles while managing trade-offs between client-side processing and database-side querying.

The project also illustrates the use of industry-relevant tools and techniques, including MongoDB aggregation pipelines, structured query design, and defensive validation when working with indexed datasets. No updates to the original outcome coverage plan are required, as the enhancement fulfills its intended scope.

Reflection on the Enhancement Process

Enhancing this artifact reinforced the importance of placing algorithms at the appropriate layer of a system. While client-side processing was initially sufficient for small datasets, refactoring the logic to rely on database-side filtering and aggregation significantly improved efficiency and scalability.

One challenge involved restructuring existing logic without breaking dashboard behavior. This required careful testing and validation, particularly when replacing fragile index-based access patterns with safer, column-based data access. The process emphasized defensive programming and the value of maintainable algorithm design.

Overall, this enhancement strengthened my ability to reason about algorithmic efficiency in practical applications and to clearly communicate the rationale behind design decisions.

Evidence