Please email us if you find any interesting links.
General Computability Links
- Course lecture notes. Contain a lot
of graphics and mostly cover same material as in course. Useful in
case you are stuck with a concept, or had to miss a lecture. Remember
that what you're responsible for what was covered in class, and to
ignore any due dates or other dated references in these notes.
Finite Automata and Regular Expressions
- An open source program for drawing graphs - useful for automata:
Graphviz by AT&T.
Link submitted by Amittai Aviram.
- You're encouraged to experiment with the
ABCEZ
automaton applet and even use it to print
your answers
The ABCEZ applet was created at Columbia by John E. Cao, Jing Fan, Jing Huang, Shen
Li, Yiting Shen and Simin Wang --collectively known as "Mindspring".
This was part of a course software project in CS 3156 (Software Engineering)
in which Zeph Grunschlag was the client.
- If you'd rather run the Finite Automaton module for creating, running
and even saving your automata, you can get it from the
Lecture 2 link.
- Java
Formal Languages and Automata Package (JFLAP) - Useful Java tool that allows you
to build automata, test out their functionality, and easily modify them.
- Finite
State Automaton Applet - Automatan simulator, similar to JFLAP. Requires
Java.
- java.sun.com
- If you need to run Java programs (such as JFLAP) and don't have Java
installed, it can be obtained here.
- A HUGE list
of
finite state automata related research and applications.
Thanks to Vadim Lyubashevsky for the link.
- Would you like to play around with egrep on your Windows PC?
I suggest that you install the free UNIX environment for
Windows called Cygwin which includes many UNIX utilities, including
egrep. You'll also need to install this program if you want to run
emacs on a Windows PC.
Context Free Grammars
- cfgrep - context free variant of egrep written by Zeph Grunschlag
- JavaCFG. This program
(written by Zeph Grunschlag and Yoav Hirsch) has two main
functionalities:
- Allows user to see if a string is accepted in an (almost)
arbitrary grammar and view the parse-tree in two ways.
- Allows user to convert a grammar into equivalent forms
such as epsilon-free and into Chomsky normal form.
You can use it experimentally for your homework, and also
draw any required parse-trees with it.
- PDA Simulator.
If you want to download and run locally
you have to fix a couple of their source code path errors. Here are the
fixing instructions:
- Download the zip file
- Unzip "automata.zip" creating the directory "automata"
- Move into that new directory
- Run the following commmands:
javac -classpath jpt.jar XHashtable.java XVector.java
jar -xvf jpt.jar
mv X*.class edu/neu/ccs/.
rm jpt.jar XHashtable.java XVector.java
jar -cvf jpt.jar edu
- Using your favorite text editor, edit the file "PathNode.java"
- Go to line 81 and remove the extra semi-colon in "target.getName();;"
- Save the file and exit your text editor.
- Run the command:
javac AutomataApplication.java
- Run the program with the command:
java AutomataApplication
- The specification of Java, using context free grammars.
-
The specification of URL's, using context free grammars.
Turing Machines
-
JasTeX → Turing Machine → Simulation
by B.J. Dweck.
You can draw your TM under the "Drawing" tab, then
click on the "Turing Machine Applet" tab to run the
Skinner-TM on specific
inputs. Try out some
examples.
-
by Suzanne Skinner. This is my favorite applet and is closer to the TM's in Sipser's book
(though not as cute as the next applet). To use:
- Paste the TM instructions into the "Programming" text area.
For example, for a TM which transforms strings of the form
a+(b|c)* which moves all the b's to the left of
the c's copy in the following instructions:
1,a,1,>
1,b,5,>
1,c,6,>
2,a,1,>
2,b,3,<
2,c,2,<
3,a,1,>
3,b,3,<
3,c,4,b,>
4,b,2,c,<
5,b,5,>
5,c,6,>
6,b,7,>
6,c,6,>
6,_,H,<
7,b,7,>
7,c,7,>
7,_,2,<
Link to explanation
of the instructions.
- Then put the initial tape contents in the text field
labeled "Initial characters on" (e.g. try aaaabcbcbcbc)
- Hit the "Install Program" button
- Choose the speed you want and hit the "Start" button
EXAMPLE Skinner TM's:
- More applets:
- TM applet. Simple to use:
- Write rules down in "Rule List" area
- Hit "UPDATE" button
- Rules have the form: q1 x q2 D
where:
- q1 is the current state (a number)
- x is the current state (a char)
- q2 is the subsequent state (a number)
- D is a directive which is one of:
- < for moving left
- > for moving right
- y (any char) for replacing x by y without moving the head
- Enter input into the tape
- Reposition the head to the start position (by clicking on arrows)
- Hit "Step" for one step, or "Auto" or "FastAuto" to run automatically.
- Visual
Turing Machines - Have fun manipulating 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.
- by David Eck
- by H. Weber
P vs. NP
OPERA
- New York Opera Companies:
- Another link
- My favorite opera singers:
|