This course examines concepts of software components as a basis for developing distributed systems. Essential properties of server, client, and dual server/client components are studied, with particular attention to structuring dual server/client components to support generic programming at the distributed systems level. Students formulate and carry out team projects to develop experimental components and applications using CORBA or DCOM. Subtopics include basic CORBA programming, CORBA Interface Definition Language (IDL), IDL to C++ type mappings, exception handling, CORBA and DCOM integration, Java/CORBA programming, and the CORBA Interface Repository. The exact choice of topics depends on the interests and background of the students. 2 credit hours.