integrated the ability to reason about programming theory courses