The following projects are major projects which were completed by me under the direction of a professor at Southern University.
This is a full implementation of Tic-Tac-Toe, which was completed as my project for my Software Engineering course. The game is fully playable, features a cosmetic shop, difficulty levels, user login, and different board sizes.Â
I fully coded the game using Python, designed the user interface, bug tested, and presented this project at the end of my Spring 2025 semester. The project earned an A grade.
The creation of this software taught me a great deal about how different portions of a program may interact with each other in order to efficiently and securely process data. This was also my first experience with UI design, and I learned a great deal about navigability and UX. I also became extremely comfortable coding in Python as a result of this project.
For my senior capstone project, I explored the psychology of user-generated passwords. This included identifying common pitfalls, shortcomings, and average approximate password strength.
To achieve my project goals, I created three small Python programs that cleaned, analyzed, and created visualizations for the data. I utilized this three-pronged approach in order to more easily catch errors and fine-tune performance.
Although these programs were small, they were robust. Each one was responsible for specific operations on several million lines of password data each. In fact, the data files were initially large enough to where they could not be opened on a moderately-powerful home PC.
This project further honed my skills and familiarity with coding in Python. It was my first time experimenting with statistical visualization, and I learned a great deal about how Python can be used to interact with data. My proposed method of enhancing passwords showed promising initial results, and the project earned an A grade.
The following projects are coding projects that I created in my own free time out of my own interest.
After exploring the concept of cryptography, hashing, and other similar concepts, I became very curious about the generation of secure passwords.
This small project was written in C++ and attempts to create exceedingly entropic (random) passwords (mostly) without the use of existing libraries for a personal challenge. Seeds for the random generator are shuffled at nearly every internal interaction, and methods of choosing each character are also periodically shuffled.
The result is a password generator that evenly distributes character types to create what are likely to be decently strong passwords.
This side project challenged me to double check my own work due to many statistical improbabilities that occurred throughout the design process. Now, I am more critical of my own work, and never assume that my results are accurate until I have verified the legitimacy of each step of the process.
This small side project came about after learning about conditionals and random number generation in C++.
It is a very basic, but entertaining project that attempts to wrangle that chaos of random generation to create words that are somewhat pronounceable. Consonants and vowels are grouped separately and limited in appearance in relation to each other.
I dubbed this project the Fantasy Name Creator when I noticed similarities in the words it created and some of the fantastical names seen in TV and movies.
This project was one of my first personal C++ projects and helped me become more comfortable with coding. It also helped me in my future projects by encouraging me to think more creatively when designing solutions.
This project stands out as the solution to my most challenging academic dilemma at Southern University. While I do consider this a personal project, it was created in response to a massive academic data-management challenge.
One of my professors was known for a testing style that involved minimal preparation time and no study materials. When student complaints reached an apex for finals, he provided the class with three separate question banks containing several thousand entries each. He then told us that only 30 questions from those banks would be used for the final.
I quickly realized that my usual study methods would not save me here. Having recently learned how code can read and store data, and having used regex for recent projects, I immediately worked to build a custom solution in C++. I spent a short time designing a program that performed I/O operations to read the files, parse the questions, and accurately map them to their corresponding answers. The program then fed the data back to me in an interactive, flashcard-style interface.
After two sleepless nights of intense trial-and-error coding and studying, I earned an A on the final exam. However, I feel as though this project revealed something even more valuable than a grade about me. It proved that I am able to remain adaptable under extreme pressure. It also demonstrated my dedication to quality in my work. Furthermore, it highlighted my drive to see complex technical issues through to the end.
I transformed an unorganized, terrifying mountain of data into a solution that, instead of breaking me, made me stronger, proved my resilience, and showcased my expertise in creating automated solutions to difficult manual problems.
While these projects highlight my proficiency in Python, C++, and problem-solving using programming languages in general, their true value lies in how they reveal a persistent drive to transform chaos into structured, functional systems. Whether I am managing several million lines of data, automating complex tasks, or designing secure algorithms, my focus remains on data integrity, logic, and reliability. These projects prove that I am comfortable and capable of using technology as a tool for solving high-pressure problems. I have a demonstrated the ability to rapidly prototype solutions, transition between high-level scripting and low-level logic, and maintain a rigorous, self-critical standard for every task I undertake.
Ultimately, these projects represent the bridge between technical theory and physical application. The same diagnostic logic I use to code away my problems allows me to efficiently troubleshoot hardware and software, visualize networking issues, and manage complex system deployments. I am an adaptable problem-solver who thrives on the challenge presented by a novel dilemma, turning unorganized obstacles into streamlined, automated, and professional successes.