Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[W000914] - PROGRAMMAZIONE AD OGGETTIOBJECT - ORIENTED PROGRAMMING [Cognomi A-L]
Francesco CAUTERUCCIO
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea - [IT04] INGEGNERIA INFORMATICA E DELL'AUTOMAZIONE First Cycle Degree (3 years) - [IT04] COMPUTER AND AUTOMATION ENGINEERING
Dipartimento: [040040] Dipartimento Ingegneria dell'InformazioneDepartment: [040040] Dipartimento Ingegneria dell'Informazione
Anno di corsoDegree programme year : 2 - Primo Semestre
Anno offertaAcademic year: 2022-2023
Anno regolamentoAnno regolamento: 2021-2022
Obbligatorio
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: B - Caratterizzante
Settore disciplinareAcademic discipline: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

LINGUA INSEGNAMENTO LANGUAGE

Italiano

Italian


PREREQUISITI PREREQUISITES

Conoscenze informatiche di base e della programmazione imperativa, come ad esempio le conoscenze acquisite in un corso di Fondamenti di Informatica

Understanding of computer science fundamentals, including imperative programming


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

Lezioni frontali teoriche ed esercitazioni.
Le lezioni verteranno sugli argomenti del programma. Le esercitazioni permetteranno agli studenti di operare con i concetti appresi durante le lezioni frontali. Gli studenti dovranno possedere un computer portatile per svolgere le esercitazioni.

Lectures and workshops.
The lectures will focus on the topics involved in the course program. The workshops will allow students to work with the concepts presented during the lectures. Students will have to own a notebook to perform the assignments during the workshops.


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

L’insegnamento permette agli studenti di acquisire le nozioni fondamentali e le conoscenze avanzate della Programmazione ad Oggetti, anche tramite lo studio di un linguaggio di programmazione di riferimento. Tali conoscenze, integrando le nozioni acquisite nel corso di Fondamenti di Informatica, costituiranno degli approfondimenti che dovranno potenziare la comprensione della teoria dei linguaggi e dei vantaggi dei diversi paradigmi di programmazione. Il corso si completerà con una trattazione di alcune tecniche di programmazione e di alcune strutture dati avanzate utilizzati nella programmazione.


Capacità di applicare conoscenze e comprensione.

Al termine del corso lo studente sarà in grado di utilizzare in maniera appropriata i principi della programmazione ad oggetti e la sintassi del linguaggio adottato nel corso per sviluppare programmi di media complessità e con caratteristiche di flessibilità, rispondenza ai requisiti ed efficienza, scegliendo gli algoritmi e le strutture dati più adeguati per il particolare problema.


Competenze trasversali.

L’esecuzione di un progetto, che verrà svolto in gruppi o in autonomia e che porterà alla stesura di una relazione, contribuirà a migliorare sia la capacità comunicativa che deriva anche dal lavoro in gruppo, sia la capacità di apprendimento e di problem solving in autonomia.


Knowledge and Understanding.

The course enables students to acquire the fundamental notions and advanced knowledge of Object-Oriented Programming, also through the study of a reference programming languages. This knowledge, by integrating the knowledge gained during the course of Fundamentals of Computer Science will form the insights that will enrich the understanding of the theory of languages and of the advantages of different programming paradigms. The course will be completed with a discussion of some programming techniques and some advanced data structures used in programming.


Capacity to apply Knowledge and Understanding.

At the end of the course students will be able to use properly the principles of object-oriented programming and the syntax of the language used in the course to develop software of medium complexity, characterized by flexibility, compliance with the requirements and efficiency, choosing the most appropriate data structures and algorithms for the particular problem at hand.


Transversal Skills.

The execution of a project, which will be played in groups or independently and that will lead to the drafting of a report, will help improve both the communication skills that also stems from teamwork, and autonomous learning and problem solving skills.



PROGRAMMA PROGRAM

Il corso si suddivide in due macrosezioni: programmazione ad oggetti e algoritmi e strutture dati. Di seguito il dettaglio per ogni macrosezione.
Programmazione ad oggetti:
- UML per il paradigma ad oggetti: diagramma delle classi, degli oggetti, dei package e di sequenza
- Paradigma ad oggetti: concetti di classi, oggetti, messaggi, campi, metodi e parametri
- Introduzione a Java (sintassi, costrutti, compilazione ed esecuzione da linea di comando, utilizzo di un IDE)
- Stack e heap di un programma Java, riferimenti, aliasing
- Array e stringhe di caratteri
- Scrittura in standard output, lettura in standard input
- Modificatori di accesso, regole di visibilità, area dati di metodi e passaggio dei parametri
- Ereditarietà, assegnazione tra oggetti, dynamic type identification, casting
- Polimorfismo, collegamento dinamico ai metodi
- Overload e override, classe Object e metodi base
- Classi astratte ed interfacce
- Generics, collections, wrapper
- Gestione I/O
- Eccezioni ed errori, manipolazione delle eccezioni, costrutti try-catch e try-finally, debugger e processo di debugging
- Strumenti di produzione e gestione software
Algoritmi e strutture dati:
- Analisi di complessità temporale e spaziale, funzioni asintotiche, casi possibili
- Strutture dati complesse: alberi, heap, grafi
- Algoritmi di ordinamento avanzati: heapsort, mergesort, quicksort
Le esercitazioni copriranno tutto il programma, ad eccezione degli aspetti con inclinazione puramente teorica.

The course consists of two main sections: object-oriented programming, and data structures and algorithms. The detailed program is given below:
Object-oriented programming (OOP):
- UML for the OOP paradigm: class, object, package and sequence diagrams
- OOP: concepts of class, object, message, fields, methods and parameters
- Introduction to Java (language syntax, constructs, compilation and execution from command-line, using an IDE)
- Stack and heap of a Java program, references, aliasing
- Arrays and strings
- Writing in standard output, reading from standard input
- Access modifiers, visibility rules, rules for the passage of properties and methods
- Inheritance, object assignments, dynamic type identification, casting
- Polymorphism, dynamics linking of methods
- Overload and override, the Object class and base methods
- Abstract classes, interfaces
- Generics, collections, wrappers
- I/O management
- Exceptions and errors, try-catch and try-finally constructs, debugging
- Tool for software management and development
Data structures and algorithms:
- Temporal and spatial complexity analysis, asymptotic functions, possible cases
- Advanced data structures: trees, heaps, graphs
- Advanced sorting methods: heapsort, mergesort, quicksort
The workshops will cover the whole program, except for the purely theoretical aspects.


MODALITÀ DI SVOLGIMENTO DELL'ESAME DEVELOPMENT OF THE EXAMINATION
Modalità di valutazione dell'apprendimento.

La valutazione del livello di apprendimento degli studenti avviene sulla base del progetto sviluppato e delle risposte date, che verteranno sul progetto stesso e sui temi trattati nel corso, effettuate nella prova orale. Il livello di apprendimento è valutato attraverso due prove, da sostenere nello stesso appello. La prima prova consiste nello svolgimento autonomo di un progetto assegnato dal docente; lo stesso è da effettuarsi in un massimo di due persone utilizzando il linguaggio Java. La seconda prova consiste in una esposizione orale riguardante il progetto sviluppato e alcuni dei topic affrontati durante il corso.


Criteri di valutazione dell'apprendimento.

Per superare con esito positivo la prova pratica, lo studente dovrà dimostrare che il progetto svolto sia compatibile con le specifiche richieste dal docente, e che il lavoro di gruppo sia espressamente dichiarato e suddiviso in modo corretto. Per superare con esito positivo la prova orale, lo studente dovrà dimostrare di possedere una complessiva conoscenza dei contenuti dell’insegnamento, di aver sviluppato un pensiero computazionale adeguato alla risoluzione di problemi ed essere in grado di esporle nel modo più corretto possibile. Per superare con esito positivo l’esame, entrambe le prove poc’anzi descritte devono essere valutate positivamente, ovvero raggiungere la sufficienza in termini di completezza, esposizione e pertinenza.
La valutazione massima è attribuita agli studenti che dimostrano ottima capacità di analisi e di implementazione, oltre alla capacità di approcciarsi ad un problema sfruttando le tecniche e i concetti appresi durante il corso.


Criteri di misurazione dell'apprendimento.

Viene attribuito un voto in trentesimi, con eventuale lode.
Il voto minimo per il superamento dell’esame è 18/30.


Criteri di attribuzione del voto finale.

Il voto complessivo è dato dalla somma del voto conseguito nella prova pratica e orale.

La prova pratica permette di conseguire al più 24 punti. Una prova pratica è insufficiente quando si consegue un punteggio inferiore a 12. Se la prova pratica è insufficiente, lo studente non può sostenere l’orale.

La prova orale permette di conseguire al più 6 punti. Una prova orale non sufficiente può far decrementare il punteggio della prova pratica.

L’esame è valutato positivamente nel caso la somma di prova pratica e orale sia uguale o superiore a 18.

Nel caso di punteggio totale pari a 30, lo studente può conseguire la lode a fronte della dimostrazione di aver acquisito un approccio critico e saper applicare le tecniche e le metodologie studiate anche a contesti non osservati nel corso.


Learning Evaluation Methods.

The evaluation of the students’ ceiling of learning is based on the execution of the project and related questions. The questions are based on the project and on the topics covered in the course program. The questions will be administered to the students during the oral exam. The level of understanding and learning is evaluated via two exams, namely (i) project exam, and (ii) oral exam. The former consists of the execution of a coding project, that can be carried out either by a single or a pair of students using the Java programming language. The project has a theme and few specifics that the students must comply with. The latter, that is the oral exam, is based on an oral exposure given by the students regarding both the project and some of the topics covered in the course program.


Learning Evaluation Criteria.

In order to pass the project exam with a positive evaluation, the student should prove that the executed project complies with the requested specifics and, in case of a project carried out by a pair of students, that the amount of work has been equally distributed among them. To pass the oral exam with a positive evaluation, the student should prove to own an overall knowledge of the topics covered during the lessons. She/he should also prove to have developed a proper computational thinking related to problem solving and the capability of correctly exposing her/his reasoning. To pass the whole exam with a positive evaluation, both the project and oral exams should have been evaluated positively in terms of completeness, exposition and appropriateness.

The highest evaluation is attributed to the students able to prove optimal analytical and practical capabilities as well as being able to properly approach problems exploiting techniques and concepts acquired during the lessons.


Learning Measurement Criteria.

A mark in thirtieth is awarded, with possible praise.
The minimum mark for passing the exam is 18/30.


Final Mark Allocation Criteria.

The overall result is given by the sum of the marks obtained in the project and oral exams. The overall exam is evaluated positively whether the sum is equal or greater than 18.

The maximum achievable mark for the project exam is 24. The project exam is evaluated as inadequate if the achieved mark is lower than 12. If the project exam is evaluated as inadequate, the student cannot take the oral exam.

The maximum achievable mark for the oral exam is 6. The oral exam can determine a decrease of the mark obtained in the project exam.

In case of an overall result equal to 30, the student can pursue the praise by proving to have achieved a critical approach in front of problems and the capability of exploiting the acquired techniques and methodologies also in novel contexts.



TESTI CONSIGLIATI RECOMMENDED READING

Libro di testo:
- C. Horstmann. Concetti di informatica e fondamenti in Java, Apogeo Education, 2019.
Letture consigliate:
- C. Horstmann, G. Cornell. Core Java 2. Vol. 1: Fundamentals, Pearson, 2020.
- J. Arlow. UML e Unified Process. Analisi e progettazione object-oriented, McGraw-Hill, 2007.
- M. Goodrich, R. Tamassia, M. Holdwasser. Algoritmi e Strutture dati in Java, Apogeo Education, 2015.
Le slide utilizzate nelle lezioni saranno fornite dal docente. Materiale didattico, risorse e link utili saranno presenti su piattaforma di Ateneo: https://learn.univpm.it

Selected book:
- C. Horstmann. Concetti di informatica e fondamenti in Java, Apogeo Education, 2019.
Suggested readings:
- C. Horstmann, G. Cornell. Core Java 2. Vol. 1: Fundamentals, Pearson, 2020.
- J. Arlow. UML e Unified Process. Analisi e progettazione object-oriented, McGraw-Hill, 2007.
- M. Goodrich, R. Tamassia, M. Holdwasser. Algoritmi e Strutture dati in Java, Apogeo Education, 2015.
Slides used during the lessons will be provided by the teacher. Teaching materials, resources and useful links will be provided on the e-learning platform of the University: https://learn.univpm.it


E-LEARNING E-LEARNING

No

No


Scheda insegnamento erogato nell’A.A. 2022-2023
Le informazioni contenute nella presente scheda assumono carattere definitivo solo a partire dall'A.A. di effettiva erogazione dell'insegnamento.
Academic year 2022-2023

 


Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427