JFLAP is intended to be used as a supplement to a course, along with a textbook for the course. JFLAP reinforces topics learned in the course.

Courses it has been used in include formal languages and automata theory, compilers, artificial intelligence, and discrete math.

JFLAP allows users to create
and operate on automata, grammars, L-systems, and regular expressions;
the term * structure* is used to refer to any single automaton,
grammar, L-system, or regular expression.
JFLAP offers the following
major groups of operations to apply to structures:

- Explore the Language of Structures - JFLAP has the ability to simulate input
strings on nondeterministic automata, build parse tables and parse trees for grammars, and render
successive expansions of L-systems. The automata represented in JFLAP are
finite automata (FA), pushdown automata (PDA), and multitape Turing machines.
The parsing algorithms in JFLAP are brute-force parsing, LL(1) parsing, and SLR(1)
parsing.
- Convert Between Equivalent Structures - A wide range of conversion abilities
are available, e.g., regular expression to FA, nondeterministic
FA to deterministic FA (DFA), PDA to grammar, grammar to PDA,
DFA to minimized DFA, context-free grammar to
Chomsky Normal Form grammar, and others.
- Miscellaneous Analysis of Structures - JFLAP also offers a few sundry analysis tools to display properties of structures, like highlighting lambda-transitions, highlighting nondeterministic states, and determining the equivalence of two FAs.

JFLAP uses general definitions of its structures to allow it to fit with a range of textbooks. We mention some of these definitions here. Instructors might prefer to require students to use a subset of the JFLAP definition if that fits with their textbook.

- Finite automata allow users to enter
strings of length zero or greater. Instead, an instructor
might want to
require students to enter strings of length zero or one.
- Pushdown automata can pop zero or more symbols
from the stack in each transition. An instructor might want to require
students to always pop one symbol.
- Turing machine movements for the tape head are Right, Left, and Stay. An instructor might want to require students to use only Right and Left.

Different levels of exercises can be given to students.

- Load a file and determine what it does. Here no modification of the JFLAP file
is needed.
- Load a file that is suppose to do X and doesn't and fix it. Here only slight modification
of the JFLAP file is needed.
- Create a JFLAP file for a language. Here the student must create the file from scratch.

Students can submit JFLAP files for grading. See Batch grading in the tutorial on how to grade multiple files more easily.

See the papers on JFLAP that describe many uses of JFLAP.