This is a first-year course in discrete mathematics requireing no calculus or computer programming experience.

The approach stresses finding efficient algorithms, rather than existential results. Provides an introduction to constructing proofs (especially by induction), and an introduction to algorithmic problem-solving. All algorithms are presented in English, in a format compatible with the Pascal programming language. Contains many exercises, with answers at the back of the book (detailed solutions being supplied for difficult problems).