Most students in abstract algebra classes have great difficulty making sense of what the instructor is saying. Moreover, this seems to remain true almost independently of the quality of the lecture. This book is based on the constructivist belief that, before students can make sense of any presentation of abstract mathematics, they need to be engaged in mental activities which will establish an experiential base for any future verbal explanation. No less, they need 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 astract algebra. The main source of activities in this course is computer constructions, specifically, small programs written in the mathlike programming language ISETL; the main tool for reflections is work in teams of 2-4 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. This text section is written in an informed, discusive 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 preseted in a lecture.