mail unicampaniaunicampania webcerca

    Antonio ESPOSITO

    Insegnamento di ADVANCED SOFTWARE ENGINEERING AND MACHINE LEARNING

    Corso di laurea magistrale in INGEGNERIA INFORMATICA

    SSD: ING-INF/05

    CFU: 12,00

    ORE PER UNITÀ DIDATTICA: 96,00

    Periodo di Erogazione: Secondo Semestre

    Italiano

    Lingua di insegnamento

    ITALIANO

    Contenuti

    Approfondimento su argomenti di Ingegneria del Software, in particolare metodologie Agili. Metodologie di sviluppo a Microservizi e uso dei Container.
    Introduzione al Machine Learning con approfondimenti sulle principali tecniche di Classificazione e Regressione. Reti neurali e cenni sul Deep Learning

    Testi di riferimento

    Hands-On Machine Learning with Scikit-Learn, Keras, and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems, Aurélien Géron

    Obiettivi formativi

    Conoscenza approfondita delle metodologie agili di Ingegneria del Software, capacità di sviluppare in maniera critica progetti software complessi.
    Applicare tecniche di Machine Learning allo studio di dataset di natura diversa, conoscenza dei principali algoritmi di classificazione e regressione. Capacità di applicazione di tecniche basate su reti neurali e Deep Learning.

    Prerequisiti

    Conoscenza di base del linguaggio Python
    Conoscenze di base di Ingegneria del Software

    Metodologie didattiche

    Didattica frontale con presentazione di argomenti teorici
    Esercitazioni pratiche al calcolatore

    Metodi di valutazione

    La verifica finale verte sulla discussione di un elaborato, prodotto dagli studenti sulla base di assignmet che coprono tutti gli argomenti del corso.

    Programma del corso

    Modelli di Processo per lo Sviluppo del Software.
    Modelli Agili (SCRUM, XP).
    Modello Unified Process.
    Modello Dev-Ops.
    Modello Test Driven Dev.
    Requirement Engineering
    OOAD - Object Oriented Analysis and Design with UML and UP.
    Design Patterns.
    Architetture Software.
    Service Oriented Architecture:
    Architettura SOA
    Web Services: WSDL UDDI, SOAP, REST.
    Api-gateway e Api-management: OpenAPI (Swagger) vs GraphQL
    Microservizi.
    Architetture a Microservizi
    Tecniche di Deployment di Applicazioni a Microservizi (intro a containers)
    Strategie di Migrazione - Soluzione lift & shift
    Microservizi per la realizzazione del modello DevOps
    Componenti a supporto delle architetture a microservizi: Logging,Transaction tracing, Monitoring (ELK Stack: Elastisearch, Logstash,Kibana)"
    Business Processes.
    Analisi del Software e Reverse Engineering.
    Machine Learning per la Software Engineering.

    Tipologie di Learning: Supervised, Unsupervised; Batch, Incrementale; Reinforcement Learning.
    Valutazione delle Prestazioni: Funzioni Obiettivo; Parametri ed IperParametri; Tuning; KPIs; Training, Validation e Test; Convergenza, Generalizzazione ed Overfitting.
    Classificazione: Classificatore Bayesiano, Support Vector Machines, K-Nearest Neighbor, Decision Tree.
    Tecniche di Ensemble: Random Forest
    Regressione lineare, polinomiale, Lasso e Ridge.
    Clustering: K-means, clustering gerarchico.
    Tecniche di Riduzione della Dimensionalità: Principal Component Analysis, Linear Discriminant Analysis
    Neural Networks: Hopfield, Multilayers con Backpropagation; Deep Learning: Reti Convolutive e Ricorrenti, le reti LSTM.
    Word Embedding.

    English

    Teaching language

    Italian

    Contents

    In-depth study on Software Engineering topics, in particular Agile methodologies. Microservices development methodologies and use of containers.
    Introduction to Machine Learning with insights into the main Classification and Regression techniques. Neural networks and notes on Deep Learning

    Textbook and course materials

    Hands-On Machine Learning with Scikit-Learn, Keras, and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems, Aurélien Géron

    Course objectives

    In-depth knowledge of agile Software Engineering methodologies, ability to critically develop complex software projects.
    Apply Machine Learning techniques to the study of datasets of different nature, knowledge of the main classification and regression algorithms. Ability to apply techniques based on neural networks and Deep Learning.

    Prerequisites

    Basic knowledge of the Python language
    Basic knowledge of Software Engineering

    Teaching methods

    Frontal teaching with presentation of theoretical topics
    Practical computer exercises

    Evaluation methods

    The final exam focuses on the discussion of a paper produced by the students on the basis of assignmets that cover all the topics of the course.

    Course Syllabus

    Process Models for Software Development.
    Agile Models (SCRUM, XP).
    Unified Process Model.
    Dev-Ops model.
    Test Driven Dev Model
    Requirement Engineering
    OOAD - Object Oriented Analysis and Design with UML and UP.
    Design Patterns.
    Software Architectures.
    Service Oriented Architecture:
    SOA architecture
    Web Services: WSDL UDDI, SOAP, REST.
    Api-gateway and Api-management: OpenAPI (Swagger) vs GraphQL
    Microservices.
    Microservices architectures
    Application Deployment Techniques for Microservices (intro to containers)
    Migration Strategies - Lift & shift solution
    Microservices for the creation of the DevOps model
    Components to support microservice architectures: Logging, Transaction tracing, Monitoring (ELK Stack: Elastisearch, Logstash, Kibana)"
    Business Processes.
    Software Analysis and Reverse Engineering.
    Machine Learning for Software Engineering.

    Types of Learning: Supervised, Unsupervised; Batch, Incremental; Reinforcement Learning.
    Performance Evaluation: Objective Functions; Parameters and HyperParameters; Tuning; KPIs; Training, Validation and Test; Convergence, Generalization and Overfitting.
    Classification: Bayesian Classifier, Support Vector Machines, K-Nearest Neighbor, Decision Tree.
    Ensemble Techniques: Random Forest
    Linear, polynomial, Lasso and Ridge regression.
    Clustering: K-means, hierarchical clustering.
    Dimensionality Reduction Techniques: Principal Component Analysis, Linear Discriminant Analysis
    Neural Networks: Hopfield, Multilayers with Backpropagation; Deep Learning: Convolutional and Recurrent Networks, LSTM networks.
    Word Embedding.

    facebook logoinstagram buttonyoutube logotypelinkedin logotype