- Oggetto:
- Oggetto:
Programmazione III
- Oggetto:
Programming III
- Oggetto:
Anno accademico 2022/2023
- Codice dell'attività didattica
- MFN0605
- Docenti
- Liliana Ardissono (Docente + Turno 1 + Turno 2)
Roberto Esposito (Turno 3)
Gigi Bianchi - Corso di studi
- [008707] Laurea in Informatica
- Anno
- 3° anno
- Periodo didattico
- Primo semestre
- Tipologia
- Caratterizzante
- Crediti/Valenza
- 6 CFU - Numero di ore - Number of hours: 32 (in aula) + 20 (in laboratorio)
- SSD dell'attività didattica
- INF/01 - informatica
- Modalità di erogazione
- Tradizionale
- Lingua di insegnamento
- Italiano
- Modalità di frequenza
- Facoltativa
- Tipologia d'esame
- Scritto più orale obbligatorio
- Prerequisiti
-
Si richiede una buona conoscenza dell'analisi e della progettazione object-oriented e dei meccanismi di base e delle problematiche della programmazione concorrente. Gli studenti e le studentesse devono inoltre avere la capacità di scrivere, compilare e verificare la correttezza di programmi in Java.
Insegnamenti propedeutici (forniscono le competenze attese in ingresso): Programmazione II, Algoritmi e strutture dati, Sistemi Operativi.The student is requested to have good knowledge of object-oriented analysis and design and of the basic models and issues concerning concurrent programming. Moreover the student must be able to write, compile and verify the correctness of Java programs.
Preparatory courses (providing the expected entry skills): Programmazione II, Algoritmi e strutture dati, Sistemi Operativi. - Oggetto:
Sommario insegnamento
- Oggetto:
Obiettivi formativi
Questo insegnamento concorre agli obiettivi formativi specifici dell'ambito delle conoscenze di approfondimento (area Informatica caratterizzante) del Corso di Laurea in Informatica (L31) ed è mirato a fornire alle studentesse e agli studenti solide conoscenze di base sulla progettazione e lo sviluppo di sistemi software Object Oriented concorrenti e distribuiti, anche con interfaccia utente grafica. Nello specifico, l'insegnamento si pone l’obiettivo di fornire la conoscenza di base necessaria per la programmazione di tale tipo di applicazione usando un linguaggio ad alto livello (Java), attraverso: (i) lo scambio di dati in rete, e (ii) la programmazione di thread paralleli, cioè di processi “leggeri” che possano operare su uno o più processori all’interno della stessa applicazione principale. Altro obiettivo fondamentale dell'insegnamento è la tecnica di programmazione ad eventi per la realizzazione di interfacce grafiche, che stanno alla base di tutte le applicazioni desktop basate su finestre.
In compliance with the training objectives of the Computer Science Bachelor Program (Corso di Laurea in Informatica (L31)), this course aims at providing students with robust basic knowledge about the design and development of Object Oriented concurrent and distributed systems, possibly having graphical user interfaces. The course is part of the area “Informatica caratterizzante”. In detail, the course aims to provide the student with the basic knowledge required for designing this type of application using a high-level language (Java), through (i) the exchange of data within a communication network, and (ii) programming of parallel threads, i.e., "lightweight" processes which can run on one or more processors within the same main application. Another key objective of the course is the event-based programming technique to develop graphical user interfaces, which underlie all desktop applications using windows.- Oggetto:
Risultati dell'apprendimento attesi
Conoscenza e capacità di comprensione
Acquisizione di conoscenze teoriche e applicative relative ai concetti alla base della programmazione di interfacce utente grafiche e di applicazioni distribuite e concorrenti Object Oriented.
Capacità di applicare conoscenza e comprensione
Acquisizione della capacità di applicare le conoscenze teoriche relative alle tematiche di cui sopra. Le studentesse e gli studenti dovranno essere in grado di sviluppare sistemi software in ambiente Java, utilizzando i Socket Java per la realizzazione di applicazioni distribuite, la programmazione a thread per la gestione del parallelismo e della concorrenza, e JavaFX per la realizzazione delle interfacce utente grafiche.
Autonomia di giudizio
Acquisizione di consapevole autonomia di giudizio con riferimento alla progettazione e realizzazione di applicazioni Object Oriented distribuite e concorrenti con interfaccia utente grafica.
Abilità comunicative
Acquisizione di competenze e strumenti per la comunicazione nella forma scritta e orale, in lingua italiana, unitamente all'utilizzo di linguaggi formali.
Capacità di apprendimento
Acquisizione di capacità autonome di apprendimento e di
autovalutazione della propria preparazione, atte ad intraprendere gli studi successivi con un alto grado di autonomia.Knowledge and understanding
Acquisition of theoretical and applicative skills concerning the basic concepts underlying the development of graphical user interfaces and distributed, concurrent Object Oriented applications.
Applying knowledge and understanding
Acquisition of the ability to apply the above-listed theoretical and applicative skills. Students should be able to develop software systems in the Java environment, using Java Sockets for building distributed applications, threaded programming for handling parallelism and concurrency, and JavaFX for building graphical user interfaces.
Making judgments
Acquisition of aware judgment autonomy concerning the design and implementation of concurrent and distributed Object Oriented applications having graphical user interfaces.
Communication skills
Acquisition of oral and written communication skills and expertise, in the Italian language, as well as the ability to use formal languages.
Learning skills
Acquisition of independent learning skills and the ability to self-evaluation of one's own preparation, apt to undertake further studies with a high degree of autonomy.
- Oggetto:
Modalità di insegnamento
L’insegnamento è diviso in una parte teorica e una sperimentale.
- Per la parte di teoria sono previste lezioni integrate da casi di studio e da esercitazioni volte ad illustrare l’applicazione pratica dei concetti appena studiati. Le esercitazioni, strutturate come sequenze di esercizi specifici, permettono di mettere in pratica i concetti e le metodologie illustrate nelle lezioni teoriche su esempi concreti. I temi introdotti durante le esercitazioni corredano e integrano le conoscenze derivanti dalla parte teorica (knowledge and understanding) e permettono alle studentesse e agli studenti di familiarizzare con le metodologie e tecnologie introdotte, anche investigando soluzioni alternative (applying knowledge and understanding).
- Per la parte sperimentale, lo sviluppo del progetto SW, che si effettua in piccoli gruppi (composti da al più 3 persone), permette di consolidare le conoscenze teoriche e il lavoro in team in un caso realistico di media complessità. Il progetto SW consiste di un’applicazione Object Oriented distribuita con interfaccia grafica, che va oltre la complessità del tipico esercizio proposto nelle esercitazioni. La progettazione e lo sviluppo del progetto SW permettono di allenare l'autonomia di giudizio (making judgments) nella scelta delle implentazioni da realizzare, analizzando in forma critica le informazioni acquisite nella parte teorica dell'insegnamento. La preparazione del progetto SW è anche volta a stimolare la capacità comunicativa degli studenti e delle studentesse che sono invitati/e a illustrare verbalmente le soluzioni adottate (communication skills).
Le attività pratiche sono svolte a calcolatore, utilizzando ambienti di sviluppo professionali. Si consiglia caldamente la frequenza costante alle lezioni teoriche e alle esercitazioni. È inoltre fondamentale iscriversi alla pagina dell'insegnamento su I-Learn, in cui sono messi a disposizione il materiale didattico di supporto e i riferimenti a materiale pubblico utilizzabile per approfondire le proprie conoscenze in modo autonomo (learning skills).
La comunicazione con le studentesse e gli studenti avviene attraverso il forum dell'insegnamento su I-Learn e via email agli account istituzionali dei docenti.
The course is divided into a theory part and an experimental part.
- The theory part includes lectures supplemented by case studies and experimental lessons designed to illustrate the practical application of the concepts just studied. The experimental lessons, structured as sequences of specific tasks, allow the concepts and methodologies presented in the theory lecture to be put into practice on concrete examples. The topics introduced during the experimental lessons accompany and complement the knowledge derived from the theoretical part (knowledge and understanding) and allow students to familiarize themselves with the methodologies and technologies introduced, including the investigation of alternative solutions (applying knowledge and understanding).
- For the experimental part, the development of the SW project in small groups (consisting of at most 3 people) allows the consolidation of theoretical knowledge and teamwork in a realistic case of medium complexity. The SW project consists of a distributed SW application with a graphical user interface, which goes beyond the complexity of the typical exercise proposed in the experimental lessons. The design and development of the SW project allow training in the autonomy of judgment (making judgments) in choosing the solutions to be implemented, and critically analyzing the information acquired in the theoretical part of the course. The preparation of the SW project is also aimed at stimulating the communication skills of the students, who are invited to verbally illustrate the solutions adopted (communication skills).
The experimental activities are carried out computer-based, using professional development environments. We recommend attending all the lessons in this course. It is also important to enroll in the online courses on I-Learn (Human-Machine Interaction; Human-Machine Interaction and Web Technologies - technology part), which provides teaching materials and references to public materials that can be used to deepen one's knowledge independently (learning skills).
Communication with students takes place through the course forum on I-Learn and via email to the lecturers' institutional accounts.
- Oggetto:
Modalità di verifica dell'apprendimento
L'esame è composto da una prova teorica e dalla discussione del progetto sw. Le due prove possono essere sostenute in qualsiasi ordine durante le sessioni d'esame dell'Anno Accademico.
- Prova teorica: esame scritto che include esercizi e domande teoriche sul programma dell'insegnamento. Viene valutata da un minimo di 0 ad un massimo di 30 (31 vale per la lode); si considerano sufficienti i voti ≥ 18. Il voto ottenuto durante la prova teorica decade se si partecipa ad un'altra prova teorica. Questa prova è volta a verificare l’acquisizione della conoscenza fornita dall'insegnamento in termini di sapere (knowledge and understanding), nonché le abilità comunicative (communication skills) e l'autonomia di giudizio (making judgements).
- Discussione del progetto sw: questa prova è volta a verificare le competenze acquisite (applying knowledge and understanding), nonché le abilità comunicative, l'autonomia di giudizio e la capacità di apprendimento (learning skills). La discussione deve essere effettuata preferibilmente in unica soluzione, con tutti i membri del gruppo presenti. I gruppi di laboratorio devono includere al massimo 3 persone. NB: non si richiede di consegnare i progetti di laboratorio prima dell'esame. Il voto è un numero intero compreso tra 0 e 30 (31 vale per la lode), si considerano sufficienti i voti ≥18.
Il voto finale dell’esame viene determinato come media aritmetica semplice del voto della prova di teoria e del voto della discussione del progetto SW:
- voto finale = (voto teoria + voto progetto SW)/2.
NB: i voti acquisiti durante ciascuna delle prove rimangono validi fino al termine della sessione d’esame che precede l'inizio del nuovo insegnamento.
The examination consists of a theoretical test and the software project discussion. The two tests can be taken in any order during the exam sessions of the Academic Year.
- Theoretical test: written examination that includes exercises and theoretical questions on the syllabus of the course. It is graded from a minimum of 0 to a maximum of 30 (31 counts for honors) and grades ≥18 are considered sufficient. The grade obtained during the theory test is forfeited if another theory test is taken. This test is designed to test the acquisition of knowledge provided by the course in terms of knowing (knowledge and understanding), as well as communication skills and autonomy of judgment (making judgments).
- Software project discussion: this test is designed to check the acquired knowledge (applying knowledge and understanding), as well as communication skills, the autonomy of judgment, and learning skills. The discussion should preferably be done in one go, with all group members present. Lab groups should include a maximum of 3 people. NB: Lab projects are not required to be handed in before the exam. The grade is a whole number between 0 and 30 (31 counts for honors), grades ≥18 are considered sufficient.
The final exam grade is determined as the arithmetic mean of the theory grade and SW project grade:
- final grade = (theory grade + SW project grade)/2
Note: the grades acquired during each of the tests remain valid until the end of the exam session preceding the start of the new course.
- Oggetto:
Attività di supporto
Durante il periodo dell'insegnamento, e dopo, saranno svolte attività di tutorato su richiesta. Le studentesse e gli studenti potranno chiedere via email appuntamento ai docenti e/o ai tutor per la revisione di argomenti presentati in aula e per il supporto allo svolgimento degli esercizi e del progetto SW. Le attività potranno essere svolte in presenza oppure in modalità online su una piattaforma di videoconferenza come WebEx. Gli indirizzi di posta elettronica istituzionale dei tutor sono pubblicati nella pagina dell'insegnamento su I-Learn.
During the teaching period, and afterward, tutoring activities will be carried on demand: the students can request by email appointments with lecturers and/or tutors for reviewing topics presented in the classroom and for support in carrying out exercises and the SW project. The activities may be conducted in person or online on a videoconferencing platform such as WebEx. The institutional e-mail addresses of the tutors are posted on the course page on I-Learn.
- Oggetto:
Programma
Programmazione ad eventi in Java: programmare interfacce grafiche (JavaFX/FXML, SWING)
- Sorgenti di eventi, gestori di eventi, event-driven programming
- Organizzazione e uso delle interfacce grafiche di Java
- L'architettura Model-View-Controller (MVC)
Programmazione Multithread:
- Esecuzione concorrente di istruzioni
- I Thread in Java: ciclo di vita dei Thread
- Creazione e sincronizzazione di Thread
- Estensione del modello della memoria in presenza di Thread
- Problemi di sincronizzazione e loro risoluzione mediante il linguaggio Java
Programmazione in rete:
- L'architettura client-server
- Java socket
- Polimorfismo e trasferimento di oggetti mediante Java
- Il modello di esecuzione distribuita di oggetti
Event-driven programming: programming graphical interfaces (JavaFX/FXML, SWING)
- Event sources, event handlers, event-driven programming
- Organization and use of graphical interfaces in Java
- Model-View-Control architecture
Multithread programming:
- Concurrent execution of statements
- Threads in Java. Lifecycle of Threads
- Creation and synchronization of Threads
- Extension of the memory model to deal with Threads
- Synchronization problems and their solution with Java Threads
Network programming:
- Client-server architecture
- Java sockets.
- Polymorphism and object transfer in Java
- Modeling distributed execution of objects.
Testi consigliati e bibliografia
- Oggetto:
- Libro
- Titolo:
- Programmare in Java 11/Ed. - MyLab
- Anno pubblicazione:
- 2020
- Editore:
- Pearson
- Autore:
- Paul J. Deitel - Harvey M. Deitel
- ISBN
- Permalink:
- Note testo:
- Libro di testo.
- Obbligatorio:
- No
- Oggetto:
- Libro
- Titolo:
- Oggetti, concorrenza, distribuzione
- Anno pubblicazione:
- 2014
- Editore:
- Società editrice Esculapio
- Autore:
- Silvia Crafa
- ISBN
- Permalink:
- Note testo:
- Per consultazione. Anche in formato Kindle.
- Obbligatorio:
- No
- Oggetto: