DISCRETE COMPUTATIONAL  STRUCTURES