Consider the case of PDA synchronising a user's email inbox with a
server. It's often the case that the PDA already contains several
hundred kilobytes of the user's previous email.
If the server knows about this previous email, it can compress the new
email by describing it as substrings contained in the old email.
Some provisional analysis of this technique suggests that it can
produce compression ratios several time higher than traditional means
(e.g. simply gzip'ing the new email). This is important when the
synchronization is occurring over low bandwidth or expensive network
links e.g. GSM mobile data.
The aim of this project is to design and implement a server and
client to evaluate the technique. It requires plenty of fun data
structures and algorithms work, and is potentially publishable.