CS 318 - Writing MPs

----------------------------------------------------------------------
----------------------------------------------------------------------
----------------------------------------------------------------------

Working on the MPs

There are 7 machine problems (MPs) for the course, MP0 - MP6. Additional work on the MPs will be assigned for those individuals seeking one unit of graduate credit.

In general, you will have two (2) weeks to do each MP:  MPs are assigned on alternate Fridays and are due two Fridays later by the beginning of class (except for MP6, which is due three Fridays later). See MP Assignments for assignment and due dates. Late MPs will not be not accepted! See Handing in MP's for details.

You MUST do your own work on the MPs. The point of the MPs is to gain experience in various computer graphics techniques. Such experience does not come by copying off of someone else's MP. Do not copy someone else's program!

With that said, the TAs are willing to help you out with conceptual problems. Don't expect the TAs to write your program for you, however. Also, do not wait until the last minute to start on your MP. We have approximately 180 students in the class, and we have only 30 machines (which other classes use as well). Do the math...

Your code must be written in C, not C++ or any other language, and it must use the OpenGL API. (You may use C++-style comments.) See Compiling MP's for more details.

----------------------------------------------------------------------

Code Organization

For each MP, all of your code must be kept in one source file, named mp#.c (where # is the number of the MP). Of course, you are encouraged to modularize your program into different functions where appropriate, and to use good programming techniques.

Be sure to include the necessary libraries and files for your program. For example, when using the GLUT library to open your main window, put the following #include directives at the top of your program.

#include <stdlib.h>
#include <stdio.h>
/* Any other C-Library headers */
#include <GL/glut.h>
----------------------------------------------------------------------

Windows NT Machines

The official lab for this class is 1265 DCL. You may use other labs or your personal computers for code development, but the code must compile on the machines in the official lab. See Compiling MP's for further details.

The machines in this lab run Windows NT. When you work on these machines, it is strongly recommended that you save your work to the H: drive, which is connected to your home account on the SPARC's. Otherwise, your program may be accessible to another student and would be subject to the cheating policy.

There are a number of editors you may use to create your code, including:

There are a number of useful items on the public class directory. (See Accessing the Public Class Directory for setup instructions.) See Useful Items in the Public Class Directory.

----------------------------------------------------------------------

Commenting Your Code

You are expected to comment your code fully. See the Grading Criteria for MPs to see the point breakdown. You need to comment each procedure/function, stating its purpose, inputs, outputs, and side-effects, if any. You also need to comment each variable if it is not apparent what it does.

At the top of each MP, put your Name, Net ID, MP #, Course, Due Date, and the purpose of the MP. Something like this would suffice.

/***********************************************************************/
/*                                                                     */
/*  NAME     : Your Name Here          PROGRAM : MP#                   */
/*  NET ID   : Your Login ID Here      COURSE  : CS318 - Fall 1999     */
/*  DUE DATE : Due Date Here                                           */
/*                                                                     */
/*  PURPOSE  : The purpose of this program is to ...                   */
/*                                                                     */
/*  INPUTS   : List any command line parameters, keyboard commands,    */
/*             mouse button functions, etc.                            */
/*                                                                     */
/***********************************************************************/
----------------------------------------------------------------------