CODE 80302 ACADEMIC YEAR 2018/2019 CREDITS 9 cfu anno 2 INFORMATICA 8759 (L-31) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR INF/01 LANGUAGE Italian TEACHING LOCATION GENOVA SEMESTER 2° Semester TEACHING MATERIALS AULAWEB 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 GIORGIO DELZANNO Ricevimento: Appointment by email Exam Board GIORGIO DELZANNO (President) GIOVANNI CHIOLA MARINA RIBAUDO LESSONS Class schedule CONCURRENT PROGRAMMING AND DISTRIBUTED ALGORITHMS EXAMS EXAM DESCRIPTION Written exam and project ASSESSMENT METHODS Discussion of the written test and of the project Exam schedule Data appello Orario Luogo Degree type Note 04/02/2019 09:00 GENOVA Scritto 14/06/2019 09:00 GENOVA Scritto 01/07/2019 09:00 GENOVA Scritto 18/07/2019 09:00 GENOVA Scritto 11/09/2019 09:00 GENOVA Scritto 03/02/2020 09:00 GENOVA Scritto