This book is ideally suited for a two-term undergraduate algebra course culminating in a discussion on Galois theory. It provides an introduction to group theory and ring theory en route. In addition, there is a chapter on groups including applications to error-correcting codes and to solving Rubik's cube. The concise style of the book will facilitate student-instructor discussion, as will the selection of exercises with various levels of difficulty. For the second edition, two chapters on modules over principal ideal domains and Dedekind domains have been added, which are suitable for an advanced undergraduate reading course or a first-year graduate course.