Below are some Java applets I've written over the years. Some of these
have corresponding research articles. Enjoy!
Common MetropolisHastings algorithms

MetropolisHastings Algorithms
is an applet which showcases many common Markov chain algorithms.
Click on this link to view a short description of the featured algorithms.
The applet itself will appear in a separate window.

Ever wondered what the transition kernels for the MH algorithms above
look like? Look no further, with
MH Roadmap.

Simulated Annealing
is a mutation of the MetropolisHastings applet which shows
how to use MCMC algorithms to find the global maxima of a given function.
Coupling constructions for Markov chains

Coupling constructions for Markov chains (in which several chains are run concurrently until and after they meet)
are important for the study of convergence to equilibrium.
Catalytic coupling
is one such construction, based on the following paper
(ps/pdf).
The method is universal in that implementation requires no preliminary analytical estimates.

Another way of understanding the coupling technique discussed above is in terms of random fields.
Field couplers, which is similar to the MH Roadmap applet, explains that point of
view. It is based on another paper
(ps/pdf).
Perfect simulation

Perfect simulation
is the main reason we want to couple Markov chains in
this way. While the two applets above give proofofconcept on quite general toy examples, here are two
more realistic examples. The first applet,
PumpSimulator,
shows how to use catalytic coupling to simulate perfectly from an autogamma model,
also known as the Bayesian posterior for the pump dataset.
Read the accompanying paper (ps/pdf),
or download the source for the second example therein.

Suppose data is generated from a mixture of (partially) known distributions with unknown weights.
This applet and the accompanying paper (ps) showcases how to sample perfectly in simple cases from the posterior distribution on weights using the
Data Augmentation algorithm, with polynomial computational cost.

The PageRank distribution originally used by Google can actually be simulated perfectly. I don't have a Java applet for this, but see here for a C++ project which performs the simulation on just under one million web pages.
Learn more!
The applets above demonstrate several algorithms located at the intersection between Computer Science and Probability
Theory. You can learn more about these topics by following the links below.
