Projects INFOB2KI 2017-2018

To pass the course, three projects have to be executed, each of which will result in written lab reports, and a small piece of code. The three projects are based on UC Berkeley's Pac-Man projects, and we are grateful that we have permission to re-use the material from their website.

Software

(If for some reason the Berkeley server is unavailable, use the local copies of the Pac-Man files.)

Background

The projects are concerned with creating and studying artificial intelligent behaviour in the well-known game of Pac-Man. You will gain hands-on and in-depth experience with several of the techniques treated in the course, both by coding them (to some extent), and mostly by experimenting with their parameters. Coding is only a small part of the effort and provides you with the means to experiment with the techniques. The latter is the main purpose of the projects since it provides you with more insight and understanding of the techniques, their benefits and their limitations.

This page lists the following information:


Form

Groups of 3

The projects are executed in groups of 3 students (or 2, if necessary). Deviation of this rule is only allowed under exceptional circumstances. This could be upon advise of the study-advisor C. de Gee, or the advisor of your own programme; the following arguments are no grounds for exception:

We have a number of reasons for this rule:

  1. The total expected workload fits 2-3 persons; note that the coding itself is only a small part of the total effort required!
  2. The various questions to be answered in the lab-reports assume that you experiment with different parameter settings, figure out what does and doesn't work and come up with a well thought-out and well-motivated theory for your observations. This latter part is one of the main purposes of the projects and is best achieved in groups of 3.
  3. We have a responsibility to seriously grade your projects within reasonable time.

Each of you is responsible for finding partners to work with, and for finding suitable moments and means for communicating and working on the projects together. Since you are expected to spend 20 hours per week on this course, you should be able to find time in your schedules to meet (physically or virtually).

Guidance

During the weekly scheduled sessions you can get assistance with the coding and experimentation required for the projects. Note that assistents are mainly there to help with questions about the contents of the projects, not for bug-fixing! Assistance is provide during the 'practicum' on wednesday; see the schedule for details. You can also discuss problems or issues amongst one another through the discussion forum on Blackboard.

Note: you will not be able to finish the projects in time if you only work on them during the scheduled sessions! Regular attendance will keep you on track, and helps you to meet the deadlines and the requirements. If you feel that assistance is not necessary, attendence is not required.

For questions concerning the projects, please contact the 'practicumleider' (see contact page).


Warnings! (Please do read these carefully)


Expectations and Grading

About the coding part
Since the Pac-man projects are used in AI courses all over the world, several solutions to the coding parts can be easily found. Coding is not where the emphasis of these projects lies, although figuring out what to code helps in understanding the subject matter. If you feel you have to partly rely on someone else's code to be able to complete the project, you may do so as long as you Of course you will receive a lower grade for the code, since you did not put in the required effort. Be sure to verify the correctness of the code: otherwise it will affect the results for the experiments and grade of your lab report as well.

About the experimental part
In order to answer the parallel exercises, often experimenting with parameters in your code is required to study the effects of those parameters. Such an empirical study requires that you clearly describe the set-up and process of your experiments (in this case typically: what values (or combinations thereof) were chosen for which parameters?), that you gather sufficient data to be able to draw conclusions, and that you describe the obtained results, the conclusions you draw from the results and a justification of the conclusions. This is what you learn in the Onderzoeksmethoden course.

For real empirical research enough data must be gathered to be able to draw statistically supported conclusions. In this case that means you would need to study many different values of a parameter, and even more if you are considering combinations of values of multiple interacting parameters. Since most of you have not yet followed the Onderzoeksmethoden course, we do not require you to provide statistical proof for your claims. However, no points will be awarded if you do not clearly describe exactly what experiments you performed (based upon your description, we should be able to repeat them), or base conclusions purely on experiments with less than 5 different values per parameter (which means a multiple of that for different combinations of 2 parameters, etc). Note that sometimes it is possible to theoretically support claims about the effect of certain (combinations of) parameters. In that case, full points may be awarded for a thorough theoretical analysis given in addition to, or instead of, an analysis of the results of a series of experiments.

Projects

  1. Python tutorial
    • Description and requirements
    • Planning: complete individually within first course week
    • Submission: no submission required.
    • Deadline: Friday November 17
    • Deliverables:
      1. completed tutorial

  2. Search in Pac-Man
    • Description and requirements
    • Planning: see schedule
    • Submission: through Submit; make sure to submit all deliverables in a single archive!
    • Deadline: Thursday December 7, 22:59 PM
    • Deliverables:
      1. pdf of your lab-report (weight: 65%)
      2. filled out Own-Code-Declaration
      3. the documented source code (weight: 35%)
        You only need to submit the files you altered, since those are the ones that will be run and graded. You are not supposed to edit any files other than the ones you are instructed to edit by the Berkeley descriptions!

  3. Reinforcement Learning
    • Description and requirements
    • Planning: see schedule
    • Submission: through Submit; make sure to submit all deliverables in a single archive!
    • Deadline: Thursday December 21, 22:59 PM
    • Deliverables:
      1. pdf of your lab-report (weight: 65%)
      2. filled out Own-Code-Declaration
      3. the documented source code (weight: 35%)
        You only need to submit the files you altered, since those are the ones that will be run and graded. You are not supposed to edit any files other than the ones you are instructed to edit by the Berkeley descriptions!

  4. Classification
    • Description and requirements
    • Planning: see schedule
    • Submission: through Submit; make sure to submit all deliverables in a single archive!
    • Deadline: Thursday January 25, 22:59 PM
    • Deliverables and deadlines:
      1. pdf of your lab-report (weight: 65%)
      2. filled out Own-Code-Declaration
      3. the documented source code (weight: 35%)
        You only need to submit the files you altered, since those are the ones that will be run and graded. You are not supposed to edit any files other than the ones you are instructed to edit by the Berkeley descriptions!



Project A: Python and Autograder tutorial

Since we are assuming you are not yet familiar with Python, you can use the first course week to (individually) do a Python tutorial described in Project 0 of the Pac-Man projects. Note that this tutorial in addition makes you acquainted with the autograder that you can use to get feedback on the coding part of the projects.

Requirements

Complete Project 0 of the Pac-Man projects.


Project B: Search in Pac-Man

In the course we have discussed a number of search algorithms. In this project you will implement them to allow Pac-Man to find his way through a maze. To this end you will

  1. complete Project 1 of the Pac-Man projects, and
  2. perform the experiments necessary to write a lab-report answering the associated parallel exercises. (not available yet)

Requirements

More information, hints and tips

Check out Berkeley's lecture slides (also on video) on search:


Project C: Reinforcement Learning

In the course we have discussed reinforcement learning at a very abstract level, assuming it can be interpreted as an MDP. In this project you will implement value iteration for MDPs and Q-learning as a type of reinforcement learning. To this end you will

  1. complete most of Project 3 of the Pac-Man projects, and
  2. perform the experiments necessary (lot of work!!) to write a lab-report answering the associated parallel exercises. (not available yet).

Requirements

More information, hints and tips

Check out Berkeley's lecture slides (also on video) on MDPs and reinforcement learning:


Project D: Classification

In the course we have discussed perceptrons (neural nets) and how to train them; we have also touched upon naive Bayes classifiers. In this project you will design and train different classifiers, among which classifiers that were not treated in class: multi-class perceptrons, a large-margin classifier (MIRA) and a modified perceptron for behavioural cloning. To this end you will

  1. complete Project 5 of the Pac-Man projects, and
  2. study the classifiers and perform the experiments necessary (lot of work!!) to write a lab-report answering the associated parallel exercises. (not available yet)

Requirements

More information, hints and tips

Concerning the formulas presented for MIRA in Q3: the double bar || is used to indicate the length (norm) of a vector, the subscript 2 indicates that it is a 2-norm (which means regular Euclidean space), and the superscript 2 is an exponent. So if v is the vector (1,2,3) then
||v||22 = ( (12 + 22 + 3 2) )2 = 12 + 22 + 3 2 = 14.

Check out Berkeley's lecture slides (also on video) on perceptrons: