Computer programming is something I played around with going back into the 1980's programming TI-99/4's and TRS-80's in a variety of forms of BASIC. Most of this was tinkering around working on games and simple programs that didn't really do anything interesting. When I went to college, I finally took an actual course in programming so that I was able to learn more about the process. I started programming for DOS using Pascal and C++ and over the next few years I moved into programming for Windows with Visual Basic. In graduate school, I continued with C++ and Visual Basic, and also got access to some older programming languages like FORTRAN (ugh!) as well as more specialized systems like MATLAB. Fortunately, once you understand the basics of how any programming language works, it's usually possible to apply that to a new system once you learn the proper set of commands to do what you need. Here I describe a few of the ways I have used computer software in courses and research. While I describe these pieces of software as if they are done, there is always room for further improvement on any of these, and if you have an interest in programming there are lots of places where you could apply that interest.


Software for Bat Research


One of the major areas where I've applied technology is in the analysis and recording of bat echolocation sounds. I have written a variety of different programs that are part of this process in several different languages, but the majority of the most important programs are written in Matlab. While this is not an open-source system there is a large community of users that provide example code and suggestions when you run into problems. I describe this system in more detail in the pages dealing with bat research, but there is an aspect of the software that is currently being revised quite a bit. The old Matlab programs were written with a command-line interface where the user would type in commands and get the results in a variety of ways. I have been working to convert these programs to use a graphical user interface (GUI) as it is more suited to current operating systems. I am bringing together a variety of programs under a single control program called EARS (Echolocation Analysis and Recording System)

Currently, only a couple of the analysis programs is accessible through this system, but it is very easy to add more and once the GUI is set up, they do work a lot more intuitively. The current routine that works allows you to view individual echolocation calls that have been extracted from continuous recording. This also displays metadata associated with the call, like time, location, and any notes that were included with the recording information.

I have plans to further expand the functions available through EARS, which will initially require getting more Matlab programs written to use a GUI. As with all my projects, this is a work in progress and anyone with an interest in programming would have an opportunity to get involved in some fashion.


Processing Simulations


The open-source movement has had a huge impact on people's ability to find new/fun/interesting/cheap ways to develop and use software. I have used a variety of programming languages, but one that's been especially useful is a language called Processing. It is a programming language that is designed for graphical applications by users who do not have a lot of programming experience. This means that it has a large base of users so it's easy to find help when you need it. It also can be used for programming software on a computer that is interfaced with other types of hardware, so it makes an excellent bridge between a laptop and a microcontroller and has become an important part of my projects involving electronics. Some of my first uses of Processing were to write simple computer simulations that I could use in the class room. In a class on experimental design, I wanted to be able to have students make observations on "organisms" that could display a wide range of characteristics. In a variety of simulations I created circular "organisms" with variation in size, color, and shape that were controlled by various "genes". These genes could mutate and produce modifications that weren't present in the population originally. These organisms also reproduced (sometimes asexually by budding and sometimes sexually, which required the organisms to be able to seek out a suitable mating partner). Because these simulations removed a lot of the complexity of using real animals in a classroom setting, they were quite useful, and with minor changes in the programs I was able to produce several versions of the program so that each group of students would be observing different types of behaviors. This gave us a chance to share their observations and get a chance to further develop their observational skills.


Hearing Test Software


I frequently teach courses in anatomy and physiology, and when I teach labs that cover the sensory systems, In an attempt to make labs more interactive and to give students a chance to try something that has a practical link to the material they are learning in the lecture and lab. The program is a (very) simplified form of hearing test that plays tones of varying frequencies and loudness. The student presses a button when he/she hears the tone and the program uses their response to map out a hearing curve for the different frequencies that were tested. While it's not even close to medical grade software, it does give a reasonable analogy to the "official" test and it gives the students something they can relate to directly. This program was written in Visual Basic, so it's limited to being used on Windows-based computers, but most of our students have them, so it's not a huge issue.


Bird Song Recognition


Another area that interests me is in the comparison of a computer's and a human's ability to recognize different types of information. In the case of sounds produced by animals, there are many situations where humans are superior at recognizing these sounds, but this often requires a great deal of experience. I wanted to see if there was some way to develop this ability in a person without taking years of practice. I chose to test this with bird songs because people can hear them, unlike the echolocation calls of bats. It's also well-known that people can get to be quite good at telling one bird from another. I wrote a program in Visual Basic that plays a variety of different bird songs as a training exercise so that the user can learn them. For each sound, the program can display a picture of the bird along with a visual display of the sound called a sound spectrogram. I chose 10 different species of bird that are fairly common in our area so that it would help the user learn to recognize species that they would encounter in this part of Georgia.

The second part of the program then tests the user with some of the same sounds (but with some that the user has never heard before as a control). All the results of the tests are saved in a spreadsheet to make it easy to see how the user is doing, along with which sounds are easier and more difficult to learn. During the training, the user is presented with a sound spectrogram, but no picture of the animal, so the user has to be able to recognize it based on the sounds.

 This project was a research project that I began with a couple of different students, but due to a variety of reasons it was never progressed very far, so there are opportunities to actually work with the project as well as updates/improvements to the software itself.


Other Areas of Research

This website requires Internet Explorer 8 and higher.
Please update to the newest version.