SylabUZ

Generate PDF for this page

Concurrent and distributed programming - course description

General information
Course name Concurrent and distributed programming
Course ID 11.3-WE-INFP-CaDP-Er
Faculty Faculty of Computer Science, Electrical Engineering and Automatics
Field of study Computer Science
Education profile academic
Level of studies Erasmus programme
Beginning semester winter term 2017/2018
Course information
Semester 4
ECTS credits to win 4
Course type obligatory
Teaching language english
Author of syllabus
Classes forms
The class form Hours per semester (full-time) Hours per week (full-time) Hours per semester (part-time) Hours per week (part-time) Form of assignment
Lecture 30 2 - - Exam
Laboratory 30 2 - - Credit with grade

Aim of the course

  • Familiarize students with basic techniques of concurrent programming
  • Familiarize students with basic techniques of distributed programming
  • Teach students the fundamental skills of using concurrent and distributed programming techniques
  • Learn basic skills in developing software used balanced and distributed architecture

Prerequisites

Principles of programming, Java programming, Computer architectures I and II.

Scope

Concurrent programming – basic concept: process, shared resources, critical section, mutual exclusion, synchronization, deadlock, starvation.

Aims of concurrent programming. Advantages and disadvantages of concurrent programming.

Semaphores: general semaphore, binary semaphore, synchronization of processes with usage of semaphores.

Concurrent programming in Java. Monitors. Additional methods of threads synchronization: blocking queued, barriers, countdown of latch and exchanger.

Classical problems of concurrent programming: dining philosophers problem, producer-consumer problem, readers-writers problems.

Characterization of Distributed Systems. Inter-process communication. Guidelines for design of inter-process communication.

Remote procedure call (RPC). Remote method invocation (RMI). How to build of distributed applications in Java RMI. Integration different distributed environments.

Time and coordination in distributed systems. Logical clock. Election algorithm. Transactions and concurrency control in distributed systems. Algorithms for deadlock detection in distributed systems.

Teaching methods

Lecture: conventional lecture
Laboratory: laboratory exercises, group work

Learning outcomes and methods of theirs verification

Outcome description Outcome symbols Methods of verification The class form

Assignment conditions

Lecture - obtaining a positive grade in written exam. 
Laboratory - the main condition to get a pass are sufficient marks for all exercises and tests conducted during the semester.
Calculation of the final grade: = lecture 50% + laboratory 50%.

Recommended reading

  1.  Ben-Ari M.: Principles of Concurrent and Distributed Programming, Addison-Wesley, 2006.
  2.  Foster I.: Designing and Building Parallel Programs, http://www.mcs.anl.gov/~itf/dbpp/
  3.  Coulouris G. et al.: Distributed Systems. Concepts and Design (4th ed.), Addison Wesley, 2005.
  4.  Tanenbaum S.: Distributed Systems. Principles and Paradigms (2nd ed.), Prentice Hall, 2002.
  5.  Garg V. K.: Concurrent and Distributed Computing in Java. Wiley-IEEE Press, 2004.
  6.  Horstmann C. S., Cornell G.: Core Java™ 2: Volume II–Advanced Features, Prentice Hall, 2008.
  7.  Goetz B., Peierls T., Bloch J., Bowbeer j., Holmes D., Lea D.: Java Concurrency in Practice, Addison-Wesley Professional, 2006.

Further reading

Notes


Modified by dr inż. Tomasz Gratkowski (last modification: 29-05-2017 12:14)