Nicholas Harsell

Mathematics Researcher, Computational Developer

Biography

My name is Nicholas Harsell! Currently, I am an undergraduate student at James Madison University majoring in quantitative finance and mathematics. Additionally, my broad passions led me to pick up minors in computer science, economics, computational analytics, and honors interdisciplinary studies, as well as university-sponsored research in theoretical development of algorithms and data collection through the College of Science and Mathematics and College of Business. My career focus is in algorithmic theory, machine learning, numerical analysis, and other fun areas of computational mathematics. Here, you will find a more expansive list of my current projects, coursework, conference presentations, and publications.

Mathematics Projects

Overview

The following projects are some highlighted current projects of mine; what separates these projects from my programming projects is a highlight in theoretical math development/understanding. Any good computational math project has programmed and reproduceable numerical experiments, but these explore these experiments in unexplored or entirely new areas of analysis and machine learning.

Reparameterization of the Information Bottleneck

The information bottleneck characterizes the tradeoff between information compression and learning. It has notable uses in neural network training and, more recently, a potential ability to explain the generalization abilities of deep neural networks (DNNs). This is a proprietary project which explores a new view of a time-dependent tradeoff parameter for time-series learning, neural network training, and generalization guarantees through PAC-Bayes bounds.

Numerical Analysis of Fractional Dimensions of Layed Perlin Noise

Perlin noise is a gradient noise algorithm used to generate smooth, seemless transitions across a plane. While typically used for virtual terrain generation, layering perlin noise generations on top of one another (called octaves) creates fractional Brownian motion (fBm). This project focuses on the computational methods for calculating the dimension of such processes, with potential implications to come.

Visual Intuition for Advanced Mathematics

This project centered around the idea that visualizing advanced mathematics can assist students in learning most topics. Using Manim, a Python library developed by Grant Sanderson (3Blue1Brown), this project includes 30+ minutes of tailored animations for students learning linear algebra, real analysis, probability, stochastic processes, and multivariate calculus.

Programming Projects

Overview

In addition to developing an interest and experience in higher-level math, I also find myself programming various medium-sized projects in my free time. These range from numerical/mathematical libraries to Chess engines to this website, allowing me to gain experience in all sides of programming and development.

Linear Algebra Library

Primary Language: C++

Combining my experience with linear algebra and my desire to master C++, I created a linear algebra library in C++. This includes simple computations such as inner products, L2 norms, and matrix products; it also includes efficient methods to compute eigenvectors/eigenvalues, decompositions (spectal, SVD, LU), and more. Most importantly, this project focuses on efficient storage of data.

Persistent Homology Lite

Primary Language: Python

Topological Data Analysis (TDA) is an explored area, but it still has plenty of benefits in nearly every industry. This project is an exploration for my own knowledge of the inner workings of persistent homology, a tool ubiquitous with TDA.

Pure Chess Engine

Primary Language: Python

I've always been a player of chess at some level. Exploring move sequences and tactical positions with friends was a rewarding past-time. However, the purpose of this project was to challenge myself and push my ability to write highly optimized code. This project uses no libraries and no languages outside of Python; the game engine, neural network architecture, training process, pruning logic, and game algorithms are all hand-crafted.

Mini Ray-Tracer

Primary Language: C++

Ray-tracing is a rendering technique used to create photorealistic images. This project is a mini ray-tracer built in C++ which includes features such as anti-aliasing, depth of field, and more. The goal of this project is to explore the computational geometry and optimization techniques used in ray-tracing.

Favorite Coursework

Overview

I had the opportunity to complete 40 college credits in high school, allowing me to enroll in far more major- and minor-specific courses during my time at JMU. Listed here are a few of my favorites, due to their unique impact, utility, challenge, and/or inspiration.

Numerical Analysis

Error correction, rootfinding (Newton-Raphson, Muller's method, Durand-Kerner, Aberth's), interpolation (Lagrange, Hermite, B-spline, Bezier curve), Chebyshev polynomials

Real Analysis I/II

Axioms of \( \mathbb{Q} \), least upper bound property, cardinality, interior/limit open/closed sets, density, compactness, sequences, series, functions, differentiation, Riemann integration

Advanced Linear Algebra

Vector spaces, linear independence, span, bases, inner products, orthogonality & orthonormality, Riesz Representation Theorem, direct sums, block matrices; unitary, hermitian, and normal matrices; Spectral Theorem, singular value decomposition

Fourier Analysis and PDEs

Heat equation, diffusion equation, divergence theorem/Green's theorem, separation, the Laplacian, orthogonality of sines/cosines, equilibrium/general solutions in cartesian & spherical coordinates

Data Structures and Algorithms

Big-\( \mathcal{O} \) / Big-\( \Omega \) / Big-\( \Theta \) notation, amortized analysis, custom iterators, linked lists, array-based lists, queues, sorting, searching

Abstract Algebra

Groups, homomorphisms, isomorphisms, roots of unity, symmetric group, dihedral group, permutation matrices, fundamental homomorphism theory

Mathematical Finance

Probability measures, probability spaces, expectation, stochastic integral evaluation, Ito's Lemma derivation

Get In Touch

Given I have time to commit, I am always open to exploring new avenues of computational research will passionate and curious people. I check my LinkedIn direct messages and email consistently, though it may be a day or two before I can sit down to fully respond. Regardless, I am open to research opportunities in acedemia and industry alike!

Email copied to clipboard!