The course covers the programming models and the paradigms used with distributed and parallel systems, for both the application and support tool software. The main focus of the course is on structured programming models (parallel design pattern, algorithimc skeletons) as the main API provided to the application programmers to develop parallel applications. The implementation of structured parallel programming models will be detailed in terms of models and support mechanisms. The models and mechanisms considered include classical models (client/server, master/worker, map/reduce) and mechanisms (POSIX TCP/IP, OpenMP, MPI, etc). While presenting models and paradigms, special emphasis will be given to different aspects related to either the programming model presented to the final user or the particular implementation mechanism chosen, namely
The course will be logically split into distinct parts:
The whole program will be covered by the course notes material.