Algorithms and Data Structure

C++ File Reader Enhancement

From C++ file reader to JavaFX algorithm testing application.

Before Image
Original C++ file reader
After Image
Enhanced JavaFX algorithm testing application

About This Project

Originally, this artifact was a basic C++ application that read and printed data from a text file using a binary tree. The data contained in the text file was a list of university courses, each with a course number, course name, and a sublist of prerequisites. The core purpose of the application was to demonstrate the implementation of basic data structures and algorithms in a static, text-based environment.
After enhancements, the artifact has evolved into a robust Java-based algorithm testing application with a dynamic, interactive interface using JavaFX. The updated version allows users to test and visualize multiple algorithms such as Binary Search, Quick Sort, Merge Sort, Insertion Sort, and others in real-time, providing a clear understanding of their performance and behavior with different data structures. I created the original version in 2022 for the CS 300 (Data structure and Algorithms) course and developed the enhanced version this year for the CS 499 Computer Science Capstone course.

Performed Enhancements

  1. Ported the program from C++ to Java.
  2. Created a graphical user interface using JavaFX.
  3. Implemented multiple sorting algorithms such as Insertion sort, quicksort, selection sort, and merge sort.
  4. Integrated recursive and non-recursive binary search algorithms.
  5. Added a new TreeMap search algorithm to showcase diverse searching techniques.
  6. Developed real-time visualization features using JavaFX for sorting and searching algorithms.
  7. Represented elements as graphical rectangles that dynamically change color while being manipulated by the algorithms.
  8. Added functionality to measure the performance of algorithms in terms of runtime and memory usage.
  9. Displayed performance metrics for each algorithm, giving users insights into their time complexity and space efficiency.
  10. Introduced interactive features allowing users to test different algorithms on various data structures such as arrays, linked lists, and binary trees.
  11. Added a text area next to each algorithm where users can observe and read explanations about the runtime and memory usage.
  12. Provided detailed descriptions of how each algorithm works and how its performance is calculated, giving users a deeper understanding of algorithmic principles.
  13. Refactored and modularized the code into distinct classes for each algorithm, data structure, and utility function.

Demonstration of Skills and Achievements

Throughout the development and enhancement of the Algorithms Testing Application I faced complex challenges such as algorithm optimization, data structure selection, and real-time performance visualization. I employed innovative techniques and industry-standard tools to create a robust and interactive solution. These enhancements reflect my ability to design and evaluate computing solutions, communicate technical concepts clearly to diverse audiences, and adhere to best practices in software development. The following outcomes showcase how these skills have been demonstrated and further refined through the project’s progression: