This homework assignment is really a term project, so get started early.
Write an interesting graphics application. Generally, interesting means 3-D and interactive. Let me know what you want to work on before you start. One example of an "interesting" project is a flight simulator using OpenGL with the following minimal requirements.
Other possible projects include:
Regardless of the project you choose, you must turn in a 10 page "report" on your design and implementation that includes some UML diagrams. The report has to be well-written and organized along the usual lines (introduction, background, purpose, design, implementation, conclusions, references, etc.). You must also give an 8 minute in-class presentation to the rest of the class and answer questions.
The paper should have a title, abstract, numbered sections, and references, as is typical in most ACM or IEEE conference proceedings or journals. A suggested outline is:
Title (For example, "An OpenGL Flight Simulator")
Abstract - Read some conference papers or journal articles
to get the gist of a properly written abstract.
1. Introduction - Describe the goals of the project. Do not
say anything about the fact you are a student
trying to learn something. Do not reference
the class, the school or the professor in
anyway. Assume, rightly, that you are an
accomplished developer documenting a
fabulous application that shows off the
strengths of OpenGL as a graphics API.
Close the section with the usual "the
rest of this paper is organized
as follows"-type paragraph.
2. Background - Talk about different graphics APIs and programming
languages that could be used for your project.
Make sure you sound like an educated computer
scientist.
3. Design - Describe the project's architecture. Use UML
Component and Class Diagrams. Justify major
design decisions. This section can be organized
into subsections (3.1, 3.2, 3.3 and so on),
each subsection describing the highlights of
each of the major "components." In cases where
you have borrowed, or even extended someone
else's code (usually mine?) cite the author of
the original code and state where and why you
improved on it.
Also point out where, if ever, you took an
object-oriented design approach, even though
OpenGL is not very object-oriented at all.
4. Implementation - Describe your overall implementation,
focusing on a few of the interesting
components. Use UML Interaction and
Activity Diagrams, and State Diagrams
if interesting. Justify implementation
decisions.
Important: You must ensure that your
implementation has taken into consideration
all of the OpenGL Performance Tips
in Appendix G of the OpenGL Programming Guide.
Call out a few of these tips in your paper
and state how you followed them. Be specific
and point to certain methods in certain classes
of your implementation.
5. Future Enhancements - Describe at least three features you
could add to your project to make it better.
Point out to what extent your beautifully
written code allows these features to be
gracefully and painlessly added (you did
take the texture map files as command line
arguments, didn't you?) Do not use
self-deprecating language in this section;
it only makes you sound like an idiot.
A. Source Code - You must post your code on a web site where I can
find it from outside the university's firewall.
In this Appendix, give the URI(s).
B. Bitmaps and Textures - In this appendix, attach pages with
the bitmaps and textures used in your
application. Use a color printer if
possible. Put captions on each picture.
References - Include a list of references, properly formatted
according to some acceptable standard.
You will be graded on spelling, grammar, organization, and the professionalism of the report. Do not write in the first person. Do not come off like a juvenile. Imagine someone that you don't know will be reading this and deciding whether or not you should be hired for a $500,000/yr job.
Note: I have decided to omit a paragraph which was going to say something about the fact that you were no longer in high school and therefore no longer hold the mistaken belief that you do not need to learn how to write well because those grownups were all lying when they told you that people make important judgements about you on your ability to write (and speak).