Designing and implementing small-scale programs as communities of collaborating objects, using a dynamically-typed or statically-typed programming language. Fundamental concepts: classes, objects, encapsulation, information hiding, inheritance, polymorphism. Iterative, incremental development and test-driven development. Precludes additional credit for SYSC 1101. Prerequisite(s): SYSC 2002 or SYSC 2006 (SYSC 2006 can be taken concurrently).Lectures three hours a week, laboratory two hours a week.