My main area of research is in the visualization of mathematical concepts for the college classroom. Along those lines I have a few ongoing projects that I like to get students involved in and a few I wish to start. I also do independent studies and undergraduate research projects in many different areas in pure mathematics, applied mathematics, and computer science.
Below are short descriptions of projects that have been started and some that I wish to start. We can work on the background material together before you begin your project. If you or a group of you have an interest in going beyond the classroom please stop by and talk with me.
Higher Dimensional Visualization Project: Exploring new and effective ways to represent and visualize 4, 5, 6,... dimensions.
GeoGebra Visualizations Project: GeoGebra is a freeware dynamical geometry package similar to Geometer's Sketchpad but has many more facilities for dynamical exploration in areas other than geometry. These projects can be in nearly any area of mathematics, for example precalculus, single variable calculus, classical geometry, analytic geometry, dynamical systems, and so on.
Mathematica Visualizations Project: Like GeoGebra, Mathematica has a nice web interface for dynamic explorations. This project can also be started with a minimal mathematical background and no prior programming experience. These projects can be in nearly any area of mathematics.
Computer graphics is an integral part of our lives. The games we play, films we watch, television programs we see, and even the simple commercials incorporate computer graphics. You could use a number of different software packages, such as Blender or POV-Ray. For those who are more adventurous and have more programming experience you could create your own ray-tracer or modify an existing open-source tracer with new algorithms.
Blender is the free and open source 3D creation suite. It supports the entirety of the 3D pipeline—modeling, rigging, animation, simulation, rendering, compositing and motion tracking, even video editing and game creation.
POV-Ray - Persistence of Vision Raytracer - is a multi-platform freeware ray tracing software package that uses a C-like scene description language to produce photo realistic computer generated images. You can download the program and look at the POV-Ray Hall of Fame at http://povray.org/. The scripting language that is used in POV-Ray is similar in structure to C but the nature of the language is significantly different. So to get started on this project it would be good if you had a little programming experience and some knowledge of basic graphics principles, such as lighting, textures, and material properties.
This project has many different facets. You could concentrate on photo-realistic images, fantasy images, three dimensional fractal images (like the one to the right), animations, and so on. The mathematical background you would need would be minimal. What you do need to have is patience, and a lot of it. Ray-tracing is an extremely computationally intensive process that will slow down even the fastest of personal computers. It is not uncommon for a single small image to take several minutes to render and larger final images may take hours or even days to complete. This project would be good for anyone interested in computer graphics, specifically in producing high definition non-real time images.
There are many fractal programs that have already been written but only a few of them have the facilities to explore the mathematics behind the nifty images. This project would also be good for secondary education majors and can provide numerous enrichment activities for the high school classroom. Explorations in this area can also be done using Mathematica with little to no programming background.
For the mathematics students you could explore concepts not covered in our dynamical systems class such as L-systems, space filling curves, or higher dimensional iterated function systems. The computer science student could work on developing software for the exploration of dynamical systems and fractals.
GPU computing is the use of a GPU (graphics processing unit) together with a CPU to accelerate general-purpose scientific and engineering applications. These are sometimes called hybrid systems and are used on many types of computer architectures, from the run-of-the-mill laptop up to the largest supercomputers.
CPU + GPU is a powerful combination because CPUs consist of a few cores optimized for serial processing, while GPUs consist of thousands of smaller, more efficient cores designed for parallel performance. Serial portions of the code run on the CPU while parallel portions run on the GPU.
There are a wide range of applications that can be explored. Uses in Cryptography, Real-Time Ray Tracing, Generation of Complex Dynamical Systems, and Cellular Automata to name just a few.