Techniques used in object-oriented software development. Key components of these techniques include design patterns, abstraction, encapsulation, modularity, message passing, polymorphism, inheritance, and incremental software development. Students translate a design into software using an object-oriented programming language. Additional topics may include applets, markup languages, multi-threaded programming, and rudimentary network programming. Prerequisite: CS 2322 or equivalent. (May not be offered every year)