Students will learn how to write applications in Java that make use of network programming. This course covers the following topics: Introduction to network programming, Transport Layer Protocols, User Datagram Protocol, Client-Server Model, TCP Sockets, UDP Sockets; SCTP Sockets; Java's input/output system and how it works; Multicast Sockets implementation; client/server implementations; Threads Programming; multi-threaded applications; Multiplexing and De-multiplexing Applications; Implementing Application Protocols; Distributed computing technologies including remote method invocation, plus small project that addresses different departments disciplines.