Projects

The Game of Pig

The game of Pig is a very simple jeopardy dice game in which two players race to reach 100 points. Each turn, a player repeatedly rolls a die until either a 1 is rolled (scoring no points) or the player holds and scores the sum of the rolls (i.e. the turn total). For such a simple dice game, one might expect a simple optimal strategy. However, the optimal strategy is quite complex. On our Game of Pig website one can play an optimal computer Pig player, see 3D VRML visualizations of the surprising optimal strategy, and learn about the history of the game and its variations.

Student Projects

One of the best things about being part of a small department is that you get a chance to work on individual projects in close consultation with faculty members. Some of the more recent student projects include:

  • Spending a summer working on configurations of processors. The work resulted in a paper presented at the American Transputers Users Group conference in Vancouver.
  • Working on an independent study project on languages for parallel computation during a spring semester. A paper on that work was submitted for publication.
  • Working on an independent study project concerning binary tree deletion during a semester. The work led to presentations in departmental colloquia, at the Moravian Student Mathematics Conference, and at the ACM’s national meeting in Nashville.
  • Spending a summer developing software for parallel processors. The work resulted in a paper presented at the World Transputer Congress in Harrogate, England.
  • Spending a summer establishing the computer science backbone on the campus-wide network, converting the Sun Solaris operating system, and doing research on distributed processing. The work was presented as a paper to the International Conference on Parallel and Distributed Processing Techniques and Applications in Las Vegas.
  • Spending part of a summer working on an application of computing in group theory. A factorization technique was discovered and a paper reporting this result was presented at a student conference.
  • Spending a summer doing research on Java RMI in a parallel and distributed processing course. The work was published jointly with the sponsoring faculty member and presented at the International Conference on Parallel & Distributed Processing Techniques & Applications in Las Vegas.
  • Spending a summer doing research on Enterprise JavaBeans. The results of the research were published jointly with the sponsoring faculty member and presented at the International Conference on Parallel & Distributed Processing Techniques & Applications in Las Vegas.
  • Spending a summer and fall semester creating a Java-based netphone. Some of the major areas of research included SIP (Session Initiation Protocol), RTP (Real Time Protocol), and Java Media Framework. The results of the project were published jointly and presented with the sponsoring faculty member at the International Conference on Parallel and Distributed Processing Techniques & Applications in Las Vegas.
  • Java Smart Card Technology in the Classroom. We investigated the use of embedded technology using Smart Cards within an undergraduate Computer Organization course. Smart Cards are credit card size devices that contain a computer processor and memory. Within the course, students were taught the Smart Card architecture and the Java programming interface that accompanies it.
  • Servlets and JSP in an Undergraduate Database Course. In recent years database technology has become highly integrated with web applications. It is difficult to discuss or teach one without some reference to the other. The work we did demonstrates the inclusion of web related technologies into an undergraduate database course. Specifically, Java Servlets and Java Server Pages are employed to demonstrate web access of databases. We investigated the underlying technology, changes made to the course curriculum and details of the assignments and projects from the course.
  • Visualization of Distributed Applications. We are currently investigating ways to communicate and display information that can be useful in building and debugging software applications that communicate amongst multiple computers. Our research combines the ability to perform “post-mortem” as well as run time analysis on a distributed application in order to determine what is going on between processes and when.
  • The goal of the Clue Enhanced Detective Notepad project is the development of the most advanced artificial intelligence (AI) for reasoning about the board game Clue. Whereas previous AI implementations are restricted to simple logical reasoning, our implementation uses modern sampling techniques to estimate the probability of any given card's location.
  • A student designed and implemented the Visual C++ graphical user interface, and explores various means of clearly communicating mixed logical and probabilistic information.
  • A student designed, implemented, and tested various sampling techniques for estimating probabilities with cardinality constraints.