CS 321: Self-designed assignment

Table of Contents

Overview

For the last assignment, you’ll get to design it yourself. You can choose to do nearly anything inside the area of AI, so long as I approve it in advance.

This isn’t a “final project” in the traditional sense. This isn’t designed to be a deep integration of everything learned in the course, or something that is supposed to be half of your grade. AI is such a large field, with so much to consider, that I’d like to simply give you an opportunity to design your own project so you can do something that interests you that we otherwise haven’t done in detail. So I’m avoiding all of the baggage associated with the phrase “final project,” and I’m simply calling it a self-designed assignment.

The primary goal of this project is for you to learn something new, that you have not had a chance to do otherwise within the course, that is of interest to you. You should demonstrate that in a project that is roughly the size of two of our average assignments. There are a number of different ways you can achieve this:

  • You can pick a topic, or an aspect of a topic, that we looked at this term but didn’t implement in detail with an assignment. You could then learn more about that topic, and do some sort of demonstration with that.
  • You can start with an assignment that we’ve done, and expand on it or do some other variation on it, where it’s clear that you’re learning something new in the process.
  • You can pick a topic within the broad field of AI that we didn’t cover at all; this is a chance for you to learn more about it.
  • Rather than write code (which is what the above two ideas suggest), you can write a paper about some other area of AI that you want to learn about.

In order to help encourage you to keep on schedule, and also to help you scope something of appropriate size, the project will have two deadlines. The first deadline is for you to submit something that has approximately one assignment’s worth of work going into it. The second deadline (at the end of exam week) will be when you submit the final product. (There’s one more first deadline where you’ll turn in a proposal.)

Proposal

You’ll first turn into me a proposal as to what you wish to do. The proposal should be no longer than two sides of a page. Nonetheless, the more specific you can be, the more I’ll be able to help. Here’s what you should indicate in the proposal:

  • What you’ll be doing. Give me a sense as to what the project is, and how you’ll go about it.
  • Explain how you’ll be learning something new.
    • If you’re doing a variation of a project that we’ve done (i.e., game playing with a different game), make sure to explain what new AI ideas you’ll be studying or implementing beyond just implementing a different set of game rules.
    • If you’re implementing a project or writing a paper about a topic that we haven’t covered much, briefly explain how this is new to you and isn’t something you’ve already learned elsewhere. For example, natural language processing (NLP) is considered part of AI. If you want to try to do something with NLP, that’s great. But if you’ve taken NLP here or elsewhere, you shouldn’t be rehashing content that you’ve already done work in elsewhere. Do something new to you.
  • Explain how you will be breaking this up into two pieces, each one roughly the size of an average assignment.
  • You are welcome to do this project in pairs. If you do so, however, I would like each of you to pick out one small piece of the project that you will be individually responsible for. Explain what that is in the above proposal. This piece does not need to be large, but I would like there to be some piece in there for which at the end each of you can say “I did X”. Indicate in the above proposal what that piece will be for each of you.
  • Propose what criteria I should be using for grades of “exemplary” and “meets expectations,” for each of the two submissions.

I’ll grading the proposal simply on a simple “incomplete / pending / finished” scale. It’s finished. if you’ve included all of the above. That said, if I think the idea needs tweaking to be a successful project, I’ll communicate that with you.

Project submission

If your submission is a programming project, when you submit your final work, in addition to your code you must also submit an explanation of what you have done, how I should run your code, and how I should interpret your results. This does not need to be long. It should merely prevent a problem I’ve had in the past: students have submitted work that either I can’t run, or it runs but I can’t figure out what it’s doing.

If you are turning in a paper, you should submit a PDF.

Project ideas

Here is a list of some projects that people have done for this class in the past. In the past, when I haven’t provided this list, students have begged me for suggestions. In other past years, when I have provided this list, students agonized and felt compelled to come up with a project that wasn’t on it. That was their choice, not mine – it is TOTALLY WONDERFUL AND NOT BAD if you decide to do one of the projects on this list! Keep in mind that I vary the topics a bit each year and the order that I cover them, so we may not have covered some topics yet in this list. Similarly, there are topics we may have covered that you may not find in this list. Some of these sound harder than they are; others seem deceptively simple, but require significant amounts of work at the end to actually make them work properly.

Here are some ideas from previous students that seemed to work out reasonably well:

  • Computer game players: Go, Poker, Scrabble, Magic: The Gathering, Mastermind, Cribbage, Pokemon Battle Simulation, Trans-America, Chinese Checkers, Gomoku, Macala, etc. If you pick any of these, make sure it’s not just a rehash of what we’ve already done. Be able to explain in your proposal what new AI aspects you’ll need to introduce which will be interestingly different, and how you’ll learn from it.
  • Reinforcement learning in playing Bridge
  • Computer puzzle solvers, e.g. Minesweeper.
  • Pac-Man with intelligent monsters
  • Automated 20-questions player
  • Recommendation system
  • Neural network spam filter
  • Robot motion planning via A*
  • Evolving game strategies

Here’s a list of topics that didn’t work so well:

  • Computer game players: Risk, Scrabble, Dominion, Battle Simulation. It’s not clear that this list of games is substantively different in any way from the previous list, yet these were projects that were problematic. For these cases that didn’t work well, students often got too focused in making the game work, and didn’t have time to do any AI. This was more likely to occur with a game with more complicated rules or pieces. For other submissions, they simply didn’t work, and I couldn’t successfully run the code.
  • “My really cool idea that I’m telling you, it’s awesome, but I just can’t really explain it.” I’ve gotten over the years a number of submissions where people do AI extensions to pet projects they’ve had from other disciplines. That’s awesome, and I encourage such ideas. However, these projects seem to come with a higher likelihood that the students don’t clearly explain what they’ve done, and I’m faced with a screenful of output where I have absolutely no clue what I’m looking at. If you choose something like this, it is critical that you submit a separate readme file carefully explaining the work. Here are some examples I’ve seen (apparently insects are popular in this category):
    • Simulated ant colonies
    • Bugs swarming for heat
    • Emergent ants via game of life
    • Finding paths through snow
    • Stochastic graph navigation
    • AI for favorite obscure family game for which I have no clue what the rules are