This course focuses on programming paradigms and constructs, data structures and use of standard library functions for manipulating them, object-oriented design and the use of modeling languages, testing and software quality concepts, and tradeoffs among different software design methods.