AMRG Independent Study FAQ (CS 399/499)

Different faculty have different requirements and administrative procedures. This page documents the procedures used by Ian Horswill and the Autonomous Mobile Robot Group (AMRG).

How do I find a project?

That depends on who your client is for the project. Most independent studies have some real user who wants to use the program. In order to qualify for the CS major's project requirement, there must be such a user (see below). However, here are the standard places where people get ideas for proejcts:

AMRG
A list of projects that AMRG is interested in having done can be found on the AMRG project solicitation page. Some of these involve things we'd like to see done for us, others are things we'd like to see done for the department at large.
You
We often prefer robot projects that you think of yourself. However, you need to convince us that it is: useful, interesting, non-trivial, and practical.
Another CS faculty member
In this case, you have them supervise the independent study directly.
A faculty member from another department
This is fine as long as it's a programming project. If it's not, then you should have them supervise it themselves and give you credit in their own department.
An outside employer
In some cases, you can get credit for programming work do for an outside employer. However, it must be practical to do it as part of a one quarter project and your employer needs to agree to allow the faculty access to enough information to evaluate the project and track your progress.
A group that you're involved with
For example, you may want to write a program for scheduling the pool table at your dorm or solve fluid dynamics equations for the model rocketry club you organized.

How do I set up an independent study with you?

  1. Come see me before registration with a project idea. We can discuss it and agree on a basic outline for the project.
  2. Then go to the CS department office to get a permission number for CS 399. Specify that I'm supervising it.
  3. Register for the course
  4. Write up a project contract (see below) before the start of classes

Do I meet with you regularly?

That's negotiable. Independent studies can be just that - independent. However, you do need to send me progress reports (see below) and you should always feel free to ask for help if you get stuck.

What do I have to give to you?

Here are the typical deliverables for an independent study. Again, different faculty handle it differently, but here's how I'm running things at the moment:

By when What Details
Start of classes Project contract For projects intended to satisfy the project requirement, you should have your user sign off on the specification portion of the contract. The contract should include:
A brief description of why your program is needed and who is going to use it.
A specification
of the program in sufficient detail for us to be able to agree at the end of the quarter as to whether you actually did it. You should probably break this up into necessary features and nicer features that you intend to implement but that can be jettisoned if you run into unexpected problems. Usually a page or two is sufficient for this. Note that being lame about working on your project doesn't count as an "unexpected problem".
A Gantt chart ,
preferably done with Microsoft Project (available in the CS lab). A Gantt chart provides the following:
  • A set of dependencies between tasks
    So that you can tell what other tasks have to be finished before starting a given task.
  • A timeline
    Showing when you expect to get the tasks done.
  • A breakdown of the project into tasks
    These should be small enough that they can be done in an afternoon of solid work.
    End of each week Status report Specify:
    What you did that week
    What tasks from the project contract you've completed
    What problems you encountered
    What problems are still outstanding
    Monday of finals week Demo presentation To be given to the members of AMRG and any other students and faculty who wish to attend.  You should prepare:
    A 5 minute demo
    Think of all those minutes of embarassing silence if your program isn't working in time for the demo session.
    A 10 minute PowerPoint presentation
    We will leave another 5 minutes for questions from the audience
    End of finals Writeup You should prepare and submit the following documentation in electronic form:
    Your code
    A 2-5 page writeup on what you did
    A web page describing what you did.
    This will be put on the AMRG web site. Your friends will look at you and make fun of you if it's lame. This can be a multimedia web page. For example, students doing robot projects should consider making an MPEG of their robot that can be attached to the page.
    A 24x36 poster describing your work.
    This can either be a Word document or a single PowerPoint slide and should be designed to make someone walking through the hallway in the department stop and say "wow, cool." The poster should not just be one big block of bulleted text. You should put some thought into how to incorporate color and pictures (photos, screen shots, line art, whatever), so as to make the poster eye catching and interesting.

     

    Notes:

    I know the Gantt chart sounds like a lot of busywork, but our intention is to protect you from biting off more than you can chew. It's very difficult to know how much work a big project is going to be, or even whether you've gotten behind on it, unless you break it up into pieces small enough that you can accurately estimate how long the individual pieces will take.
    Similarly, the presentation, poster, demo, etc., probably sound stupid too. But they're actually very important in the business world (and in grad school). Besides, think how cool you'll look in an interview when you pop out your professionally crafted PowerPoint presentation with built-in MPEG videos.

    What if the project is being supervised by a grad student?

    In this case, the grad student is responsible for the real supervision of the project. However, you should send copies of all your deliverables, including weekly progress reports, to both the grad student and to Ian.

    What if it's research and I don't know what the tasks are?

    Do the best job you can. In some cases Ian or the grad student supervising you may need to write the contract for you.

    How are independent study projects graded?

    For the most part, independent study projects are graded based on effort. In general, if you do what you promised to do and you do a good job on the presentation and supporting materials, you will get an A. If you show steady progress, are putting in a good faith effort, and do a good job in the presentation and supporting materials, you will still probably get an A. If you are lame in some way, you will get a B. If you're really lame, for example if put it all off until the last minute and then do the minimum job possible, you will get a C or D. If you blow it off entirely, you will fail.

    If you do not complete the job because it turns out to be more work than expected, then you can negotiate for an incomplete. Incompletes will not be given out unless you have been showing due dillegence in reporting your status. In particular, if you blow it all off until the end and run out of time you will not get an incomplete.

    If there are unforseen circumstances that are beyond your control, we will not hold you responsible for them. For example, if you can't get the system to work because of a driver problem in windows, that's not your fault. We will expect you to document that you've done everything reasonable to try to work around the problem but if in the end the project can't be made to work, it's not your fault. However, we will hold you responsible for having contingency plans in place when reasonable. For example, if you plan to use a particular commercial package that wasn't release as of the time you signed up for the project, you had better have a plan for what to do if the company is late on shipping the product. If not, you should discuss this issue with Ian before hand so that you can agree on an alternate project in case the program can't be used.

    How does this relate to the CS Department's "Project Requirement"

    The project requirement says that you should do two quarters worth of "resume quality" project work before you graduate. The general guidelines for independent study projects in order to satisfy the requirement are that:

  • It must be non-trivial
    Well, duh.
  • It must be a programming project
    It can't just be a bunch of web pages (unless of course they're applets or other web-embedded programs). This isn't to say that web pages are bad, just that they don't demonstrate to a potential employer or grad school that you understand computer science.
    It must have a real user
    This is someone who is committed to using the program and who you have to please, so be careful to choose a project you actually think you can do.  For example, the user could be:
  • A faculty member with whom you're doing some kind of research
    This faculty member need not be Ian, although if it is a CS faculty member, you might as well register for the independent study with them.
  • The CS Department community
    For example, you might write a program to advise students on what classes to take or write programs or libraries to be used as part of some CS class.
  • Your dorn, frat, church, or other group with whom you're involved
    For example, past students have done systems to display the text of hymns while they were being sung or CGI scripts to implement a database of some sort.
  • An outside employer
    This allows you to get credit for professional work you're already doing as a programmer, provided that (1) it can be made to fit within the constraints of a one or two quarter project and (2) your employer is willing to allow you to provide enough information to the faculty to track and evaluate your work.

    While this allows for a wide range of activities, it does rule out the "well, I thought I'd write a new version of wumpus and then put it up for people to download from the web." There has to be someone who has already expressed interest in using it and who will provide feedback on it. You will be responsible making them happy.

    What about the Design Competition?

    Although our policy has varied over the years, we are currently giving credit for DC (it has varied). However, in order for it to count toward the project requirement, there must be a significant programming component to the project. You will have to get the code to work and you will have to turn it in. So think very carefully before planning to use DC for your project requirement. Most teams spend most of the year getting their hardware to run. Some teams don't even start writing software until the night before the competition. However, even if you don't apply it toward the project requirement, you can register for independent study credit and count it as a technical elective.

    Keep in mind also that DC has a way of eating your life and lowering your grade-point average. Don't try to do it at the same time that you're taking a heavy load, or trying to do another 399. You would not be the first person to flunk classes while taking DC.