Principles of Distributed Software Systems

Course Context

Faculty Coordinator


  • Catalog Description: Design and implementation of distributed software components; process and memory management underlying software applications; sockets, protocols, threads, XML, serialization, reflection, security, and events. (3 credits)

  • Course Coordinator's Description: The course explores the concepts and techniques for designing, constructing and deploying distributed applications. It examines the basis techniques of secure multithreaded, and distributed programming, and covers the most common distributed computing paradigms along with the frameworks that support the paradigms. Students will develop distributed applications using the languages Java, and C++. You will be expected to configure a (your) Linux-based Raspberry Pi and deploy the services you develop in this course to that platform. The course covers peer-to-peer, group communications, client-server, and distributed object based paradigms. Students are expected to learn to be comfortable in developing software that uses Serialization, TCP/IP Sockets, and Threading in this course.

Prerequisite & Major Map


Student Outcomes

Course Outcomes

    Ser321 Course Learning Outcomes

  • Develop Distributed Applications: Apply the concepts of concurrency, threads and synchronization for use in designing and creating distributed applications; have the ability to create threaded servers and clients using best practices.
  • Fundamental Program Development Tools (Linux): command-line interpreter, compiler, debugger, build-tools to develop, deploy and test distributed applications consisting of multiple programs and modules.
  • Serialization, XML, and JSON: Understand the role externalization plays in distributed applications; utilize a language's built-in serialization facilities; be able to use binary and text-based externalization, such as XML and Json.
  • Distributed Paradigms: Understand and select among appropriate distribution paradigms for a problem, such as client-server, service-oriented, and peer-to-peer.
  • Distributed Frameworks: Utilize common frameworks to design and develop distributed applications, such as object-based ( RMI ), stream-based sockets, remote procedure call (RPC).

These pages are a work in progress. See an error, let me know. Thanks.
Email: | Ser321 Home