Title: Project details
Course: CS171: Introduction to Artificial Intelligence

Your project is to code a “Connect-K” agent.

Overview:

Student resources are available here, including:

- General documentation and background info.
- A C++ shell.
- A Java shell.
- A Python shell.
- A tournament shell.

We will fix any problems discovered and re-issue new shells as necessary. Please watch for and download any new shells, then discard your old shells. You can keep any “smart” code you have written; just put it into the new shells.

“Dumb” coding shells are available in C++, Java, and Python. You must write the “smarts.” To help you get started, we also have released the source code to “RandomAI,” and executables for RandomAI, PoorAI, AverageAI, and GoodAI (they go by different names in different shells).  Your final AI will compete in a tournament against all your classmates for extra credit bonus points (the top 10% will get 10 Bonus points, the second 10% will get 9, the third 10% will get 8, and so on). This is a solo or pair project and you must do all of it all by yourself or with one partner.

All of the CS-171 project shells were written by former CS-171 students (grade of A- or better required) who wanted to go further and do something creative and interesting. The original Java shell was written by Alex Van Buskirk.  The Python shell was written by Toluwanimi Salako.

Project Deadlines and Regulations:

- Project deadlines are given in Syllabus.
- Please join a "project group" (default named "project group N"), and change its name to match your group name.  The first student to join will be the "project leader", with permission to change its name.
- For naming conventions and submission instructions, see below.

You will lose 10% of your project score for each day (or part thereof) that your project is late for any deadline. Please submit your project early, well ahead of the deadline, and avoid the last-minute rush. If system problems, web congestion, or other unavoidable Internet delays make your project late, it is still late and will be penalized.

Project Reports:

For your final project, you should include a short report in the "doc" subdirectory of your submission zip.  This report should consist of a short (~2 page) description of your AI's approach, using a provided template (files here: docx, pdf).

Naming conventions:

JAVA
1. Class name must be '<TEAMNAME>AI'.
2. File names must be '<TEAMNAME>AI.java', and '<TEAMNAME>AI.class' after it has been compiled.
3. Only the main AI class should end with the suffix: 'AI'. So, 'HelperAI' is not permitted, but 'AIHelper' and 'HelperAIWhatever' are.

CPP
Since cpp compiles everything into 1 file, there are less restrictions.
1. Compile final binary to '<TEAMNAME>AI'  (no extension; this should be a linux binary usable on openlab)

PYTHON

1. Set 'team_name' variable to <TEAMNAME>AI

2. Rename file to '<TEAMNAME>AI.py'. Please do not rename any existing functions or classes.

Submission:

1. Create a folder named:
'<Submitter_LastName>_<Submitter_StudentId_Number>_<TEAMNAME>AI'
e.g., Ihler_12345678_AwesomeAI
2. In that folder, create 3 subfolders: src, bin, doc.
3. Copy source files (*.java, *.cpp, *.h, *.py) into the src folder.
4. Copy all binary files (*.class, linux binaries) into the bin folder. Python users, leave this empty.
5. Copy your (*.pdf) write up (if required) into the doc folder.
6. Zip up the main folder (created in step 1) and submit that zip file. Final zip file name should be:
'<Submitter_LastName>_<Submitter_StudentId_Number>_<TEAMNAME>AI.zip'

Testing:

If you are able to play your AI using the Java interpreter:

java -jar ConnectK_1.8.jar mytype:MyDirectory/bin/MyTeamsAI

then it should work for the tournament; we will update instructions as required.