Final Project Ideas

Done in 2015 by Charlie Murphy and Patrick Gray:
Verified Machine Learning in Coq: Perceptron

The Perceptron is a simple linear classifier that learns, from training data, how to classify real-valued feature vectors V as "positive" or "negative".

Potential tasks:

Verified Algorithms and Data Structures: 2-3 Trees

2-3 Trees, invented by John Hopcroft in 1970, are a balanced binary-tree data structure similar to AVL or Red-Black trees.

Potential tasks:

One possible reference: Sozeau, Finger Trees in Coq

Inverse Transform Sampling in Coq

A discrete distribution D over outcomes of type A can be represented in Coq as a function that maps each value of type A to a (rational, Q or real) probability in the range [0,1], subject to \sum_{a:A} D a = 1.

The CDF (cumulative distribution function) of D is the function F(a) that tells us the probability that an outcome is "less than or equal" a, for some ordering of the possible outcomes in A. The inverse of the CDF, a function that maps values in [0,1] to associated outcomes of type A, can be used to sample the distribution, assuming access to a source of random values in the range [0,1].

Potential tasks:

Monte Carlo in Coq: Estimating Pi

As this page demonstrates, it's possible to estimate pi=3.14159... using a Monte Carlo-style random simulation (choose points randomly within the bounding box (-1,-1), (1, 1); then pi can be estimated from the ratio of points within the circle centered at (0,0) [approximately pi*R^2] to the total number of points in the bounding box [approximately 4R^2]).

Potential tasks: