CS5010 Program Design Paradigm