University of Calgary
Rob Kremer
Assignment Description

CPSC 433: Artifical Intelligence
Fall 2014
Department of Computer Science
Computer
Science


Assignment Description (see also the problem description)

There will be one big assignment, namely developing and implementing (and documenting) a search system for a given application (which this semester will be finding an optimal scheduling of exam sessions for various scenarios, given a lot of constraints). This will be a team project, with teams of up to 4 people. As will become obvious during the course, for each application there are different search paradigms that can be used to develop a search system solving instances of the problem. Also, each paradigm leaves a lot of room for instantiations, based on the knowledge you have about the particular application domain.

The assignment is also intended to make you aware of different paradigms and the possibilities regarding their instantiations. Therefore I do not only expect you to produce (and demonstrate) the search system at the end of the semester, but also each team will produce a proposal that presents two search paradigms that can be used to solve the application problem and the instantiation of each paradigm that you want to use for your system. I will then select one of the two solutions and you will implement the selected one in your system.

More precisely, I expect:

  1. PROPOSAL: You will present in the proposal two different search models (using different data structures as states), describe them precisely (i.e. in a mathematical manner similar to what I use in the lectures), and present at least one sensible search control for each model to complete the definition of the search processes your search system might employ. I also expect that you demonstrate what your search processes will do by applying them to a small search instance chosen by you. In addition to formal definitions, I also expect a natural language explanation of the models, controls and processes and the reasons why you have chosen the particular models.  To assist you in producing this proposal, I have provided you with a template that you should follow in .docx, .pages, and .odt formats.
  2. INPUT/OUTPUT DEMO: To keep people on track, and avoid some of the time-management problems I have seen in the past, there is an additional deliverable between the paper and the submission of the final assignment: an input/output demonstration. This involves reading in one or more test files, and outputing the read-in data. The output data should contain explicit declarations (such as "instructor(kremer)") that were only implicitly contained in the input data (such as implied by "instructs(kremer,cpsc433,L01)"). Your program will work in the same manner as the final deliverable (see point 5 of the non-functoonal requirements below): My program will run your program, giving it specific parameters, and will expect a .out file from your program.  You will also hand in your source code at this point (by D2L dropbox).
  3. FINAL DEMO/REPORT: Finally, you will demo your finished project to me.  During the demo each of you in the group will be asked questions about the assignment, and it's expected that no matter what I ask of what person, that person should be able to answer the question.  Failure to answer questions may result in that person's mark being lower than the overall group mark.  Thus, is it important for all group members to understand all parts of the project.  Within 2 days after the demo, you will hand in (by D2L dropbox):
    1. your (well documented) code
    2. a short report detailing:
      1. what changed between your proposal and your final implementation and way
      2. an explanation of the interesting features and the limitations of your implementation.  (Here you get to explain why things went wrong in the demo.)

All three (proposal, input/output demo, and final system demo/code/report) will be graded. Information about how these grades will be weighted can be found on the main page in the assessment section.

It is a good idea to crosscheck with me your models, knowledge requests and so on, before you submit the paper. In fact, I would like to have a meeting with each team before the team submits the paper!


Non-functional Requirements

While I personally would like to give you as much freedom as possible, it turns out that too much freedom results in a lot of difficulties for me and the TAs, when we want to install the systems for ourselves. Therefore, we are rather precise regarding hardware, environment and paper submission. You can use whatever additional tools you want and you can develop on whatever machine you like, as long as the final system

  1. is written in Java,
  2. runs on one of our Windows machines in the undergrad lab,
  3. as a standalone application,
  4. will accept exactly two command line parameters which are an input filename for a file describing a problem in the predicate language and a time in milliseconds that is the limit for your program to run before outputing a solution. The program will output a solution in the predicate language in the file named exactly the same as the input filename with ".out" appended. That is, if the input file is "xyz.in", our output file will be "xyz.in.out".
  5. Your program will be run in the demo with the following command line. Make absolutely sure it works with this command line:
     java -classpath myprog.jar examSchedule.parser.ExamSchedule filename maxtime 
    where:

Your paper, again, can be produced by any text processor you want to use, but I expect that you send me a PDF file that is printable everywhere (and especially using Acrobat reader and any ps-printer in the Department -- avoid using MSWord as it produces very poor PDF files).

Why requirement 4 and 5? Part of the assessment of your assignment may be a series of automatic runs of your program on various problem instances. i.e.: some other program will run your program as an exec() call, which will give your program a filename and then analyze it's output file. If your program fails to run or produce an output file, you will loose marks for that part of the assessment (which will be very significant).

Time table

There are five relevant deadlines for your work.

Deadline To do
Oct 6-10 Meet with the instructor to discuss the paper.
Oct 21, noon Submission of your paper describing the two search models and processes to the D2L dropbox "Proposal (Assignment 1)".
Nov 3-7 Input/output demonstration and hand in source code.
Dec 1-5 Presentation of your search system to me. Details on how to make the appointment for the demo will be given in class.
Dec 3-7 (Specifically, two days after your demo.) Submission of the source code, documentation, and report.

In addition, each (and every) group member is required to submit a peer evaluation report two days after each of the two group submissions.


UofC
CPSC 433: Artificial Intelligence
Department of Computer Science

Last updated 2012-03-12 15:45
Rob Kremer