CONCURRENT PROGRAMMING AND DISTRIBUTED ALGORITHMS

iten
Code
80302
ACADEMIC YEAR
2017/2018
CREDITS
9 credits during the 2nd year of 8759 Computer Science (L-31) GENOVA
SCIENTIFIC DISCIPLINARY SECTOR
INF/01
LANGUAGE
Italian
TEACHING LOCATION
GENOVA (Computer Science)
semester
2° Semester
Teaching materials

OVERVIEW

The course is an introduction to multithreading/multicore, event-driven and distributed programming concepts.
The contents are inspired to the following themes of the ACM/IEEE Computer Science Curriculum Concurrency, Scheduling and Dispatch; Event-Driven and Reactive Programming; Concurrency and Parallelism: Communication and Coordination, Distributed Systems; Mobile Platforms.

AIMS AND CONTENT

LEARNING OUTCOMES

The aim of the course is to introduce the main concepts underlying multithreading and distributed programming. The course has a practical part with guided lab exercises in C, Java and Android and a final project in which students have to apply all concepts and programming technique studied in the course.

TEACHING METHODS

Standard: lectures and labo sessions

SYLLABUS/CONTENT

Theory

  • Multithreaded programming
  • Critical section problem
    • Mutual exclusion, starvation-freedom, deadlock-freedom 
    • Software solution
      • Peterson
      • Lamport's algorithm
  • Spinlock, Semaphor, Mutex, Monitor, Barrier
  • Memory model:
    • Strict and Sequential Consistency
    • Relaxed Memory Models: Weak Consistency
  • Lock-free programming:
    • CAS, Test and Set Lock, Swap and Compare
    • Concurrent data structures

Labo

Concurrent programming

  • Thread and task
  • Pool
  • Synchronize, wait, notify

Asynchronous and event-driven programming

  • Asynchronous functions, future
  • Events, callback

Distributed and network programming

  • Socket
  • Remote procedure call (RPC)
  • Remote method invocation (RMI) and callbac

Android libraries

  • Activity, Manifest, Layout 
  • UIT, callback
  • AsyncTask vs Thread withHandler/Post
  • SQLite

LABO

  • Multithreading in C, Java and Android

Project

  • Client-server distributed system, multithreaded server, Java and Android clients

TEACHERS AND EXAM BOARD

Office hours: Appointment by email

Exam Board

GIORGIO DELZANNO (President)

GIOVANNI CHIOLA

MARINA RIBAUDO

LESSONS

TEACHING METHODS

Standard: lectures and labo sessions

EXAMS

EXAM DESCRIPTION

Written exam and project

ASSESSMENT METHODS

Discussion of the written test and of the project

Exam schedule

Date Time Location Type Notes
05/02/2018 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
15/06/2018 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
02/07/2018 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
19/07/2018 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
12/09/2018 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505
04/02/2019 09:00 GENOVA Scritto 12/02/18 Aula 15/06/18 Aula 505 02/07/18 Aula 505 19/07/18 Aula 506 12/09/18 Aula 505