Alex Montello | Programming Projects

Kinematic Pathfinder

representation of three 2D paths, with the 3rd dimension being time
  • Pathfinding algorithm for many objects simultaneously
  • Modified A* algorithm to go from starting position and velocity to ending position with zero velocity in the shortest amount of time
  • Chooses paths prioritizing smaller sums of current time(from start to current node) and optimal remaining time(calculated with a piecewise function derived from kinematics), as well as preferring paths not predicted to collide with existing paths
  • Adjustable constraints for how close objects may come to each other, maximum magnitude of acceleration, and disallowed positions
  • Priority given to paths calculated first
  • Generates paths in discrete steps of adjustable size
  • Made in Unity with C#, but no logic depends on the actual 3D simulation's physics or geometry

Assignment Grading Tool

the AI essay grading tool
  • Made with HTML, CSS, JavaScript (React), and Python with a team (I worked on both frontend and backend)
  • Evaluates large numbers of student essays using a LLM based on customizable categories from a rubric editable by the user
  • OpenAI's GPT3.5 model was used to analyze the essays
  • Prompt engineering and trial/error was used to get reliable, structured outputs out of the AI completions
  • Scores for each rubric category as well as comments about areas of improvement are labeled with student information and compiled into a table
  • The table can be exported to a Google Sheets document automatically

Sphere Localizer

placeholder image
  • Uses OpenCV and Python in a Jupyter Notebook to process frames at 10fps
  • Hough circle transform used to detect a green sphere of known size and calculate its radius in pixels
  • Angles are calculated from detections' positions in the frame are calculated using the focal length of the camera and the distance away is calculated from the radius of the sphere
  • Position estimations are accurate within roughly 30mm as long as the sphere is within about 5m from the camera lens
  • 3D position data is saved to estimate the path of a projectile sphere with a quadratic bezier curve

Mandelbrot Set

the mandelbrot set zoomed into its boundary
  • This uses HTML and JavaScript in Replit
  • Pixels on a canvas element correspond to the complex plane with the real parts of numbers being horizontal
  • The Mandelbrot Set fractal is displayed as black on a colorful background, where the color represents the amount of iterations of the recursive equation Z²+c until the value is estimated to diverge
  • Zooms into/out of where the user clicks by an adjustable factor
  • Can distinguish pixels approximately 10-16 apart

AI Worksheet Completer

an example worksheet and annotations
  • Uses edge detection and contours to form a quadrilateral of interest to a piece of paper detected in the frame
  • OCR used to detect questions mostly accurately
  • OpenAI's GPT3.5 model answers the questions concisely and the responses are added under the respective question
  • After answers are added, the quadrilateral of interest, including the annotated answers, is warped back to its orientation in the original frame
  • Made in Jupyter Notebook with Python and the libraries OpenCV, OpenAI, numpy, and pytesseract

This Portfolio

the home page for this portfolio
  • You're looking at it
  • Made with HTML and CSS only
  • All media is made by me

Vision Assist

an example frame processing result from depth estimation
  • Made with Python, JavaScript (React), HTML, and CSS with a team of students (I contribued to the backend)
  • Uses an AI trained from hand-labeled data of common furniture items as well as a model pre-trained on the COCO dataset
  • Approximately 2 frames from a device camera processed per second, passing through MiDAS depth estimation and the two AI models to analyze surroundings
  • Depending on the mode, emits audible feedback through text-to-speech describing potential hazards, or alternatively vibrates the device with a frequency representing the direction to adjust in order to avoid obstacles
  • Integrated into a website with HTML and CSS, as well as an app using Dart in Flutter (not downloadable)

Restaurant Decision Maker

the restaurant choosing tool
  • Randomly picks a restaurant from a large list of options in Cincinnati
  • Category options allow users to choose which types of food they are looking for
  • Outputs an adjustable number of options with either some of the chosen categories or exclusively from the chosen categories
  • Made in Replit with HTML, CSS, and JavaScript

FTC Scouting Tool

the FTC scouting tool website
  • Uses HTML, CSS, and JavaScript in Replit
  • Tracks POWERPLAY robots' capabilities in significant detail
  • Game timer and score tracking states(autonomous, driver-controlled, and endgame) consistent with matches
  • Data compiled in a spreadsheet transferrable to Google Sheets

NYT Game Solver

an example use of solving a Wordle and Spelling Bee
  • Made in Code.org with JavaScript and included databases of words
  • Computes solutions or optimal guesses for Wordle, Spelling Bee, Letter Boxed, and Sudoku
  • Wordle solution uses brute force, like Spelling Bee and Letter Boxed, to narrow down solutions and information theory to suggest guesses optimally
  • Sudoku solver uses a recursive backtracking method
  • Five pages, navigable with buttons, each with various user inputs

Asteroid Hazard Predictor

part of a reasearch poster describing my methods and findings
  • Trains and tests on a dataset of 840000 asteroids from NASA from Kaggle
  • Data thoroughly analyzed using matplotlib and pandas
  • SMOTE used to oversample hazardous asteroids, balancing the training data
  • Bagging classifiers, random forest classifiers, and decision trees were tested, all with accuracy above 99.95%
  • All work done from a Python notebook; results compiled into a poster

Solar System Simulation

an overview of the solar system with enlarged objects for visibility a spacecraft on a planned trajectory with enlarged objects
  • Uses ephemeris and planet data from JPL and NASA
  • Eulers method used to define and test trajectories through the solar system or simulate the motion of a spacecraft
  • Created a mission from Earth to Neptune's eccentric moon, Nereid
  • Adjustable scalars for time, planet sizes, Sun size, and viewing region size
  • Made with C# in Unity