This is a real nice set of lecture notes on distributed systems covering Consensus, Logical Clocks, Paxos, FLP, failure detectors, Software Transactional Memory etc by James Aspnes.