Distributed and Parallel Programming (CS3DP19)

The official module description. For further information, see RISIS or timetable.

This module introduces concepts, principles, tools, techniques and algorithms for distributed systems and parallel computing, and examines the deployment of relevant applications in Cloud, big data analytics, and massive-parallel environment. In this context, this module covers the topic ranging from hardware and software architectures and algorithms in the development of distributed systems, MapReduce program paradigm and Hadoop ecosystems, and in-memory and stream computing tools such as Spark, Storm, and Flink; to parallel programming paradigms for relevant hardware and software applications, such as OpenMP and MPI, and massive parallelism provided by GPUs. Talks from academia and industry will be incorporated in teaching for value adding in learning.

The module provides students with fundamentals of distributed systems and parallel computing and state-of-the-art tools that enable students to understand the concepts and principles underpinning distributed systems and utilize industry standard tools. Students are then prepared to specialize further in the field of distributed systems and parallel computing, e.g., in big data analytics or as scientific programmer.

This module also encourages students to develop a set of professional skills, such as creativity, software design and development, team working, self-reflection, and global outlook.