# Research Assistants

### Contents

- Past Students
- Current Positions
- Theoretical Computer Science
- Research Assistants - Type of Work
- Current Project Description

### Past Students

Students who have worked on independent projects with me in the past include

- Bioinformatics - Aaron Cox, Siva Dharman Naidu, Feng Jiang, Brandon Donham
- Computational linguistics - Troy Schotter
- Computational number theory (SURE 2013-2014) - Lizhi Xiang, Ali Salman, Soutcho Toure, Po-Ching Liu, Karthik Tottempudi
- Neural networks with applications in medicine - Dillon Bender
- Pseudorandom generators (SURE 2012) - Michael Rose, Ian Burry, Nacy Degott

### Current Positions

I do not currently have any paid positions available. Some positions may be available for the summer of 2016. If that occurs, I will email the cs-grads and cs-ugrads email lists in the spring asking for applications. If you would like to work with me on a master's project (for CS 685/695) or for an undergraduate independent study course, please stop by to talk.

A student working on research with me has two options in terms of the topic/project. First, you could research on topics related to my own research - computational complexity, theoretical computer science, some topics related to bioinformatics or linguistics. For more on these, see the description and links below. In this case, I would help you with background material and picking a particular problem to look at. Second, if you already are interested in a topic, you can propose a project to me. For example, a student in the past was interested in neural networks and genetic algorithms, and we came up with a project in that area for him/her to work on. In this case, I will help you as best I can with background material, but it may be the case that we are both learning the area together if you choose an area I am not an expert in.

### Theoretical Computer Science

My personal research is in theoretical computer science, specifically computational complexity. For more on what this means, see my research publications, see Computational Complexity on wikipedia, search the web, or come talk to me. The courses at Indiana State that are closest to my research are the theory and algorithms courses (CS 620, 658, 621, 420/520, 458/558, 303) and some of the math courses. If you greatly enjoyed those courses, you may be interested in research in theoretical computer science.

**Unsure?**
Suppose you are unsure if you are interested in theoretical computer science, or
you have not taken many (or any) of the courses I listed. Do the
following excite you? If so, you may be interested in theoretical
computer science.

- The proof that there are infinitely many primes
- The fact and proof that there are "more" real numbers than rational numbers.
- The fact and proof that there are "uncomputable" problems that cannot be solved by any computer.
- The fact that if you could factor numbers fast then RSA cryptography used on the internet would not be secure.
- The "P versus NP" problem. And in particular, the fact that for many important problems it is completely wide-open how fast they can be solved (maybe really super fast, maybe/probably incredibly ridiculously slow). And the fact that some of the "NP-hard" problems cannot even be approximated unless they can be solved exactly/optimally.
- Probability and randomized algorithms. For example, the fact that you can determine with high probability whether a string you look at is the same as one your neighbor looks at by only exchanging a very small number of bits with someone else (much fewer bits than the whole string).
- The fact that relatively simple "divide and conquer" algorithms do better than you might expect for things such as sorting numbers and multiplying matrices. And slightly more complicated algorithms give fast algorithms for problems such as multiplying numbers.

### Research Assistants - Type of Work

The basic format is to consider "things we don't know yet" and try to figure them out. This entails learning what is already known and trying to improve on current knowledge. This means most of your time would be spent reading, thinking, and trying things out.

**Programming?**
Traditional research in theoretical computer science makes use of surprisingly
little actual programming: theoretical computer science research is a mix between math proofs
and computer science algorithms. However, I am interested in bringing theory of
computing and practical programming together more than is often done. So depending
on the interests and skills of the individual student, working on research with
me could involve large programming projects that have a strong theoretical
foundation.

**Research Topic?**
The exact problem you work on will depend on your interests. It will have
to be something I am interested in and can advise you on. But it is critical that
you are interested in the topic, so you will determine the direction
the research takes (under my guidance, of course). To begin the project,
I will take the lead in giving you some background on the types of problems
you could work on. Once you are getting comfortable, we will decide together
which direction you should go in.

**Presentations.**
Students will present to me what they have learned and discovered regularly -
at least weekly. These presentations will be informal, with me asking questions
and potentially helping on some steps (e.g., why is such and such probability
< 1?).

By the end of the research project, the goal is that the student has a good background in some aspect of theoretical computer science and has made some nice new observations. The student will write up these observations into a written paper and present the results publicly at Indiana State, and more broadly if appropriate.

**Benefits.**
Participating in this type of research project is particularly beneficial to
those thinking of pursuing further graduate study after leaving ISU. But the
project would be beneficial and fun for anyone interested in theory of computing.

**Schedule.**
There is some flexibility in terms of the schedule. If you have a
summer vacation planned, we can probably schedule your 10 work-weeks
around that.

### Current Project Description

Projects that are somewhat ongoing include the following.

Bioinformatics. Work with myself and Dr. Yongsheng Bai on projects related to Bioinformatics. One project looks for novel splice junctions in encoded RNA sequences. See the RSR project website.

Linguistics. Work with myself, Dr. David Hutchison, and Eric Anderson on analyzing databases of English text to construct language models that can be used in automated reasoning. The work that is needed currently is to write and run programs that collect data about how frequently different words appear immediately after or near other words, and then use this data in constructing or analyzing sentences.

Factoring. Factoring large numbers is a very difficult task which RSA encryption relies on for security. The project would be to study the best factoring algorithms and attempt to factor the largest possible numbers with ISU's computing resources (e.g., using the HPC and linux labs as a distributed computer).

Randomized algorithms. Some problems have much more simple or faster algorithms if they can use random bits. This project would be to pick one particular problem and study how fast we could make a deterministic algorithm for the problem. One potential problem is prime testing. Another is certain kinds of numerical integration.

Brain trauma research. When a patient with severe brain trauma reaches the hospital, very specific protocols are followed to monitor their condition and respond to changes in their condition. The project would be to examine (with "smart" computer algorithms) extensive data that has been collected on some patients to try to find relationships between treatment choices and outcome.

Distributed graphics. Modern computer animated movies largely typically use vast computer resources to render the movie. This project would be to study these algorithms and see what can be achieved with ISU's computing resources (e.g., using the HPC and linux labs as a distributed computer for making movies).

Game theory and college athletics. Universities have recently been changing athletic conference affiliation quite a bit. An interesting question is when this will ever end, and if the universities are really acting in their own interests? This project would be to try to model and study the universities' choices in terms of game theory.