Charles Benello
  • About
  • Experience
  • Projects
  • Contacts

Get To Know More

About me

Profile Picture

Hi! I am Charles Benello, a third year at the University of Chicago currently studying Mathematics and Computer Science. Currently I am researching under Professor Aaron Elmore, exploring Query Optimization and how to efficiently transfer/work on large pieces of data.

For a long time I have been interested in optimization, especially in graph traversal. These days I am working on a an algorithm to solve one of my favourite games: Oh h1 (think binary sudoku). In my free time I am learning Korean, training for a marathon or going into Lake Michigan, though not so much at this time of the year!

Arrow icon Arrow icon

Explore my

Experience

Languages

Experience icon

Python

Advanced

Experience icon

Rust

Advanced

Experience icon

C

Advanced

Experience icon

HTML & CSS

Intermediate

Experience icon

MySQL

Intermediate

Experience icon

Linux

Intermediate

Skills

Experience icon

Databases

Experience icon

Complexity Theory

Experience icon

Analysis

Experience icon

Machine Learning

Experience icon

Algorithms

Experience icon

Korean

Arrow icon Arrow icon

Take a look at some of my

Projects

Tube Challenge Project

Algorithmic Optimization for Rapid Transit Exploration

Skills Utilized:

  • Optimization
  • Complexity Theory
  • Python APIs
  • Discrete Mathematics
  • Data Visualization with Matplotlib
Visualization of Tube Challenge Route

My engagement with the Tube Challenge began as an ambitious endeavor to develop an algorithm aimed at reducing the total time needed to visit every station in the London Underground. This pursuit not only addressed computational challenges but also navigated the intricacies of urban transportation logistics.

The groundwork for the project was laid by assembling a robust dataset, drawing from the Transport for London API to collect detailed information on 272 stations, supplemented by additional location data. With an eye toward optimizing transitions, I harnessed the capabilities of Google Maps and Bing Maps APIs to chart expedient overground routes between stations.

Insights gleaned from engaging with regular commuters were instrumental in fine-tuning the algorithm to the rhythms of daily transit flows. The core of the algorithm, constructed from scratch, fused theoretical principles with empirical data, considering factors like train frequencies and passenger volumes to refine its predictive accuracy.

Notably, the algorithm's design is not exclusive to London's network; it is versatile enough to be adapted to any underground transit system, provided a comprehensive dataset is available. This adaptability underscores its potential for broader applications in urban transit modeling.

The culmination of this project was a comprehensive report that meticulously documented the journey from initial concept to algorithmic realization. This document not only detailed each phase of the development process but also stood as a testament to the nuanced complexity inherent in such a practical challenge.

Source Code

CRUSTY DB

Database Design and Optimization

Skills Utilized:

  • Rust
  • SQL
  • Database Management
  • SQL Query Optimization
CRUSTY DB Visualization

Designed and established a database from inception, proficiently implementing query and space optimization techniques to ensure swift loading times.

To gain a deeper understanding of database management principles, I embarked on creating my own database, applying the knowledge from my database classes. Starting with a basic memstore file manager, I developed essential functions such as add, delete, and edit. To enhance performance, I implemented various optimizations, like reorganizing data upon deletion.

Moving beyond the memstore, I transitioned to a heapfile file manager, improving the efficiency of storage and access. The introduction of serialization and deserialization significantly increased the efficiency of storage and the speed of file transfers. I also developed a query operator to execute basic SQL commands, further refining these operations to align with industry-standard benchmarks.

This project not only bolstered my understanding of databases but also enabled me to construct one from scratch, including optimizing Rust code for better performance.

Source Code

Pongation

Dynamic Maze Solving with Simulation

Skills Utilized:

  • Algorithms
  • Python
  • Pygame
Visualization of Pongation Simulation

Developed a program that dynamically generated a maze and then projected ping pong balls at various angles to determine if one could escape, tracking the route and recording the fastest time.

The inspiration to create an algorithm for maze solving sprang from a blend of curiosity and the cool factor of the challenge. The concept was to simulate ping pong balls being shot around at different angles to find an exit path from the maze.

To bring this idea to life, a maze was randomly generated, which was then used as the playground for a physics simulation allowing balls to bounce off walls. The challenge included tracking each ball's route to output the fastest escape path.

Source Code

Oh h1 Solver

Real Time Solver to online Game

Skills Utilized:

  • Algorithms
  • Python
  • Webscrapping
  • Selenium
  • Automation
  • Complexity Theory
Visualization of Pongation Simulation

My project began as a deep dive into a game similar to Sudoku but faster-paced, which I've long enjoyed. The goal was to combine my interest in puzzles with a practical application of my web scraping and algorithm skills. Using Selenium, I tackled the challenging task of extracting the game's grid from a website, a process that required navigating through a series of complex user interactions.

Once the grid was successfully retrieved, the next phase focused on algorithm development. I started with a basic backtracking algorithm, a common approach for such puzzles. Through iterative enhancements, I aimed to optimize its performance, drawing on my understanding of algorithm efficiency and problem-solving strategies.

The most challenging aspect was refining the algorithm to solve the puzzles in under one second. This required a careful balance of theoretical knowledge and practical application, particularly in complexity theory and algorithmic efficiency. I methodically analyzed and fine-tuned the algorithm, focusing on improving data structure usage and reducing computational overhead.

In the end, I achieved a functional and efficient solution. The project was a valuable opportunity to apply my skills in a real-world context, enhancing my understanding of both web scraping and algorithm development. It stands as a personal achievement in applying complex concepts to create a practical and effective tool.

Source Code
Arrow icon Arrow icon

Get in Touch

Contact Me

Email icon

cmbenello@gmail.com

Resume icon

Resume

LinkedIn icon

LinkedIn

  • About
  • Experience
  • Projects
  • Explore More