Software and Facilities

The programming projects, and homework assignments are intended to help you understand the concepts discussed in class, and to provide an opporunity for you to demonstrate your command of the material.

It is not the goal of this class to teach you how to use a particular computer or software package. However, you will need to use some to do the assignment.

The main ground rule:

No matter what, your programs must compile and run on the machines in the graphics computing clusters (1351, 1355, ....) on the first floor of the CS building. If you don't like the compilers or tools installed on these machines, we're sorry. If you write your programs somewhere else, it is your responsibility to make sure your programs compile and run on these machines.

We will provide sufficient tools for you to complete your assignment. If you want to use other tools, we may let you. However, you must recieve written (email) permission from the instructor first - when the assignment is given out. If you choose to use software other than what we support, you're on your own. We won't be able to help you with software other than what's standard, and we aren't responsible if some other software messes you up.

The Hardware Facilities:

On the first floor of CS, there are three rooms with Dell computers that are well-configured for the assignments in this class. You are strongly encouraged to use these machines.

Some words about C++ (and other languages)

The tools we have chosen to provide for the class pretty much require you to program in C++. This is not intended to be a statement about the relative merits of the programming language. However, certain tools (graphics libraries, and user interface toolkits) are available under C++, and would have been difficult to provide otherwise.

There is no intrinsic reason why Java could not be used for the programming assignments in this class. However, we are not able to provide all of the tools that you need (for example, a 3D graphics library). If you are very brave, you may consider working in Java, but you will be on your own to find graphics, imaging, and user interface libraries. We cannot help you with this.

If you have not used C++ before (or don't have a lot of experience with it), this poses a challenge: you will need to learn C++ and the toolkits that we provide in addition to the material you need to learn for class. My suggestion:

  1. Buy a good book on C++ (I have some suggestions)
  2. Start on your assignments early
  3. Avoid using fancy features of C++. The language has lots of advanced features that are difficult to use and understand, and probably aren't that helpful to you.
  4. Practice writing programs and using the debugger. Try out the debugger on programs that work so you can see how to trace through your code.

In future semesters, we may provide better support for programming languages other than C++. So if you are really adverse to learning it, you might consider waiting until the next time the course is offered.

Software Libraries

In order to complete the assignments in this class, you will need to use a user interface toolkit (to help you make windows and buttons and stuff), a 3D graphics toolkit (to draw things), and some basic imaging code (to read and write pictures).

User Interface Toolkit: FLTK

For the user interface toolkit, we have chosen to support a library called FLTK. This library is freely and publicly available (see www.fltk.org), and is installed on the instructional computers for this class. We will provide some notes on how to get started with fltk, and the specific details of using it on the computers in the CS clusters.

We chose fltk because it is simple, easy to learn, integrates well with the other tools we will use, and well designed. Because the source code to the entire toolkit is available, you can look at it to see how it works. As an added bonus, programs written with fltk are portable to other computer running Linux or Unix.

You may use something other than fltk. (the obvious choices are the standard Windows "MFC" and other portable toolits such as Tcl/Tk). If you choose to do this, you'll be on your own: we will not help you with other toolkits. If you do choose to use another toolkit, make sure that it supports displaying images and having OpenGL windows. (MFC can do this, but its tricky.)