Software
This is an archive
of software that I've written over the years for courses
(both as a student and instructor) and for research.
This software is freely available for research purposes,
however, please realize that I do not
have the time to support it. However, if you've made a
useful modification to any of the software here, I'd love
to know about it.
Semantic Web (DL-FOL) Inference Engine
-
Description: This is an inference engine for a
first-order (FOL) extension of description logic (DL) which is
capable of loading ontologies in a native DL-FOL format or from
the Semantic Web in OWL (and soon FOL-SWRL) formats. A native
DL-FOL reasoner and interfaces to first-order theorem
provers (Otter,Vampire) are supported.
- Language: Java
-
Code Archive: [Send email] (non-commercial use only)
-
Sample OWL Kb: [owl]
Interactive Java Graph-viewer Applet
-
Description: This is a simple Java applet
based on Grappa
that can be embedded in any web page to allow interactive
viewing of GraphViz
formatted graphs (i.e., dot files).
-
Language: Java
-
Documentation: A demo and simple how-to guide.
[html]
-
Code Archive: See documentation.
HTML/Text Search Engine
-
Description: I originally developed this code for a
course I was helping to instruct. It has a command line and script
for retrieving web pages or local
files, storing them efficiently in an inverted file data
structure, and performing keyword searches (TFIDF is currently
implemented for document ranking).
-
Language: Java
-
Documentation: This is the project handout.
[ps]
[pdf]
[README]
-
Code Archive: [tar.gz]
HMM-based Text Mining and Extraction Tool
-
Description: This is an implementation of hierarchical
hidden-Markov model (HMM) text extraction from web pages as
proposed by Freitag and McCallum (1999). This method uses
shrinkage over the HMM hierarchy to balance the bias-variance
tradeoff of HMM parameter estimation. This method turns out
to be quite robust, even when training on small amounts of data.
-
Language: Java
-
Documentation:
[ps]
[pdf]
[README]
-
Code Archive: [tar.gz]
Database Mining Tool
-
Description: I originally developed this code for a
course I was helping to instruct. It has a command line and script
interface allowing one to specify data mining and visualization
commands using a DMQL-like language. The data mining
capabilities are somewhat limited but it stores database content
in an efficient and versatile data structure
that permits the implementation of a variety of
data mining algorithms. This software can access
any database having a JDBC interface (i.e. Microsoft, Oracle,
IBM, MySQL).
- Language: Java
-
Documentation: This is the project handout. [ps]
[pdf]
[README]
-
Code Archive: [tar.gz]
Neural Net Face Detector
-
Description: This is an implementation of the
Rowley-Baluja-Kanade face detector.
It uses a fairly
straightforward face detection method that scans
an image resolution pyramid with
a trained neural net.
Full algorithm details and empirical
results are given
in the on-line documentation.
-
Language: Matlab
-
Documentation:
[html]
[README]
-
Code Archive: [tar.gz]
Backgammon and Learning Agent
-
Description: This is a Backgammon implementation
with an easy-to-use interface for developing agents that
play against themselves or other agents. It includes
a revised version of the original ACT-R-Gammon agent
(Sanner et al., 2000) that
learns to play at a formidable level in only 5,000 games.
-
Language: C++
-
Documentation:
[README]
-
Code Archive: [tar.gz]
Refutation-Complete BDD SAT Solver
-
Description: An implementation of a refutation-complete BDD SAT solver
that is more efficient than the standard BDD-based SAT-solving approach. This implementation
is built on top of the very efficient CUDD
ADD/BDD package.
-
Language: C++
-
Documentation:
[README]
[ps.gz]
[pdf]
-
Code Archive: [tar.gz]
Java Web Services (and Enterprise APIs)
-
Description: If you've ever wanted to know how to build your
own web services/interfaces in Java, this is a set of assignments and coding solutions
from the MIE354 Information Engineering Course on Web Services at Toronto
that I co-taught and developed labs for during the fall of 2005.
The running project was to build an on-line retail store (complete with transactional database, email
notification, and distributed internal messaging architecture) with both Java Servlet HTML
and SOAP-based Web Service interfaces.
All you need is Sun JDK 1.4+, all of the required jar files are included. Teaches
XML (JDOM, XPath), SOAP, UDDI, WSDL and Apache tools to work with these specifications.
Also covers Servlets (for HTML and SOAP interface)
and the Java Enterprise APIs: RMI, JDBC (Databases), JTA (Transactions), and JMS (Messaging).
-
Language: Java
-
Documentation:
[tar.gz]
-
Code Archive: [tar.gz]
Logical and Probabilistic Inference Tools
-
Description: This is a set of various logical inference
tools and data structures that
includes an efficient implementation of binary and algebraic decision
diagrams (BDDs and ADDs), affine ADDs (AADDs),
a propositional theorem prover (BDD-based),
and an FOL interface to the Otter and Vampire theorem provers.
Also included are a Bayes net inference engine and an MDP value iteration
inference engine which allow the choice of tables, ADDs, or AADDs
as the underlying representational data structure.
-
Language: Java
-
Code Archive and Documentation: [Send email] (non-commercial use only)
Stochastic Satisfiability (SAT) Solver
-
Description: This is an implementation of various
stochastic satisfiability algorithms including GSAT, random
walk GSAT, and WalkSAT. It uses extremely efficient
data structures for maintaining the various heuristics
used in these algorithms.
-
Language: C
-
Documentation: None
-
Code Archive: [Send email] (consent of coauthors required)
Graphplan Implementation
-
Description: This is an extremely efficient implementation
of the Graphplan algorithm based on the STAN bit-vector
encoding given by Long and Fox (1999). The domain language
is standard STRIPS.
-
Language: C
-
Documentation: None
-
Code Archive: [Send email] (consent of coauthors required)
Temporal Constraint Scheduler
-
Description: This is an implementation of a temporal
scheduling system using graph-based temporal constraint reasoning
algorithms.
The domain language allows one to specify min start,
max finish, order, and duration
times for each task as well as the shared resources required
by each task.
-
Language: C
-
Documentation: None
-
Code Archive: [Send email] (consent of coauthors required)