This is a high level introduction to abstract algebra which is aimed at readers whose interests lie in mathematics and in the information and physical sciences. In addition to introducing the main concepts of modern algebra, the book contains numerous applications, which are intended to illustrate the concepts and to convince the reader of the utility and relevance of algebra today. In particular applications to Polya coloring theory, latin squares, Steiner systems and error correcting codes are described. Another feature of the book is that group theory and ring theory are carried further than is often done at this level. There is ample material here for a two semester course in abstract algebra. The importance of proof is stressed and rigorous proofs of almost all results are given. But care has been taken to lead the reader through the proofs by gentle stages. There are nearly 400 problems, of varying degrees of difficulty, to test the reader's skill and progress. The book should be suitable for students in the third or fourth year of study at a North American university or in the second or third year at a university in Europe, and should ease the transition to (post)graduate studies.