Advanced course on distributed programming in Java. Introduces students to standard design patterns for implementing components that solve common distributed programming challenges in Java. Topics covered include: threads, message passing, coordination, distributed object technology, web-based services, and collaborative applications. Prerequisite(s): one of COMP 3004, SYSC 3100, SYSC 4800, and one of COMP 2406, COMP 2006, COMP 2405, COMP 2005.Lectures three hours a week.