Provides a foundation for designing well-structured application using object-oriented programming. Covers data abstraction, encapsulation, inheritance, polymorphism, and the principles of reuseable object-oriented design. NOTE:This course may not be taken for credit by BCS or BScSwE students. NOTE: Credit will only be granted for one of CS 2013, CS 2033, CS 2043, or ECE 4403.