Research Webpage
Cookie policy
My current research work is in:
- AI
- Gaming (including game making)
- Some CS education
I've done a lot of work in the past on:
- Digital Signal Processing, especially wavelets
- Embedded Systems
- Bioinformatics
Click here for my teaching page
Books
Programming Fundamentals Using MATLAB,
2020
Errata
DSP
Using MATLAB and Wavelets, Second Edition, April 2010
Updated from the first edition, this book includes a new chapter on the
Continuous Wavelet Transform, combined information from chapters 4 and 7,
plus new questions, projects, and example code.
Where to get it
Errata
Introduction
to MATLAB & SIMULINK A Project Approach, Third Edition,
October 2007
If you want to learn about MATLAB, this is the book for you!
It has many in-depth projects.
Where to get it
Errata
DSP
Using MATLAB and Wavelets, September 2006
I taught DSP to computer science students for a number of years, but I was
not happy with the available textbooks. So I wrote my own.
This book is the product of over five years of experimentation, notes,
and explaining DSP concepts to students who do not have
backgrounds in the topic.
(No longer in print.)
Errata
Having trouble with the compress_test program? Look here for a solution.
The Calq Project
What is calq?
Click here for the latest version.Resources for Graduate students
Click here for more information about the lab / my interests.
Equipment check out form for CS 400 hardware.
Graduate students: here is the registration form that you will need to complete and turn in.
Sean put together a
thesis
template to use (with recent changes from GSU).
Evelyn put together a
dissertation
template with the most-recent changes for GSU.
Here is a list of references for the Discrete Wavelet Transform (DWT)
Here are my publications (through 2006) as a Latex .bib file.
Follow this link to the department webpage.
Here's an example MATLAB file.
LaTeX Resources
Are you interested in writing a LaTeX document, but do not know where to begin? Follow this link to a latex example.
Here is an example that contains LaTeX math in a webpage.
Current and Recent Research
- Chase Randall,
Artificial Intelligence (AI) and Game Design:
Make My Ogre Smart,
Honors Thesis Project, Spring 2016.
- Chase Randall, Exploring Machine Learning Procedures via Game Design, GSU Undergraduate Research Conference (GSURC) poster presentation, April 13, 2016.
- Chase Randall, Vibhuti Patel, and Eduardo Lopez,
Maze 8 Game
Georgia State University Discovery Day, March 19, 2016.
- Chad Frederick, Tracking Gestures for an Augmented Reality Enviroment
-
Abinashi Dhungel,
Automatic Centerline Extraction using the Hessian of the Distance Transform
(Dissertation)
- Evelyn Brannock, Using DWT in edge detection for bio-medical applications (Dissertation)
- Ferrol Blackmon, Embedded Systems as Adaptive devices (Dissertation)
- Abinashi Dhungel, 3-D video compression
- Sean McKeon, Corrective in-flight terrain sensing
- Carly Gates, Automatic Filopodia Measurement with MATLAB
- Djuan Blue,
Automated Homebrewing System Controlled by Android Device
Georgia State University Undergraduate Research Conference (GSURC), March 13, 2013.
- Brendan Benshoof, Wearable Computing with Linux
Here we are at the Georgia State University Undergraduate Research Conference (GSURC), March 21, 2012.
Here Brendan shows the wearable computer ("CoWL"), Fall 2011.
- Carson Herrick, Brain-Computer Interface
This picture is from the 2008 Georgia State Undergraduate Research Conference (GSURC), March 14, 2008. - David Tomaschik, Fred Hudson, Richard (Kyle) Proctor, and Michael Igbinigie. The Oui System: An Embedded Systems Language Learning Lab

(From left to right: Michael, myself, Kyle, David, and Fred)
We participated in the 2007 Microsoft Imagine Cup contest. Also, we presented our work to the Georgia State University Undergraduate Research Conference (GSURC), Wednesday, April 11, 2007. - Drew Phebus, Mike McGreevey, David Tomaschik, and Kyle Cooper, ReActive Irrigation Nexus (RAIN).

(From left to right: Kyle, Mike, myself, David, and Drew.)
This project was a finalist in Microsoft's Windows Embedded Student ChallengE 2006. Our team was selected to be one of the top 30 in the contest, which had more than 350 teams initially competing. We traveled to Microsoft's headquarters to present the project, June 23-25, 2006. - Vidya Rangaswamy, Phoneme Recognition Using Wavelet Packets (abstract), Master's Thesis, November 11, 2005.
- Huaxin (Johnny) Ye, Wavelet Neural Network based Audio Compression, Master's Thesis, December 2, 2004.
- Jigesh Parikh, Enhancing Role Based Access Control using LDAP, Master's Thesis, November 29, 2004.
- Robert Gulde, Using Multiple GPUs in Parallel to Achieve Performance Gains on a Single CPU System, Master's Thesis, June 24, 2004.
- Janki Vora, A P300 Signal Controlled Robotic Arm Movement Brain Computer Interface, Master's Thesis, March 2, 2004.
- E-Box II Lane Monitoring System

(From left to right: myself, Sherod Emerson, David Hillman, and Anthony Lin.)
This picture was taken at the 2004 ChallengE finals at Microsoft's headquarters, in Redmond Washington. We also participated in the 2004 IEEE Computer Society's International Design Competition (CSIDC). - Brian Gamulkiewicz, Speech Recognition using the Wavelet Transform, Master's Thesis, December 15, 2003.
- Nimarta Arora, Co-existence Issues Between Bluetooth and 802.11b Networks, Master's Thesis, November 14, 2003.
- Gulsah Altun, Security in Wireless Ad Hoc Network Routing Protocols, Master's Thesis, November 7, 2003.
- Hrishi Talwar, BlueComm - A Simple Ways of Writing Applications for Bluetooth Devices, Master's Project, May 8, 2003.
- Anchalee Wongsirimunkong, Food Ordering System (using Web Services with an iPAQ), Master's Project, November 25, 2002.
- Baoan Wang, A Hybrid Infinite/Finite Impulse Response (HIR) Filter, Master's Thesis, November 12, 2002.
- Qin Wang, A Greedy Search Algorithm for Adaptive QMF Coefficients, Master's Thesis, July 15, 2002.
Interesting Images and video
Computing an Inverter function with Mentos and Diet Coke
Occasionally, plotting data or making an image turns out differently than expected, especially with a mistake such as plotting complex numbers instead of their absolute values. Sometimes the results look interesting, almost artistic. Here are a few of my favorites, with fanciful titles.

This is a plot of arrays of cosine and sine data. It was supposed to be an image, not a plot.

This is a dragon with automatically (and incorrectly) generated alpha (opacity) values

spirals - a plot of complex data without finding the abs() first

sandy beach - a H(z) plot near a pole that looks like sand on a beach
Sunrise and sunset - a couple of colorful plots of a transfer function, area around a pole (left), and area around a zero with a nearby pole (right)
rainbow staircase - a plot of a transfer function near a zero, but the column index is never reset to 1 like it should have been.
Finger trap (plot of two channels of an audible tone, in the wrong dimensions)
Club tie (plot of x.' * y, where x = cos(theta(t)) and y = -sin(theta(t)))

Deteriorating color footballs (other plots of x.' * y, where x = cos(theta(t)) and y = -sin(theta(t)))
Hippie belt
Continuous wavelet sunrise
Salmon swimming upstream
The valley of 8-bit graphics
What happens when we plot a matrix of CWT values all at once? We get the following "filters".
Low pass and inverse low pass along the top.
High pass and inverse High pass along the bottom.
The bat
zebra mountain
Turning off the TV (plot of stretched Haar wavelets)
Goalposts (plot of two, related signals: a target temperature, and a measured temperature. I used plot(data1, data2); when it should have been plot(data1); plot(data2); )
triangle prism. I included a debug feature in a program, and it made this. It shows two triangles, where one is rotated in 3D space from the other one. The points along the edges are connected to see where each point in one maps to the other.
Some errors/warnings/problems that I've encountered, and how to fix them
See this link if you are having trouble installing xv on a Mac.
Getting an error like "error: variable or field `printme' declared void", or maybe "error: `string' was not declared in this scope"? How to fix the "string not declared in this scope" error, that claims to be a "declared void" error.
Getting an error like "error: ‘strcpy’ was not declared in this scope"? How to fix the "strcpy not declared in this scope" compiler error.
Getting a "malformed header from script. Bad header" when trying to make a cgi program (using csh)? Here's what I did to fix it.
Having trouble with a "backward_warning.h" warning when compiling a C++ file? Here is how to fix this.
Having trouble with a "X Error of failed request: BadAccess" error when trying to run an Xwindows program remotely? Here is how to fix that.
Having trouble with a "Can't open display" error when connecting to a remote server? How to get Xwindows to work.
Having an error with LaTeX that says "Missing $ inserted"? I found solution to a weird LaTeX error.
Having an error with LaTeX / TeXShop that says "unknown graphics extension" or that your graphics file cannot be found? There is a default setting to change to fix it.
I had an Exception in thread "AWT-EventQueue-0"... message when I ran MATLAB, but I think I fixed it.
I had warnings working with a C program, including warning: incompatible implicit declaration of built-in function ‘round’. Oddly, the program behaved differently depending on which machine compiled it! The linked document tells how I resolved it.
See the following link to get a Mac to run MATLAB faster if it is running slowly.
MATLAB crashes when drawing figures.
Having a problem setting cookies with Safari? This Safari cookie problem link might have your answer.
I had an error with the "Processing" environment that software updating fixed.
I had an error compiling a C++ program, that compiled fine a few years ago. error: ‘exit’ was not declared in this scope.
A web-page using PHP tells me it has an XML Parsing Error, once for "XML Parsing Error: unclosed token" and again for "XML Parsing Error: no root element found". Read the link for how I fixed it.
Content Security Policy: The page’s settings blocked the loading of a resource at inline
Forbidden (403) error when accessing web content
Nonconformant arguments error under Octave/MATLAB
Invalid operands to binary expression error when compiling C++ code from 31 years ago.
A JS error with drawing a line
A JS error with accessing a class value
I ran into a problem where LaTeX had the figure numbers wrong. The fix was simple: putting the label after the caption. Here is the example.tex file, and the example_fixed.tex file.
I had an error - Duplicate symbol in .o file but fixed it with the "extern" keyword (C).
Uncaught TypeError: vertices3 is not iterable
error in JavaScript
SyntaxError: nothing to repeat. ReferenceError ... not defined
error in JavaScript
I have a C program that forks and execs, and the processes communicate with each other using pipes. However, they had a deadlock. The problem is that one process writes a message, then writes a second message before the other process reads the first message. The read technically gets both messages, but sees the first null char and discards the messages after processing the first one. The basis of the problem is an invalid assumption: the read may get multiple strings instead just one.