PROJECT 1: 3D Programming
DRAFT: February 9, 2007
DUE DATE: February 26, 2007 @ 2PM
- Team composition:
- This is a team project, with a team being from
one to three people maximum. You may choose your
teammates. Your team composition must be decided
no later than Friday January 26th and emailed to
yap@cise.ufl.edu.
- Each team must have a designated team leader.
The team leader will inform the instructor or TAs if there
is a signficant issue involving sharing of responsibilities
for the project. If the situation is severe, it may result
in different grades per team member. Try to get along,
cooperate, and share the load--most
teaming arrangements work out well in the end.
- Program to be represented in 3D:
- Pick a computer program or part of a computer program
(i.e., a code segment)
to represent in Second Life (SL) with 3D objects
- The programming language can be any that you like: a scripting
language, Java, C++, C, Basic, Lisp, etc.
- The program must have an application (i.e., not be abstract).
It can be anything including science, engineering, business, art.
- As a rough guideline on length--anywhere from 3 to 10
lines of code (excluding data structures). Length can be more
if desired.
- The level of coding abstraction can vary within the
program segment: expression level,
statement level, method/routine-call level.
- Representation requirements -- You must:
- represent both the computer program and its
execution through animation/dynamics
- allow for some form of human interaction with
the program (feeding input, setting or modifying variable(s))
- represent the application objects referred-to or
defined by elements of the program
- Guide to representing programs + executions:
- Read the introductory article on aesthetic computing
in the Files section of Yahoo groups.
- Note that either data or control flow can be used to represent
the program in 2D. Going from 2D to 3D is done by applying
a spatial metaphor to the 2D flow graph.
- The execution of the program must be performed through
message passing among the elements.
- Feel free to use sound or music for execution or interaction
aspects but not to represent the program structure itself.
- To deliver:
- Send everything to one of the two TAs. Feel free to
"cc:" the instructor.
- Give the 3D-Program object (but make sure that you first
set ALL PERMISSIONS for the sub-objects and all scripts) to
either one of the two TAS. You can do this by giving it to
them in-world or dragging the object to their profile. Points
will be deducted if the permissions are not set correctly and
the TAs do not have full perms to see your scripts, since this
results in a delayed hand-in date.
- Place the program and its associated application objects
in your area of land and mail the X,Y,Z coordinates and title of
your project to either of the two TAs. These coordinates will be used
to create a directory to allow the instructor and both TAs to
grade the installations.
- Include an object that describes your project to someone
who might want further information. Use the notecard delivery
mechanism similar to the "i"nformation icons in the automata
lab.
- Create a Word or PDF document of between 3 and 6 pages
that describes your project. Include sample snapshots in SL,
list the computer program and clearly specify how you represent
this program first in 2D and then how you proceed from 2D
to 3D components used in SL.
- Grading:
- Criteria: An average project that is complete and comprehensible will get a B.
Only excellent projects will get an A. In-between projects will receive
a B+. The instructor will assign the final grade based on feedback from
the 2 Teaching Assistants. "A" grades go to impressive and
innovative projects, and grades depend somewhat
upon what your peers produce in terms of relative performance.
Graduate students and teams have higher expectations.
- Comprehensibility (can we understand what you are doing, with
all documentation?)
- Completeness (whether the design is complete and accurate, and
whether you handed in all required items).
- Quality (perceived time to complete, with subjective look and feel
of the project)
- Documentation
- Boosting your Grade: The following are a list of strategies
that will boost your grade
- Creativity: Create a really well-designed and attractive
representation -- something that one might want to show others in
an online museum. Give significant effort toward making something
of high quality from a design perspective (i.e., do not choose basic
prims with no textures -- make it look good and a pleasure to interact
with, avoid annoying visualizations or sounds).
- Cross representation: Since you are representing one
structure (i.e., source structure)
in terms of another (i.e., target structure), you can optionally show both
structures within the same interaction context. For example,
consider interacting with your 3D computer program and that you
wanted to relate components of this program to components
represented as Text or Icons (i.e., in the traditional
program representation). You could use a morphing method or
some sort of colocation of both source and target to emphasize
the relationship.
- Meta-level Structures: Consider going beyond building a
"one off" 3D representation of a computer program. For example, given
a metaphor or style of your choice, consider giving the user a
construction kit/capability so that they can design their own programs using
your style. The programs don't have to be as "complete" as full-blown
languages such as Java and C++. Another approach to this strategy is
to consider taking an existing computer language and building a
parser that will convert this language to the equivalent 3D program.
- Interaction: consider expanding the ways in which one
can interact with your program: (1) via real-world connections from
SL (i.e., via XML-RPC or http_request/response), (2) mixed reality
using webcams for object identification and tracking.
- Special event: A small number of excellent
projects will be shown in a well-publicized gallery
of interactive 3D programs for the general SL public. The number of
gallery-quality programs depends on what we receive.