During the summer of 2020, I worked on a STEM Fellowship for Whitworth University where as a group we worked on an application to look into possible optimizing paths for NASA's DART mission. This project used C++ and the CUDA library to implement a genetic algorithm and Runge-Kutta approximation of a trajectory for the ion-thruster equipped projectile to minimize distance from the target (to hit the asteroid) and maximize the velocity difference with the target to describe increasing impact.
The group was comprised of two professors and 4 total students from different departments with (due to safety precautions because of the COVID-19 pandemic) met and communicated remotely with daily meetings during the work week. At the start we were given prior work from the previous summer that made initial implementations of the usage of CUDA and physics simulations for the rocket. Over the coarse of the summer, we confirmed and improved the the simulation by correcting mistakes and adding a config file to allow variable changes. A major improvement was also in implementing a working genetic algorithm to find a solution. Not only in getting a solution, but increasing the effectiveness by reducing the average number of generations/iterations typically needed from the 1000s to the 100s and able to find trajectory paths that had higher speeds for greater impact.
Additional work that was done for the project during this time was adding documentation. This involved improved readability of the source code, thorough commenting, restructuring the file structure to be more navigable to find specific functions or other resources, and adding thorough documentation files to describe the project and it's components. This made the project more approachable as the start of the summer had little documentation or commenting to describe the state of the code. This was in an effort of consideration of assisting future development.
The end result was a valuable learning experience that provided a out of the classroom project that demanded a variety of skills and responsibilities. The team being cross-disciplinary required communication skills to describe the tasks/challenges between both students that have similar experience to me and those with other experiences (specifically a more physics background as opposed to computer science) and also done remotely. The fellowship also required self discipline to attend the online meetings consistently and be able to spend the rest of the day working on the project either independently or collaboratively with other members to provide effective progress to report. The programming experience was also valuable as a learning experience not in just more practice in approaching a problem and working on a solution, but also learning the previously non-experienced usage of the CUDA library that allowed parallel computing on an NVIDIA GPU.
After the summer ended, I participated with other members of my team to present our project's performance in an online poster session at University of Washington. In January of 2022, my contributions were included in a published article through MDPI entitled "A Parallelized Genetic Algorithm to Evaluate Asteroid Impact Missions Using Electric Propulsion".