As this class is titled, "Advanced Programming", it is very programming-intensive, and the programming labs are really the heart of the course. I understand that you all may be coming from different programming backgrounds and may have different integrated development environments (IDEs) that you are familiar with, for instance, Microsoft Visual Studio, Eclipse, CodeWarrior, etc. The problem-solving concepts and the programming skills are what's important, not the IDE, however on the job, unfamiliarity with an IDE or unwillingness to learn a new IDE can slow things down.
As far as marking labs is concerned, the general principle is that I need to be able to read your code and run your program; I don't require that I can compile it. Win32 programs I can run on the senior lab PCs. I also have a Linux laptop (glibc-2.5) if you submit linux executables. I don't have ready access to a Mac. Other arrangements can be made; we're a small class, so things are flexible -- e.g., if you absolutely must work on OSX, we can make arrangements for you to demo your lab project for me.
For this course, there will be a mixture of lenience and rigid rules concerning use of different IDEs. For the FLTK and OpenGL parts of the course (most of the semester), you may use a different IDE (but see the restrictions below). For the OpenMP part of the course, you are required to use gcc-4 on carmel.
The portion of the class on shared-memory parallel processing will be done under gcc-4 on carmel, a quad-core, eight-hyperthreaded linux machine. If you have access to another machine with at least eight processors (HT is okay) and OpenMP, ask me. OpenMP is available on gcc only post-4.1.0, and on MSVC++ only in VS 2005 (not VS .NET or earlier).
Again, we're a small class, so other arrangements can be made. If you do choose to use an IDE other than the officially supported environment (gcc, cygwin, make on the senior lab PCs), please send me an email.
So far this policy just talked about the development environment (compiler, editor, etc.). What about the programming language? For this I will lock down a bit tighter: we will use C/C++. FLTK does have other bindings, but C++ is the standard one, and C++ is still pretty much the industry standard, for better or worse. Again, there is a little flexibility; if you are really dead-set on using Python or Java, talk to me. But I'm strongly steering everyone towards C++ for purposes of this class.
If you need a refresher in C++, try: