Programming Chess by Dielon

Dielon's entry into Varsity Tutor's August 2022 scholarship contest

  • Rank:
  • 2 Votes
Dielon
Vote for my essay with a tweet!
Embed

Programming Chess by Dielon - August 2022 Scholarship Essay

Creating a chess program is a typical novice code because it uses the coding fundamentals that a beginner should have learned as a base knowledge set. However, it uses other concepts like a user interface. Also, if the program allows for the user to play against the computer, then more advanced algorithms are needed to enable the computer to make logical moves. My goal for this year is to make two levels of a human vs. computer chess game.
I am taking a college-level python course in the first semester, so I have decided to use pygame as the module for the game. Pygame will allow me to create a user interface for the game with python as the backend language. On the other hand, I will have to teach myself to program in pygame using online videos because the functionality is different than just using python. Pygame has its own set of commands that I will have to learn to allow usability for the player. I will also need to understand event-based programming. Event-based programming is the only way for a game to work, but I have never used that style of programming without a separate application to manage it. Since pygame runs on a typical compiler, I won’t be able to get a new application for it either.
For the first level of pygame, I will use a recursion-based decision maker for the computer player. I have touched recursion slightly in past programming classes. However, in this python class, we will take a deeper look. Recursion will be able to branch through all of the move options and choose the best one. I want to use dynamic programming as the method for branching. When I learn how to use dynamic programming, applying it to my project will give it efficiency. Dynamic programming will cause the code to be more organized and understandable if used right but is complicated and hard to comprehend. Therefore I must learn how to implement it correctly so I don’t damage my code instead of helping it. Recursion and dynamic programming are also useful tools that are used often in the industry. Using it in my chess game should help me understand the concept better for future use.
My second iteration will use Artificial Intelligence for the computer player. My second-semester class is about Data and AI; therefore, I will use the class material to set up a machine learning model. The machine learning model will train the computer to improve at the game as it plays more. Over time, the machine learning iteration will surpass the recursion-based model. I will use a neural network as the method for the machine learning model. In my class, I will learn how to set up the network and how to apply it to the chess game. Since a neural network is set up to learn like the human brain, I will need to feed it past chess games from experienced chess players. The neural network I make will have to distinguish blunders from good moves, so the computer will learn from others' mistakes.
By the end of the year, I will have learned new programming concepts and applied them to my own projects. I will be able to compare the two methods I used and see which one works better for which aspects. This will help me when making decisions when coding from then on. I will also be more prepared for my future as an Artificial Intelligence developer because understanding neural networks, machine learning, recursion, and dynamic programming will be key in my career.

Votes