RXN Chemical Simulator
I have always had a love for projects with classmates that are interdisplinary in nature and what would be better than an interdisplinary project across my own 2 favorite topics, chemistry and computers! I designed this atomic-level chemical simulator called Virtual RXN that shows a particle view of nuclei and electrons within a system. It allows the users to add in atoms or molecules either from several presets or by custom design. It factors in gravitational and electromagnetic of each particle on the system on one another to get the most accurate result possible. Some aspects such are simplified to make it easier for computers to handle such as how real electrons are argued to be a particle/wave hybrid but this simulation defaults to treating them as purely point-charges. However settings are included to partition the electrons amongst a desired number of points to instead simulate more of a probability field setup. If this program were run on a supercomputer it could in theory simulate any nonnuclear reaction to. Feel free to check out the project on GitHub by clicking here!
Super Mario Brothers AI
I've always found artificial intelligence to be so fascinating but when I was a senior in high school, I didn't have the education necessary to truly understand how modern machine learning programs typically functioned so I decided to build my own AI from scratch based on the concepts of self-improvement that I already had learned from AP Biology classes, Evolution! Using the concepts of natural selection, random mutations, and crossbreeding, I created SMBAI (Super Mario Brothers Artificial Intelligence) which was capable of learning how to beat the first level of mario as quickly as possible only by knowing how to see the elements on the screen and knowing what buttons could be pressed on the keyboard. I tasked around 100 "agents" with generating random actions that they would do for random amounts of time when a random object got a random distance from them. Through all these completely random variables, a few agents showed some promise by scoring higher than others (based on their speed of completion or distance travelled) and those agents began to "breed" their strategies together to make a new generation with purebred agents, hybrid agents, and mutated agents. This whole process is repeated for many generations until the only agents that remain are ones that are vastly better than I could ever be at mario. In the video above, you can see two of my favorite types of agents. One of them simply learned the fastest way to run through the level, avoiding as many objects as possible along the way; I called them "escapist agents". While the other agent takes a much more methodical but impressively powerful method of finding each and every enemy throughout the level, jumping above them, and then following their movements as it falls to ensure it lands on top and eliminates the enemy; I called these second more "violent" AIs, "hunter agents". I find these second ones particularly interesting because to this day, I cannot figure out how they were able to produce such an effective strategy based on the information they are given about each enemy but I suppose that's the beauty of training a program that is smarter than I am! Feel free to check out the project on GitHub by clicking here!
Religiously every day after work/school I play the New York Times web games, especially Wordle! For the days that I am too tired to choose what would be the best guess to make, I made a Wordle Master to choose for me! This program takes the output colors that you get from each letter guessed in previous words and uses it to score every 5-letter word in the English dictionary based on how helpful it would be in finding that crucial right answer. Use this and impress all your friends with how good you are at Wordle (even if its kind of cheating). Feel free to check out the project on GitHub by clicking here!