Spring 2012»CSCI 470 Homework 3

CSCI 470 Homework 3

Assigned Date: Thursday, Mar. 22, 2012
Due Date: Tuesday, Apr. 3, 2012
Due Time: 10:50am

Last modified on March 29, 2012, at 12:55 PM (see updates)

This is a pair-programming assignment (i.e., you may work with one partner). You may discuss the assignment only with your partner or the instructor/grader.


This assignment's objectives are:

  • To understand knowledge representation schemes and related issues.
  • To gain experience in programming with a programming language used in AI applications.
  • To develop working knowledge, in terms of understanding the theory and being able to design/implement working applications, of at least one AI area.
  • To develop an understanding of AIís impact on today's society.


Download and install the OpenNERO environment. OpenNERO is an open source software platform designed for research and education in Artificial Intelligence. It runs on all major platforms (Windows, Max OS, Linux).

With your partner work thorough the following exercises:

  • Adding Stuff - The point of OpenNERO is that you can make new games and new experiments with it. In this exercise you will add a landscape, an object, and an agent to OpenNERO.
  • Create Roomba Agent - Once we add an agent, we have to program it. Traditionally this is done by writing a script that describes what the agent does. In this exercise, you will write a script for a virtual vacuum cleaner that cleans the floor of a messy computer lab.
    • You do not need to plot the agent's fitness using plot_server.py (i.e., skip this step).
  • Bonus: Plot the agent's fitness (e.g., using plot_server.py, or Excel). Submit an additional document with the graph(s) (e.g., an Excel spreadsheet, or a Word document). It should be obvious the graph(s) originated from data in nero_log.txt (i.e., include data in the document).


Follow the Golden Rule of Style: "A program should be as easy for a human being to read and understand as it is for a computer to execute." [1]

In general, you should comment any variable, obscure statement, block of code, etc. you create.

Also, you should comment why something is being done, e.g.,

numStudents += 1   # we have processed one more student

as opposed to how it is done, e.g.,

numStudents += 1   # increment numStudents by one

Finally, your Python code (any .py file you create or modify) should include opening comments as follows.

(NOTE: Angle brackets below signify information that needs to be filled out. Remove the angle brackets and the enclosed instructions from your submission!)

#   Author:     <Your Name(s)>
#   Email:      <Your email address(es)>
#   Class:      CSCI 470, Section 1
#   Assignment: HMWK<number>
#   Due Date:   <The assignment's due date>
#   Certification of Authenticity <remove one of the following>:     
#     I certify that this lab is entirely my own work.
#      I certify that this lab is my own work, but I received
#      some assistance from:  <Name(s)>
#   TASK:   <Provide a simple, yet complete description of the task being
#           performed by this program. It may be several sentences long.>
#   INPUT:  <Describe the input to this program.  Be thorough.>
#   OUTPUT: <Describe the output to this program.  Be thorough.>


Submit your assignment on OAKS by the due date. Your submission must include:

  1. A TESTMOD.zip file. This will contain the files you created for the first exercise.
  2. A Roomba.zip file. This will contain the files you created for the second exercise.
  3. A README.txt file, which describes your experience (answers to Roomba questions, what changes you made (specifically), what you learned, any ideas you have, anything that caused you difficulty). Make this easy to read and to the point. Avoid verboseness.
    • If you do the bonus part (below), make sure you reference these results in your description (for full credit).
  4. Bonus: Include an Excel spreadsheet or Word document with one or more plots of the agent's fitness (e.g., using plot_server.py, or Excel). Also include the data from nero_log.txt.


Your grade will be based on the elegance of your design, the quality of your documentation, and the accuracy and simplicity of your implementation. Also, on how well you followed the above instructions. Aim for simplicity and elegance. Design, design, design... before you implement.


  1. Cooper, D. and Clancy, M. (1985) "Oh! Pascal", 2nd ed., W.W. Norton & Company, New York, p. 42.

Relevant Quote

"Any amount of work can be done in any amount of time... only the quality varies." ~Joao Meidanis