Prerequisites
The following are essential prerequisites:
- knowledge of elementary discrete mathematics, especially
(i) elementary logic;
(ii) sets, functions and relations; and
(iii) partially-ordered sets.
- experience with high-level programming
languages, including both a procedural language such as C, Turing, or Python,
and a functional
language such as LISP or Haskell.
- exposure to a formal system for developing or verifying
imperative programs, such as Hoare's logic or the refinement calculus.
CISC courses 121, 203, 204, 260 and 223 (or equivalents)
would satisfy these requirements.
Students who don't feel confident of their background
in discrete mathematics (sets, functions, relations, partial orders)
and elementary logic should
do some review as soon as possible in any suitable book, such as
- S. Lipschutz and M. Lipson.
Schaum's Outline of Discrete Mathematics
McGraw-Hill, third edition, 2009.
- Sets, Functions, and Logic: An Introduction to Abstract Mathematics.
Chapman and Hall, second edition, 1992.
Call number: QA37.2.D48.
- D. Velleman.
How to Prove it: a Structured Approach.
Cambridge University Press, 1994.
Call number: QA9.V38.
This page was last modified on July 21, 2014.