
Python
Advanced
Get To Know More
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!
Explore my
Advanced
Advanced
Advanced
Intermediate
Intermediate
Intermediate
Take a look at some of my
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.
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.
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.
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.
Get in Touch