source codes for learning and practising algorithms