Salta ai contenuti. | Salta alla navigazione

Strumenti personali

CONCURRENT PROGRAMMING

Academic year and teacher
If you can't find the course description that you're looking for in the above list, please see the following instructions >>
Versione italiana
Academic year
2021/2022
Teacher
CESARE STEFANELLI
Credits
6
Didactic period
Primo Semestre
SSD
ING-INF/05

Training objectives

The course has the goal to introduce the concurrent programming techniques for the realization of multithreaded application. In addition to the introduction of concurrent programming tools, such as semaphores and monitors, the course introduces to practical java and Unix multi threaded application development. In addition, the course introduces the Ruby language and the Rails framework, for the development of distributed, concurrent and web based projects.

Prerequisites

The course requires the deep knowledge of C and Java languages.

Course programme

The course duration is 60 hours, and deals with the following subjects:

Introduction to concurrent programming (12 hours): Introduction, concurrency and parallelism, process models (local and global), Java and Posix threads, thread synchronization.

Tools and methodologies for concurrent application design (24 hours): thread synchronization primitives (semaphores, monitors), concurrent application examples (producer/consumer, readers/writers, philosophers), Safety and liveness, deadlock.

Java concurrent programming (12 hours): basic concurrency primitives, concurrency utilities, Java concurrent multithreaded application.

Ruby and Rails (12 hours): Ruby language, Rails framework, application design and development.

Didactic methods

The course is mainly composed of lessons in the classroom. Some lessons will be in the lab, to help students to acquire practical skills about development frameworks. Videos of the lessons uploaded in the classroom site.

Learning assessment procedures

The final exam is only oral, and will require to:

- design a concurrent application, with monitors and/or Java concurrency utilities;
- demonstrate to know the main concurrent programming tools and methodologies;
- demonstrate the programming skills in the ruby language and rails.

There will be an exam session each week.

Passing the final exam is the proof that knowledge and abilities outlined in the training objectives of the course have been achieved.

The exam may be done also in english.

Reference texts

Suggested textbooks:

P. Ancilotti, M. Boari, Programmazione concorrente e distribuita, McGraw-Hill, 2007.
J. Magee, J. Kramer, Concurrency, State Models and Java programs, second edition, Wiley, 2006.
G. Andrews, Foundations of multithreaded, parallel, and distributed programming, Addison Wesley, 2000
S. Oaks, H. Wong, Java Threads, third edition, O’Reilly, 2004.
D. Lea, Concurrent Programming in Java, Addison-Wesley, 1999.

copy of the lesson slides are available in the Classroom site whose link is written in this site ("materiale didattico" area).