This first-year course in discrete mathematics requires 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...