CSE 190D Projects
Winter, 2015

DRAFT SPECIFICATION
February 20, 2015

Purpose:

The projects provide an opportunity to do some creative design and implementation, and to
combine multiple techniques that we have covered in the course.  They also involve
putting ideas into practice and coming up with an interactive artifact that can be
shown to others.

Teamwork:

Teamwork is expected in this assignment.  Unless there are extenuating circumstances,
each student should work in a team of two or three students.  Here are some of the
advantages of working in teams.

  1. Being able to easily talk out ideas with someone else.
  2. Sharing the work, so more can be accomplished in less time.
  3. Developing communication skills related to the technology.
  4. Being able to mention teamwork experience when applying for jobs
      or internships.
  5. Having multiple sets of eyes that can help solve debugging problems.

Assignment:

Design and implement a game that will be played on the computer.  The game
should provide an educational experience for the players.  It should teach
or reinforce knowledge in a topic area covered by our course.  This includes
image processing and Python programming.  Within image processing it might
deal with something like image transformation, enhancement, analysis,
color representation, stereograms or photomosaics, or fractal synthesis.
Within Python programming it might deal with logic (e.g., as in conditional
expressions for IF statements), function definition and calling, loop
structure, manipulation of lists or strings, or how to construct graphical
objects using Python code.

Constraints:

Your implementation should be in one or the other of these two systems:
(a) PixelMath (including its Python system);
(b) Brython (Python in the browser).

There are advantages and disadvantages to each of these alternatives.
However, by sticking to one or the other, we will be able to have 
shared tools and experiences in the class that will facilitate 
working together.

Desiderata:

The following features are not required, but would be nice:

 --Scoring system and/or clear winning criteria.
 --Option to have more than one player at a time.
 --Multiple versions of the game (e.g., short and longer,
     or changeable content, or progressive challenges,
     like levels).
 --Display or printout at the end that summarizes the
     player's performance or achievement.
 --Active image manipulation within the game.


Management and Reporting:

The contributions of each team member to the design and development
must be accounted for.

Each team member must write and contribute at least some piece of
code used in the game.  That piece should be identified;
the rest of the team can help with that piece of code, but
it must be primarily attibutable to that one team member.
Each team member must write a paragraph explaining what he or she
contributed to the project and what lessons he or she learned.

Written reports will be due during the last week of classes,
and the code will also be due that week.  The code should be
delivered in a manner that makes it extremely easy to 
run and play the game.  If it is a PixelMath game, it should
launch from a double-clickable icon, as shown during the
first week of the class.  If it is a Brython-based game,
you should have it installed on the students web server,
ready to be visited and played via a browser.

Additional details about the reports and demos will be provided later. Here is a link to information about project reports and demos.
FAQ:

1. Q. Does our game need a graphical user interface?  
   A. Though it is not strictly necessary, it is highly recommended.
      (Example PixelMath code will be provided.)

2. Q. When using Brython, is it preferable to use Canvas graphics
      or SVG graphics?
   A. Either is fine.  SVG might be slightly preferable.

3. Q. Which environment is easier to develop in -- PixelMath or Brython?
   A. It depends on whether you are already familiar with JavaScript.
      If so, Brython might be easier.  Otherwise, PixelMath is probably
      easier.

4. Q. Which environment makes it easier to share our project (Brython
      or PixelMath)?
   A. Brython, because you can simply point people to your web page.
      However, it can be easy to share a PixelMath project by zipping
      up the files, including PixelMath, and sending it to someone.
      They might have to install Java, if they don't have it, though.

5. Q. Which environment is more stable (PixelMath or Brython)?
   A. PixelMath.  It is only being updated occasionally.
      On the other hand, Brython is being frequently updated, and
      some of the changes may break older demo applications.