Assignments

Reading Reflections

Every two weeks (shown on the schedule), you must turn in a brief reflection on the previous weeks' readings. Aim to have this written reflection be 1/2 to 1 page long depending on the number of readings covered, though this is only a guideline, not a strict page limit. It is recommended that you write a draft of this reflection before coming to class, so that your initial reaction can be recorded, and then revise that draft after the reading has been discussed in class.

Reflections are due at 11:59 pm on the due date shown on Google Classroom, and should be turned in through Google Classroom. Each reflection will be assigned a letter grade according to the following criteria:

  • A: Excellent synthesis of material, combined ideas from each reading into a coherent narrative, mentions potential discussion questions or areas of interest for future research, seeks out additional information or shows evidence of attempting to fully understand reading before class (e.g. looking up unfamiliar term or working through exercises).
  • B: Good synthesis of material, goes beyond a "plot summary" of the reading to ask or answer questions and provides a critical analysis of the reading. Ideas are still fragmented and do not form a coherent narrative.
  • C: Provides only a "plot summary" of the reading, shows little evidence of reflection or critical thinking but does provide evidence that the reading was completed. Quality of writing detracts from the overall submission.
  • F: Fails to provide even a summary of the reading for the week, or is incoherent.

Programming Assignments

There will be a series of 3 to 4 individual programming assignments throughout the semester. Instructions and links to materials can be found on Google Classroom. Assignments are due at the time specified (11:59 pm in most cases). Some of these programming assignments involve looking through substantial code that someone else has written. Because of this, I highly recommend getting started early rather than leaving it until the last night or even the week of the due date. Each programming assignment will be assigned a letter grade according to the following criteria:

  • A: Functionally working with any exceptions gracefully handled. Well-documented and easy to read code. Clearly displays an understanding of the material.
  • B: Program works, but is not easy to read or does not handle all runtime paths well. Some area for improvement in the mastery of concepts.
  • C: Program does not work entirely, very little documentation and clarity, does not demonstrate you understand the concepts.
  • F: Program does not run, no documentation, inability to display your understanding of the material covered.

Final Project

The final project for this course will take one of three forms depending on your appetite for programming and/or writing.

The first option is to write a research paper on two implementations of AI for similar games. For example, both games may have companion AI or procedurally generated levels of similar types. You must detail the implementation specifications for each game if available, compare and contrast them (including the effect each AI has on player experience), and relate them to the material covered in class. The paper should be approximately 3000-4000 words (6-8 pages single spaced) and include citations/references for all claims in AAAI format (http://www.aaai.org/Press/Author/authorguide.php#references).

The final paper should be:

  • Well-reasoned, logical, and clear with an obvious thesis statement and supporting evidence
  • Thoroughly researched, organized, and properly sourced (including analysis and synthesis of source material)
    • Shows obvious signs of seeking additional relevant information including research papers, tech talks, and other dissemination methods
  • Well-written including grammar, spelling, punctuation, appropriate target audience and tone, and word choice
  • Clear and logical headers, appropriate and effective use of diagrams and/or visuals, and easy to parse


The second option is a pair programming assignment where you and a partner will create a digital version of a physical game (board game, card game, ball game, or other) as well as an AI to play the game based on principles we covered in class. Your selected game should not be based primarily on luck (e.g. roulette or Shoots and Ladders). Your programming submission will include a one page summary outlining how your AI works and any other relevant information that would be unclear solely based on the programming submission alone (number of players, if human players are required, etc.). Your grade will be determined on the evidence that you have mastered the material you are implementing, well-documented and concise code, difficulty of implementation, quality of written summary (with criteria similar to the research paper option above), and self-evaluation of your team's work.


The final option is a self-directed research project that is approved by the instructor and can be done in pairs as well. This could include implementing an AI in another appropriate framework we have not covered in class (Battlecode, Starcraft AI competition, VGDL level/game generation, etc.) or some other project you think is relevant. Depending on the project chosen, the outline may mirror one of the two previous options shown. For example, if you and a partner want to implement an AI for the MIT Battlecode competition, your submission will include the code as well as a one page summary of implementation details. All project project proposals must be brought to me no later than one week after the assignment is given on the schedule (proposal deadline March 31st).