This book is based on the belief that, before students can make sense of any presentation of abstract mathematics, they need to be engaged in mental activities that will establish an experiential base for any future verbal explanations and to have the opportunity to reflect on their activities. This approach is based on extensive theoretical and empirical studies, as well as on the substantial experience of the authors in teaching Abstract Algebra. The main source of activities in this course is computer constructions, specifically, small programs written in the math-like programming language ISETL; the main tool for reflection is work in teams of two to four students, where the activities are discussed and debated. Because of the similarity of ISETL expressions to standard written mathematics, there is very little programming overhead: learning to program is inseparable from learning the mathematics. Each topic is first introduced through computer activities, which are then followed by a text section and exercises. The text section is written in an informal, discursive style, closely relating definitions and proofs to the constructions in the activities. Notions such as cosets and quotient groups become much more meaningful to the students than when they are presented in a lecture.