This textbook is an introduction to algebra via examples. The book moves from properties of integers, through other examples, to the beginnings of group theory. Applications to public key codes and to error correcting codes are emphasised. These applications, together with sections on logic and finite state machines, make the text suitable for students of computer science as well as mathematics students. Attention is paid to historical development of the mathematical ideas. This second edition contains new material on mathematical reasoning skills and a new chapter on polynomials has been added. The book was developed from first-level courses taught in the UK and USA. These courses proved successful in developing not only a theoretical understanding but also algorithmic skills. This book can be used at a wide range of levels: it is suitable for first- or second-level university students, and could be used as enrichment material for upper-level school students.