Distributed Programming in Java

  • Course StartSelf-paced
  • Course Duration4 weeks
  • Workload4-8 hours per week
  • Credit OfferedCertificate Available
  • TuitionSubscription

Learn to use popular distributed programming frameworks from Java programs, as well as interfaces for locality-aware scheduling in multicore processors.

Course Description

Part of the Parallel, Concurrent, and Distributed Programming in Java Specialization.

This course teaches industry professionals and students the fundamental concepts of distributed programming in the context of Java 8, by building on the previous two courses on Parallelism and Concurrency. Distributed programming enables developers to use multiple nodes in a data center to increase throughput and/or reduce latency of selected applications. By the end of this course, you will learn how to use popular distributed programming frameworks from Java programs, including Spark Map-Reduce, Remote Method Invocation (RMI), Message Passing Interface (MPI), as well as interfaces for locality-aware scheduling in multicore processors, and for offloading computations on to GPUs via the Java Native Interface (JNI).

Course Trailer

Why take this course?

  • All data center servers are organized as a collection of distributed servers. While the previous two courses taught you how to exploit multiple processor cores within a single server for improved performance, it is important for you to also learn how to use multiple servers for increased bandwidth and reduced latency.
  • In addition to learning specific frameworks for distributed programming, this course will teach you how to integrate multicore and distributed parallelism in a unified approach.
  • The course includes programming “mini-projects” that will provide you with the necessary hands-on experience to use the concepts learned in the course on your own, after the course ends.

The desired learning outcomes of this course are as follows:

  • Distributed map-reduce programming in Java using the Spark frameworkClient-server programming using Java’s Remote Method Invocation (RMI) interface
  • Message-passing programming in Java using the Message Passing Interface (MPI) and actor interfaces
  • Java interfaces for locality-aware scheduling in multicore processors
  • Java interfaces for offloading computations on to GPUs via the Java Native Interface (JNI).

Mastery of these concepts will enable you to immediately apply them in the context of distributed Java programs, and will also help you master other distributed programming frameworks that you may encounter in the future (e.g., in Scala or C++).

Lecture Samples

Contact

Any questions? Please e-mail RiceOnline.rice.edu

Professor Information

Picture of Dr. Vivek Sarkar

Dr. Vivek Sarkar

Vivek Sarkar is a professor of Computer Science, and the E.D. Butcher Chair in Engineering at Rice University, where his group developed the Habanero Java library and programming system for use in teaching and research.  He received his B.Tech. degree from the Indian Institute of Technology, Kanpur, M.S. degree from University of Wisconsin-Madison, and Ph.D. […]

Full Bio