This course is intended for software engineers who want to learn the core Java programming language and apply it to one form of distributed programming based on the Java Distributed Object Model. The course will consist of two parts, first a study of Java as a general purpose programming language, followed by a study of Java's Remote Method Invocation (RMI).