Introduction to reversible computing