The Effect of Architecture on Continual Learning (GitHub Link, arXiv)
Python | PyTorch | JAX | Equinox | TensorFlow
Overview: During my time as a Research Aide at Argonne National Laboratory, I collaborated on a novel research project addressing the "Catastrophic Forgetting" problem in continual machine learning. We formulated a bilevel optimization framework to investigate the interplay between neural network architecture and learning stability across sequential tasks. We discovered that by learning the optimal architecture and weights at each task substantially improves accuracy and reduces catastrophic forgetting. More importantly, this proves that studying continual machine learning is still worth while.
Key Highlights:
Bilevel Optimization Framework: Supported the development of a nested optimization problem where the "inner" loop optimizes architectural parameters on a given task while the "outer" loop optimizes weights.
Architectural Sensitivity Analysis: Designed and executed large-scale experiments to quantify how specific structural choices (depth, width, and connectivity) influence a model's ability to retain historical knowledge without degrading performance on new tasks.
High-Performance ML Implementation: Developed a robust research pipeline using PyTorch and JAX/Equinox, leveraging dynamic programming. Experiments are completed for regression (sine) , image classification (MNIST), and graph classification (FakeDataset).
Collaborative Research: Worked with a computational mathematician to refine the theoretical foundations of the optimization framework, ensuring mathematical consistency in the proposed algorithms.
For more information on this research project see the "Applied Research," click here.
Python | Pandas | Matplotlib | Seaborn | OpenPyXL | Tkinter | GitHub Actions
Overview: I developed an end-to-end ETL application that transforms fragmented iReady diagnostic assessment data into actionable, multi-term Excel reports with professional visualizations. This reduces manual teacher workload from 2+ hours to 1-2 minutes per analysis.
Key Highlights:
The Problem & Solution: Identified a real-world pain point: elementary teachers manually reorganizing assessment data across fragmented CSV files while performing complex growth calculations. Engineered iReadyETL as a production-ready pipeline featuring automated data merging, feature engineering for growth tracking, and FERPA-compliant local processing.
Data Pipeline Architecture: Built a robust ETL workflow using Pandas that cleans and standardizes iReady exports, performs outer joins to capture all students across Fall/Winter/Spring terms, calculates individualized growth metrics (typical vs. stretch goals), and computes term-to-term deltas. The system handles edge cases like students entering/exiting mid-year.
Analytics & Visualization: Leveraged Seaborn and Matplotlib to generate professional analytics dashboards showing (1) class-wide goal achievement rates and (2) growth amount distributions with statistical overlays. Results saved as production-ready PNG files alongside formatted Excel output.
User-Centric Design: Built an intuitive Tkinter GUI for non-technical educators, featuring step-by-step configuration, file selection dialogs, and real-time status indicators. Designed the experience to require zero coding knowledge while maintaining professional data handling standards.
Cross-Platform Engineering: Addressed the challenge of deploying Windows executables from a macOS development environment by implementing GitHub Actions CI/CD pipelines to automate .exe compilation and distribution—demonstrating modern DevOps practices.
Impact & Compliance: Delivered a fully FERPA-compliant solution with 100% local data processing (zero cloud uploads). Currently tested with synthetic data; ready for district-level deployment supporting both class-level and grade-level analysis.
Python | Pandas
Overview: In my roles teaching Precalculus and Finite Mathematics, I noticed a decline in physical attendance in one of my course section. I wanted to explicitly track their performance adn empirically test its relationship with overall student success. Because attendance was not explicitly logged, I built a tool to "reverse-engineer" attendance records by analyzing the number of quizzes and daily exit slips the student completed.
Key Highlights:
Data Integration: Cleaned and merged CSV data from Canvas and the school’s course portal using Pandas.
Feature Engineering: Accounted for course policies (such as dropped low scores) to ensure the data reflected the true weighted grades calculated by the LMS. Constructed new variables such as number of total absences, percentage of attendance, average assignments grades, and number of assignments completed.
Categorical Analysis: Integrated student standing (Freshman through Senior) to observe how engagement trends shifted across different academic cohorts.
The Impact: This project allows for immediate feedback, providing a clear visualization of how consistent participation in short, effort-based assessments (exit slips and quizzes) correlates with performance on accuracy-based exams.
Python | LaTeX | Scikit-Learn | Pandas | Matplotlib | Seaborn
Overview: In this project I developed a machine learning solution for a Portuguese school district to identify students needing early intervention by predicting final period grades based on 35 demographic and academic attributes.
Key Highlights:
The Methodology: Conducted extensive Exploratory Data Analysis (EDA) using Seaborn and Matplotlib to visualize correlations between social factors (e.g., internet access, romantic status) and academic outcomes.
The Technical Stack: Leveraged Scikit-Learn to build a data pipeline handling imputation, outlier removal, data engineering and feature scaling. Compared multiple architectures, including Linear, Lasso, SVM, and Gradient Boosting Regression, to determine the most effective predictive ensemble.
Findings: Demonstrated that while previous grades are the strongest predictors, a holistic model incorporating study time, travel time, and social support systems accounts for over 78% of student performance variance (R^2).
Presentation: Synthesized complex results into a formal technical executive summary using LaTeX, facilitating data-driven recommendations for school district administrators.
Predicting Institutional Success: A Comparative Regression Analysis of Graduation Rates (GitHub Link)
R | LaTeX | glmnet | car | e1071
Overview: In this project, I leveraged the ISLR College dataset to model the factors influencing graduation rates across 777 U.S. institutions. The analysis focuses on navigating the "Bias-Variance Tradeoff" by comparing simple, multiple, and regularized regression techniques.
Key Highlights:
Statistical Rigor: Performed log-transformations to satisfy Gauss-Markov assumptions; analyzed distributions of variables; analyzed distributions of residuals; performed hypothesis testing and investigated confidence intervals.
Geometric Intuition: Applied LASSO regression, utilizing L1 regularization to handle multicollinearity among 18 predictors. The model utilized the geometric properties of the diamond-shaped L1 constraint to perform automatic variable selection.
Model Optimization: Compared four distinct models (Simple LM, two MLR variants, and LASSO) using MSE, MAPE, and R-squared as primary evaluation metrics.
Results: The LASSO model emerged as the optimal solution, achieving a Test R-squared of 0.42 and a Mean Absolute Percentage Error (MAPE) of approximately 20.6%, effectively balancing model parsimony with predictive stability.
From Scratch to JAX: Functional Neural Networks with Equinox (GitHub Link)
Python | JAX | Equinox | NumPy
Overview: This project involves a complete architectural refactoring of a classic MNIST handwritten digit classifier. Inspired by Michael Nielsen’s Neural Networks and Deep Learning, I translated a manual "long-hand" NumPy implementation of backpropagation into a modern, high-performance functional framework using JAX and Equinox. This project highlights the intersection of multivariable calculus and functional programming in machine learning.
Key Highlights:
Theoretical Translation: Dissected the fundamental mathematics of the backpropagation algorithm and re-implemented them using JAX’s grad for automatic differentiation.
Functional Architecture: Leveraged Equinox to build a model that treats neural network layers as "PyTrees." This ensures the model remains compatible with JAX’s purely functional requirements while providing a familiar, class-based interface for state management.
Performance Optimization: Utilized JAX’s jit (Just-In-Time) compilation to significantly accelerate the training loop, transforming a serialized Python implementation into optimized XLA (Accelerated Linear Algebra) kernels.
Vectorized Training: Replaced manual loops with JAX’s vmap, allowing for seamless batching of data without the boilerplate code typically found in lower-level implementations.
Results: Successfully replicated the benchmark accuracy of the original "scratch" implementation while reducing training time by an order of magnitude, demonstrating the efficiency of specialized ML hardware acceleration.
Coming Soon!