34762 - Concurrent and Distributed Programming (2nd cycle)

Academic Year 2011/2012

  • Moduli: Alessandro Ricci (Modulo 1) Stefano Mariani (Modulo 2)
  • Teaching Mode: Traditional lectures (Modulo 1) Traditional lectures (Modulo 2)
  • Campus: Cesena
  • Corso: Second cycle degree programme (LM) in Computer Engineering (cod. 8200)

Learning outcomes

The course introduces the basic principles of concurrent systems design and programming, including distributed network-based concurrent systems. The main aims of this course are:

  • to introduce the basic theoretical and practical concepts concerning concurrency and concurrent systems
  • to introduce basic principles for concurrent and distributed programming, including elements concerning modelling, design and verification
  • to provide a solid understanding and practice about how to design and build concurrent applications in Java
  • to provide a solid understanding about the specific issues concerning distributed systems as specific kind of concurrent systems

Upon completing this course, a student will

  • understand the fundamental role of concurrency and of concurrent software systems with respect to computer science and the engineering of (modern and future) software systems
  • have a solid understanding of the main conceptual and practical issues concerning concurrent systems modelling, design and engineering
  • have a solid understanding and practice about how to design and build concurrent applications in Java
  • know the specific problems concerning concurrency in distributed systems and the basic algorithms and architectures / infrastructures that can be used for the purpose

Course contents

Part one: Basic Concepts

  • Concurrency and concurrent systems: basic concepts
  • The critical section problem
  • Verification of concurrent programs
  • Process coordination using semaphores
  • Process coordination using monitors

Part three: Design of concurrent programs

  • Elements of concurrent programs design
  • Visual formalisms
  • Concurrent machines and languages
  • Performance and scalability
  • Testing concurrent programs

Part three: Distributed programming

  • Basic concepts about distributed programming
  • Channel-based models
  • Space-based models
  • Distributed Algorithms
  • Service-Oriented Architectures and Web Services

Part six: Reactive and real-time systems

  • Real-time systems overview
  • Real-Time Programming Languages - The RTJS Case

The practice concerns the design and development of concurrent programs using Java as reference language and reference middlewares  (RPC/object oriented, message-oriented, space-based, Web Services) for the distributed computing part.

Readings/Bibliography

Reference textbook:

  • "Principles of concurrent and distributed programming", Ben-Ari, Addison-Wesley
For the practice:
  • "Java - Concurrency in Practice", Goetz et al., Addison-Wesley
The lectures will include contents also from the following books:
  • "Multithreaded, Parallel and Distributed Programming", Andrews, Addison-Wesley
  • "Concurrency - State models and Java programs", Jeff Magee and Jeff Kramer. Wiley
  • "Distributed Systems: An Algorithmic Approach", Gosh, Chapman & Hall/CRC
  • "Patterns for Parallel Programming", Matson et al., Addison-Wesley

Teaching methods

Six credits (about 60 hours) are devoted to theory and exercises in the lecture-hall and three credits (about 30 hours) to practice in laboratory.

Assessment methods

The final assessment is composed by two parts:

  • written examination, composed by exercises about the content of the course
  • practice (with oral discussion), which concerns the design and development of a programming assignment, to be done at home, possibly in group.
Assessment weightings: 50% for the written examination, 50% for the practice

Teaching tools

  • Lecture notes projected during the lectures, available on the course web site
  • Lab for the practice part
  • Scientific papers and articles, which can be downloaded by the Faculty network
  • e-Learning tools available on the moodle-based course web site

Links to further information

http://www.moodle.unibo.it

Office hours

See the website of Alessandro Ricci

See the website of Stefano Mariani