CMPU 240: Language Theory and Automata
Lectures: Tuesdays and Thursdays 3:10-4:25pm, Room 105 OLB
Instructor: Professor Nancy Ide
Office: Room 119 OLB
Phone: (845) 437-5988
Email: ide@cs.vassar.edu
Office Hours: Tuesdays and Thursdays 2-3pm and by appointment.


Course Description
This course introduces students to automata theory and formal languages,
two mathmatical areas fundamental to computer science. We will consider
what is an appropriate mathematical model of a computer, what types of
computations are possible in the model, what types are not, the inherent
complexity of certain computations, etc. Although considering computers
as abstract mathematical objects may on the surface seem unrelated to "real"
computing, in fact many concepts you will encounter are fundamental
to important areas of computer science, including compiler design,
hardware design, object-oriented design, computational linguistics, and
even the syntax of the UNIX grep and awk commands.
During the course, you will gain an understanding of the intimate connection
between computation and language recognition. We will study several classes
of abstract machine including finite automata, push-down automata and Turing
machines, along with several classes of languages such as regular and context-free
languages. In addition we will look at problems like the Halting
Problem that are not amenable to a computer solution.
The course
provides essential background
for CMPU331, Compiler Design: ideally, you should take CMPU331 in the semester
immediately following completion of this course.
Other interesting links:
- JFLAP
: Graphic
tool that does conversions from nondeterministic finite automaton (NFA) to
deterministic finite automaton (DFA), DFA to minimum state DFA, NFA to
regular grammar, regular grammar to NFA, nondeterministic pushdown
automaton (NPDA) to context-free grammar (CFG), and three algorithms
for CFG to NPDA.
To use JFLAP on the Linux boxes in the lab, type "jflap"; click on help to find out how
to create and use automata, etc. There are also
example automata and grammars.
-
DFA Simulator. Includes animation of string processing.
-
String Matching with Finite Automata Shows a true life usage for FSMs, including graphs.
- Automaton Simulator Simulates DFAs, NFAs, Pushdown Automata and Turing Machines! Free download in Java.
- Java Regular Expression Parser Shows finite automata constructed for any regular expression.
- Grammar Editor Allows you to enter a CFG and see a string parsed with the CYK algorithm.
- ABCEZ automaton applet from Columbia.
-
Finite State Automaton applet from the University of Montana
- A list of
finite state automata research and applications
-
The specification of Java using a Context-Free Grammar
- Visual
Turing Machines - Manipulate your own visual, colorful Turing
machines
- Alan
Turing - A biography on the man who provided us with the Turing machine
- Turing
Machine Simulator - another downloadable Turing machine, for text-based
DOS consoles.
- Yet another Turing Machine simulator.
- TM applet
- More Turing Machine applets:
Applet by David Eck,
Applet by H. Weber
And of course, xkcd.