Il corso si propone di fornire conoscenze e competenze nell’ambito della programmazione a oggetti, con particolare riferimento a sistemi concorrenti e distribuiti. I problemi fondamentali derivanti da una esecuzione parallela vengono affrontati in modo pratico usando il linguaggio Java. I principali aspetti progettuali e realizzativi legati ad applicazioni software composte da più sottosistemi vengono sperimentati attraverso la realizzazione di un progetto didattico usando il linguaggio Java.
The goal of this class is to provide competencies and skills in the field of object-oriented programming, with a specific focus on concurrent and distributed systems. The main problems originated by parallel execution are faced according to a practical approach using the Java language. The main concepts related to the design and implementation of applications made of multiple subsystems are experienced by carrying out a project using the Java language.
La verifica delle conoscenze sarà condotta mediante valutazione della prova pratica, discussione del progetto e orale.
Sono previste delle prove in itinere. Se superate, l'esame finale consisterà nella sola discussione del progetto.
Assessment of knowledge will be based on evaluating the practical test, project discussion, and oral exam.
Intermediate tests are organized during class hours. If passed, the final exam will concern only the evaluation of the project.
Al termine del corso lo studente sarà in grado di progettare e realizzare applicazioni concorrenti e distribuite usando il linguaggio Java. Sarà inoltre in grado di usare un ambiente di sviluppo integrato e di realizzare semplici interfacce grafiche.
At the end of the course, the student will be able to design and create concurrent and distributed applications using the Java language. The student will also be able to use an integrated development environment and create simple graphical interfaces.
La capacità di realizzare algoritmi concorrenti verrà verificata mediante una prova pratica. La capacità di progettare e realizzare un'intera applicazione verrà verificata attraverso la realizzazione di un progetto individuale. Le altre capacità verranno verificate mediante prova orale.
Sono previste delle prove in itinere. Se superate, l'esame finale consisterà nella sola discussione del progetto.
The ability to create concurrent algorithms will be verified through a practical test. The ability to design and implement an entire application will be verified through the creation of an individual project. The other skills will be verified through an oral test.
Ongoing tests are planned. If passed, the final exam will consist only of the discussion of the project.
Lo studente sarà in grado di gestire tutte le fasi relative allo sviluppo di un'applicazione concorrente/distribuita.
The student will be able to manage all the phases related to the development of a concurrent/distributed application.
La capacità di gestire tutte le fasi relative allo sviluppo di un'applicazione concorrente/distribuita verranno verificate mediante discussione del progetto.
The ability to manage all phases related to the development of a concurrent/distributed application will be verified through a discussion of the project.
Un linguaggio di programmazione basato sul C.
A programming language based on C.
Conoscenze di base sui sistemi operativi, le reti informatiche, e le basi di dati.
Basic knowledge of operating systems, computer networks, and databases.
Lezioni frontali e attività di laboratorio.
Progetto individuale.
Lectures and laboratory activities.
Individual project.
Il linguagggio Java. Caratteristiche fondamentali del linguaggio. Classi, oggetti e riferimenti. Overloading di costruttori e metodi. Campi e metodi statici. Package. Modificatori di accesso. File sorgenti, binari e classpath. Gestione della memoria. Array e stringhe. Ereditarietà e polimorfismo. Classi astratte. Classi final. La classe Object. Le interfacce. Eccezioni. I thread.
Programmazione concorrente. Introduzione alla programmazione concorrente in Java. Cooperazione e interferenza tra thread. Sincronizzazione e mutua esclusione in Java. Problemi classici: produttori e consumatori; gestore di risorse equivalenti.
Java e l'Input/Output. La serializzazione degli oggetti. I flussi di ingresso e uscita. L’interfacciamento con il file system. La programmazione di rete. Interfacciamento con le basi di dati. L’interfaccia grafica utente. L’input-output multimediale. L’interfacciamento tramite XML.
La realizzazione di applicazioni. Applicazioni Desktop. Introduzione alle architetture multi-livello. Strumenti e metodi per consultare le Java API, per documentare, rilevare errori e collaudare il software. Realizzazione di un progetto didattico.
The Java language. Fundamental characteristics of the language. Classes, objects and references. Overloading of constructors and methods. Static fields and methods. Package. Access modifiers. Source files, binaries and classpaths. Memory management. Arrays and strings. Inheritance and polymorphism. Abstract classes. Final classes. The Object class. The interfaces. Exceptions. The threads.
Concurrent programming. Introduction to concurrent programming in Java. Cooperation and interference between threads. Synchronization and mutual exclusion in Java. Classical problems: producers and consumers; equivalent resource manager.
Java and Input/Output. The serialization of objects. Input and output flows. Interfacing with the file system. Network programming. Interfacing with databases. The graphical user interface. Multimedia input-output. Interfacing via XML.
The creation of applications. Desktop Applications. Introduction to multi-level architectures. Tools and methods for consulting the Java API, documenting, detecting errors and testing the software. Creation of an educational project.
Il materiale didattico verrà reso disponibile usando il canale Team associato all'insegnamento.
Bibliografia:
The teaching material will be made available using the Team channel associated with the teaching.
Bibliography:
The Java Programming Language, 4th edition. K. Arnold, J. Gosling, D. Holmes. Addison-Wesley Professional 1.
Programming in Java vol. I, II, III.
The Java SE Documentation, Oracle Corporation.
The Java SE API, Oracle Corporation.
Prova pratica (al calcolatore, tramite Netbeans in ambiente Windows, con possibilità di consultare le Java API). Prova orale (comprensiva della discussione del progetto). Per poter svolgere la prova orale è necessario ottenere almeno 15 alla prova scritta. Il voto della prova scritta viene mantenuto per tre appelli (incluso quello in cui la prova scritta è stata consegnata). Il numero di consegne della prova scritta è limitato a quattro per anno. Al termine della prova scritta viene mostrata una possibile soluzione, dopo aver visto la quale lo studente può scegliere di ritirarsi senza che risulti una consegna. La correzione della prova scritta può essere illustrata allo studente nei giorni previsti per le prove orali.
Sono previste delle prove in itinere. Se superate, l'esame finale consisterà nella sola discussione del progetto.
The exam is composed of a practical test and of an oral part.
Practical test using one of the PCs of the School of Engineering. Using Netbeans of Notepad++, the student has to write the code to solve problems in the concurrent/distributed domain. The minimum grade for accessing the oral exam is 15.
The oral exam concerns the discussion of the project and related concepts.
Ongoing tests are planned. If passed, the final exam will consist only of the discussion of the project.
https://vecchio.iet.unipi.it/vecchio/teaching/programmazione-avanzata/
Accedere al Team dell'insegnamento
759II 23/24 - PROGRAMMAZIONE AVANZATA [IFO-L] | Generale | Microsoft Teams
Use the Team of the class
759II 23/24 - PROGRAMMAZIONE AVANZATA [IFO-L] | Generale | Microsoft Teams