DISCRETE COMPUTATIONAL STRUCTURES