Optimization & Algorithmic Theory Laboratory (OAT Lab) at James Madison University
The JMU Optimization & Algorithmic Theory (OAT) Lab conducts research at the intersection of mathematics, computer science, and engineering. Our projects range from the development and theoretical analysis of new algorithms, to the efficient programming of promising algorithms to solve real-world problems. Most student projects can be tailored to meet interests in mathematics, statistics, image processing, digital audio processing, computational geometry, machine learning, biology, or portfolio management.
Q & A
What is "optimization"?
[Non-technical description:] Optimization is the act of finding the perfect input to make a function's output either the highest (called "maximization") or the lowest (called "minimization"). For instance, we may seek to maximize the expected profit of a company or the energy efficiency of a power plant. On the other hand, we may seek to minimize the error of a machine learning model (often called "training an AI"), or the losses in a foodbank distribution network.
Our lab works on developing new and improved optimization algorithms, i.e., techniques for having a computer help us calculate a solution to an optimization problem. We use mathematical techniques to prove that these algorithms solve the problem at-hand, and we implement these algorithms in code to solve real-world problems.
What type of projects do you work on?
[Non-technical description:] We (A) develop algorithms that improve the state-of-the-art, (B) mathematically prove that the algorithms "work", and (C) Code up these algorithms to solve problems from a variety of applications:
- Image reconstruction [img]; [IEEE-1 , Fig. 2]; [IEEE-2 , Fig. 3]; [SIAM Imaging; Fig. 5]
- Foreground-background image segmentation [img]; [SIAM Imaging; Fig. 11]
- Classifier training [IEEE-1 , Sec. 4.1]; [Opt. Online, Sec. 4.1]
- Stereoscopic image recovery [img]; [Opt. Online, Fig. 1]
- Digital audio reconstruction [audio]
- Future projects may be guided by student interests, provided they are within the general scope of the lab.
For more examples, including the theoretical specifications of the algorithm classes we work on (currently, Frank-Wolfe algorithms and splitting algorithms), please check out the articles/posts in our research page.
How do you "prove an algorithm works"?
[This explanation assumes an introductory understanding of sequences] An "algorithm" is really just a fancy way of creating a sequence. Mathematically, we seek to prove that the sequence converges to a solution of the problem we're trying to solve. This requires (A) modeling the problem we're trying to solve mathematically, (B) characterizing a "solution" mathematically, and (C) proving that our algorithm converges to a solution. In practice, this involves a lot of head-scratching and staring at blackboards.
What programming languages do you use?
We usually use Julia, although some prototyping is also done in Python or Octave (which is like MATLAB, but free/open-source).
We have computing resources available on-campus for prototyping of
small projects, and we use the JMU High Performance Computing
cluster for larger jobs. Experience with the programs
git
,
vi(m)
, ssh
,
sshfs
, and slurm
are a plus, but most
students learn it on the job just fine.
Do I need programming experience to research with the OAT Lab?
Programming experience is not required. Our projects range the on spectrum from "purely theoretical" to "purely computational". This is a great place to learn about both theory and programming; successful students are usually motivated to learn both. Teams often start with complementary skills to match the project, so theoreticians may be placed with programmers.
When should I apply to the OAT Lab? What if I don't have any experience doing [X]? What if I'm in year [Y] of my degree?
If you are a student who is interested in mathematics, optimization, scientific computation, and/or data science, then I encourage you to apply. Applications for independent study and/or honors theses can always be updated.
[Year] We consider students in all years of experience; early students have great potential for long-term projects, and later students have more coursework expertise -- we are happy to have both.
[Prerequisites] Most of our projects require some knowledge of linear algebra (inner product spaces), calculus (sequences/series), programming, and optimization. However, there is no expectation to know all of these topics at the beginning - just an eagerness to learn. If curious about JMU classes: MATH 236 can be quite helpful for early students. Further JMU classes that cover these topics include MATH 237, 248, 300, 340, 410, and 434 (although, again, these are not prerequisites; students will be expected to learn the necessary topics while they conduct research).
[Major] We accept applications from all majors, and we value the breadth of expertise that comes with cross-disciplinary teams.
Unfortunately, there is sometimes a bias in applicants who feel "qualified." No matter who you are, or what your background is, we especially encourage you to apply (here and in general), even if you are unsure about qualifications.
Interested in learning more?
Please join our emailing list to learn about upcoming interest meetings, and to receive announcements for open Research Assistant (RA) positions.
Does the OAT Lab have any open positions? How do I join?
We are always looking for motivated students to join our team! We usually have a limited number of positions, subject to a wait-list and project availability. There are two types of positions: Independent studies (for research credit hours, including Honors thesis) and Research Assistantships (funded).
If you are from a non-JMU institution and interested in unfunded or virtual participation in the OAT Lab's research, please send an e-mail to Dr. Woodstock using the "independent study" guidelines.
Independent Study / Honors thesis: Applications for independent study are reviewed on a rolling basis. To apply, send an email titled "Undergraduate Research Application" with a transcript (unofficial is fine) and a brief statement explaining what projects/topics interest you. One may also optionally submit a resumé/CV detailing relevant experience (e.g., programming, self-study, prior coursework, etc.).
Research Assistantships: Currently, there are no open RA positions. Please sign up for our email list to receive announcements when RA positions open up.