Senior Research Projects 2010-2011
Artificial Intelligence in the Game of Checkers
Joseph Gamble (Advisor: Dr. Adam Fischbach)
Artificial Intelligence aims to create intelligent machines and computer programs. The purpose of the project is to create an "intelligent" computer opponent that mimics human thought by attempting to select the best move in a given situation during a game of Checkers. In order to implement artificial intelligence into a game, the state of the game must be calculated and represented efficiently. The state of a game is the position of all the pieces at any given point.
This project uses a 32-bit integer, each bit representing a possible position on the board – a 1 in a given position represents a piece, a 0 represents an empty space. A searching algorithm, known as Minimax, is used to generate all possible moves up to a specified number of turns ahead and evaluates which move will result in the best outcome.
The Future of Transaction Programming
Trevor Sheehan (Advisor: Dr. Suk-Chung Yoon)
Transaction processing systems (TPS) have played a crucial role in the development of the modern bank and credit card industry, allowing companies to process tremendous amounts of transactions with an effectiveness and efficiency unrivaled by processes of the past.
People world-wide are now able to retrieve money from their bank accounts at any ATM across the country, without having to step foot into a bank. In addition, credit cards enable people to charge purchases to an account which they can pay off at their leisure. All of these would be impossible if it weren't for the transaction processing system. However, these systems are becoming archaic and outdated and are in desperate need of an update.
This project aims to modernize the transaction processing system with the use of Java and other new open-source technologies.
Falling Sand Game - Senior Project in Computer Information Systems
Russell Braun and Steven Pascal (Advisor: Dr. Jeff Rufinus)
A falling sand game is a fun toy that uses the principles of cellular automata to simulate a colorful interactive sandbox in which the user can play with many different types of substances under a simplified system of physics. The game simulates a two-dimensional grid ("sandbox") of colored particles, each representing a different "element". Cells behave according to a simple set of physics according to their physical properties, and interact with neighbors based on a given set of rules. Our project is an implementation of a falling sand game.
It is implemented in C using OpenGL. In addition to the basic features, our game also allows the user to custom-define their own elements, properties, and interactions via accompanying text files. If you would like to try it out, you can download the zipped project by clicking on the link provided below.
Creating an Asteroid Computer Game
Ron Reed and Jeff Marino (Advisor: Dr. Jeff Rufinus)
Our project is to create a complete working computer game. We use the Java programming language to create an Asteroids game. In this game, the player will control a spaceship and try to avoid the incoming asteroids. They will start with 3 lives. There will also be other objects that the player will want to run into in order to gain power ups such as weapons and shields. The players score will increase the longer the player stays alive and the more asteroids that they destroy.
Bioinformatics Algorithms: Dynamic Programming and Graph Theory
Joseph Fijalkowski (Advisors: Dr. Yana Kortsarts & Dr. Joseph Fischbach)
Bioinformatics is the application of computer science to the field of biology. It entails the creation of algorithms to solve problems analyzing biological data, particularly in the analyses of large DNA sequences. DNA is the hereditary material that makes up almost every living thing on the planet. It is made up of four bases Adenine, Thymine, Guanine, Cytosine. There are about 3 billion bases in human DNA. It is the sequence or order of these bases that create how an organism is built. The goal of this project is to design two applications using JAVA. The first will compute the global and local alignment of two DNA sequences.
The second will sequence DNA using Graph Theory algorithms. Biologists want to be able to compare DNA sequences of different organisms to see if there are any relationships between them. This process is called aligning the sequences. There are two types of sequence alignment, global alignment and local alignment. Global alignment is the comparison of two sequences, usually used when they are similar and roughly the same size. It's used to look for similarities in the entirety of the sequences. Local alignment tries to look for smaller areas in the two sequences that are similar called sub sequences. Both use similar algorithms developed using dynamic programming techniques. Dynamic programming is used on problems that can be solved with recursion but where recursion is inefficient.
Sequencing DNA, or the process of determining how the DNA bases are organized in a molecule, is also an issue the biologists wanted solved. Because of the number of bases in a molecule, about 3 billion in human DNA, this is a daunting problem. Using Graph Theory, computer scientists are able to come up with two techniques to solve the problem. Both techniques take short strings of nucleotides, called reads, and try to make up a complete sequence of DNA by fitting the reads together. The first technique is the Shortest SuperString problem. It takes these reads and tries to find the shortest string that contains all of them. The second is called Sequencing by Hybridization. This uses the Hamiltonian Path problem to find the full sequence.
Bioinformatics is not a highly understood topic when speaking with many computer science students because it requires knowledge of two fields of study. Also the type of algorithms are not always studied within the undergraduate program. Bioinformatics is becoming more important within our society to help biologists solve many problems they encounter. The motivation behind this project is to gain more knowledge about what bioinformatisits can accomplish and how they help biologists. Also to gain an understanding of the algorithms used and how the information gained from their use in DNA sequencing and alignment is used.
Cryptanalysis of the Vigenère Cipher
Kimberly Chiffens, Maria Jannelli (Advisors: Dr. Yana Kortsarts & Dr. Adam Fischbach)
The goal of our project is to study Cryptanalysis of the Vigenère Cipher and create a Java applet to perform encryption, decryption, and cryptanalysis. The Vigenère Cipher, created in the 15th century by Blaise de Vigenère, is a polyalphabetic cipher. In polyalphabetic cipher the same plain text letter will not always be encrypted by the same ciphertext letter. If the user desires to encrypt a message with the applet, they input a string of characters along with a key of their choice and click on the encrypt option. If decryption is desired, the same method is used except the user needs to enter the string of encrypted text and the given key, and then choose the decrypt option of the applet.
The more intensive part of our project is the cryptanalysis portion. Cryptanalysis means the key is unknown so the goal is to find the key and then decipher the text. Our applet produces code for the Friedman test, created by William F. Friedman in the 1920s, which computes the index of coincidence. The algorithm returns an estimated key length which is then rounded both up and down. With two numbers, there are then two possible lengths for the key.
With knowledge of an approximate key length, frequency analysis of the English language will help determine possible key words. The applet will choose the key that is a word found in the English dictionary and excludes randomized sequences of letters. With this tool one may provide a clear and concise explanation of Cryptanalysis of the Vigenére Cipher that can be used in enhancing teaching in introductory courses. If you would like to look at the project details, please click the link provided below.