Inspiration

The "Fast-Slow" is a debugging technique well-known amongst experience competitive programmers. Typically, programmers fast-slow their problematic algorithms by setting up a local environment and running scripts, which not everyone know how to do and may be time consuming. We created Fast-Slow Debugger to make the process of fast-slow debugging convenient and accessible for everyone.

What it does

The fast-slow consists of three components

  • The correct but not necessarily efficient solution (the Slow)
  • The optimized solution that may or may not be correct (the Fast)
  • The generator, which generates test cases according to the constraints The debugger attempts to find counter cases to the Fast solution by generating thousands of cases using the generator, retrieving the correct solution using the Slow, and comparing that with the output of the Fast. If the Fast and Slow solutions have different outputs for one of the cases, the debugger stops and presents that case to the user as well as the output files of the Slow and the Fast.

How we built it

This web application was built with Express.js for the backend and vanilla HTML/CSS/JS for the frontend.

Challenges we ran into

Due to our lack of experience with building web applications, we had trouble finding and implementing the most appropriate solution for the communication between client and server. We overcame this challenge by studying documentation and using tools to locate the issues.

Accomplishments that we're proud of

The Fast-Slow Debugger implements the fast-slow debugging process precisely. We are satisfied with its speed and its simple and self-explanatory user interface.

What we learned

We learned to plan out the process of developing a piece of software and adjusting our plan as we address our misconceptions about web development.

What's next for Fast-Slow Debugger

The Fast-Slow Debugger currently only supports Python 3, so compatibility with other programming languages is something to work towards in the future.

Share this project:

Updates