Course COMP112-3 Introduction to Scheme Programming and Xpilot-AI:
Tuesday 4:10-6:50 Location TBA
Professor:
Gary Parker
Science Center 633, Computer Science, Wesleyan University (860-685-3718)
Office hours at Wesleyan: Tuesday 7-9pm
Winthrop Annex, Computer Science, Connecticut College (860-439-5208)
parker@conncoll.edu
Text and Software:
Text:The Scheme Programming Language, Third Edition, by R. Kent Dybvig
Software:Our primary software needed will be Xpilot-AI and the Scheme programming environment will be Chicken. Both will be available on all Unix/Linux workstations and can be downloaded for use on PCs from: http://www.xpilot-ai.org. For program editing you can use any text editor. Emacs, which will be installed on all of the workstations, can be obtained from GNU Software at: ftp://ftp.gnu.org/gnu/emacs/
Web Page:http://cs.conncoll.edu/comp112-3
An introduction to programming using the control of autonomous agents in the Internet video game Xpilot as the application. Students will work individually and in teams to incrementally enhance the performance of their Xpilot agent by writing increasingly challenging programs that will result in improved control. The final project will be to create a controller that can compete against human players and possibly enter an Xpilot-AI competition at an international conference. No previous computer knowledge is assumed. This course is not intended for computer science majors.
Discussion:
This course is intended to be an opportunity for you to learn programming and experience problem solving in real-time video game environment. The programming language you will learn is Scheme and the game environment is Xpilot.
Xpilot is a multi-player, 2-dimensional, space flight combat game written in the C programming language. The game is open source, which makes it possible to modify the program to introduce a learning component. Xpilot is playable over the internet, and players control their ships using the keyboard or mouse. The design uses a client and server to support multiple players, and has many variables for weapon and ship upgrades, map settings, team play, etc. Xpilot-AI was produced by parsing variables used by Xpilot, such as velocity and position, and making these available to programs written by the user. Using these inputs in a control program that can output commands back into the system, the user can operate an artificial agent in the game. In addition, learning programs can alter the control program and thus the agent’s behavior while the game is in progress.
Xpilot-AI is an exception system for learning programming and developing AI learning techniques. The environment and controls can be set to vary the difficulty of the problem. A level of complication can be found to meet the level of the available solutions and the capabilities of the student. The problem is interesting with visual feedback of the outcome of one’s solution. Students can produce solutions that can compete against each other or a common opponent. Environments can be set where team cooperation is a component of success. In addition, due to its network nature, AI controllers can compete with other AI controllers and human opponents from any computer in the world, as long as it has a reasonably fast Internet connection. This gives this system of learning tremendous potential for collaborations.
The programming language Scheme, along with its close functional programming relative Lisp, is a very popular language for implementing AI. Scheme is not only a popular language for advanced studies in AI, it is also a good first language to learn programming and is used at several universities in their introductory computer science courses. One main advantage is that it is an interpretive language, which means that the student does not have to deal with the complication of compiling code. This also means that the learner can write functions and test them individually without requiring an entire program. Another advantage is that there is not the extra complication of variable types and proper declaration of formal parameters. This simplifies programming for the beginning student and eases this burden for the advanced programmer. The main advantage of Scheme, however, is that it handles lists without complication. The programmer does not need to declare space for additions to the list, nor free memory when an object is removed from the list. This releases programmers from the burden of bookkeeping so that they can concentrate on the problem they are trying to solve.
No prior knowledge of programming is required for this course. The student will be introduced to all the components of the language needed for programming Xpilot-AI agent controllers.
The work in this class will be mainly focussed on programming controllers for Xpilot-AI agents, but will also include other elements of learning. There will be in-class assignments, homework exercises, article presentations, class discussion, and a notebook. It is very important that you attend class and keep up on the homework, writing, and reading.
Grading:
Homework / Programming Assignments |
35% |
Presentation |
10% |
Class Participation |
15% |
Final Project |
30% |
Notebook |
10% |
Homework / Programming Assignments:To be done individually, using no outside resources. Homework / programming assignments completed after due date will be accepted with a grade loss per class period.
Presentation:Each student will give a presentation on an assigned reading. All students will discuss the reading following the presentation. The grade will be determined by the quality of your presentation.
Class Participation:The participation grade will be determined by your participation in classroom discussions, including comments on the readings.
Final Project:There will be a final Xpilot-AI project. During one or two of the final class sessions, we will have competitions to show off the final control programs. You may work in teams, but no outside resources.
Notebook:This notebook is for you to organize and summarize your thoughts and procedures as you have learned about programming, problem solving, and Xpilot-AI. It should be organized chronologically with the events of the class. Use it to hold all of your class notes, HW assignments, presentation articles, programs, etc. In addition, you are to include an entry for each week of class and each day that you work on your final project. This is to be comments on your thought processes, ideas, and discoveries as you worked on the project. The notebooks are to be done individually. In other words, they should be written from your perspective. The entries for the final project should be written as both "I" and "we" -- separating your ideas and contribututions from those of your team.