L'insegnamento presenta una breve introduzione alle problematiche della produzione del software (ciclo di vita, attributi di qualita' del software, ecc.) ed approfondisce il paradigma di produzione del software orientato agli oggetti, esemplificato dal linguaggio Java. Java rappresenta oggi il punto di snodo per la produzione di applicazioni distribuite su piattaforme eterogenee.
The course provides a brief introduction to the aspects pertaining software production (life cycle, quality attributes, etc.) and specifically investigates the object-oriented programming paradigm using the Java language. Java is today considered as the cornerstone for the production of distributed applications running on heterogeneous platforms.
Le conoscenze trasmesse riguardano i concetti fondamentali della programmazione a oggetti (classi, oggetti, attributi, metodi, ereditarieta' e interfacce) e le caratteristiche principali del linguaggio Java.
Le abilita' che saranno acquisite riguardano la padronanza del linguaggio Java, la capacita di analizzare i requisiti di un problema software di complessita' ragionevole allo scopo di definire un idoneo progetto orientato agli oggetti e la capacita di implementare e collaudare le classi del progetto mediante l'ambiente di sviluppo Eclipse.
Students will learn the core notions of object-oriented programming (classes, objects, attributes, methods, inheritance, and interfaces) as well as the main characteristics of the Java language.
The skills to be acquired encompass the mastery of the Java language, the ability to analyze software requirements in order to produce a suitable object-oriented design, and the ability to implement and test Java classes by using the Eclipse development environment and related tools.
I prerequisiti riguardano i costrutti di base della programmazione (tipi e strutture dei dati, istruzioni di controllo, sotto-programmi e chiamate di sotto-programmi) e la soluzione di problemi semplici mediante la scrittura di algoritmi (ad esempio in linguaggio Python o C).
The knowledge of core programming constructs (types and data structures, control statements, functions and function calls) and the ability to develop basic algorithms to solve simple problems (e.g., using the C or Python programming languages).
Organizzazione di massima delle lezioni:
- Produzione del software, criticita, processi e strumenti (1,5 ore)
- Programmazione a oggetti, information hiding, encapsulation ed altri concetti chiave (1,5 ore)
- Linguaggio Java, Java Virtual Machine, bytecode (1,5 ore)
- Ambienti: SDK ed Eclipse (1,5 ore)
- Java, concetti base: tipi, istruzioni di controllo, ecc., confronto con altri linguaggi (10,5 ore)
- Classi: dichiarazione, uso, private, public (5 ore)
- Gestione della memoria (1,5 ore)
- Package: dichiarazione ed uso (1,5 ore)
- Ereditarieta', interfacce e polimorfismo (7,5 ore)
- Collezioni: List, Map (6 ore)
- Eccezioni: throw, throws, catch (1,5 ore)
- Input/Output (3 ore)
- Utilizzo di librerie di terze parti (3 ore)
- Utilizzo di basi di dati (3 ore)
- Test e JUnit (1,5 ore)
Tentative organization of in-class lessons:
- Software production, processes (build and fix, waterfall, prototyping), tools and risks (1,5 hours)
- Object orientation, information hiding, encapsulation and other key concepts (1,5 hours)
- The Java programming language, Java Virtual Machine, bytecode (1,5 hours)
- Tools: SDK and Eclipse (1,5 hours)
- Java basics: types, control statements, etc., comparison with other languages (10,5 hours)
- Classes: definition, new, private, public (5 hours)
- Memory management (4,5 hours)
- Packages: declaration and use (1,5 hours)
- Inheritance, interfaces and polymorphism (7,5 hours)
- Collections: List, Map (9 hours)
- Exceptions: throw, throws, catch (1,5 hours)
- Input/Output (3 hours)
- Testing and JUnit (1,5 hours)
L'insegnamento prevede 50 ore di lezione in aula, 15 ore di esercitazione in aula e 30 ore di esercitazione laboratorio. In ciascuna esercitazione di laboratorio, organizzata generalmente su 2 settimane (1,5 ore a settimana per squadra), verranno approfonditi aspetti specifici del linguaggio Java mediante esercizi da svolgere calcolatore (per i quali verra' successivamente pubblicata, e presentata nelle ore di esercitazione in aula, la soluzione). Le esercitazioni, completate eventualmente a casa e valutate secondo le procedure ed i criteri d'esame, possono assegnare ulteriori 2 punti che concorrono a determinare il voto finale (solo in caso di esame sufficiente).
The courses comprises 50 hours devoted lessons in class, 15 hours devoted to exercise sessions in class and 30 hours devoted to exercise sessions in the laboratory. During sessions in the laboratory, each organized usually over 2 weeks and aligned with in-class activities, specific aspects of the Java language will be analyzed by means of exercises to be developed at the PC. Solutions to the exercises will be later published online and presented to students during exercise sessions in class. By completing the exercises (possibly at home), students will get up to 2 additional points that will concur to the determination of the final grade (only in case of positive grade for the exam).
In aggiunta al materiale utilizzato dal docente in aula ed in laboratorio (lucidi, dispense, progetti Java, ecc.), reso disponibile in formato elettronico tramite il Portale della Didattica, potra essere utile consultare i seguenti testi per approfondire determinati aspetti dell'insegnamento:
- Cay S. Horstmann, "Core Java, Volume I: Fundamentals", 11th Edition, Pearson, 2018.
- B. Eckel, "Thinking in Java", 4th Edition, Pearson, 2006 (disponibile anche in lingua Italiana, versione digitale scaricabile liberamente).
In addition to the material used by the teacher in the classroom and in the laboratory (slides, handouts, Java projects, etc.), which is made available on the Portale della Didattica, it might be helpful to consider the following books, which could provide further insight in several topics of the course:
- Horstmann, C., Cornell G., "Core Java, Volume I: Fundamentals", 9th Edition, Pearson, 2013.
- Eckel, B., "Thinking in Java", 4th Edition, Pearson, 2006 (electronic version: http://www.bruceeckel.com/).
Slides; Libro di testo; Esercitazioni di laboratorio; Esercitazioni di laboratorio risolte; Video lezioni dell’anno corrente; Strumenti di auto-valutazione;
Lecture slides; Text book; Lab exercises; Lab exercises with solutions; Video lectures (current year); Self-assessment tools;
E' possibile sostenere l’esame in anticipo rispetto all’acquisizione della frequenza
You can take this exam before attending the course
Modalità di esame: Test informatizzato in laboratorio;
Exam: Computer lab-based test;
...
L'esame, della durata indicativa di 2 ore, si svolge al calcolatore in laboratorio e consiste nella scrittura di un programma in linguaggio Java che realizzi i requisiti forniti a partire da un progetto embrionale fornito dal docente. Il progetto richiede allo studente di mettere in pratica i diversi concetti della programmazione ad oggetti trattati nell'insegnamento (utilizzo della classi fornite, definizione di nuove classi, creazione di oggetti, accesso ad attributi e metodi, applicazione dell'ereditarieta' ed uso delle interfacce, creazione di collezioni, gestione delle eccezioni ed input/output). Il voto e' assegnato in base alla bonta' dell'elaborato consegnato misurata in termini di funzionalita' correttamente implementate. Durante l'esame sara' possibile utilizzare tutto il materiale reso disponibile dal docente come pure libri di testo ed appunti in formato cartaceo o digitale (purche' caricato sul calcolatore prima dell'inizio dell'esame). L'accesso ad Internet dal calcolatore sara' disabilitato.
Gli studenti e le studentesse con disabilità o con Disturbi Specifici di Apprendimento (DSA), oltre alla segnalazione tramite procedura informatizzata, sono invitati a comunicare anche direttamente al/la docente titolare dell'insegnamento, con un preavviso non inferiore ad una settimana dall'avvio della sessione d'esame, gli strumenti compensativi concordati con l'Unità Special Needs, al fine di permettere al/la docente la declinazione più idonea in riferimento alla specifica tipologia di esame.
Exam: Computer lab-based test;
The exam, whose duration is approximately 2 hours, takes place on a PC at the laboratory, and consists in writing a Java program based on the requirements provided starting from an embryonal project provided by the teacher. The project requires the student to apply the various concepts of object-oriented programming tackled in the course (use of classes provided, definition of new classes, object creation, access to attributes and methods, application of inheritance principles and use of interfaces, setup of collections, exception handling and input/output). The grade is assigned by considering the number of requirements correctly implemented. During the exam it is possible to consult all the material made available by the teacher as well as books and notes both in paper and digital format (digital contents have to be uploaded on the PC before the exam starts). Internet access is disabled.
In addition to the message sent by the online system, students with disabilities or Specific Learning Disorders (SLD) are invited to directly inform the professor in charge of the course about the special arrangements for the exam that have been agreed with the Special Needs Unit. The professor has to be informed at least one week before the beginning of the examination session in order to provide students with the most suitable arrangements for each specific type of exam.