Canonical models of computation, such as Turing machines and lambda calculi, are one-way roads: their steps cannot be easily undone, or may have a myriad of individual ‘undoings’. Reversible models of computation, however, support stepping both forward and backward deterministically. This technique had a number of advantages and applications, from reducing hardware energy cost to efficient, large-scale parallel computation, to providing new foundations for mathematical logic. This talk will introduce the theory of reversible computing, including motivations, core concepts, and applications. In particular, I will focus on the work happening at Indiana University.