Balancing theoretical and practical goals in the delivery of a university-level data communications program