skills
Programming Languages
Software Development Practices
User Experience and Visualization
work

Analysis and Visualization of State Legislative Funding
I conducted exploratory data analysis which revealed the extent of funding disparities faced by state legislative candidates in rural districts. I sourced, cleaned, combined, and validated datasets using Python (Pandas, GeoPandas), and created accessible visualizations with Matplotlib and Seaborn to communicate trends including heat map geographical maps, pie/donut charts, and histograms. I designed summary tables and graphs and calculated statistics to support storytelling across the organization's website, presentations, and social media, helping to communicate complex political data succinctly.

As lead front-end developer for CLEW, a blind and low-vision indoor navigation app, I directed a full UI/UX overhaul with a focus on low vision accessibility, and re-architected the codebase using the MVVM framework and reusable, single-responsibility components to improve scalability and decouple front- and back-end logic. In 6 months, my team deployed 10+ builds to the App Store for user testing in a continuous development process and conducted over a dozen user interviews as part of our human-centered design process. I mentored three junior developers in iOS development (Swift, SwiftUI), Git workflows, and accessible design practices, fostering a collaborative and inclusive dev culture.
I co-led a project consulting for Pfizer's Global Clinical Supply (GCS) team to develop a tool for quantifying clinical trial operational complexity. My team of five designed a backend evaluation engine in Python and a manager-facing dashboard in Spotfire to communicate results with tables and graphs. We addressed data sparsity and inconsistency by implementing logic to standardize evaluation despite significant missing fields and variable data coverage. I led project planning, coordinated deliverables, and facilitated communication between our team, our advisors, and the Pfizer stakeholders.

I developed a prototype of a chronic illness management app in Figma and Swift (SwiftUI). I conducted user research to identify major issues user's had with competitor apps which informed the design of a highly-customizable application with an aesthetic, modern interface. I implemented parts of the introduction sequence, calendar tab, and settings section in Swift and prototyped the rest of the app in Figma.

I developed a graphical user interface (GUI) visualization of the k-means clustering algorithm for unlabeled dataset partitioning, a form of unsupervised machine learning, complete with customizable example graph generation. Using the interface, I conducted a comparative analysis of traditional k-means versus PCA-informed centroid selection (k-means++) based on the paper "An Improved K-means Clustering Algorithm Towards an Efficient Data-Driven Modeling", highlighting gains in consistency and cluster accuracy.
Led a team of three to develop a Flappy Bird clone in C using SDL for graphics and game loop logic, collaborating via pair programming. We structured the project using MVC code architecture for modularity and maintainability. We configured builds with CMake and implemented comprehensive unit tests to evaluate edge case behavior.
I designed and implemented a real-time command-line word search tool in Kotlin, leveraging the Knuth-Morris-Pratt (KMP) algorithm for efficient linear-time substring matching. I followed test-driven development practices and used JUnit to write comprehensive unit tests covering complex edge cases.

My team and I implemented multiple graph coloring strategies in Python, including brute-force, greedy, Welsh-Powell, and DSatur algorithms. I led the build of a random graph generator with customizable inputs for number of nodes and amount of connectivity, and a visualization tool to compare identical graphs colored with different algorithms. We analyzed theoretical and empirical time complexity to explore performance trade-offs across heuristic and exhaustive approaches to NP-hard graph coloring, and summarized our findings in a computational essay.
My partner and I implemented the CYK parsing algorithm in Haskell, which determines whether a string belongs to a language defined by a context-free grammar in Chomsky Normal Form. CYK is a foundational parsing technique in natural language processing (NLP), forming the basis for syntactic analysis in compilers, text recognition systems, and early AI language models.

My team and I developed a Python tool to visualize Dijkstra's, A*, and Bellman-Ford algorithms on randomly generated graphs. I built a custom random graph generator with adjustable parameters (e.g., node count, edge density) to simulate diverse scenarios, and co-authored an interactive computational essay demo that compares pathfinding behavior and algorithm performance. Lastly, we designed a modified pathfinding algorithm that finds the closest path of a particular (user inputted) length, avoiding simple loops.