Most of you are familiar with Java, which conceptually is not far removed from C++. However, the syntax is significantly different and C++ requires you to do your own memory management (with no garbage collection).
For the projects in this course, you will not require most of the advanced
features of C++, such as operator overloading, exception handling and
templates. Such things may make some aspects of your programs cleaner or
easier to write, but are probably not worth the time investment to learn
about just for this class. You will need to know about classes, inheritance
and memory management (
The CS department offers a web based course, CS 368 for learning C++ assuming you know Java. That may be one way to get up to speed, might it may be too slow.
There are many books on C++. Three common ones for computer scientists are:
Your projects for this class must run under Visual C++ on the machines in room B240.
FLTK is portable across Windows and UNIX, another very good thing about it. There is no reason for you not to do your development under UNIX if you wish, but make sure it also works under Visual C++ in room B240.
There is a FLTK tutorial written by Mark Pingel, aimed particularly at CS 559 students.
LibTarga was written by Alex Mohr.
Prof Gleicher prepared an OpenGL Survival Kit to help with learning OpenGL.
The OpenGL libraries come with all recent incarnations of Windows. For UNIX based systems, machines intended for graphics generally have hardware OpenGL libraries for X windows. For generic UNIX machines (eg linux), there is a software implementation of OpenGL call MesaGL. Recent RedHat distributions include Mesa as an optional RPM. Other distributions no doubt do likewise. In principle, there is nothing to stop you developing under UNIX and doing a quick port at the end (everything has a UNIX version), but there will be no support for this. Finally, if you're a true hacker and want to modify your linux kernel and X libraries, and you have an nvidia based graphics chipset, you can obtain hardware OpenGL drivers. I use them and they're great. Recent linux distributions may include them already.