FEniCS is a free, modern software suite for finite elements. It is very powerful, allowing one to use and to study many different finite element methods for many different problems in 1, 2, and 3 dimensions, with a small amount of coding, which closely follows the mathematical notation for describing the method.
FEniCS consists of about 10 code components, not including several major software libraries incorporated from other projects (e.g., for basic numerical computation, sparse, linear algebra, or visualization). The key interface component is called DOLFIN, which allows for calling FEniCS routines from programs written in Python or C++ (in our class we will concentrate on Python).
The main FEniCS web site has lots of information about the FEniCS project. You can also download FEniCS from there. Installing FEniCS is usually an easy matter under Ubuntu Linux, since compiled packages have been prepared which bring in all the necessary components and can be installed with the standard Ubuntu/Debian package manager. FEniCS runs on other platforms, such as other Linux distributions and Mac OS, but it is a much more complex process to install it on them, since it means assembling, compiling, and installing all the various prerequisite software and components. This process is greatly simplified (but not trivialized) by the Dorsal installation scripts.
Although there are many people around the world using and working on FEniCS on a daily basis, it has not quite reached a stable state. The developers are hoping for release 1.0 sometime near the end of 2009. In the meantime it is changing quite rapidly. Moreover, there is little in the way of polished documentation, and that which exists is often not quite up-to-date with the current release. A FEniCS book, which will include a tutorial, is underway, but not yet available. Fortunately, the author of the tutorial, Hans Petter Langtangen, has kindly agreed to let our class use a draft version of the tutorial, even though it is not in final form.