As a graduate student paralleling on M.Sc. in Electrical Engineering(EE) and Ph.D. in Computer Science(CS), my research interests are mainly on three fields, Artificial Intelligence (AI), Biomedical Signal Processing (BSP) and Bioinformatics. In BSP, I am working on the epilepsy diagnosis/localization and seizure prediction thru EEG signal classification/recognition/analysis. In AI, my work is about logic-based AI, such as SAT, CSP, ASP, constraint optimizations, automated planning and scheduling. I focus on combining different knowledge representation methods and solving techniques to build more powerful AI agent to think, rationally. In Bioinformatics, I develop algorithms for the data mining on plant siRNA related issues.
Beyond research, I like hacking electronics and computers. I like to DIY control circuits working with cool open source software on Linux, e.g., switching the slow cooker in my kitchen through Internet from my office-actually everywhere around the world with Internet connection. That's why I am a zealot of open source technologies (Linux, Python, etc.) - I want total control to my system.
My career plan is to be a professor in EE or CS, in an English-speaking university. I like research and teaching, as well as serving my community, such as being a high school engineering mentor to help more kids love science and engineering. Beyond this, I want to have a startup company making money from open source technology- of course, not selling software compiled from GPL'ed code and closing my modification.
Please feel free to contact me, or personally visit my office.
SELECTED CONFERENCE AND JOUNRAL PUBLICATIONS ( Curriculum Vitae: in PDF and in Google Docs)
PROFESSIONAL ACTIVITIES
Forrest Sheng Bao http://fsbao.net
For anyone who works with MCU, DSP or in general embedded systems, you must know how important the parallel port on your PC is. But, it seems in lately few years, fewer and fewer motherboards have a pink parallel port.
Well, I just found the trick lately. There is a parallel pin array on your boardboard, like USB extension pins. On the PCB, around the parallel pin array, it prints something like "J_PRINTER"
So, what you need is a socket to parallel port, the IEEE 1284 D-sub connector. You just need to google something like "Motherboard Parallel Port Adapter," then you can get it within few dollars from places like eBay. Then you can have a regular parallel port on your computer.
by Forrest Sheng Bao http://forrest.bao.googlepages.com
I have to say that ATMEL is the most Linux-friendly company among all MCU/DSP makers in the world, followed by TI. Both TI and ATMEL use tons of open source toolchains so Linux zealots can build their apps on Linux.
I learned how to play with AVR 8-bit instruction set when I was an undergraduate. Now, I am gonna use AVR32, which is a 32-bit instruction set.
Here is some good information:
AVR32 32-bit MCU - Tools & Software: http://www.atmel.com/dyn/products/tools.asp?family_id=682#1443
ATEVK1100 development kit: http://www.atmel.com/dyn/products/tools_card.asp?tool_id=4114 only $129
by Forrest Sheng Bao http://fsbao.net
I am doing a take-home midterm test of a class I am taking. So, I decided to use Python to to it. Below is a code for one problem. It includes several frequency used functions in classical signal spectral analysis and FIR filter design. The problem itself is to design bandpass filters over alpha to theta bands and apply them onto a EEG series, and plot the time domain and frequency domain signal, as well as the frequency response of filters. I used window methods to design FIR bandpass filters. The filters coefficients are smoothed by a Kaiser window. Filtering is implemented by convolving original signal with coefficients of filters.
by Forrest Sheng Bao http://fsbao.net
I can't run sicstus Prolog on my department Solaris workstation. That makes me very unhappy at 3 am. So I decide to use gprolog. And the programming can be easier. In gprolog, FD is built-in.
Factorial in gprolog:
factorial(0,1). factorial(N,F) :- N>0, N1 is N-1, factorial(N1,F1), F is N * F1.
Summation in gprolog
sum(0,0). sum(N,F) :- N>0, N1 is N-1, sum(N1,F1), F is N + F1.
It seems that "is" is also a built-in predicate in swi-prolog.
by Forrest Sheng Bao http://fsbao.net
The code below is an example on using spectrogram function of MATLAB to compute STFT of a chirp signal, which changes frequency from 10 Hz to 200 Hz in 1 second. Both Hamming and Chebychev windows are used. Different window length has been tried, 128, 64 and 32.
by Forrest Sheng Bao http://fsbao.net
There are some great books I always want too read. Following books are so famous that you can find them in online bookstore so easily. I cannot guarantee that you can find them in local bookstores coz they won't be as popular as movie stars' biographies. But they will definitely be in stock in next hundreds of years whereas movie stars' biographies will be dust in next 100 years.
General
The Analects by Confucius and his disciples
Is there a God? Or, are there Gods?
The Varieties of Scientific Experience: A Personal View of the Search for God by Carl Sagan
The Language of God: A Scientist Presents Evidence for Belief by Francis Collins
Things A Computer Scientist Rarely Talks About by Donald E. Knuth
Mathematics
by Forrest Sheng Bao http://fsbao.net
% Copyleft (C) Forrest Sheng Bao 1984-2009 http://fsbao.net
% with Dept. of Electrical and Computer Engineering and Dept. of Computer Science, Texas Tech University, Lubbock, Texas, USA
%
% This program shows the orders and frequency/phase properties of four different kinds of filters, Butterworth, Chebyshev Type I, Chebyshev Type II and Elliptic.
% The filter is expected to have a cutoff frequency at 200 Hz with attenuation 40 db/octave. The sampling frequency is 2000 Hz.
%
% This program licensed in GNU GENERAL PUBLIC LICENSE (GPL) v3 or later.
% If you do not know what GNU GPL is, please visit http://www.gnu.org/copyleft/gpl.html
A friend asked me an interesting question: Why is Z-transform always related to digital filter design? Well, this is interesting. But the clue is simple.
You need a web browser that supports MathML to read this doc. To see whether your browser supports it, please check whether you can see formulas on this page. By default, Linux and Mac user should be able to make it from their Mozilla Firefox browser. For Windows users, well, that's not a question you should ask me.
The author cannot guarantee this article has no typo. Please confirm all equations before you use them.
by Forrest Sheng Bao http://fsbao.net
You need a web browser that supports MathML to read this doc. To see whether your browser supports it, please check whether you can see formulas on this page. By default, Linux and Mac user should be able to make it from their Mozilla Firefox browser. For Windows users, well, that's not a question you should ask me.
The author cannot guarantee this article has no typo. Please confirm all equations before you use them.
There are so many guys asking me the difference between DTFT and DFT. And, they confused these two concepts with FFT and STFT.