mail unicampaniaunicampania webcerca

    Beniamino DI MARTINO

    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

    Design Patterns, Gamma, Helm, Johnson, Vlissides; Design Patterns in Java; Pattern Oriented Software Architecture; UML and the Unified Process, Arlow Neustadt; 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

    Prove Intracorso o equivalente prova scritta, colloquio orale.

    Altre informazioni

    No

    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

    Design Patterns, Gamma, Helm, Johnson, Vlissides; Design Patterns in Java; Pattern Oriented Software Architecture; UML and the Unified Process, Arlow Neustadt; 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

    Written and oral exam.

    Other information

    No

    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