Intended for first- or second-year undergraduates, this introduction to discrete mathematics covers the usual topics of such a course, but applies constructivist principles that promote - indeed, require - active participation by the student. Working with the programming language ISETL, whose syntax is close to that of standard mathematical language, the student constructs the concepts in her or his mind as a result of constructing them on the computer...