  These are notes on discrete mathematics for computer scientists. The
presentation is somewhat unconventional. Indeed I begin with a discussion of
the basic rules of mathematical reasoning and of the notion of proof formalized
in a natural deduction system ``a la Prawitz''. The rest of the material is
more or less traditional but I emphasize partial functions more than usual
(after all, programs may not terminate for all input) and I provide a fairly
complete account of the basic concepts of graph theory.
