Course overview
This course will provide students with theoretical and practical knowledge in cloud and concurrent programming, including: The cloud reference Model, cloud standards, cloud development, programming cloud services, programming cloud UI's, testing for cloud basedinfrastructures, security. Introduction: Definitions of concurrency and parallelism and their need in modern computing systems. Concurrency theory: The interleaving model of concurrency. The labelled transition system formalism for concurrency. Traces, atomicity, deterministic and non deterministic choice. Properties of concurrent systems. Safety and liveness. Concurrency practice: Java threads. Low level synchronisation with monitors and semaphores. High level design patterns for concurrent computing. The java.util.concurrent implementation of design patterns: Thread per minute, worker threads, polling and event driven IO, thread pools, joining threads, futures, scheduling, parallel decomposition, fork join, barriers, active objects. Thread safe collections. Android concurrency design patterns Parallel Programming: Overview of OpenMP for multicore, MPI for clusters and OpenCL for GPUs.
Course learning outcomes
- Design and implement cloud based applications
- Build native graphical user interfaces that integrate web-based services
- Construct safe high performance parallel and concurrent software using sound theoretical techniques
- Implement threading and synchronisation correctly in the Java language