mail unicampaniaunicampania webcerca

    Antonio ESPOSITO

    Insegnamento di PROGRAMMAZIONE AD OGGETTI - ALGORITMI E STRUTTURE DATI

    Corso di laurea in INGEGNERIA ELETTRONICA E INFORMATICA

    SSD: ING-INF/05

    CFU: 12,00

    ORE PER UNITÀ DIDATTICA: 96,00

    Periodo di Erogazione: Annualità Singola

    Italiano

    Lingua di insegnamento

    Italiano

    Contenuti

    Algoritmi e Strutture Dati.
    L’insegnamento si propone come obiettivo formativo quello di fornire all’allievo le seguenti capacità:Analizzare problemi tipici e realizzare applicazioni che li risolvano utilizzando algoritmi e strutture dati standard in linguaggio JAVA, valutandone l’efficienza anche in maniera comparativaRealizzare progetti software in JAVA di piccole dimensioni impiegando sia strumenti case che la compilazione separata.
    Programmazione ad oggetti
    Analisi e progettazione di applicazioni orientate ad oggetti

    Testi di riferimento

    Algoritmi e Strutture Dati.
    Algoritmi e strutture dati in Java di Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser – Apogeo
    Programmazione ad oggetti
    C. S. Horstmann, G. Cornell, “Java 2 - I fondamenti”, Mc Graw Hill (2a edizione)

    Programmazione di base e avanzata con Java, Seconda Edizione, Walter Savitch, Pearson

    Obiettivi formativi

    Algoritmi e Strutture Dati.
    L’insegnamento ha l’obiettivo di approfondire gli aspetti relativi alla progettazione e realizzazione di algoritmi, utilizzando tecniche iterative e ricorsive e valutando l’efficienza dei programmi ottenuti e le strutture dati fondamentali e curandone la realizzazione in linguaggio Java. Conoscenza degli algoritmi e strutture dati fondamentali. Conoscenza dei paradigmi di programmazione iterativa e ricorsiva. Confronto di algoritmi sulla base dell’efficienza di memoria e di esecuzione.
    Programmazione ad oggetti
    Nel modulo di Programmazione a Oggetti vengono analizzati i principi della programmazione orientata agli oggetti. In particolare, viene illustrato come queste nozioni possano essere adottate per produrre software estensibile e riusabile.

    Prerequisiti

    Il corso presuppone che l’allievo abbia padronanza dei concetti relativi all’architettura hardware dei calcolatori, e alla programmazione di alto livello di tipo proceduralePropedeuticità: ELEMENTI DI PROGRAMMAZIONE; CALCOLATORI ELETTRONICI E RETI LOGICHE.

    Metodologie didattiche

    Lezioni frontali, esercitazioni assistite

    Metodi di valutazione

    Esame scritto e orale con eventuale discussione di elaborati progettuali individuali o di gruppo

    Altre informazioni

    Materiale didattico aggiuntivo sarà disponibile sul sito del corso a cura del docente

    Programma del corso

    Algoritmi e Strutture Dati.
    Introduzione al corso: definizione di Algoritmo e di Struttura Dati Astratta. Nozioni di Complessità spaziale e temporale.
    Richiami di Java: Ereditarietà; Interfacce e classi astratte; Tipi Generici.
    Analisi di algoritmi. Fondamenti di teoria della Computabilità.
    Strutture dati fondamentali: Array, liste concatenate e liste doppiamente concatenate
    Ricorsione: Analisi e progettazione di algoritmi ricorsivi.
    Algoritmi di ordinamento, selezione e ricerca.
    Strutture dati astratte: Liste FIFO e LIFO (pila e coda).
    Strutture dati dinamiche: Liste e Alberi.
    Lista e relativi metodi di accesso e manipolazione. Classe Iteratore per la classe Lista.
    Alberi generici, alberi binari e loro implementazione. Algoritmi di attraversamento di alberi: pre-order, post-order, breadth-first.
    Alberi di ricerca binari, bilanciati ed AVL.
    Mappe e tabelle hash
    Struttura Dati Grafo. Grafo Orientato. Algoritmi di attraversamento di grafi. Cammini minimi: algoritmi di Bellman-Ford, Dijkstra
    Alberi di Copertura di grafi; albero di copertura minimo.

    Programmazione ad oggetti
    Introduzione alla Programmazione ad Oggetti: Meccanismi di astrazione. Il concetto di modulo software. Incapsulamento e information hiding. Progettazione top-down e bottom-up. Dal Paradigma Procedurale al Paradigma OO. Classe come tipo dato astratto. Classi ed oggetti. Interfaccia.Introduzione a Java: Caratteristiche del linguaggio Java. Compilatori ed interpreti. Interprete Java (Java Virtual Machine). Bytecode. Collegamento dinamico. Compilazione on-the-fly. Concorrenza. Struttura di un’applicazione Java. Unità di compilazione: files .java e .class. Sintassi Java. Documentazione delle classi.Classi ed Oggetti: Attributi e metodi. Specificatori public, privati e protetta. Invocazione di metodi e passaggio di parametri. Chiamate di metodi interni ed esterni. Variabili locali e variabili static. Metodo costruttore. Oggetti come attributi di una classe. Interazione tra oggetti. Distruttore. Operazioni di finalizzazione. Specificatore this. I Packages. Classe ArrayList. Array di oggetti.Riuso del software: Composizione. Ereditarietà. Classe base e derivate. Overriding, overloading, shadowing. Qualificatore Final. Chiamate a Super.Estensione del software: Polimorfismo. Early e late binding. Classi astratte. Upcasting. Costruttori e distruttori. Ereditarietà multipla. Interfacce. Classi Astratte.Input/Output: Stream. I/O su file. Handling IOException. Incapsulamento di Stream.Eccezioni: Guarded region. Exception Handler. Definizione di classi derivate da Exception.Gestione del file system: Binary File e Text File. La classe File.Interfacciamento Grafica: Libreria di classi Swing. Frames. Panels. Layout Managers. Classe Graphics. Bottoni e menu. Gestione degli eventi in Java.Cenni di programmazione Java per piattaforma Android.

    English

    Teaching language

    Italian

    Contents

    Data Structures and Algorithms
    The goal of the course is to provide students with the following skills:• Analyze typical problems in order to design and implement, using Java Language, applications using standard algorithms and data structures and evaluate their efficiency also in a comparative manner• Development of small complete software projects in JAVA using both case tools and separate compilation.

    Textbook and course materials

    Data Structures and Algorithms
    Algoritmi e strutture dati in Java di Michael T. Goodrich, Roberto Tamassia, Michael H. Goldwasser – Apogeo

    Programmazione di base e avanzata con Java, Seconda Edizione, Walter Savitch, Pearson

    Course objectives

    Data Structures and Algorithms
    The module aims to illustrate the main data structures, the concepts and methodologies related to the design and implementation of algorithms, using iterative and recursive techniques and evaluating the efficiency of the obtained programs using the Java language. Understanding of algorithms and fundamental data structures. Understanding of the iterative and recursive programming paradigms. Comparison of algorithms based on memory efficiency and execution.

    Prerequisites

    The course attendance assumes a good knowledge of the concepts of computer hardware architecture and high-level procedural programming.Propaedeutic: ELEMENTI DI PROGRAMMAZIONE; CALCOLATORI ELETTRONICI E RETI LOGICHE.

    Teaching methods

    Lectures, assisted exercises

    Evaluation methods

    Written and oral examination with possible discussion of individual or group project works

    Other information

    Additional learning material are made available by the teacher on the web site of the course

    Course Syllabus

    Data Structures and Algorithms
    Introduction to the course: definition of Algorithm and of Abstract Data Structure. Notions of spatial and temporal complexity.
    Recalls of Java: Inheritance; Interfaces and abstract classes; Generic Types.
    Analysis of algorithms. Foundations of Computability theory.
    Basic data structures: Arrays, linked lists and doubly linked lists
    Recursion: Analysis and design of recursive algorithms.
    Algorithms for sorting, selection and searching.
    Abstract data structures: FIFO and LIFO lists (stack and queue).
    Dynamic data structures: Lists and Trees.
    List and related methods of access and manipulation. Class Iterator for the List class.
    Generic trees, binary trees and their implementation. Tree traversal algorithms: pre-order, post-order, breadth-first.
    Binary search trees, balanced and AVL.
    Maps and hash tables
    Graph Data Structure. Oriented graph. Graph traversal algorithms. Shortest-path tree algorithms; Bellman-Ford, Dijkstra.
    Graph coverage Trees. Minimum Spanning Trees.

    facebook logoinstagram buttonyoutube logotypelinkedin logotype