Laurea in Informatica

Academic program

×
Print
Course
INGEGNERIA DEL SOFTWARE
Course ID
MF0221
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CODETTA RAITERI Daniele
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il corso tratta le fasi del processo di sviluppo di sistemi software: specifica, progettazione, implementazione, collaudo e manutenzione. Inoltre viene introdotto il linguaggio UML per la specifica e la progettazione di sistemi. L'attività di laboratorio consiste nella preparazione di diagrammi UML tramite un apposito editor, e la loro traduzione in codice.
The course deals with the stages of the development of software systems: specification, design, implementation, validation and verification, maintenance. Moreover, the UML language for the specification and design of systems is introduced. The activity in the laboratory consists of preparing UML diagrams by means of a specific editor, and their translation into code.
Testi di riferimento/Textbooks
- I. Sommerville, "Ingegneria del software", Pearson Education Italia - M. Fowler, "UML distilled", Pearson Education Italia
- I. Sommerville, "Software Engineering", Addison Wesley - M. Fowler, "UML distilled", Addison Wesley
Obiettivi formativi/Mission
Il corso prevede una parte teorica e una parte di laboratorio. La parte teorica tratta il processo dell'Ingegneria strutturato nelle fasi di specifica, progettazione, implementazione, collaudo e manutenzione. Lo scopo e' mostrare come tale processo puo' essere applicato allo sviluppo di sistemi software. La parte di laboratorio introduce il linguaggio UML per la specifica e la progettazione di sistemi. L'attività in laboratorio consiste nella preparazione di diagrammi UML relativi ad un determinato sistema software, attraverso l'uso di un editor UML. Questo permette di prendere confidenza con tali diagrammi e approfondirne la conoscenza. Conoscenza e comprensione: fasi dell'Ingegneria, aspetti formali dei vari tipi di diagrammi UML. Capacità di applicare conoscenza e comprensione: applicazione delle fasi dell'Ingegneria allo sviluppo di un sistema software, ed in particolare, - studio del dominio applicativo; - deduzione dei requisiti dal dominio; - modellazione del dominio e dei requisiti in UML; - definizione e modellazione in UML di un'architettura software adatta a realizzare i requisiti; - definizione e modellazione in UML del comportamento dei componenti del sistema durante l'esecuzione di un certo requisito, con un livello di dettaglio tale da consentire l'implementazione del requisito in un linguaggio di programmazione. Autonomia di giudizio: studio e definizione in modo autonomo del dominio applicativo, dei requisiti, dell'architettura e del comportamento del sistema. Abilità comunicative: - comunicazione e coordinazione all'interno del gruppo di lavoro; - esprimere i requisiti del sistema con diversi gradi di dettaglio; - stesura dei diagrammi UML in modo completo, dettagliato e coerente, al fine di renderli comprensibili a qualunque programmatore. Capacita' di apprendimento: acquisire la terminologia dell'Ingegneria, organizzare lo sviluppo di un sistema secondo le fasi dell'Ingegneria, modellare gli aspetti di specifica e progettazione tramite un linguaggio formale quale UML.
The course consists of a theoretical section and a laboratory section. The theoretical section deals with the Engineering process structured in the following stages: specification, design, implementation, verification & validation, maintenance. The aim is showing how such process can be applied to the development of software systems. The laboratory section introduces the UML language for the specification and the design of systems. The activity in the laboratory consists of preparing UML diagrams about a certain software system, by means of an UML editor. This allows the students to become familiar with such diagrams and improve the knowledge of them. Knowledge and comprehension: stages of Engineering, formal aspects of the several kinds of UML diagrams. Ability to apply knowledge and comprehension: application of the Engineering stages and UML to the development of a system software, and in particular, - the study of the application domain; - the requirement elicitation from the domain; - UML modeling of the domain and the requirements; - definition and UML modeling of a software architecture able to realize the requirements; - definition and UML modeling of the component behaviour during the execution of a specific requirement, with a detail level allowing the programmer to implement the requirement. Judgement autonomy: study and definition in an autonomous way, of the application domain, the requirements, the system architecture and behaviour. Communication abilities: - communication and coordination inside the working group; - expressing the system requirements with different levels of detail; - designing the UML diagrams in a complete, detailed, and coherent way, with the goal of making them clear to any programmer. Learning capacity: acquiring the terminology of Engineering, planning the development of a system according to the stages of Engineering, modeling specification and design aspects by means of a formal language such as UML.
Prerequisiti/Required background knowledge
Conoscenze acquisite nei corsi di Programmazione ad oggetti e Basi di dati.
Knowledge acquired in the Object programming and Database courses.
Metodi didattici/Teaching methods
Il corso prevede lezioni frontali in aula e lezione pratiche in laboratorio. Modalità: le lezioni frontali si occupano di spiegare le fasi dell'Ingegneria e come queste si possono applicare allo sviluppo di un sistema software. Inoltre si presenta il linguaggio UML sia dal punto di vista formale sia dal punto di vista applicativo mostrando come può essere utilizzato per modellare il dominio applicativo, i requisiti, l'architettura, il comportamento del sistema, e per supportare la scrittura del codice. Strumenti: Un caso di studio specifico è utilizzato durante le lezioni frontali per mostrare come progettare il sistema a partire dalla deduzione dei requisiti dal dominio applicativo. Il caso di studio viene progressivamente sviluppato durante le lezioni riguardanti l'applicazione pratica delle fasi dell'Ingegneria e di UML. Lo scopo del caso di studio è fornire agli studenti un esempio concreto di applicazione delle procedure viste nel corso. La preparazione da parte degli studenti di un proprio progetto in UML è richiesto durante le ore in laboratorio. Tale progetto deve avere gli stessi contenuti in termini di specifica e progettazione. Lo scopo del progetto è l'applicazione pratica da parte degli studenti delle stesse procedure viste durante le lezioni frontali. Un apposito editor UML (Visual Paradigm) è utilizzato sia in aula sia in laboratorio, per modellare il caso di studio e per preparare il progetto. Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete) che contiene le slide del corso, i tutorial su UML, i diagrammi UML del caso di studio, le istruzioni per l'editor UML, alcune prove scritte del passato, ecc.
The course consists of frontal lectures and laboratory lectures. Modality: the frontal lectures explain the stages of Engineering and how they can be applied to the development of a software system. Moreover the UML language is presented from both the formal point of view and the application point of view, showing how it can be used to model the application domain, the requirements, the system architecture and behaviour, and to support code writing. Tools: A specific case study is used during the frontal lectures to show how to design the system, starting from the elicitation of requirements from the application domain. The case study is gradually developed during the lectures about the practical application of Engineering stages and UML. The goal of the case study is providing a concrete example of application of the procedures presented in the course. The preparation by the students of their own project in UML, is required during the laboratory lectures. Such project must have the same contents in terms of specification and design. The goal of the project is the practical application by the students, of the same procedures presented during the frontal lectures. A specific UML editor (Visual Paradigm) is used in both kinds of lectures, to model the case study and prepare the project. The course has its own page in the platform DIR (Didattica in Rete) which contains the slides, the tutorials about UML, the UML diagrams of the case study, the instructions for the UML editor, several written tests in the past, etc.
Altre informazioni/Further information
Durante il corso sono previste scadenze per le consegne dei vari diagrammi UML preparati dagli studenti. Ciò viene fatto tramite uno strumento di condivisione dei file (Git), e consente di controllare periodicamente quanto prodotto dagli studenti. Per la parte di teoria non sono previste prove in itinere.
During the course, deadlines are planned for the deliveries of the UML diagrams prepared by the students. This is done by means of a file sharing tool (Git) and pernits the periodic control of the students' work. For the theory, no partial tests will take place.
Modalità di verifica dell'apprendimento/Assessment methods
Per gli studenti che frequentano il corso, l'esame è composto da due parti: 1) la consegna, alla fine del corso, del progetto realizzato durante le lezioni di laboratorio; 2) una prova scritta riguardante la parte di teoria da sostenere sempre alla fine del corso. Per sostenere la prova scritta è necessario aver consegnato il progetto alcuni giorni prima. 1) Nella prova scritta si verificano la conoscenza delle varie fasi del processo dell'Ingegneria, l'acquisizione della terminologia dell'Ingegneria e l'applicazione di alcuni metodi. L'esame scritto prevede sia domande (circa 10) sui concetti teorici, sia esercizi applicativi (circa 3) relativi ai metodi. Ad ogni domanda e ad ogni esercizio corrisponde un punteggio dipendente dalla rilevanza, dalla complessità e dalla lunghezza della risposta attesa. Durante la prova scritta non è consentita la consultazione del materiale del corso o di manuali. Sulla piattaforma DIR, nella pagina del corso, ci sono esempi di prove scritte del passato. 2) La valutazione del progetto si basa sulla qualità dei diagrammi UML realizzati, in termini di precisione, coerenza e completezza. Ad ogni diagramma corrisponde un punteggio dipendente dalla complessità del tipo di diagramma e dalla sua correttezza formale. Il voto finale è dato dalla media tra i voti dell'esame scritto e del progetto consegnato. E' possibile sostenere una prova orale per migliorare il voto, agli appelli. Per gli studenti che non frequentano il corso è prevista una prova orale su tutto il programma del corso (teoria e UML), da sostenere agli appelli. La prova orale prevede la discussione di un paio di argomenti della parte di teoria, un esercizio relativo ai metodi visti in questa parte, circa 4 domande sugli aspetti formali di UML, un esercizio relativo ad un diagramma UML.
For the students attending the course, the exam consists of two parts: 1) the delivery, at the end of the course, of the project realized during the laboratory lectures; 2) a written test concerning the theory, still at the end of the course. The participation to the written test requires the delivery of the project several days before the test. 1) The knowledge of the Engineering stages, the knowledge of the Engineering terminology, and the application of specific methods, are verified in the written test which is composed by both questions (about 10) about theoretical concepts, and practical exercises (about 3) about the methods. A score is associated with each question and each exercise, and depends on the relevance, complexity and length of the expected answer. During the written test, consulting the course materials or manuals is not allowed. The DIR platform, in the course page, contains examples of written tests in the past. 2) The evaluation of the project is based on the quality of the realized UML diagrams, in terms of precision, coherence, and completeness. A score is associated with each diagram and depends on the complexity of the diagram type and the diagram correctness. The final score is given by the average of the scores of the written test and of the delivered project. The final score can be improved by an oral exam. For the students not attending the course, the exam is oral and concerns all the topics of the course (theory and UML). The oral exam consists of the discussion of a couple of topics from theory, one exercise about the methods presented in this part, about 4 questions about the formal aspects of UML, one exercise about a type of UML diagram.
Programma esteso/Content
- Introduzione all'Ingegneria del Software - Prodotto software e Processo software - Specifica dei requisiti di sistemi - Specifica con UML - Progettazione di sistemi - Progettazione con UML - Da UML al codice - Collaudo di sistemi - Manutenzione di sistemi - Gestione del progetto - Modelli di processo software
- Introduction to the Software Engineering - Software product and software process - System requirements specification - Specification using UML - System design - Design using UML - From UML to code - System verification and validation - System maintenance - Project management - Software process models
Risultati di apprendimento attesi/Intended learning objectives
Lo studente deve acquisire le seguenti conoscenze: - passi necessari per realizzare un sistema software a partire dalla richiesta di un committente, fino alla consegna, secondo il processo dell'Ingegneria; lo scopo è acquisire un metodo di lavoro applicabile a livello aziendale. - terminologia dell'Ingegneria; lo scopo è comprendere il linguaggio utilizzato dagli ingegneri. - capacità di modellare il dominio applicativo, i requisiti, l'architettura e il comportamento del sistema tramite diagrammi UML. Lo scopo è fornire anticipatamente tutte le informazioni necessarie per l'implementazione del sistema. - scrittura del codice seguendo i diagrammi UML.
The student must acquire the following notions: - steps necessary to realize a software system, from the customer's requests, to the delivery, according to the engineering process; the goal is learning a working method applicable in a software house. - terminology of engineering; the goal is the comprehension of the language used by engineers. - ability to model the application domain, the requirements, the architecture, and the behaviour of the system by means of UML diagrams. The goal is providing all the information necessary to implement the system. - writing code by following UML diagrams.
×
Print
Course
CYBER SECURITY 1
Course ID
MF0372
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
VALENZA Fulvio
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Introduzione ai principi fondamentali di sicurezza delle reti e di crittografia, descrizione delle tecniche fondamentali, ed esempi di applicazioni e protocolli.
Testi di riferimento/Textbooks
William Stallings, Cryptography and Network Security, quinta o sesta edizione, Pearson
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: conoscere i principi basilari della sicurezza informatica, le tecniche crittografiche fondamentali e i dispositivi essenziali per la protezione di una rete di calcolatori. Applicazione di conoscenza e comprensione: saper analizzare il problema proposto e proporre strumenti di analysi e protezione. Autonomia di giudizio: corretta percezione dei rischi di sicurezza e del modo in cui gli aspetti di sicurezza informatica si intrecciano con l'organizzazione di una rete. Abilità comunicative : acquisizione della terminologia tecnica specifica dell'area e capacità di discutere di aspetti di sicurezza, e di meccanismi di protezione. Inoltre lo studente migliorerà la propria padronanza della lingua inglese a livello tecnico informatico. Capacità di apprendere: avendo appreso i principi findamentali sarà in grado in futuro di apprezzare e valutare tecnologie e protocolli nuovi che si basano sugli stessi principi.
Prerequisiti/Required background knowledge
Conoscenza del funzionamento delle reti di calcolatori, programmazione in Java, nozioni base di utilizzo di Unix.
Metodi didattici/Teaching methods
Lezioni Frontali e Laboratori Didattici
Altre informazioni/Further information
Possibilità di eseguire progetti
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto
Programma esteso/Content
-Introduzione alla sicurezza. Vulnerabilità e requisiti di sicurezza. - Politica di sicurezza - Crittografia a chiave simmetrica. Sistemi di cifratura a blocchi e a flusso. Principi di confusione e diffusione. DES e 3DES, AES, RC4. Cifratura di messaggi lunghi. - Crittografia a chiave pubblica. RSA, Diffie-Hellman e DSA: uso, attacchi, protocolli e standard.Introduzione alla crittografia a curve ellittiche: ECDH ed ECDSA. - Confronto tra i sistemi di crittografia a chiave pubblica e a chiave simmetrica. Schema ibrido. Scambio di segreti e generazione di chiavi simmetriche. IES ed ECIES. - Funzioni di hash crittograficamente sicure. Collisioni. Struttura delle funzioni hash. Esempi di funzioni hash. - Message Authentication Codes. Confronto con le funzioni hash. HMAC. - Autenticazione di messaggi a chiave pubblica e non ripudiabilità. - Il tempo: nonce e timestamp. Sincronizzazione. - Certificati digitali. Autorità di certificazione e Registration Authority. Liste di revoca. Protocollo OCSP. - Schema Autentication Authorization Accounting (AAA). Autenticazione: paradigmi login/password, challenge/response e timestamp. - VPN. Cenni su IPsec, SSL/TLS, SSH. - Firewall. Architettura di un firewall. Principi fondamentali. Bastion Host. DMZ. - Filtri di pacchetti statici e dinamici. Access list. Proxy.
Risultati di apprendimento attesi/Intended learning objectives
Descrivere i requisiti di sicurezza Descrivere i tipi di attacchi Spiegare le differenze tra la crittografia a chiave simmetrica e quella a chiave pubblica Spiegare cos'è un cifrario e saper distinguere tra le varie classi di cifrari Spiegare la funzione e i requisiti delle funzioni hash in crittografia Spiegare come si ottengono meccanismi per garantire l'integrità Spiegare le caratteristiche e il funzionamento della firma digitale Spiegare cosa sono i certificati digitali e illustrarne la funzione Spiegare i meccanismi per l'autenticazione (identificazione sicura) Spiegare i principi di sicurezza delle reti e illustrare gli strumenti che si utilizzano in questo ambito Analizzare i requisiti di sicurezza garantiti da un protocollo proposto Analizzare le funzionalità e i limiti di strumenti diversi come filtri di pacchetto a livello rete e proxy o filtri di pacchetti a livello applicativo
×
Print
Course
PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE
Course ID
MF0243
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GIORDANA Attilio
Teachers
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Annuale
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
- Architettura delle reti informatiche locali. - Architettura e progettazione delle applicazione di rete di tipo Event-Driven. - Fog-computing. Internet of Things - Sviluppo in laboratorio di una applicazione di rete Event-Driven.
- Local Area Network architectures - Architecture and Design of Event-Driven Applications - Fog-computing, Internet of Things - Design and implementation of a network application based on an Event-Driven architecture
Testi di riferimento/Textbooks
Autori: James F. Kurose, Keith W. Ross Titolo: RETI DI CALCOLATORI E INTERNET - Un approccio top-down Casa editrice: Addison Wesley (2005), ISBN 88-7192-225-5. Autori Chris Richardson Titolo: MICROSERVICES PATTERS, wth examples in Java. Casa editrice: Manning, Shelter Island.
Author: James F. Kurose, Keith W. Ross Title: RETI DI CALCOLATORI E INTERNET - Un approccio top-down Publisher: Addison Wesley (2005), ISBN 88-7192-225-5. Author: Chris Richardson Title: MICROSERVICES PATTERS, wth examples in Java. Publisher: Manning, Shelter Island.
Obiettivi formativi/Mission
Insegnare agli studenti a progettare un'applicazione di rete concepita secondo i moderni cirteri di progettazione: API-rest, micro-servizi, architettura event-driven.
To develop the capability of designing a network application based on the concept of distribuited micro-services.
Prerequisiti/Required background knowledge
Lo studente deve avere acquisito le nozioni base relative alle reti informatiche (corso di Reti -I), la progettazione del software (Ingegneria del Software e Programmazione ad oggetti) e della programmazione WEB.
The course assumes that the student have the fundamental notions in software engineering and in computer networks, thought in the courses of software engineering, object programming, Web Programming and Computer network-I.
Metodi didattici/Teaching methods
l corso si avvale di: - Lezioni frontali (per un totale di 48 ore). - Fasi di lavoro guidato in laboratorio (per un totale di 24 ore). - Fasi di lavoro individuali
The course includes: Lectures (48 hours) Activity assisted by the teacher (24 hours). Individual activity self-organized by the student.
Modalità di verifica dell'apprendimento/Assessment methods
La verifica dell'apprendimento si articola in quattro fasi: - Valutazione di esercizi propedeutici svolti durante il corso - Colloquio orale con il docente concernente gli aspetti metodologici - Dimostrazione del funzionamento del progetto sviluppato - Valutazione del rapporto tecnico conclusivo concernente il progetto svolto.
The assessment of the notions acquired by the student includes four steps: An evaluation of exercizes assigned during the course progression. An oral discussion concerning the methodological fundamentals. A demonstration of the working prototype developed by the student. The evaluation of a technical report written by the student.
Programma esteso/Content
Il programma si ariticola in due moduli corredati di una fase di sviluppo guidato in laboratorio. Modulo 1: Datalink, Ethernet, ARP, switch (3h) Introduzione alle reti wireless: trasmissione dei segnali via radio, wi-fi, bluetooth, ...(7h) Applicazioni distribuite: comunicazine attraverso reti private e pubbliche. Message brokers (4). Mosquitto, RabbitMQ (4h). API Rest: principi generali, scoperta degli URI, gestione delle versioni. Sicurezza e autenticazione (4h): a. Autenticazione e sicurezza in Mosquitto. b. Autenticazione e sicurezza in RabbitMQ. OAuth 2.0: autenticazione, token, utilizzo del token (4h) Utilizzo di Keycloak (2h). Modulo 2: Architetture a Microservices: server stateless. approccio RPC, approccio Event-driven (2h). Architetture IoT+Microservices (2h) Tecniche di progettazione: a. Domain driven Design,(4h) b. Event Sourcing Design.(4h). Accesso ai Servizi tramite Gateway REST.(2h). Tecniche di Deployment (4h) Sincronizzazione nelle Architetture a Microservices: saghe. (4h) Laboratorio: Illustrazione progetti (4h) Progettazione di Un gateway (2h) Progettazione di un microservizio (DDD)(2h) Progettazione di una saga (2h). Laboratorio: sviluppo di una applicazione distribuita seguendo lo schema proposto negli esempi forniti dal docente.
The program is structured into two methodological modules plus a laboratory module. Module 1: Datalink, Ethernet, ARP, switches (3h). Wireless Networks: signial transmission techniques, wifi, Bluetooth, ZigBee (7 h). Distributed application architecture: Communication through private and public networks, Message Brokers (4h). Mosquitto, RabbitMQ (4h). API-rest: principles, URI discovery, version handling. Authentication and Security (4h): a. Mosquitto. b. RabbitMQ. c. OAuth2.0: Authentication, token generation and handling (4h). Use of Keycloak (2h). Module 2: Micro-service architectures: Stateless servers, RPC based communication, Message broker based communication (2h). IoT+Microservice architectures (2h). Design Patterns: a. Domain driven design (4h). b. Event Sourcing Design (4h). server access from clients via REST Gatway (2h). Deployment techniques (4h). Distribuited synchronization in microservies: sagas (4h). Architecture examples for Gateway (2h), microservice (2h), saga (2h). Project: Students are required to develop a network application following the design patterns provided in the examples provided by the teacher.
Risultati di apprendimento attesi/Intended learning objectives
Ci si attende che lo studente acquisisca la capacità di progettare e realizzare una applicazione di rete Event-Driven distribuita.
We expect that the student will acquire the capability of designing and implementing a distributed architecture following the stet of the art paradigms.
×
Print
Course
CYBER SECURITY 1
Course ID
MF0371
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
EGIDI Lavinia
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Introduzione ai principi fondamentali di sicurezza delle reti e di crittografia, descrizione delle tecniche fondamentali, ed esempi di  applicazioni e protocolli.
Introduction to the basic principles of network security and cryptography, description of the fundamental techniques, applications and protocols.
Testi di riferimento/Textbooks
William Stallings, Cryptography and Network Security, quinta o sesta edizione, Pearson oppure Maurizio Cinotti, Internet Security, terza edizione, Hoepli Informatica, ISBN 978-88-203-3895-4 (questo libro è fuori catalogo ma ancora valido sotto molti aspetti; è disponibile presso la biblioteca del Dipartimento) Del materiale aggiuntivo è fornito sul sito online del corso.
William Stallings, Cryptography and Network Security, fifth or sixth edition, Pearson or Maurizio Cinotti, Internet Security, third edition, Hoepli Informatica, ISBN 978-88-203-3895-4 (this book is no longer printed but still valid under many respects, and can be found in DiSIT's library) Additional material is provided on the course's online site.
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: conoscere i principi basilari della sicurezza informatica, le tecniche crittografiche fondamentali e i dispositivi essenziali per la protezione di una rete di calcolatori. Applicazione di conoscenza e comprensione: saper riconoscere vulnerabilità evidenti e proporre strumenti si protezione. Come beneficio aggiuntivo, lo studente volenteroso imparerà a implementare protocolli di sicurezza in Java, ad utilizzare alcuni strumenti di sicurezza e a configurare alcuni semplici sistemi. Autonomia di giudizio: corretta percezione dei rischi di sicurezza e del modo in cui gli aspetti di sicurezza informatica si intrecciano con l'organizzazione di una rete. Abilità comunicative : acquisizione della terminologia tecnica specifica dell'area e capacità di discutere di aspetti di sicurezza, e di meccanismi di protezione. Inoltre lo studente migliorerà la propria padronanza della lingua inglese a livello tecnico informatico. Capacità di apprendere: avendo appreso i principi findamentali sarà in grado in futuro di apprezzare e valutare tecnologie e protocolli nuovi che si basano sugli stessi principi.
Knowledge and understanding: knowledge of the basic principles of security, the fundamental cryptographic techniques and the essential devices to protect a computer network. Applying knowledge and understanding: students must be able, to a minimal extent, to recognize vulnerabilities and to propose protection tools. As an additional benefit, the motivated students will learn to implement security protocols in Java, to use some security tools and to configure some simple security systems. Making judgements: They must also acquire a correct perception of security risks and of the way security issues intertwine with the organization of a computer network. Communication skills: students must have acquired the specific technical terminology and must be able to discuss security aspects and protection mechanisms. Moreover the students will increase their proficiency in the technical English of computer science. Learning skills: having acquired the fundamental principles the student will later be able to appreciate and evaluate new technologies and protocols based on the same principles.
Prerequisiti/Required background knowledge
Conoscenza del funzionamento delle reti di calcolatori, programmazione in Java, nozioni base di utilizzo di Unix.
Knowledge of the principles of operation of computer networks, Java programming, basic notions of Unix usage
Metodi didattici/Teaching methods
Il corso è insegnato interamente in laboratorio. Ciascuna lezione è costituita da una presentazione degli argomenti nella quale gli aspetti tecnici vengono arricchiti da ampi riferimenti ad incidenti informatici recenti, seguita da attività pratica; gli studenti sono guidati nella realizzazione di attacchi informatici, per acquisire sensibilità riguardo alle vulnerabilità e per comprendere le caratteristiche e i limiti delle tecnologie e dei meccanismi di sicurezza presentati; sono seguiti nell'implementazione di software crittografico, e nella configurazione di sistemi di sicurezza per acquisire familiarità con gli strumenti software e il loro utilizzo. Gli argomenti trattati in ogni lezione insieme alle appropriate indicazioni bibliografiche e le indicazioni sull'attività pratica sono riportate sulla piattaforma DIR per permettere agli studenti che seguono il corso di rivedere o completare le attività proposte e di mantenersi al passo con il corso in caso perdano qualche lezione; inoltre questo permette agli studenti che non frequentano di svolgere autonomamente l'attività di laboratorio, e di seguire pur a distanza il corso delle lezioni. Inoltre sul DIR sono presenti documenti e link aggiuntivi a protocolli in uso, a notizie di cronaca sulla sicurezza informatica, ad organizzazioni che si occupano di sicurezza ecc, per stimolare la curiosità degli studenti e mantenerli aggiornati in un campo in veloce evoluzione. Poiché tale documentazione è per la maggior parte in inglese, lo studio sarà per lo studente uno strumento per migliorare la propria padronanza del linguaggio tecnico informatico in inglese. Infine gli studenti hanno a disposizione sul DIR un quiz di autovalutazione che ha lo scopo di incoraggiarli a ragionare in autonomia sugli argomenti presentati.
The course is entirely taught in lab. Each lesson begins with a presentation of the subject, during which technical aspects are enriched with references to recent security incidents. Hands on activity follows: students are guided in the realization of proof-of-concept security exploits, so that they acquire a feeling for vulnerabilities and understand the features and limits of security technologies and mechanisms; they are also guided in the implementation of cryptographic software, and in the configuration of security systems so that they acquire familiarity with software instruments and their use. Students can find on the DIR platform the subjects treated in each lesson, along with appropriate bibliographic references, and indications on the hands-on activity. This way students that attend the course can review or complete proposed activities and keep abreast of the course when they miss a class. This also enables non attending students to experiment on their own with the hands-on activity and to follow autonomously the class. Moreover on DIR students can find additional material such as (pointers to) documents about protocols, links to security news, and links to sites of organizations that work on security etc, in order to stimulate the curiosity of the students and to keep them up-to-date in a field that changes quickly. Since most of such material is written in English, preparing for the exam will give the students the possibility to practice the technical language of computer science. Finally on DIR, students have access to a self-evaluation quiz that aims at encouraging the students to reason about the subjects taught in class.
Altre informazioni/Further information
L'attività in laboratorio richiede una partecipazione attiva e individuale degli studenti e li induce a porsi dei quesiti (e spesso di conseguenza a porne al docente); in tal modo permette una regolare verifica del modo in cui gli argomenti vengono recepiti. L'attività in laboratorio è pensata come strumento didattico per facilitare la comprensione e lo sviluppo della necessaria sensibilità, non come mezzo per insegnare ad utilizzare strumenti di sicurezza . Però lo studente volenteroso trae dall'attività in laboratorio anche utili competenze pratiche.
Hands-on activity requires active participation of the students, and leads the latter to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this way it allows a regular monitoring of the way the subject is being understood. The activity in lab is thought as a way to ease comprehension and to develop the necessary sensitivity, and not as a means to teach usage of security tools. Yet, the motivated students gains from such activity also useful practical skills.
Modalità di verifica dell'apprendimento/Assessment methods
Esame orale L'esame prevede un colloquio orale. Vengono poste tre domande allo studente (il numero di domande può variare ove necessario in base alle risposte, per verificare che gli obiettivi formativi siano stati raggiunti). Il colloquio si basa su due strumenti di verifica: la richiesta di descrizione di meccanismi o tecnologie presentate nel corso, al fine di verificare che lo studente abbia appreso i principi e i meccanismi fondamentali; la richiesta di discussione di semplici problemi di sicurezza o di variazioni di protocolli noti, per verificare che lo studente abbia acquisito la sensibilità ai rischi di sicurezza e una certa autonomia e senso critico nell'utilizzo degli strumenti appresi.
Oral exam The exam is oral. Students must in general answer three questions (although the number of questions can vary depending on the quality of the answers, since the goal is to ascertain that the student has attained the formative objectives). The interview uses basically two tools: it is verified that the student has learned the basic principles, mechanisms and technology taught in class and has acquired the appropriate technical language, through a request to describe some of the subjects; in order to verify that the student has acquired a feeling for security risks along with autonomy and critical skills in the use of security tools, the student is submitted simple security problems or minimal variations of known protocols and is asked to discuss them.
Programma esteso/Content
-Introduzione alla sicurezza. Vulnerabilità e requisiti di sicurezza. - Politica di sicurezza - Crittografia a chiave simmetrica. Sistemi di cifratura a blocchi e a flusso. Principi di confusione e diffusione. DES e 3DES, AES, RC4. Cifratura di messaggi lunghi. - Crittografia a chiave pubblica. RSA, Diffie-Hellman e DSA: uso, attacchi, protocolli e standard.Introduzione alla crittografia a curve ellittiche: ECDH ed ECDSA. - Confronto tra i sistemi di crittografia a chiave pubblica e a chiave simmetrica. Schema ibrido. Scambio di segreti e generazione di chiavi simmetriche. IES ed ECIES. - Funzioni di hash crittograficamente sicure. Collisioni. Struttura delle funzioni hash. Esempi di funzioni hash. - Message Authentication Codes. Confronto con le funzioni hash. HMAC. - Autenticazione di messaggi a chiave pubblica e non ripudiabilità. - Il tempo: nonce e timestamp. Sincronizzazione. - Certificati digitali. Autorità di certificazione e Registration Authority. Liste di revoca. Protocollo OCSP. - Schema Autentication Authorization Accounting (AAA). Autenticazione: paradigmi login/password, challenge/response e timestamp. - VPN. Cenni su IPsec. Come applicazione dei principi studiati: SSL/TLS, SSH. - Firewall. Architettura di un firewall. Principi fondamentali. Bastion Host. DMZ. - Filtri di pacchetti statici e dinamici. Access list. Proxy.
- Introduction to network and computer security. Vulnerabilities and security requirements. - Security policy - Symmetric key cryptography. Block and stream ciphers. Confusion and diffusion principles. DES and 3DES, AES, RC4. Modes of operation of block ciphers. - Public key cryptography. RSA, Diffie-Hellman and DSA: usage, attacks, protocols and standards. Introduction to Elliptic Curve Cryptography: ECDH and ECDSA. - Symmetric key ciphers vs. public key ciphers. Hybrid scheme. Exchange of a secret and symmetric key derivation. IES and ECIES. - Cryptographic hash functions. Properties and structure. Collisions. Examples. - Message Authentication Codes. Comparison with hash functions. - Public key message authentication. Non repudiability - Time: nonces and timestamps. Synchronization. - Public key certificates. Certification and Registration authorities. Certificate revocation lists. OCSP protocol. - Authentication Authorization and Accounting scheme (AAA). Authentication paradigms: login/password, challenge/response and timestamp - VPNs. Hints on IPsec. As an application of the principles introduced in the course: SSL/TLS and SSH. - Firewalls. Firewall architectures. Fundamental principles. Bastion Hosts. DMZ. - Static and dynamic packet filtering. Access lists. Proxies.
Risultati di apprendimento attesi/Intended learning objectives
Descrivere i requisiti di sicurezza Descrivere i tipi di attacchi Spiegare le differenze tra la crittografia a chiave simmetrica e quella a chiave pubblica Spiegare cos'è un cifrario e saper distinguere tra le varie classi di cifrari Spiegare la funzione e i requisiti delle funzioni hash in crittografia Spiegare come si ottengono meccanismi per garantire l'integrità Spiegare le caratteristiche e il funzionamento della firma digitale Spiegare cosa sono i certificati digitali e illustrarne la funzione Spiegare i meccanismi per l'autenticazione (identificazione sicura) Spiegare i principi di sicurezza delle reti e illustrare gli strumenti che si utilizzano in questo ambito Analizzare i requisiti di sicurezza garantiti da un protocollo proposto Proporre un protocollo per garantire requisiti di sicurezza (anche ispirandosi a protocolli reali) Analizzare le funzionalità e i limiti di strumenti diversi come filtri di pacchetto a livello rete e proxy o filtri di pacchetti a livello applicativo
Describe security requirements Describe kinds of attacks Explain the differences between symmetric key and public key cryptography Explain what is a cipher and distinguish among different classes of ciphers Explain the utility of and requirements for hash functions in cryptography Explain how to obtain a mechanism to guarantee integrity Explain the characteristics of digital signatures and how they work Explain what are digital certificates and what is their function Explain the mechanisms for authentication (secure identification) Explain the principles of network security and illustrate the tools that are used in this area Analyze the security services guaranteed by a proposed protocol Propose a protocol to guarantee specified security requirements (also borrowing from real protocols) Analyze functionalities and limits of different tools such as network level packet filters and proxies or application level packet filters
×
Print
Course
FONDAMENTI, LINGUAGGI E TRADUTTORI
Course ID
MF0360
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
BOTTRIGHI Alessio
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Annuale
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Parte 1 (6 crediti) Linguaggi formali, grammatiche context free, automi riconoscitori, parsing LR. Parte 2 (3 crediti) Sviluppo di un compilatore top-down a discesa ricorsiva per un linguaggio di espressioni.
Part 1 (6 credit) Formal languages, context free grammars, automata, LR parsing. Part 2 (3 credits) Implementation of a recursive descent top-down compiler for an expression language
Testi di riferimento/Textbooks
Parte 1 S. Crespi Reghizzi , L. Breveglieri, A. Morzenti, Linguaggi formali e compilazione, Esculapio. Parte 2 Charles N. Fischer, Ron K. Cytron, Richard J. Le Blanch Jr., "Crafting a compiler", Addison-Wesley.
Part 1 S. Crespi Reghizzi , L. Breveglieri, A. Morzenti, Linguaggi formali e compilazione, Esculapio. Part 2 Charles N. Fischer, Ron K. Cytron, Richard J. Le Blanch Jr., "Crafting a compiler", Addison-Wesley.
Obiettivi formativi/Mission
Parte 1 Conoscenza e capacità di comprensione: gli studenti devono conoscere e comprendere le seguenti nozioni di base: linguaggi regolari, espressioni regolari, grammatiche lineari, automi a stati finiti (deterministici e non) linguaggi context free, grammatiche context free, automi a pila (deterministici e non) parser LR(0) Capacita' di applicare conoscenza: modellare linguaggi regolari tramite espressioni regolari modellare linguaggi regolari tramite grammatiche lineari modellare linguaggi mediante grammatiche context free, utilizzando la metodologia "divide et impera" nello sviluppo delle grammatiche sviluppare automi a pila non deterministici a partire da grammatiche context-free sviluppare automi a pila deterministici per riconoscere linguaggi context-free deterministici sviluppare parser LR(0) e SLR(1) a partire da grammatiche context-free Autonomia di giudizio: riconoscere linguaggi regolari rispetto ai linguaggi context free conoscere la relazioni fra classi di linguaggi, classi di grammatiche, e classi di automi riconoscitori selezionare i costrutti appropriati per la definizione di grammatiche context-free a partire da un linguaggio Abilita, comunicative: Gli studenti devono acquisire ed utilizzare la terminologia rigorosa utilizzata nell'ambito della teoria dei linguaggi Capacita' di apprendere: Gli studenti devono aver acquisito le capacita' di riconoscere classi di problemi e di affrontarle con le metodologie appropriate per le classi stesse. Devono inoltre aver acquisito una generale capacita' di modellazione ed analisi formale dei problemi. Parte 2. Conoscenza e capacità di comprensione: lo studente deve acquisire familiarita’ con la trasformazione di concetti formali (quali automi e grammatiche) in strumenti per la traduzione diretta da sintassi dei linguaggi. Capacità di applicare conoscenza e comprensione: lo studente deve saper progettare ed implementare una traduzione diretta da sintassi di un semplice linguaggio, essendo in grado di progettare le strutture dati necessarie e strutturando in modo modulare il codice. Autonomia di giudizio: lo studente deve essere in grado di riconoscere l’appropriatezza dell’uso di diversi tipi di analizzatori sintattici evidenziandone i vantaggi e gli svantaggi. Abilità comunicative: lo studente deve essere in grado di esporre e motivare anche le proprie scelte.
Part 1 Knowledge and comprehension: the students must know and understand the following basic notions: regular languages and expressions, linear grammars, (deterministic and non-deterministic) finite automata context free languages and grammars, (deterministic and non-deterministic) pushdown automata LR(0) and SLR(1) parsing Capacity to apply knowledge and comprehension: modeling regular languages via regular expression modeling languages via context free grammars developing pushdown automata on the basis of context free grammars developing deterministic pushdown automata to recognize deterministic context free languages developing LR(0) to recognize deterministic context free grammars Judgement autonomy: recognize regular languages vs. context free languages know the relationships between classes of languages, classes of grammars, and classes of automata choosing the proper constructs to define context free grammars recognizing a given language Communication abilities: Students must acquire and adopt the rigorous terminology used in the theory of languages Learning capacity: Students must acquire the capabilities to recognize classes of problems and face them adopting the appropriate methodologies. They should also acquire the capability of modeling and analyzing problems in a formal way. Part 2 Knowledge and understanding: the student must become familiar with the transformation of formal concepts (such as automata and grammars) into tools for syntax direct translation of languages. Applying knowledge and understanding: the student must be able to design and implement a syntax direct translation of a simple programming language, being able to independently design the necessary data structures and modularising its code Making judgments: the student must be able to recognize the appropriateness of using different kinds of syntactic analyzers, highlighting the advantages and disadvantages. Communication skills: the student must be able to expose and motivate both orally and in writing his/her own choices.
Prerequisiti/Required background knowledge
Conoscenze dei contenuti di Programmazione 1 e 2; Programmazione ad Oggetti; Algoritmi 1.
Knowledge of the topics of Programming 1 and 2; Object Oriented Programming: Algorithms 1
Metodi didattici/Teaching methods
Parte 1 Lezioni frontali in aula, esercitazioni. Parte 2. lezioni iniziali (teoriche) per circa 5 lezioni. Lezioni in laboratorio per lo sviluppo del compilatore.
Part 1 Teacher lessons in classroom, exercitations. Part 2. Initial (theoretical) lessons for about 5 lessons. Laboratory lessons for the development of the compiler
Altre informazioni/Further information
Parte 2. Per le lezioni in laboratorio gli studenti sono invitati a sottoporre settimanalmente le parti sviluppate (in parte in laboratorio e in parte autonomamente). Gli elaborati degli studenti vengono commentate in aula.
Part 2. For laboratory lessons, students are invited to submit the developed parts weekly (partly in the laboratory and partly independently). Students' papers are commented in the classroom.
Modalità di verifica dell'apprendimento/Assessment methods
Parte 1 Esame scritto:7-8 domande, che posso essere sia esercizi pratici sia domande teoriche Parte 2. Compito scritto consistente di un esercizio e tre domande aperte. Presentazione del progetto con discussione orale delle scelte effettuate ed eventuali richieste di piccole modifiche. Il voto della Parte 2 sara' la media pesata del giudizio sul progetto e nel compito scritto.
Written examination: 7-8 questions, that can be both applied exercise and theoretical question. Part 2. Written assignment consisting of an exercise and three open questions. Project presentation with oral discussion of the choices made and possible request of small changes. The grade of Part 2 will be the weighted average of the assessment on the project and in the written assignment.
Programma esteso/Content
Parte 1 - Linguaggi ed espressioni regolari - Linguaggi e grammatiche context free - Grammatiche lineari, e loro relazioni con i linguaggi regolari - grammatiche attributi - Grammatiche context sensitive (cenni) - Principali strutture sintattiche e regole grammaticali per generale - Automi a stati finite e loro relazione con i linguaggi regolari - Automi a pila (deterministici e non) e loro relazioni con i linguaggi context free - Principi del parsing bottom up, focalizzandosi sul parsing LR (LR(0)). Parte 2. - Introduzione ai compilatori. - Strutturazione dei compilatori - Analisi lessicale: tokens e loro produzione - Analisi sintattica: parsing top-down a discesa ricorsiva - Albero sintattico astratto e Symbol table. - Pattern visitor per l’analisi di tipo e la generazione del codice
Part 1 - Regular languages and expressions - Context free grammars and languages - Linear grammars, and correspondence to regular languages - Attribute grammar - Context sensitive grammars (hints). - Main syntactic structures and grammar rules to generate them - Finite-state automata and relationships to regular languages - Stack automata (deterministic and non-deterministic) and relationships to context free languages - Basic bottom up parsing theory, focusing on LR parsing (LR(0)) Part 2. - Introduction to compilers. - Structure of compilers - Lexical analysis: tokens and their production -Syntactic analysis: top-down recursive descent parsing - Abstract syntactic tree and Symbol table. - Pattern visitor for type analysis and code generation.
Risultati di apprendimento attesi/Intended learning objectives
Gli studenti devono aver acquisito le seguenti capacita': modellare linguaggi regolari tramite espressioni regolari riconoscere linguaggi regolari rispetto ai linguaggi context free modellare linguaggi regolari tramite grammatiche lineari conoscere la relazioni fra le grammatiche lineari ed i linguaggi regolari conoscere le principali strutture sintattiche e le regole contex-free per generarle modellare linguaggi mediante grammatiche context free, utilizzando la metodologia "divide et impera" nello sviluppo delle grammatiche conoscere gli automi a stati finiti (deterministici e non) e le loro relazioni con i linguaggi regolari Conoscere le grammatiche ad a attributi. Conoscere gli automi a pila (deterministici e non) e le loro relazioni con i linguaggi context free sviluppare automi a pila non deterministici a partire da grammatiche context-free sviluppare automi a pila deterministici per riconoscere linguaggi context-free deterministici conoscere le nozioni di base del parsing top-down e bottom up conoscere il parsing LR(0) ed SLR(1) sviluppare parser LR(0) grammatiche context-free Abilità di progettare ed implementare in modo diretto dalla sintassi parti di linguaggi. Capacità di strutturare un sistema complesso, quale un compilatore, in fasi successive individuando le strutture dati che costituiscono le interfacce fra le varie fasi.
The students must have achieved the following capabilities: modeling regular languages through regular expressions recognize regular languages vs context-free ones modeling regular languages through linear grammars know the relationships between linear grammars and regular languages know the relationships between the main syntactic structures and the context-free rules needed to generate them modeling languages through context-free grammars, developed using the "divide et impera" methodology know deterministic and non-deterministic finite automata and their relationships with regular languages know attribute grammar know deterministic and non-deterministic pushdown automata and their relationships with context-free languages developing non-deterministic pushdown automata on the basis of context-free grammars developing deterministic pushdown automata to recognize context-free (deterministic) languages know the basic notions of top-down and bottom-up parsing know LR(0) parsing developing LR(0) parsers staring from a context-free grammar Ability to design and implement a syntax directed translator of languages with particular emphasis on syntactic analysis and type control. Ability to structure a complex system, such as a compiler, in phases by identifying the data structures that make up the interfaces between the various phases.
×
Print
Course
STAGE
Course ID
S0403
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
CFU
10
Teaching duration (hours)
80
Individual study time
170
SSD
NN -
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
F
Year
3
Period
Annuale
Grading type
G
Contenuti/Content Summary
Gli stage curriculari consistono in un periodo di formazione svolto dallo studente in azienda privata o ente pubblico. Tale periodo costituisce un completamento del percorso universitario attraverso cui realizzare momenti di alternanza tra studio e lavoro nell'ambito di processi formativi volti ad agevolare le scelte professionali mediante la conoscenza diretta del mondo del lavoro. Durante lo stage vengono verificati e ampliati alcuni temi trattati in modo teorico nel percorso universitario. Lo stage in azienda può essere sostituito da uno studio guidato all’interno dell’ateneo, su un argomento coerente con il progetto formativo dello studente che sia inquadrabile nel SSD di un esame presente nella carriera dello studente e superato positivamente. In questo caso il relatore sarà un docente di quel SSD.
Curricular internships consist of a training period carried out by the student in a private company or public body. This period constitutes a completion of the university course, creating moments of alternation between study and work in a real working environment. During the internship, some themes dealt with theoretically in the university course are verified and expanded. The internship in a company can be replaced by a guided study within the university, on a topic consistent with the student's training project that can be included in the area of an exam present in the student's career and passed positively. In this case the student will be guided by a professor of that area.
Obiettivi formativi/Mission
Conoscenza diretta del mondo del lavoro in azienda o in università. Ampliamento di alcuni temi trattati nel percorso di studi universitari. Inserimento in un gruppo di lavoro, sviluppo delle abilità comunicative.
Direct knowledge of the working environment in the company or university. Expansion of some topics covered in the university studies. Inclusion in a work group, development of communication skills.
Prerequisiti/Required background knowledge
Avere conseguito almeno 120 CFU, o aver sostenuto tutti gli esami dei primi due anni.
Having obtained at least 120 CFU, or having taken all the exams of the first two years.
Modalità di verifica dell'apprendimento/Assessment methods
Lo studente deve redigere una relazione di stage che viene valutata dal tutor universitario.
The student must prepare an internship report which is evaluated by the university tutor.
Risultati di apprendimento attesi/Intended learning objectives
Lo studente acquisisce competenze pratiche che ampliano alcuni temi trattati in modo teorico nel corso di studi. Inoltre sviluppa abilità trasversali utili per il mondo del lavoro tra cui: lavorare in gruppo, lavorare per obiettivi, comunicare efficacemente.
The student acquires practical skills that broaden some themes dealt with theoretically during her studies. She also develops transversal skills useful for her future job, including: working in a team, working towards objectives, communicating effectively.
×
Print
Course
FONDAMENTI, LINGUAGGI E TRADUTTORI
Course ID
MF0359
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
TERENZIANI Paolo
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Annuale
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Linguaggi formali, grammatiche context free, automi riconoscitori, parsing LR. Traduzione guidata dalla sintassi e suo utilizzo per la traduzione dei linguaggi imperativi di programmazione.
Formal languages, context free grammars, automata, LR parsing. Syntax-directed translation and its use for the translation of imperative programming languages.
Testi di riferimento/Textbooks
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione Volume 1: Metodi Sintattici”, CLUP. A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986 oppure A. V. Aho, M.S. Lam, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", 2a edizione, Addison-Wesley, 2006
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione Volume 1: Metodi Sintattici”, CLUP. A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986 oppure A. V. Aho, M.S. Lam, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", 2a edizione, Addison-Wesley, 2006
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: gli studenti devono conoscere ee comprendere le seguenti nozioni di base: linguaggi regolari, espressioni regolari, grammatiche lineari, automi a stati finiti (deterministici e non) linguaggi context free, grammatiche context free, automi a pila (deterministici e non) parser LR(0) e SLR(1) Conoscere in dettaglio il metodo per la traduzione diretta dalla sintassi durante l’analisi LR, e l’esistenza di altri metodi. Capacita' di applicare conoscenza: modellare linguaggi regolari tramite espressioni regolari modellare linguaggi regolari tramite grammatiche lineari modellare linguaggi mediante grammatiche context free, utilizzando la metodologia "divide et impera" nello sviluppo delle grammatiche sviluppare automi a pila non deterministici a partire da grammatiche context-free sviluppare automi a pila deterministici per riconoscere linguaggi context-free deterministici sviluppare parser LR(0) e SLR(1) a partire da grammatiche context-free. Applicazione della traduzione diretta dalla sintassi alla traduzione dei linguaggi di programmazione. Autonomia di giudizio: riconoscere linguaggi regolari rispetto ai linguaggi context free conoscere la relazioni fra classi di linguaggi, classi di grammatiche, e classi di automi riconoscitori selezionare i costrutti appropriati per la definizione di grammatiche context-free a partire da un linguaggio. Riconoscere le condizioni per poter applicare la traduzione diretta dalla sintassi durante l’analisi LR Abilita, comunicative: Gli studenti devono acquisire ed utilizzare la terminologia rigorosa utilizzata nell'ambito della teoria dei linguaggi Capacita' di apprendere: Gli studenti devono aver acquisito le capacita' di riconoscere classi di problemi e di affrontarle con le metodologie appropriate per le classi stesse. Devono inoltre aver acquisito una generale capacita' di modellazione ed analisi formale dei problemi.
Knowledge and comprehension: the students must know and understand the following basic notions: regular languages and expressions, linear grammars, (deterministic and non-deterministic) finite automata context free languages and grammars, (deterministic and non-deterministic) pushdown automata LR(0) and SLR(1) parsing. Syntax-directed translation (SDT) during LR parsing (in detail); further options for SDT. Capacity to apply knowledge and comprehension: modeling regular languages via regular expression modeling languages via context free grammars developing pushdown automata on the basis of context free grammars developing deterministic pushdown automata to recognize deterministic context free languages developing LR(0) and SLR(1) parsers to recognize deterministic context free grammars. Application of syntax-directed translation to the compilation of programming languages. Judgement autonomy: recognize regular languages vs. context free languages know the relationships between classes of languages, classes of grammars, and classes of automata choosing the proper constructs to define context free grammars recognizing a given language. Being able to recognize whether SDT can be performed during LR parsing. Communication abilities: Students must acquire and adopt the rigorous terminology used in the theory of languages Learning capacity: Students must acquire the capabilities to recognize classes of problems and face them adopting the appropriate methodologies. They should also acquire the capability of modeling and analyzing problems in a formal way.
Prerequisiti/Required background knowledge
Nozioni di base acquisite nei corsi di programmazione dei primi due anni.
Basic notions acquired in the programming courses of the first two years.
Metodi didattici/Teaching methods
Lezioni frontali in aula, esercitazioni.
Lectures, exercises.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto (orale facoltativo). Contiene sia esercizi pratici che domande teoriche.
Written examination (oral examination is optional). It contains both practical excercises and theoretical questions.
Programma esteso/Content
- Linguaggi ed espressioni regolari - Linguaggi e grammatiche context free - Grammatiche lineari, e loro relazioni con i linguaggi regolari - Grammatiche context sensitive (cenni) - Principali strutture sintattiche e regole grammaticali per generale - Automi a stati finite e loro relazione con i linguaggi regolari - Automi a pila (deterministici e non) e loro relazioni con i linguaggi context free - Principi del parsing bottom up, focalizzandosi sul parsing LR (LR(0) e SLR(1)). - Traduzione guidata dalla sintassi: grammatiche ad attributi e schemi di traduzione. . - Generazione del codice intermedio
- Regular languages and expressions - Context free grammars and languages - Linear grammars, and correspondence to regular languages - Context sensitive grammars (hints). - Main syntactic structures and grammar rules to generate them - Finite-state automata and relationships to regular languages - Stack automata (deterministic and non-deterministic) and relationships to context free languages - Basic bottom up parsing theory, focusing on LR parsing (LR(0) e SLR(1)) . - Syntax-directed translation: attribute grammars and translation schemes. - Intermediate code generation
Risultati di apprendimento attesi/Intended learning objectives
Gli studenti devono aver acquisito le seguenti capacita': modellare linguaggi regolari tramite espressioni regolari riconoscere linguaggi regolari rispetto ai linguaggi context free modellare linguaggi regolari tramite grammatiche lineari conoscere la relazioni fra le grammatiche lineari ed i linguaggi regolari conoscere le principali strutture sintattiche e le regole contex-free per generarle modellare linguaggi mediante grammatiche context free, utilizzando la metodologia "divide et impera" nello sviluppo delle grammatiche conoscere gli automi a stati finiti (deterministici e non) e le loro relazioni con i linguaggi regolari Conoscere gli automi a pila (deterministici e non) e le loro relazioni con i linguaggi context free sviluppare automi a pila non deterministici a partire da grammatiche context-free sviluppare automi a pila deterministici per riconoscere linguaggi context-free deterministici conoscere le nozioni di base del parsing top-down e bottom up conoscere il parsing LR(0) ed SLR(1) sviluppare parser LR(0) e SLR(1) a partire da grammatiche context-free Conoscere in dettaglio il metodo per la traduzione diretta dalla sintassi durante l’analisi LR, e l’esistenza di altri metodi.
The students must have achieved the following capabilities: modeling regular languages through regular expressions recognize regular languages vs context-free ones modeling regular languages through linear grammars know the relationships between linear grammars and regular languages know the relationships between the main syntactic structures and the context-free rules needed to generate them modeling languages through context-free grammars, developed using the "divide et impera" methodology know deterministic and non-deterministic finite automata and their relationships with regular languages know deterministic and non-deterministic pushdown automata and their relationships with context-free languages developing non-deterministic pushdown automata on the basis of context-free grammars developing deterministic pushdown automata to recognize context-free (deterministic) languages know the basic notions of top-down and bottom-up parsing know LR(0) and SLR(1) parsing developing LR(0) and SLR(1) parsers staring from a context-free grammar Syntax-directed translation (SDT) during LR parsing (in detail); further options for SDT.
×
Print
Course
INGEGNERIA DEL SOFTWARE
Course ID
S1730
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
PENNISI MARZIO ALFIO
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il corso tratta le fasi del processo di sviluppo di sistemi software: specifica, progettazione, implementazione, collaudo e manutenzione. Inoltre viene introdotto il linguaggio UML per la specifica e la progettazione di sistemi. L'attività di laboratorio consiste nella preparazione di diagrammi UML tramite un apposito editor.
The course covers the phases of the software systems development process: specification, design, implementation, testing and maintenance. In addition, the UML language for system specification and design is introduced. The laboratory activity consists in the preparation of UML diagrams using a special editor.
Testi di riferimento/Textbooks
- I. Sommerville, "Ingegneria del software", Pearson Education Italia – M. Fowler, "UML distilled", Pearson Education Italia
- I. Sommerville, "Ingegneria del software", Pearson Education Italia – M. Fowler, "UML distilled", Pearson Education Italia
Obiettivi formativi/Mission
Il corso prevede una parte teorica e una parte di laboratorio. La parte teorica tratta il processo dell'Ingegneria strutturato nelle fasi di specifica, progettazione, implementazione, collaudo e manutenzione. Lo scopo e' mostrare come tale processo puo' essere applicato allo sviluppo di sistemi software. La parte di laboratorio introduce il linguaggio UML per la specifica e la progettazione di sistemi. L'attività in laboratorio consiste nella preparazione di diagrammi UML relativi ad un determinato sistema software, attraverso l'uso di un editor UML. Questo permette di prendere confidenza con tali diagrammi e approfondirne la conoscenza. Conoscenza e comprensione: fasi dell'Ingegneria, aspetti formali dei vari tipi di diagrammi UML. Capacità di applicare conoscenza e comprensione: applicazione delle fasi dell'Ingegneria allo sviluppo di un sistema software, ed in particolare, - studio del dominio applicativo; - deduzione dei requisiti dal dominio; - modellazione del dominio e dei requisiti in UML; - definizione e modellazione in UML di un'architettura software adatta a realizzare i requisiti; - definizione e modellazione in UML del comportamento dei componenti del sistema durante l'esecuzione di un certo requisito, con un livello di dettaglio tale da consentire l'implementazione del requisito in un linguaggio di programmazione. Autonomia di giudizio: studio e definizione in modo autonomo del dominio applicativo, dei requisiti, dell'architettura e del comportamento del sistema. Abilità comunicative: - comunicazione e coordinazione all'interno del gruppo di lavoro; - esprimere i requisiti del sistema con diversi gradi di dettaglio; - stesura dei diagrammi UML in modo completo, dettagliato e coerente, al fine di renderli comprensibili a qualunque programmatore. Capacita' di apprendimento: acquisire la terminologia dell'Ingegneria, organizzare lo sviluppo di un sistema secondo le fasi dell'Ingegneria, modellare gli aspetti di specifica e progettazione tramite un linguaggio formale quale UML.
The course includes a theoretical part and a laboratory part. The theoretical part deals with the Engineering process structured in the phases of specification, design, implementation, testing and maintenance. The aim is to show how this process can be applied to the development of software systems. The laboratory part introduces the UML language for the specification and design of systems. The activity in the laboratory consists in the preparation of UML diagrams related to a specific software system, through the use of a UML editor. This allows you to become familiar with these diagrams and learn more about them. Knowledge and understanding: engineering phases, formal aspects of the various types of UML diagrams. Ability to apply knowledge and understanding: application of the engineering phases to the development of a software system, and in particular, - study of the application domain; - deduction of the requirements from the domain; - modeling of the domain and requirements in UML; - definition and modeling in UML of a software architecture suitable for realizing the requirements; - definition and modeling in UML of the behavior of the system components during the execution of a certain requirement, with a level of detail that allows the implementation of the requirement in a programming language. Independent judgment: study and autonomous definition of the application domain, requirements, architecture and behavior of the system. Communication skills: - communication and coordination within the work group; - express the system requirements with different degrees of detail; - writing of UML diagrams in a complete, detailed and coherent way, in order to make them understandable to any programmer. Learning skills: acquire engineering terminology, organize the development of a system according to the engineering phases, model the specification and design aspects using a formal language such as UML.
Prerequisiti/Required background knowledge
Conoscenze acquisite nei corsi di programmazione e basi di dati.
Knowledge acquired in programming and database courses.
Metodi didattici/Teaching methods
Il corso prevede lezioni frontali in aula e lezione pratiche in laboratorio. Modalità: le lezioni frontali si occupano di spiegare le fasi dell'Ingegneria e come queste si possono applicare allo sviluppo di un sistema software. Inoltre si presenta il linguaggio UML sia dal punto di vista formale sia dal punto di vista applicativo mostrando come può essere utilizzato per modellare il dominio applicativo, i requisiti, l'architettura e il comportamento del sistema. Strumenti: Un caso di studio specifico è utilizzato durante le lezioni frontali per mostrare come progettare il sistema a partire dalla deduzione dei requisiti dal dominio applicativo. Il caso di studio viene progressivamente sviluppato durante le lezioni riguardanti l'applicazione pratica delle fasi dell'Ingegneria e di UML. Lo scopo del caso di studio è fornire agli un esempio concreto di applicazione delle procedure viste nel corso. La preparazione da parte degli studenti di un proprio progetto in UML è richiesto durante le ore in laboratorio. Tale progetto deve avere un dominio diverso rispetto al caso di studio, ma deve avere gli stessi contenuti in termini di specifica e progettazione. Lo scopo del progetto è l'applicazione pratica da parte degli studenti delle stesse procedure viste durante le lezioni frontali. Un apposito editor UML (Visual Paradigm) è utilizzato sia in aula sia in laboratorio, per modellare il caso di studio e per preparare il progetto, rispettivamente. Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete) che contiene le slide del corso, i tutorial su UML, i diagrammi UML del caso di studio, le istruzioni per l'editor UML, alcune prove scritte del passato, ecc.
The course includes lectures and practical lessons. Methods: the lectures deal with explaining the phases of Engineering and how these can be applied to the development of a software system. Furthermore, the UML language is presented both from the formal point of view and from the application point of view showing how it can be used to model the application domain, the requirements, the architecture and the behavior of the system. Tools: A specific case study is used during the lectures to show how to design the system starting from the deduction of the requirements from the application domain. The case study is progressively developed during the lessons concerning the practical application of the Engineering and UML phases. The purpose of the case study is to provide students with a concrete example of application of the procedures seen in the course. The preparation by students of their own project in UML is required during the hours in the laboratory. This project must have a different domain than the case study, but must have the same contents in terms of specification and design. The aim of the project is the practical application by the students of the same procedures seen during the lectures. A special UML (Visual Paradigm) editor is used both in the classroom and in the laboratory, to model the case study and to prepare the project, respectively. The course has its own page in the DIR platform (Didactics on the Net) which contains the course slides, UML tutorials, UML case study diagrams, instructions for the UML editor, some past written tests, etc.
Altre informazioni/Further information
Nessuna.
N/A
Modalità di verifica dell'apprendimento/Assessment methods
L'esame prevede una prova scritta riguardante la parte di teoria, ed una prova orale in cui si discute il progetto in linguaggio UML realizzato nelle ore di laboratorio. La partecipazione alla prova scritta è libera; invece la prova orale richiede di aver consegnato il progetto una settimana prima dell'appello. Nella prova scritta si verificano la conososcenza delle varie fasi del processo dell'Ingegneria, l'acquisizione della terminologia dell'Ingegneria e l'applicazione di alcuni metodi. L'esame scritto prevede sia domande (circa 10) sui concetti teorici, sia esercizi applicativi (circa 3) relativi ai metodi. Ad ogni domanda e ad ogni esercizio corrisponde un punteggio dipendente dalla rilevanza, dalla complessità e dalla lunghezza della risposta attesa. Durante la prova scritta non è consetita la consultazione del materiale del corso o di manuali. Sulla piattaforma DIR, nella pagina del corso, ci sono esempi di prove scritte del passato. Durante la discussione del progetto si verificano due aspetti: la qualità dei diagrammi UML realizzati, in termini di precisione, coerenza e completezza; la conoscenza degli aspetti formali di UML. Le domande relative ai diagrammi consegnati hanno lo scopo di chiarire i difetti riscontrati nel progetto. Il numero di tali domande dipende dal numero di difetti. Invece le domande sugli aspetti puramente formali del linguaggio UML sono circa 4. Ad ogni diagramma corrisponde un punteggio dipendendente dalla complessità del tipo di diagramma e dalla sua correttezza. Il voto finale è dato dalla media tra i voti dell'esame scritto e di quello orale.
The exam includes a written test concerning the theory part, and an oral test in which the project in UML language is discussed during the laboratory hours. Participation in the written test is free; on the other hand, the oral exam requires that the project be submitted one week before the exam. In the written test the knowledge of the various phases of the Engineering process, the acquisition of Engineering terminology and the application of some methods are verified. The written exam includes both questions (about 10) on theoretical concepts, and application exercises (about 3) relating to methods. Each question and each exercise corresponds to a score which depends on the relevance, complexity and length of the expected response. During the written test it is not allowed to consult the course material or manuals. On the DIR platform, on the course page, there are examples of past written tests. Two aspects occur during the discussion of the project: the quality of the UML diagrams created, in terms of precision, consistency and completeness; knowledge of the formal aspects of UML. The questions relating to the diagrams delivered are intended to clarify the defects found in the project. The number of such applications depends on the number of defects. Instead, the questions on the purely formal aspects of the UML language are about 4. Each diagram corresponds to a score depending on the complexity of the type of diagram and its correctness. The final mark is given by the average of the marks in the written and oral exams.
Programma esteso/Content
- Introduzione all'Ingegneria del Software - Prodotto software e Processo software - Specifica dei requisiti di sistemi - Specifica con UML - Progettazione di sistemi - Progettazione con UML - Collaudo di sistemi - Manutenzione di sistemi - Gestione del progetto - Modelli di processo software -Introduzione ad alcuni Design Patterns della GoF
- Introduction to Software Engineering - Software Product and Software Process - Specification of systems requirements - Specify with UML - Systems design - Design with UML - System testing - Systems maintenance - Project management - Software process models - Introduction to some GoF Design Patterns
Risultati di apprendimento attesi/Intended learning objectives
Lo studente deve acquisire le seguenti conoscenze: - passi necessari per realizzare un sistema software a partire dalla richiesta di un committente, fino alla consegna, secondo il processo dell'Ingegneria; lo scopo è acquisire un metodo di lavoro applicabile a livello aziendale. - terminologia dell'Ingegneria; lo scopo è comprendere il linguaggio utilizzato dagli ingegneri. - capacità di modellare il dominio applicativo, i requisiti, l'architettura e il comportamento del sistema tramite diagrammi UML. Lo scopo è fornire anticipatamente tutte le informazioni necessarie per l'implementazione del sistema. - scrittura del codice seguendo i diagrammi UML.
Students must acquire the following knowledge: - steps necessary to create a software system starting from the request of a customer, up to delivery, according to the engineering process; the aim is to acquire a working method applicable at company level. - engineering terminology; the aim is to understand the language used by the engineers. - ability to model the application domain, requirements, architecture and behavior of the system through UML diagrams. The aim is to provide in advance all the information necessary for the implementation of the system. - writing the code following the UML diagrams.
×
Print
Course
PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE
Course ID
MF0244
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FRANCESCHINIS Giuliana Annamaria
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
3
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
- Architettura delle reti informatiche locali. - Architettura e progettazione delle applicazione di rete di tipo Event- Driven. - Fog-computing. Internet of Things - Sviluppo in laboratorio di una applicazione di rete Event-Driven.
- Local Area Network architectures - Architecture and Design of Event-Driven Applications - Fog-computing, Internet of Things - Design and implementation of a network application based on an Event- Driven architecture
Testi di riferimento/Textbooks
Libro di testo: James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Settima Edizione, Addison Wesley (2017) Per consultazione: C. Richardson Microservices Patterns. With Examples in Java Manning Publications (2018)
Textbook course James F. Kurose, Keith W. Ross, Computer networking - A top-down approach , 7th Edition, Addison Wesley (2017) In addition C. Richardson Microservices Patterns. With Examples in Java Manning Publications (2018)
Obiettivi formativi/Mission
Insegnare agli studenti a progettare un'applicazione di rete event-driver basata sull'approccio dei micro-servizi distribuiti.
To develop the capability of designing a network application based on the concept of distributed micro-services.
Prerequisiti/Required background knowledge
Lo studente deve avere acquisito le nozioni base relative alle reti informatiche (corso di Reti -I), la progettazione del software (Ingegneria del Software e Programmazione ad Oggetti) e della programmazione WEB (Metodologie di Programmazione per il Web).
The course assumes that the student have the fundamental notions in software engineering and in computer networks, thought in the courses of Software Engineering, Object Oriented Programming, Web Programming Metodologies and Computer networks-I
Metodi didattici/Teaching methods
Il corso si avvale di: - Lezioni frontali (per un totale di 32 ore). - Fasi di lavoro guidato in laboratorio (per un totale di 40 ore) - Fasi di lavoro individuali autogestite dallo studente.
The course includes: Lectures (32 hours) Activity assisted by the teacher (40 hours) Individual activity self-organized by the student
Modalità di verifica dell'apprendimento/Assessment methods
La verifica dell'apprendimento si articola in tre fasi: - Colloquio orale con il docente concernente gli aspetti metodologici. - Dimostrazione del funzionamento del progetto sviluppato - Valutazione del rapporto tecnico conclusivo concernente il progetto svolto.
The assessment of the notions acquired by the student includes three steps: An oral discussion concerning the methodological fundamentals. A demonstration of the working prototype developed by the student. The evaluation of a technical report written by the student
Programma esteso/Content
Il Corso si articola in due moduli: 1. Complementi di Tecnologie di rete (Lezioni frontali: 24 Ore): a) Il livello data-link: - Caratterizzazione del servizio e delle funzionalità. - Interfacciamento al livello rete: ARP in IP-v4, evoluzione in IPv6 - Principi dei protocolli per l'accesso a mezzi condivisi: CSMA, CSMA/CD, CSMA/CA, CDMA. - Ethernet, Ethernet-switch. - Wi-Fi, Access Point, protocolli della classe 802.11. - Bluetooth (cenni): architettura, utilizzazione nella IoT - ZigBee (cenni): architettura, utilizzazione nell'IoT b) Trasmissione multimediale su rete Internet: - Requisiti del traffico multi-mediale in contrapposizione al traffico dati tradizionale - Streaming audio-video. - Protocolli di supporto: RTP - Metodi per la Forward Error Correction c) Sicurezza nelle reti informatiche: - Caratterizzazione del problema - Crittografia a chiave simmetrica - Crittografia a chiave pubblica - Autenticazione e firma digitale . d) Architetture per applicazioni distribuite in rete: - Caratterizzazione dell’ambiente: reti private, IoT - Architetture guidate dagli eventi contrapposte alle architetture Client- server. - Comunicazione tra agenti localizzati in reti private: Port forwarding, DNS Dinamico, - Comunicazione tramite relay in rete pubblica , message-broker. - Autoconfigurazione degli Host in rete locale: Zeroconf 2. Modulo di Laboratorio (48 ore di cui 12 di lezione frontale e 36 di lavoro guidato): Sviluppo di una applicazione distribuita in rete. a) Ambiente a disposizione: - Rete locale “privata” dotata di un insieme di nodi adatti alla implementazione di applicazioni IoT. - Host a disposizione: Raspberry PI - Protocollo di comunicazione supportato: MQTT + HTTP. - Cloud dell'Ateneo dotato delle piattaforme studiate a lezione: Mosquitto RabbitMQ. b) Lavoro da svolgere da parte dello studente. Nel percorso didattico del modulo di laboratorio lo studente deve sviluppare il progetto utilizzando le tecniche di progettazione apprese nel corso di ingegneria del software. Il linguaggio di implementazione può essere scelto dallo studente tra i seguenti linguaggi: Java, Javascript, C++, Python. c) Attività preliminare guidata dal docente: - Preparazione metodologica al progetto: analisi della struttura delle moderne applicazioni di rete basate su message-brokers con riferimento alle piattaforme più utilizzate: RabbitMQ, Mosquitto. - Paradigma di comunicazione basato su Message-Queues - Paradigma di comunicazione basato su Publish-Subscribe - Architetture Multi-processo e Multi-thread per la gestione di eventi concorrenti in tempo reale. - Sperimentazione preliminare con alcuni message-brokers open-source: Mosquitto and RabbitMQ: d) Sviluppo del Progetto: Allo studente verrà assegnata una applicazione distribuita nel dominio IoT che dovrà essere sviluppata secondo le classiche fase previste nell'ingegneria del software: - Analisi dei requisiti che devono essere soddisfatti e definizione delle specifiche per il sofware da progettare. - Progettazione dell'architettura, specifica dei moduli e degli oggetti. - Verifica del progetto preliminare con i docente. - Implementazione del software progettato. - Validazione e analisi delle prestazioni ottenute - Stesura del rapporto tecnico finale
The course is subdivided into two modules: 1. Computer Network Technologies (24 hours): a) The data-link layer: - Service and functionality characterization. - Network to data-link interface: ARP (IP-v4), ND (IP-v6). - Medium Access Control principles: CSMA, CSMA/CD, CSMA/CA, CDMA. - Ethernet, Ethernet switches. - Wi-Fi, Access-point, 802.11 protocol suite. - Bluetooth (basic notions). Application to Internet of Things. - ZigBee (basic notions). Application to Internet of Things. b) Multi-media communication on IP networks: - Requirement characterization. - Audio-video streaming. - Protocols supporting audio-vido streaming: RTP. c) Computer Network Security: - Basic principles. - Shared key cryptography. - Public key cryptography. - User authentication, digital signature - Secure socket layer: SSL, HTTPS d) Network Application Architectures: - Cloud, Private Networks and IoT. - Event-Driven architectures versus Client-Server architectures. - Interconnecting agents in private networks: port-forwarding, Dynamic- DNS. - Relay in public networks, message brokers - Self-configuring hosts in local networks: ZeroConf. 2. Lab Module (48 hours: 12 lectures +36 assisted activity): Development of a Network Application. a) Environment: - Local Area Network provided with hosts oriented to IoT applications: Raspberry-PI. - Communication protocol: MQTT + HTTP - University Cloud service provided with Mosquitto, RabbitMQ. b) Assignment: the student is required to develop a project applying the methods learned in the courses of software engineering, object oriented programming, computer networks, and WEB programming. The computer language for the software implementation can be choosed among: Java, C++. Javascript, Python. c) Preliminary activity: - Familiarization with the methodological aspects of the project: message- broker based architectures with focus on popular open-source platforms: RabbitMQ, Mosquitto. - Experimentation with the message queue and the public-subscribe paradigms. - Experimentation with multi-thread and multi-process architecture for handling real-time events. d) Project development: the student will have assigned an application in the IoT domain, which will be developend following the typical software engineering approach: - Requirement analysis and general software specification. - Architecture design, module and class specification. - Discussion with the teacher of the developed design. - Implementation - Validation and analysis of the performances - Final report
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza e capacità di comprensione: gli studenti dovranno conoscere le principali architetture e caratteristiche delle reti informatiche locali con e senza fili; i servizi offerti dal livello data-link ed il loro interfacciamento con il livello di rete; le caratteristiche ed i requisiti della trasmissione di dati multimediali; i principi base e le tecniche usate per la sicurezza delle reti informatiche e le caratteristiche ed architetture delle applicazioni distribuite event-driven. Capacità di applicare conoscenza e comprensione: gli studenti dovranno essere in grado di applicare le conoscenze acquisite per sviluppare un’applicazione event-driven che si interfacci con dispositivi IoT connessi ad una rete locale. Nella progettazione dell’applicazione gli studenti dovranno adottare le tecniche/ metodologie acquisite durante il corso di ingegneria del software. Autonomia di giudizio: nello sviluppo dell’applicazione gli studenti dovranno essere in grado in modo autonomo di analizzare differenti soluzioni architetturali e scelte implementative, identificarne i vantaggi e svantaggi e selezionare le soluzioni più appropriate. Abilità comunicative: gli studenti dovranno essere in grado di esporre in modo sintetico le caratteristiche della propria applicazione e le scelte architetturali o implementative fatte argomentandone la loro efficacia. Capacità di apprendere: gli studenti dovranno interagire con diversi dispositivi e piattaforme sviluppati in accordo ai principi generali acquisiti durante il corso, ma che offrono interfacce specifiche differenti. Gli studenti dovranno quindi essere in grado di apprendere in modo autonomo le caratteristiche peculiari dei servizi offerti e sviluppare un’applicazione capace di interagire con essi.
Knowledge and understanding: students will learn the main architectures and features of local and wifi computer networks; the services provided by the data link layer and their interactions with the network layer; the characteristics and requirements of multimedia data transmission; the principles and techniques used in computer networks security and the characteristics of distributed event-driven applications. Applying knowledge and understanding: students will be able to apply the acquired knowledge to develop an event-driven application capable to interface with IoT devices connected to a LAN. During the application design the students will be able to use the techniques/methodologies acquired in the software engineering course. Making judgments: students will be able to autonomously analyze different architectural and implementation solutions, identify their pros and cons and choose the most suitable solutions. Communication skills: students will learn to synthetically explain the features of their application and the architectural or implementation choices and reasoning about their effectiveness. Learning skills: students will be capable to interact with different devices and platforms, developed according to the general principles acquired in the courses, but with different specific interfaces. Thus students will be able to autonomously learn the specific characteristics of provided services in order to develop an application capable to interact with them.
×
Print
Course
Applicazioni mobili
Course ID
MF0128
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CANONICO Massimo
CFU
6
Teaching duration (hours)
48
SSD
INF/01 - INFORMATICA
Course type
Attività formativa integrata
Course mandatoriety
OPZ
Year
3
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Sviluppo di applicazioni mobili per Android e iOS.
Mobile applications development for Android systems and iOS.
Testi di riferimento/Textbooks
"Pro Android with Kotlin", Peter Späth, Apress Appunti e dispense del docente.
"Pro Android with Kotlin", Peter Späth, Apress. Notes and handouts by the lecturer.
Obiettivi formativi/Mission
Imparare a sviluppare applicazioni mobili.
Learn how to develop mobile applications.
Prerequisiti/Required background knowledge
Linguaggio di programmazione Kotlin e Swift.
Kotlin and swift programming language.
Metodi didattici/Teaching methods
Lezioni teoriche e pratiche in aula.
Theory and practical lessons.
Altre informazioni/Further information
Controllo dell'apprendimento in itinere
Periodically learning check
Modalità di verifica dell'apprendimento/Assessment methods
Consegna di progetti.
Final project.
Programma esteso/Content
0- Informazioni generali sul corso 1- Concetti base 2- Piattaforma Android/iSO 3- Emulatore Android/Simulatore iOS 4- XML-based Layout 5- Widget di base 6- Lavorare con i container 7- Metodi di input: Framework 8- Messaggi Pop-up 9- Gestione delle Thread 10- Ciclo di vita di una app 11- Creazione di Intent filter 12- Gestione schermi 13 - Fragments. Menus & Preferences. 14 - Accessing Files. 15- ListViews & Adapters. 16- Location services. GridViews & Gestures 17- SurfaceViews & Canvas. 18- Sensors. Maps. Street View.
0- About the course 1- How to get started 2- Android/iOS platform 3- Android emulator/iOS simulator 4- Using XML-based layout 5- Basic widgets 6- Working with containers 7- Input Method Framework 8- Pop-up messages 9- Dealing with Threads 10- Handling activity lifecycle 11- Creating Intent filter 12- Handling Multiple Screen Sizes 13 - Fragments. Menus & Preferences. 14 - Accessing Files. 15- ListViews & Adapters. 16- Location services. GridViews & Gestures 17- SurfaceViews & Canvas. 18- Sensors. Maps. Street View.
Risultati di apprendimento attesi/Intended learning objectives
Saper sviluppare applicazioni mobili complesse.
Learn how to create advanced mobile applications.
Modules
Course ID Course SSD Teachers Agenda web
MF0123Applicazioni mobili: sviluppo di applicazioni mobili 1 INF/01 - INFORMATICA Ardito Luca
MF0124Applicazioni mobili: sviluppo di applicazioni mobili 2 INF/01 - INFORMATICA Canonico Massimo
Show parent course details
×
Print
Course
Applicazioni mobili: sviluppo di applicazioni mobili 1
Course ID
MF0123
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CANONICO Massimo
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Durante il corso lo studente avrà modo di conoscere e sperimentare tutti i principali layout e widget che il sistema operativo Android mette a disposizione attraverso la realizzazione di semplici app.
During the course, the student will learn how to use the basic layouts and widgets provided by Android through the development of simple mobile apps.
Testi di riferimento/Textbooks
Professional Android - quarta edizione - Reto Meier Pro Android with Kotlin : developing modern mobile apps - Peter Späth.
Professional Android - quarta edizione - Reto Meier Pro Android with Kotlin : developing modern mobile apps - Peter Späth.
Obiettivi formativi/Mission
Il corso si prefigge di fornire allo studente nozioni sia teoriche che sperimentali di come si progetta e sviluppa una applicazione per i dispositivi mobili.
The course focuses on theoretic and practical aspects concerning the development of mobile applications.
Prerequisiti/Required background knowledge
Aver superato il corso di programmazione ad oggetti.
Having passed the examination of "Objects programming" course
Metodi didattici/Teaching methods
Lezioni frontali e sperimentazione in laboratorio che possono essere erogate in modalità in presenza oppure da remoto con tool di videoconferenza.
Lectures and laboratory sessions that can be held in classroom or online with video conference tools.
Altre informazioni/Further information
Durante il corso vengono svolti esercizi che riguardano l'implementazione di semplici app.
During the course, the students have to implement simple mobile apps.
Modalità di verifica dell'apprendimento/Assessment methods
Consegna di esercizi (voto massimo: 25/30) oppure consegna di esercizi ed di un progetto finale (voto massimo: 30 e lode).
Implementation of simple apps (max grade: 25/30) or implementation of simple apps plus implementation of a complex app (max grade: 30 summa cum laude).
Programma esteso/Content
0- Informazioni generali sul corso 1- Il linguaggio Kotlin 2- Concetti base 3- Piattaforma Android 4- Emulatore Android 5- XML-based Layout 6- Widget di base 7- Lavorare con i container 8- Metodi di input: Framework 9- Messaggi Pop-up 10- Gestione delle Thread 11- Ciclo di vita di una app 12- Creazione di Intent filter 13- Gestione schermi
0- About the course 1- The Kotlin programming language 2- How to get started 3- Android platform 4- Android emulator 5- Using XML-based layout 6- Basic widgets 7- Working with containers 8- Input Method Framework 9- Pop-up messages 10- Dealing with Threads 11- Handling activity lifecycle 12- Creating Intent filter 13- Handling Multiple Screen Sizes
Risultati di apprendimento attesi/Intended learning objectives
Imparare a creare semplici applicazioni mobili utilizzando tutti widget di base.
Students will learn how to create simple mobile applications by exploiting all basic widgets showed during the lessons.
Show parent course details
×
Print
Course
Applicazioni mobili: sviluppo di applicazioni mobili 2
Course ID
MF0124
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CANONICO Massimo
Teachers
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
"Durante il corso lo studente avrà modo di conoscere e sperimentare alcuni layout e widget avanzati, l'uso di frammenti, menu e preferenze, i servizi di localizzazione, i sensori e dispositivi interni degli smartphone e l'uso delle mappe.
"During the course, the student will learn how to use some advanced layouts and widgets, fragments, menu and preferences, localization service, sensors, and the use of maps.
Testi di riferimento/Textbooks
"Pro Android with Kotlin", Peter Späth, Apress Appunti e dispense del docente.
"Pro Android with Kotlin", Peter Späth, Apress. Notes and handouts by the lecturer.
Obiettivi formativi/Mission
Mettere in grado gli studenti di progettare e realizzare applicativi android che utilizzano le peculiarita' dei dipositivi mobili, come localizzazione, sensori, mappe, etc. Verrà dato un cenno anche alle applicazion iOS, con qualche esempio implementativo.
"Enable students to write Android apps that take advantage of the features of modern mobile devices, such as GPS, position sensors, maps. etc. In the last part of the course, a brief introduction concerning iOS is provided with some simple implementation exercises.
Prerequisiti/Required background knowledge
Aver superato il corso di programmazione ad oggetti.
Having passed the examination of "Objects programming" course
Metodi didattici/Teaching methods
Lezioni frontali e sperimentazione in laboratorio.
Lectures and laboratory sessions.
Altre informazioni/Further information
Durante il corso vengono svolti esercizi che riguardano l'implementazione di semplici app.
During the course, the students have to implement simple mobile apps.
Modalità di verifica dell'apprendimento/Assessment methods
Consegna di semplici esercizi (voto massimo: 25/30) oppure consegna di esercizi più complessi (voto massimo: 30 e lode).
Implementation of simple apps (max grade: 25/30) or implementation of complex apps (max grade: 30 summa cum laude).
Programma esteso/Content
Menus & Preferences, Accessing Files, Notification, Maps, Firebase services, Manage picture, iOS first apps.
Menus & Preferences, Accessing Files, Notification, Maps, Firebase services, Manage picture, iOS first apps.
Risultati di apprendimento attesi/Intended learning objectives
Lo studente sarà in grado di svilupare applicazioni mobili complesse che sfruttano i sensori dei device, l'interazione con le mappe ed i servizi cloud.
Students will learn how to create advanced mobile applications able to exploit device sensors, maps and various cloud services.
×
Print
Course
APPLICAZIONI WEB: LINGUAGGI E ARCHITETTURE
Course ID
MF0224
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MANTOVANI DANIELE
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Programmazione web server-side: applicazioni web e servizi (REST).
Server-side web programming: web applications and services (REST).
Testi di riferimento/Textbooks
Suggeriti ma non obbligatori: http://csharpindepth.com/ https://www.manning.com/books/asp-net-core-in-action-second-edition
Suggested but not mandatory: http://csharpindepth.com/ https://www.manning.com/books/asp-net-core-in-action-second-edition
Obiettivi formativi/Mission
Apprendimento dei fondamenti del linguaggio C#. Apprendimento delle basi di ASP.Net MVC e capacità di applicarlo nella realizzazione di applicazioni web e servizi (REST) di media complessità.
Learning the fundamentals of the C # language. Learning the basics of ASP.Net MVC, and ability to use it in the development of medium complexity web applications and services (REST).
Prerequisiti/Required background knowledge
Conoscenza della programmazione ad oggetti. Conoscenza base dei concetti attinenti allo sviluppo nel mondo web: HTTP, HTML, CSS, JavaScript. Conoscenza base del modello relazionale. Conoscenza base di un DBMS relazionale (MySQL, PosgreSQL, ...). Conoscenza base di Windows.
Knowledge of object-oriented programming. Basic understanding of the concepts related to web development : HTTP, HTML, CSS, JavaScript. Basic knowledge of the relational model. Basic understanding of a RDBMS (MySQL, PosgreSQL, ...). Basic understanding of Windows.
Metodi didattici/Teaching methods
Nella prima parte del corso si alterneranno lezioni teoriche a esercitazioni in laboratorio. Nella seconda parte (più applicativa) i concetti verranno illustrati costruendo progressivamente, durante le lezioni, un'applicazione web completa.
In the first part of the course we will alternate lectures and lab exercises. In the second part (more practical) concepts will be illustrated by building progressively, during the lessons, a complete web application.
Altre informazioni/Further information
Durante il corso verranno assegnati degli esercizi.
Exercises assigned during the course.
Modalità di verifica dell'apprendimento/Assessment methods
Progetto di laboratorio e esame orale.
Lab project and oral discussion.
Programma esteso/Content
Il corso è diviso in due parti: la prima riguarda il linguaggio di programmazione C# (concetti e costrutti fondamentali), la seconda introduce invece all'utilizzo di ASP.Net MVC quale framework di sviluppo di applicazioni web di media complessità. Durante il corso verranno anche affrontati argomenti di supporto come l'accesso a dati relazionali (Object Relational Mapping), utilizzo di tool di sviluppo complessi (Visual Studio), unit testing.
The course is divided into two parts: the first concerns the C# programming language (basic concepts and constructs), the second introduces the use of theASP.Net MVC framework for the development of medium complexity web applications. The course will also introduce to related topics such as access to relational data (Object Relational Mapping), the use of complex development tools (Visual Studio), unit testing.
×
Print
Course
Business intelligence: gestione dei dati
Course ID
MF0059
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MONTANI Stefania
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano/Inglese
Italian/English
Contenuti/Content Summary
Il corso sarà articolato nelle seguenti parti: A) Datawarehousing B) Basi di dati temporali C) Supporto alle decisioni aziendali I contenuti delle varie parti si possono riassumere come segue: A) Metodologie e tecniche per reperire, analizzare, sintetizzare e ri-organizzare dati operazionali, al supporto di decisioni strategiche. B) Tecniche e metodologie per gestire il tempo nelle basi di dati relazionali. C) Metodologie e tecniche per la realizzazione di un moderno strumento di Business Intelligence;
The course will be organized into the following parts: A) Datawarehousing B) Temporal databases C) Enterprise decision support Contents of the four parts can be summarized as follows: A) Methodologies and techniques to collect, analyse, sinthetize and re-organize operational data, to support strategical decision-making B) Methodologies and techniques to deal with validity and transaction time in relational databases C) Methodologies and techniques to realize a modern Business Intelligence system;
Testi di riferimento/Textbooks
A) M. Golfarelli, S. Rizzi: “Data Warehose”, McGraw-Hill, Milano. B) La seconda parte del corso si avvale di pubblicazioni su riviste scientifiche fornite dal docente. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer.
A) M. Golfarelli, S. Rizzi: “Data Warehouse”, McGraw-Hill, Milano. B) The second part of the course (Temporal Issues) is bases of scientific journal publications provided by the teacher. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer.
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: gli studenti devono acquisire approfondita conoscenza di A) metodologie per reperire, analizzare, sintetizzare e ri-organizzare i dati operazionali; metodologie di progettazione a livello concettuale e di realizzazione livello logico in ambito relazionale di datawarehousing B) semantica delle basi di dati temporali; principali metodologie per gestire i tempi di validita' e di transazione nelle basi di dati relazionali; problematiche di base per il trattamento del tempo in basi di conoscenza C) metodologie e tecniche di rappresentazione e gestione della conoscenza, predizione, ottimizzazione, adattamento Capacita' di applicare conoscenza: A) capacita' di progettazione a livello concettuale e di realizzazione livello logico in ambito relazionale di datawarehousing, a partire dalle sorgenti di dati operazionali B) capacita' di utilizzare DBMS temporali quali TSQL2 C) capacità di valutare e/o applicare le tecniche studiate per progettare un sistema di supporto alle decisioni in un contesto aziendale, dove possono essere presenti dati e conoscenze eterogenee; Autonomia di giudizio: A) Abilita' nel determinare i fatti di interesse, la granularita', le dimensioni e le gerarchie dimensionali per un data warehouse B) Abilita' nel riconoscere l'eventuale necessita' di adottare tecniche specifiche\generali per la gestione del tempo nelle basi di dati; abilita' nell'individuare problematiche temporali (in basi di dati relazionali), e le metodologie atte a gestirle C) capacità di lavorare in maniera autonoma, anche in situazioni aziendali complesse o a fronte di informazioni incomplete Abilita, comunicative: A-B) Gli studenti devono acquisire e saper utilizzare la terminologia utilizzata nel campo del datawarehousing e delle basi di dati temporali. B) Devono saper esprimere in modo rigoroso (formale) la semantica delle basi di dati relazionali. C) devono saper giustificare le scelte progettuali o implementative fatte comunicandole in modo chiaro anche a utenti meno esperti Capacita' di apprendere: Gli studenti devono aver acquisito la capacita' di A) analizzare e modellare in modo uniforme dati provenienti da sorgenti eterogenee B) analizzare problemi temporali anche complessi nell'ambito delle basi di dati relationali C) descrivere e saper scegliere le più opportune tecniche per la realizzazione di un sistema di supporto alle decisioni aziendali
Knowledge and comprehension: students must acquire a deep knowledge about: A) the methodologies to retrieve, analyse, synthetise, and re-organise operational data; the methodologies to design at the conceptual and at the logical relational level a datawarehouse B) the semantics of temporal databases; the main methodologies to mana valid time and transaction time in temporal relational databases; the main problems when dealing with "time" in knowledge bases C) methodologies and techniques for: knowledge representation and management, prediction, optimization, adaptation. Capacity to apply knowledge and comprehension: A) ability to design (conceptual and logical level) and develop a datawarehouse in the relational context, starting from operational data sources B) capacity to properly use TSQL2-like temporal DBMS. C) ability to evaluate and/or apply the techniques studied in the course to design a decision support tool in an enterprise context, where heterogeneous data and knowledge may be available; Judgement autonomy: A) ability to identify facts of interest, granularity, dimensions and the hierarchy of dimensional attributes for a datawarehouse B) capability of recognizing the necessity of general\specific techniques to cope with time in relational DBs; ability to identify temporal problems (in DBs), and the methodologies to solve them C) ability to work in an autonomous way, and deal with complex enterprise situations or with incomplete information Communication abilities: A-B) Students must acquire and adopt the rigorous terminology used in datawarehousing and in temporal databases. B) They must also be able to express in a rigourous (formal) way the semantics of temporal databases. C) They must be able to justify their design or implementation choices and clearly communicate them also to a non expert audience. Learning capacity: students must acquire the capability of A) analysing a modeling in a uniform way data coming from heterogeneous sources B) analysing possibly complex temporal problems in temporal databases C) describing and properly choosing the correct techniques to realize an enterprise decision support system
Prerequisiti/Required background knowledge
Nozioni di base delle basi di dati relazionali, algebra relazionale, SQL
Basic notions about relational databases, relational algebra, SQL
Metodi didattici/Teaching methods
Lezione frontale in aula. Le lezioni frontali contempleranno anche la risposta a quesiti o la risoluzione di esercizi esemplificativi per lo svolgimento dell'esame. Esempi di test d'esame potranno essere forniti agli studenti. Le slide delle lezioni, i testi consigliati, ed altro materiale saranno forniti anche sulla piattaforma DIR, per consentire anche a chi non frequenta di tenersi al passo con lo svolgimento del corso.
Direct lessons in classroom. Classroom lessons will also include example questions or exercises useful for the final test. Example tests can also be provided to students. Slides, textbooks indications and additional material will be provided also through the DIR platform. In this way, the students who do not attend will be allowed to easily follow the course progression.
Modalità di verifica dell'apprendimento/Assessment methods
A) Scritto. Gli studenti devono rispondere a domande generali sul contenuto del corso, e svolgere piccoli esercizi. B) Orale C) Esame scritto. L'esame su questa parte del corso prevede un minimo di 3 domande, che verteranno su argomenti scelti tra: gestione della conoscenza, predizione, ottimizzazione, adattamento. Il voto terra' conto dei risultati parziali ottenuti nelle singole domande. Eventualmente (ad esempio, per richiesta dello studente), la stessa tipologia di esame potra' essere svolta oralmente
A) Written. Students must answer questions and do small exercises -B) Oral examination C) Written test. The test will be composed by three questions at least, focused on different course topics chosen among knowledge management, prediction, optimization, adaptation. The final score will take into account the partial scores of the different questions. Possibly (e.g., on student's request), the same exam type will be executed orally.
Programma esteso/Content
A (Data Warehousing): - Introduzione: obiettivi ed architetture - tecniche per reperire e riconciliare i dati operazionali - linguaggi di query OLAP - modelli e tecniche per l'implementazione del conceptual multidimensional data model in ambito relazionale - NOSQL (cenni) B (ASPETTI TEMPORALI): - tempi di validita' e di transazione - Un approccio generale al tempo nei DB relazionali: TSQL2 - il modello BCDM per la semantica delle basi di dati relazionali temporali - trattamento del tempo in Intelligenza Artificiale (cenni) C (Supporto alle decisioni aziendali): Nel corso l’esposizione sarà organizzata in quattro parti, ciascuna riferita alla realizzazione di uno dei quattro principali moduli che compongono la struttura di un moderno strumento di Business Intelligence: 1. gestione della conoscenza: conoscenza implicita ed esplicita; Rule-based Reasoning e Case-based Reasoning; soluzioni di Case-based Reasoning avanzate (dati in forma di serie temporali, fuzzy CBR, process-oriented CBR); 2. predizione: classificazione, regressione, serie temporali; metodi matematici, basati su distanze, logici, basati su euristiche; metodi ibridi; 3. ottimizzazione: metodi matematici, algoritmi evoluzionistici, ant systems, metodi ibridi; 4. adattamento: tecniche per migliorare le prestazioni del modulo di previsione.
A (Data Warehousing): - Introduction: goals and architectures for Data Warehousing - techniques to collect and reconcile heterogeneous operational data - languages and techniques for the conceptual design of a multidimensional data model - Advanced query languages for OLAP analysis - model and techniques for a relational implementation of the conceptual multidimensional data model – NoSQL (hints) B (Temporal issues): - Validity vs transaction time - TSQL2: a general approach coping with time in relational databases - The BCDM model for the semantics of temporal relational databases - Properties of temporal relational models - Advanced temporal issues and Artificial Intelligence (hints) C (Enterprise decision support): The subject will be organised in four parts, each one referring to the realization of a specific module in a modern Business Intelligence tool architecture: 1. knowledge management: implicit and explicit knowledge; Rule-based Reasoning and Case-based Reasoning; advanced Case-based Reasoning solutions (time series data, fuzzy CBR, process-oriented CBR); 2. prediction: classification, regression, time series; mathematical models, distance-based models, logic models, heuristic models; hybrid methods; 3. optimisation: mathematical methods, evolutionary algorithms, ant systems, hybrid methods; 4. adaptation: techniques to improve the prediction module performances.
Risultati di apprendimento attesi/Intended learning objectives
Gli studenti devono aver acquisito le seguenti conoscenze, competenze, ed abilita': A) - conoscenza delle tecniche per reperire e riconciliare i dati operazionali; - conoscenza generale dei linguaggi di query OLAP e capacita' di formulare query - conoscenza a capacita' di gestione di modelli e tecniche per l'implementazione del conceptual multidimensional data model in ambito relazionale - conoscenza generale di NOSQL (cenni) B) - conoscenza e capacita' di distinguere i tempi di validita' e di transazione - conosceza e capacita' di utilizzare l'approccio TSQL2 al tempo nei DB relazionali - conosceza e capacita' di utilizzare il modello BCDM per la semantica delle basi di dati relazionali temporali - conoscenza delle principali problematiche concernenti il trattamento del tempo in Intelligenza Artificiale (cenni) C) Le competenze da verificare, e necessarie per il superamento del corso, consistono nell'aver appreso i concetti di base relativi a: 1.gestione della conoscenza 2.predizione 3.ottimizzazione 4.adattamento Occorre inoltre essere in grado di dimostrare la capacita' di applicarli nel rispondere a quesiti di teoria, o nello svolgere alcuni esercizi.
Students must acquire the following knowledge, competences, and abilities A) - knowledge about the techniques to retrieve and reconcile operational data sources - general knowledge about OLAP query languages, and ability to formulate OLAP queries - model and techniques for a relational design and implementation of the conceptual multidimensional data model – NoSQL (hints) B) - knowledge and ability to distinguish validity vs transaction time - knowledge and ability to use TSQL2-like approaches to cope with time in relational databases - knowledge and ability to use the BCDM model to model the semantics of temporal relational databases - knowledge about the main issues concerning the treatment of time in Artificial Intelligence (hints) C) Having understood notions of: 1. knowledge management 2. prediction 3. optimisation 4. adaptation described in the lessons; being able to apply such notions in answering theoretic questions as well as exercises.
×
Print
Course
ELETTRONICA DIGITALE
Course ID
MF0309
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
RAMELLO Luciano
Teachers
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
FIS/01 - FISICA SPERIMENTALE
Course type
Attività formativa monodisciplinare
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Il corso si propone di approfondire argomenti di elettronica digitale, dalla realizzazione fisica con transistor delle porte logiche fondamentali, ai circuiti di logica combinatoria e sequenziale, alle memorie a semiconduttore e Solid State Disk, fino alla trasmissione di dati seriali e alla conversione analogico-digitale.
The purpose of this course is to present in some depth digital electronics topics, from the physical implementation with transistors of fundamental logic gates, to combinatorial and sequantial logic circuits, to semincoductor memories and Solid State Disks, to serial data transmission and analog/digital conversion.
Testi di riferimento/Textbooks
P. Horowitz and W. Hill, The art of electronics (second edition), Cambridge University Press (1989) - ISBN: 9780521370950 Ralph J. Smith, Electronics: circuits and devices (third edition), John Wiley and Sons (1987) - ISBN: 0471844462 Nigel P. Cook, Digital Electronics with PLD Integration, Prentice Hall (2001) - ISBN: 0130869074 Materiale fornito dal docente
P. Horowitz and W. Hill, The art of electronics (second edition), Cambridge University Press (1989) - ISBN: 9780521370950 Ralph J. Smith, Electronics: circuits and devices (third edition), John Wiley and Sons (1987) - ISBN: 0471844462 Nigel P. Cook, Digital Electronics with PLD Integration, Prentice Hall (2001) - ISBN: 0130869074 Materials provided by the instructor
Obiettivi formativi/Mission
Conoscenza e comprensione: Conoscere le caratteristiche fisiche delle porte logiche e dei circuiti digitali, comprendere il meccanismo di funzionamento dei transistor e degli altri componenti utilizzati. Capacità di applicare conoscenza e comprensione: Saper leggere e interpretare le specifiche dei componenti discreti e dei circuiti integrati. Autonomia di giudizio: Saper valutare quando utilizzare logica cablata, logica programmabile o microprocessore per una data applicazione.
Knowledge and understanding: Knowing the physical features of logic gates and digital circuits, understanding the working principles of transistors and other components used. Applying knowledge and understanding: Being able to read and interpret datasheets of discrete components and integrated circuits. Making judgements: Being able to decide when to use wired logic, progrfammable logic or a microprocessor for a given application.
Prerequisiti/Required background knowledge
Corsi di Fisica, Architettura 1.
Courses of Physics, Computer architecture 1.
Metodi didattici/Teaching methods
Lezioni frontali. Dimostrazioni del funzionamento di componenti discreti e circuiti integrati.
Lectures. Practical demonstrations of discrete electronic components and integrated circuits.
Altre informazioni/Further information
Controllo dell'apprendimento: verra' fatto mediante domande durante le lezioni frontali ed eventualmente quiz proposti sulla piattaforma D.I.R.
Monitoring the learning process: this will be achieved by posing questions to students during lectures and possibly through quizzes on the D.I.R. platform.
Modalità di verifica dell'apprendimento/Assessment methods
Esame orale. Di solito vengono poste due domande su due diversi argomenti svolti a lezione.
Oral exam. Usually two questions on two different topics developed during lectures are made.
Programma esteso/Content
Quantita' elettriche, dati e dispositivi analogici e digitali. Circuiti con componenti passivi e diodi. Circuiti con transistor BJT e MOS. Porte logiche fondamentali (OR, AND, NOT, NOR, XOR, NAND) e loro realizzazione fisica. Logica standard (cablata), logica programmabile e ASIC. Alcuni circuiti integrati digitali a varie scale di integrazione (SSI, MSI, LSI, VLSI). Codificatori, decodificatori, multiplexer, demultiplexer. Flip-flop, registri e contatori. Ricerca guasti nei circuiti digitali. Memorie a semiconduttore: ROM, EPROM, RAM. Memorie flash e Solid State Disk. Trasmissione dati seriale: RS-232 e USB. Conversione digitale-analogica e analogica-digitale.
Electrical quantities, analog and digital data and devices. Circuits with passive componets and diodes. Circuits with BJT and MOS transistors. Fundamental logic gates (OR, AND, NOT, NOR, XOR, NAND) and their physical implementation. Standard (wired) logic, programmable logic and ASICs. Some digital ICs at various degrees of integration (SSI, MSI, LSI,VLSI). Encoders, decoders, multiplexers, demultiplexers. Flip-flops, registers and counters. Troubleshooting digital circuits. Semiconductor memories: ROM, EPROM, RAM. Flash memories and Solid State Disks. Serial data transmission: RS-232 and USB. Digital-to-analog and analog-to-digital conversion.
Risultati di apprendimento attesi/Intended learning objectives
Gli studenti dovranno acquisire una buona conoscenza dei principi fisici di funzionamento delle porte logiche fondamentali e dei circuiti integrati digitali. Dovranno saper applicare le conoscenze acquisite ad esempio nella scelta dei componenti da utilizzare per una data applicazione di elettronica digitale.
Students will gain a fair knowledge of the physical working principles of fundamental logic gates and integrated circuits. They will be able to apply this knowledge e.g. to the choice of components to be used in a given digital electronics application.
×
Print
Course
BUSINESS INTELLIGENCE: GESTIONE DEI DATI
Course ID
MF0467
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MONTANI Stefania
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano/Inglese
Italian/English
Contenuti/Content Summary
Il corso sarà articolato nelle seguenti parti: A) Datawarehousing B) Basi di dati temporali C) Supporto alle decisioni aziendali I contenuti delle varie parti si possono riassumere come segue: A) Metodologie e tecniche per reperire, analizzare, sintetizzare e ri-organizzare dati operazionali, al supporto di decisioni strategiche. B) Tecniche e metodologie per gestire il tempo nelle basi di dati relazionali. C) Metodologie e tecniche per la realizzazione di un moderno strumento di Business Intelligence;
The course will be organized into the following parts: A) Datawarehousing B) Temporal databases C) Enterprise decision support Contents of the four parts can be summarized as follows: A) Methodologies and techniques to collect, analyse, sinthetize and re-organize operational data, to support strategical decision-making B) Methodologies and techniques to deal with validity and transaction time in relational databases C) Methodologies and techniques to realize a modern Business Intelligence system;
Testi di riferimento/Textbooks
A) M. Golfarelli, S. Rizzi: “Data Warehose”, McGraw-Hill, Milano. B) La seconda parte del corso si avvale di pubblicazioni su riviste scientifiche fornite dal docente. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer.
A) M. Golfarelli, S. Rizzi: “Data Warehouse”, McGraw-Hill, Milano. B) The second part of the course (Temporal Issues) is bases of scientific journal publications provided by the teacher. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer.
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: gli studenti devono acquisire approfondita conoscenza di A) metodologie per reperire, analizzare, sintetizzare e ri-organizzare i dati operazionali; metodologie di progettazione a livello concettuale e di realizzazione livello logico in ambito relazionale di datawarehousing B) semantica delle basi di dati temporali; principali metodologie per gestire i tempi di validita' e di transazione nelle basi di dati relazionali; problematiche di base per il trattamento del tempo in basi di conoscenza C) metodologie e tecniche di rappresentazione e gestione della conoscenza, predizione, ottimizzazione, adattamento Capacita' di applicare conoscenza: A) capacita' di progettazione a livello concettuale e di realizzazione livello logico in ambito relazionale di datawarehousing, a partire dalle sorgenti di dati operazionali B) capacita' di utilizzare DBMS temporali quali TSQL2 C) capacità di valutare e/o applicare le tecniche studiate per progettare un sistema di supporto alle decisioni in un contesto aziendale, dove possono essere presenti dati e conoscenze eterogenee; Autonomia di giudizio: A) Abilita' nel determinare i fatti di interesse, la granularita', le dimensioni e le gerarchie dimensionali per un data warehouse B) Abilita' nel riconoscere l'eventuale necessita' di adottare tecniche specifiche\generali per la gestione del tempo nelle basi di dati; abilita' nell'individuare problematiche temporali (in basi di dati relazionali), e le metodologie atte a gestirle C) capacità di lavorare in maniera autonoma, anche in situazioni aziendali complesse o a fronte di informazioni incomplete Abilita, comunicative: A-B) Gli studenti devono acquisire e saper utilizzare la terminologia utilizzata nel campo del datawarehousing e delle basi di dati temporali. B) Devono saper esprimere in modo rigoroso (formale) la semantica delle basi di dati relazionali. C) devono saper giustificare le scelte progettuali o implementative fatte comunicandole in modo chiaro anche a utenti meno esperti Capacita' di apprendere: Gli studenti devono aver acquisito la capacita' di A) analizzare e modellare in modo uniforme dati provenienti da sorgenti eterogenee B) analizzare problemi temporali anche complessi nell'ambito delle basi di dati relationali C) descrivere e saper scegliere le più opportune tecniche per la realizzazione di un sistema di supporto alle decisioni aziendali
Knowledge and comprehension: students must acquire a deep knowledge about: A) the methodologies to retrieve, analyse, synthetise, and re-organise operational data; the methodologies to design at the conceptual and at the logical relational level a datawarehouse B) the semantics of temporal databases; the main methodologies to mana valid time and transaction time in temporal relational databases; the main problems when dealing with "time" in knowledge bases C) methodologies and techniques for: knowledge representation and management, prediction, optimization, adaptation. Capacity to apply knowledge and comprehension: A) ability to design (conceptual and logical level) and develop a datawarehouse in the relational context, starting from operational data sources B) capacity to properly use TSQL2-like temporal DBMS. C) ability to evaluate and/or apply the techniques studied in the course to design a decision support tool in an enterprise context, where heterogeneous data and knowledge may be available; Judgement autonomy: A) ability to identify facts of interest, granularity, dimensions and the hierarchy of dimensional attributes for a datawarehouse B) capability of recognizing the necessity of general\specific techniques to cope with time in relational DBs; ability to identify temporal problems (in DBs), and the methodologies to solve them C) ability to work in an autonomous way, and deal with complex enterprise situations or with incomplete information Communication abilities: A-B) Students must acquire and adopt the rigorous terminology used in datawarehousing and in temporal databases. B) They must also be able to express in a rigourous (formal) way the semantics of temporal databases. C) They must be able to justify their design or implementation choices and clearly communicate them also to a non expert audience. Learning capacity: students must acquire the capability of A) analysing a modeling in a uniform way data coming from heterogeneous sources B) analysing possibly complex temporal problems in temporal databases C) describing and properly choosing the correct techniques to realize an enterprise decision support system
Prerequisiti/Required background knowledge
Nozioni di base delle basi di dati relazionali, algebra relazionale, SQL
Basic notions about relational databases, relational algebra, SQL
Metodi didattici/Teaching methods
Lezione frontale in aula. Le lezioni frontali contempleranno anche la risposta a quesiti o la risoluzione di esercizi esemplificativi per lo svolgimento dell'esame. Esempi di test d'esame potranno essere forniti agli studenti. Le slide delle lezioni, i testi consigliati, ed altro materiale saranno forniti anche sulla piattaforma DIR, per consentire anche a chi non frequenta di tenersi al passo con lo svolgimento del corso.
Direct lessons in classroom. Classroom lessons will also include example questions or exercises useful for the final test. Example tests can also be provided to students. Slides, textbooks indications and additional material will be provided also through the DIR platform. In this way, the students who do not attend will be allowed to easily follow the course progression.
Modalità di verifica dell'apprendimento/Assessment methods
A) Scritto. Gli studenti devono rispondere a domande generali sul contenuto del corso, e svolgere piccoli esercizi. B) Orale C) Esame scritto. L'esame su questa parte del corso prevede un minimo di 3 domande, che verteranno su argomenti scelti tra: gestione della conoscenza, predizione, ottimizzazione, adattamento. Il voto terra' conto dei risultati parziali ottenuti nelle singole domande. Eventualmente (ad esempio, per richiesta dello studente), la stessa tipologia di esame potra' essere svolta oralmente
A) Written. Students must answer questions and do small exercises -B) Oral examination C) Written test. The test will be composed by three questions at least, focused on different course topics chosen among knowledge management, prediction, optimization, adaptation. The final score will take into account the partial scores of the different questions. Possibly (e.g., on student's request), the same exam type will be executed orally.
Programma esteso/Content
A (Data Warehousing): - Introduzione: obiettivi ed architetture - tecniche per reperire e riconciliare i dati operazionali - linguaggi di query OLAP - modelli e tecniche per l'implementazione del conceptual multidimensional data model in ambito relazionale - NOSQL (cenni) B (ASPETTI TEMPORALI): - tempi di validita' e di transazione - Un approccio generale al tempo nei DB relazionali: TSQL2 - il modello BCDM per la semantica delle basi di dati relazionali temporali - trattamento del tempo in Intelligenza Artificiale (cenni) C (Supporto alle decisioni aziendali): Nel corso l’esposizione sarà organizzata in quattro parti, ciascuna riferita alla realizzazione di uno dei quattro principali moduli che compongono la struttura di un moderno strumento di Business Intelligence: 1. gestione della conoscenza: conoscenza implicita ed esplicita; Rule-based Reasoning e Case-based Reasoning; soluzioni di Case-based Reasoning avanzate (dati in forma di serie temporali, fuzzy CBR, process-oriented CBR); 2. predizione: classificazione, regressione, serie temporali; metodi matematici, basati su distanze, logici, basati su euristiche; metodi ibridi; 3. ottimizzazione: metodi matematici, algoritmi evoluzionistici, ant systems, metodi ibridi; 4. adattamento: tecniche per migliorare le prestazioni del modulo di previsione.
A (Data Warehousing): - Introduction: goals and architectures for Data Warehousing - techniques to collect and reconcile heterogeneous operational data - languages and techniques for the conceptual design of a multidimensional data model - Advanced query languages for OLAP analysis - model and techniques for a relational implementation of the conceptual multidimensional data model – NoSQL (hints) B (Temporal issues): - Validity vs transaction time - TSQL2: a general approach coping with time in relational databases - The BCDM model for the semantics of temporal relational databases - Properties of temporal relational models - Advanced temporal issues and Artificial Intelligence (hints) C (Enterprise decision support): The subject will be organised in four parts, each one referring to the realization of a specific module in a modern Business Intelligence tool architecture: 1. knowledge management: implicit and explicit knowledge; Rule-based Reasoning and Case-based Reasoning; advanced Case-based Reasoning solutions (time series data, fuzzy CBR, process-oriented CBR); 2. prediction: classification, regression, time series; mathematical models, distance-based models, logic models, heuristic models; hybrid methods; 3. optimisation: mathematical methods, evolutionary algorithms, ant systems, hybrid methods; 4. adaptation: techniques to improve the prediction module performances.
Risultati di apprendimento attesi/Intended learning objectives
Gli studenti devono aver acquisito le seguenti conoscenze, competenze, ed abilita': A) - conoscenza delle tecniche per reperire e riconciliare i dati operazionali; - conoscenza generale dei linguaggi di query OLAP e capacita' di formulare query - conoscenza a capacita' di gestione di modelli e tecniche per l'implementazione del conceptual multidimensional data model in ambito relazionale - conoscenza generale di NOSQL (cenni) B) - conoscenza e capacita' di distinguere i tempi di validita' e di transazione - conosceza e capacita' di utilizzare l'approccio TSQL2 al tempo nei DB relazionali - conosceza e capacita' di utilizzare il modello BCDM per la semantica delle basi di dati relazionali temporali - conoscenza delle principali problematiche concernenti il trattamento del tempo in Intelligenza Artificiale (cenni) C) Le competenze da verificare, e necessarie per il superamento del corso, consistono nell'aver appreso i concetti di base relativi a: 1.gestione della conoscenza 2.predizione 3.ottimizzazione 4.adattamento Occorre inoltre essere in grado di dimostrare la capacita' di applicarli nel rispondere a quesiti di teoria, o nello svolgere alcuni esercizi.
Students must acquire the following knowledge, competences, and abilities A) - knowledge about the techniques to retrieve and reconcile operational data sources - general knowledge about OLAP query languages, and ability to formulate OLAP queries - model and techniques for a relational design and implementation of the conceptual multidimensional data model – NoSQL (hints) B) - knowledge and ability to distinguish validity vs transaction time - knowledge and ability to use TSQL2-like approaches to cope with time in relational databases - knowledge and ability to use the BCDM model to model the semantics of temporal relational databases - knowledge about the main issues concerning the treatment of time in Artificial Intelligence (hints) C) Having understood notions of: 1. knowledge management 2. prediction 3. optimisation 4. adaptation described in the lessons; being able to apply such notions in answering theoretic questions as well as exercises.
×
Print
Course
LOGICA COMPUTAZIONALE
Course ID
S1736
Academic Year
2021/2022
Year of rule
2019/2020
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GIORDANO Laura
CFU
3
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OPZ
Course category
D
Year
3
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Nel modulo di Logica Computazionale: rappresentazione della conoscenza e ragionamento mediante formule e regole logiche, programmazione logica. Programmazione logica a vincoli; Answer Set Programming. Problem solving dichiarativo mediante strumenti di programmazione logica e ASP. Logiche descrittive, logiche temporali.
Computational logic: Knowledge representation and reasoning in logic and logic programming. Constraint logic programming; Answer Set Programming. Declarative problem solving using logic programming and ASP tools. Description logics, temporal logics.
Testi di riferimento/Textbooks
S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3rd edition), Prentice-Hall 2010. P. Hitzler, M. Krötzsch, S. Rudolph, Foundations of Semantic Web, CRC Press, 2010. K. Marriott, P. Stuckey, Programming with Constraints: an Introduction, MIT Press, 1998. M. Gebser, R. Kaminski, B. Kaufmann, and T. Schaub, Answer Set Solving in Practice, Morgan and Claypool, 2012.
S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3rd edition), Prentice-Hall 2010. P. Hitzler, M. Krötzsch, S. Rudolph, Foundations of Semantic Web, CRC Press, 2010. K. Marriott, P. Stuckey, Programming with Constraints: an Introduction, MIT Press, 1998. M. Gebser, R. Kaminski, B. Kaufmann, and T. Schaub, Answer Set Solving in Practice, Morgan and Claypool, 2012.
Obiettivi formativi/Mission
Capacità di applicare diversi formalismi di rappresentazione della conoscenza dichiarativa, ragionamento e problem solving, conoscendone espressività e limitazioni e giudicandone l’appropriatezza.
Being able to apply different formalisms for declarative knowledge representation, reasoning and problem solving, being aware of their expressiveness and limitations, and being able to judge whether they are appropriate.
Prerequisiti/Required background knowledge
Logica Matematica.
Mathematical logic.
Metodi didattici/Teaching methods
Lezioni frontali e sperimentazione in laboratorio. Le lezioni, oltre a descrivere i formalismi ne discutono le potenzialità e le limitazioni. Le esercitazioni permettono di conoscere strumenti software per utilizzare i diversi formalismi.
Lectures and practical activity in lab. Lectures describe the different formalism and discuss their power as well as their limitations. Practical activity allows students to know software tools for using the different formalisms.
Altre informazioni/Further information
La sperimentazione in laboratorio costituisce anche una verifica in itinere della comprensione e dell'apprendimento degli argomenti.
Lab activity is also used to verify on-the-fly the degree of knowledge and understanding of the subject.
Modalità di verifica dell'apprendimento/Assessment methods
Verifica della soluzione di esercizi pratici. Esame orale o esonero scritto. La prova prevede diverse domande, riguardanti argomenti svolti in una parte diversa del programma, , ed atte a verificare il raggiungimento degli obiettivi formativi. La valutazione complessiva terrà conto dei risultati conseguiti nelle singole domande.
Evaluation of the solutions for practical exercises. Oral or written examination. The exam involves several questions on different subjects within the course contents; the questions are suited to verifying the achievement of the learning outcomes. The evaluation takes into account the answers to individual questions.
Programma esteso/Content
Rappresentazione della conoscenza e ragionamento automatico in logica. Risoluzione. Programmazione logica. La programmazione logica a vincoli; l'Answer Set Programming. Problem solving dichiarativo mediante strumenti di programmazione logica e ASP. Logiche descrittive, logiche temporali.
Knowledge representation and automated reasoning in logic. Resolution. Logic programming. Constraint logic programming; Answer Set Programming. Declarative problem solving using logic programming and ASP. Description logics, temporal logics.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Print
Course
SISTEMI OPERATIVI
Course ID
MF0368
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GUAZZONE Marco
CFU
12
Teaching duration (hours)
96
SSD
INF/01 - INFORMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
2
Period
Annuale
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Modulo di Sistemi Operativi 1: - Introduzione ai sistemi operativi - Gestione e sincronizzazione dei processi e programmazione concorrente, - Gestione della memoria. - Gestione di processi e memoria in ambienti Unix. Modulo di Sistemi Operativi 2: Il programma del corso si articola su tre tematiche principali, ovvero gestione dell'I/O, progettazione e realizzazione dei file system, e tecniche di virtualizzazione.
Operating System 1 module: Introduction to operating system, process management, process synchronization and concurrent programming, memory management. Process management and synchronization in Unix. Operating System 2 module: The course focuses on three main topics, namely I/O management, design and implementation of file systems, and virtualization techniques.
Testi di riferimento/Textbooks
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Obiettivi formativi/Mission
Modulo di Sistemi Operativi 1: Conoscenza e capacità di comprensione: Comprendere i principi generali e il ruolo dei sistemi operativi, fornire le nozioni fondamentali relative ai processi e alla gestione della memoria. Capacità di applicare conoscenza e comprensione: Applicare i principi generali in un sistema reale in particolare mediante le chiamate di sistema di Unix. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto al migliore uso dei processi e delle tecniche di gestione della memoria. Gli studenti dovranno essere in grado di comunicare e spiegare i principi fondamentali dei sistemi operativi. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per utilizzare anche chiamate di sistema e tecniche di gestione dei processi e della memoria non svolte a lezione. Modulo di Sistemi Operativi 2: Conoscenza e capacità di comprensione: apprendere i principi generali che sono alla base del comportamento, della progettazione, e dello sviluppo dei componenti dei sistemi operativi moderni che si occupano (1) della gestione dei dispositivi di I/O (ad es., il sotto-sistema di I/O), (2) della gestione della memoria di massa (ad es., i file system), e (3) della virtualizzazione delle risorse hardware (ad es., gli hypervisor). Capacità di applicare conoscenza e comprensione: applicare i principi generali in un sistema reale. Autonomia di giudizio: valutare autonomamente, in termini di efficienza di gestione e di prestazioni, le migliori tecniche per la gestione dei dispositivi di I/O e della memoria secondaria, e quelle per la virtualizzazione. Abilità comunicative: comunicare e spiegare i principi fondamentali dei sistemi operativi legati alla gestione dei dispositivi di I/O e della memoria di massa, e alla tecniche per la virtualizzazione delle risorse hardware. Capacità di apprendere: acquisire quelle conoscenze metodologiche necessarie per valutare e utilizzare tecniche per la gestione dei dispositivi di I/O e della memoria secondaria, così come tecniche per la virtualizzazione delle risorse hardware, non affrontate nel corso.
Operating System 1 module: Knowledge and understanding: Understanding the role and the main principles of operating systems, providing basic notions on process management and memory management. Applying knowledge and understanding: Applying the general principles in a real system, in particular, using Unix system calls. Making judgements: students will be able to autonomously evaluate the best strategies to use processes and manage system memory. Communication skills: students will learn to communicate and justify the basic principles of operative systems. Learning skills: students will be able to autonomously learn how use system calls and processes mangemtn techniques not studied during the course. Operating System 2 module: Knowledge and understanding: learn the general principles underneath the behavior, the design and the development of the components of modern operating systems in charge of (1) managing I/O devices (e.g., I/O subsystems), (2) managing mass storage (e.g., file systems), and (3) virtualizing hardware resources (e.g., hypervisors). Applying knowledge and understanding: applying the general principles in a real system. Making judgements: autonomously evaluate, in terms of efficiency of management and performance, the best techniques to manage I/O devices and mass storage, as well as for the virtualization of hardware resources. Communication skills: communicate and justify the fundamentals principles of operating systems related to the management of I/O devices and of mass storage as well as to the techniques for the virtualization of hardware resources. Learning skills: Autonomously learn the methodological skills needed to evaluate and use techniques for the management of I/O devices and mass storage, as well as for the virtualization of hardware resources, not studied during the course.
Prerequisiti/Required background knowledge
Modulo di Sistemi Operativi 1: Programmazione 1 e 2, Architetture degli Elaboratori. Modulo di Sistemi Operativi 2: Architetture degli Elaboratori, Sistemi Operativi 1.
Operating System 1 module: The contents of a first course in computer architecture and in programming. Operating System 2 module: Computer Architecture, Operating Systems 1
Metodi didattici/Teaching methods
Modulo di Sistemi Operativi 1: lezioni frontali ed esercitazione in laboratorio. Modulo di Sistemi Operativi 2: solo lezioni frontali
Operating System 1 module: standard lectures and programming sessions in the computer lab. Operating System 2 module: class lectures only
Altre informazioni/Further information
Modulo di Sistemi Operativi 1: Controllo dell'apprendimento in itinere: durante il corso vengono svolte delle esercitazioni in laboratorio sotto la supervisione di un docente. Modulo di Sistemi Operativi 2: Per superare l'esame lo studente deve dimostrare di aver appreso (1) i concetti relativi al funzionamento delle periferiche di I/O, (2) i meccanismi impiegati dal sistema operativo per gestire tali periferiche, (3) le metodologie di progettazione e sviluppo dei file system, e (4) le tecniche di virtualizzazione delle risorse hardware.
Operating System 1 module: Learning process monitoring: during the course the students will complete assignments in the computer lab under the supervision of a teacher. Operating System 2 module: To pass the exam, the student has to prove the knowledge (1) of the concepts underlying the operation of I/O devices, (2) of the mechanisms employed by the operating system to manage the above devices, (3) of the design and implementation methodologies and (4) of the techniques for the virtualization of hardware resources.
Modalità di verifica dell'apprendimento/Assessment methods
Modulo di Sistemi Operativi 1: Esame scritto o orale con alcune (da 4 a 6) domande sui diversi argomenti trattati nel corso e alcuni (da 1 a 3) esercizi di programmazione riguardanti le esercitazioni pratiche svolte in laboratorio. Il voto finale terrà conto della valutazione ottenuta sulle singole domande e esercizi. Modulo di Sistemi Operativi 2: Esame scritto e orale opzionale. La prova d'esame prevede uno o più quesiti (tipicamente 4 o 5) posti sotto forma di domande teoriche o esercizi. Gli argomenti comprendono quelli presentati durante le lezioni frontali e dettagliati nel programma del corso. Il voto finale terrà conto del risultato parziale ottenuto in ogni quesito.
Operating System 1 module: Written or oral exam consisting in 4-6 questions and 1-3 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments. Operating System 2 module: Written and optional oral examination. The examination consist in one or more questions (usually 4 or 5) posed in the form of theoretical questions or exercises. Topics include those presented during classroom lessons and detailed in the course program. The final score will take into account the partial score got in each question.
Programma esteso/Content
Modulo di Sistemi Operativi 1: Nozioni fondamentali sull'architettura del sistema operativo di un elaboratore multiutente. Nucleo del sistema operativo. Gestione di processi e threads. Sincronizzazione di processi e threads e programmazione concorrente. Deadlocks. Gestione della memoria. Processi nel sistema Unix. Generalità sull'utilizzo delle chiamate di sistema Unix; chiamate di sistema per gestione di processi, libreria per threads. Chiamate di sistema e funzioni di libreria per sincronizzazione di processi e threads. Modulo di Sistemi Operativi 2: Il programma del corso si articola in tre macro-argomenti: 1) Gestione dell'I/O: architettura del sottosistema di I/O; interfaccia di I/O per le applicazioni; sottosistema di I/O del kernel; struttura dei dispositivi di memorizzazione; struttura dei dischi; scheduling del disco; gestione dell'unità a disco; sistemi RAID; gestione del risparmio energetico. 2) Progettazione e realizzazione di file system: il concetto di file e di file system; struttura della directory e del disco; condivisione di file; meccanismi di protezione dei file; struttura del file system; implementazione di file e directory; metodi di allocazione; gestione dello spazio libero; metodi di allocazione; efficienza e prestazioni; consistenza; backup e ripristino. 3) Progettazione e realizzazione di tecniche di virtualizzazione: il concetto di macchina virtuale e di hypervisor; virtualizzare la CPU; problematiche e soluzioni per la virtualizzazione dell'architettura x86; virtualizzare la memoria; virtualizzare l'I/O; il Cloud.
Operating System 1 module: General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix systems. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization. Operating System 2 module: The course program consists of three main topics: 1) I/O Management: the architecture of the I/O subsystem; I/O interface; kernel I/O subsystems; storage devices; disk structure, management, and scheduling; RAID systems. power management. 2) File systems: file system organizations; file system structures; file system design and implementation techniques; mechanisms for file sharing and protection; disk free space management; disk space allocation; performance and efficiency of file systems; consistenza; backup and restore 3) Virtualization: virtual machines and hypervisors; CPU virtualization, issues and solution for the virtualization of the x86 architecture; Memory virtualization; I/O virtualization; the Cloud.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame.
Achievement of the learning targets, as measured by the examination grade.
Modules
Course ID Course SSD Teachers Agenda web
MF0369SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 INF/01 - INFORMATICA Cerotti Davide
MF0370SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 INF/01 - INFORMATICA Guazzone Marco
Show parent course details
×
Print
Course
SISTEMI OPERATIVI: SISTEMI OPERATIVI 1
Course ID
MF0369
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CEROTTI DAVIDE
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
- Introduzione ai sistemi operativi - Gestione e sincronizzazione dei processi e programmazione concorrente, - Gestione della memoria. - Gestione di processi e memoria in ambienti Unix.
Introduction to operating system, process management, process synchronization and concurrent programming, memory management. Process management and synchronization in Unix.
Testi di riferimento/Textbooks
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: Comprendere i principi generali e il ruolo dei sistemi operativi, fornire le nozioni fondamentali relative ai processi e alla gestione della memoria. Capacità di applicare conoscenza e comprensione: Applicare i principi generali in un sistema reale in particolare mediante le chiamate di sistema di Unix. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto al migliore uso dei processi e delle tecniche di gestione della memoria. Gli studenti dovranno essere in grado di comunicare e spiegare i principi fondamentali dei sistemi operativi. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per utilizzare anche chiamate di sistema e tecniche di gestione dei processi e della memoria non svolte a lezione.
Knowledge and understanding: Understanding the role and the main principles of operating systems, providing basic notions on process management and memory management. Applying knowledge and understanding: Applying the general principles in a real system, in particular, using Unix system calls. Making judgements: students will be able to autonomously evaluate the best strategies to use processes and manage system memory. Communication skills: students will learn to communicate and justify the basic principles of operative systems. Learning skills: students will be able to autonomously learn how use system calls and processes mangemtn techniques not studied during the course.
Prerequisiti/Required background knowledge
Programmazione 1 e 2, Architetture degli Elaboratori.
The contents of a first course in computer architecture and in programming.
Metodi didattici/Teaching methods
Lezioni frontali ed esercitazione in laboratorio.
Standard lectures and programming sessions in the computer lab.
Altre informazioni/Further information
Controllo dell'apprendimento in itinere: durante il corso vengono svolte delle esercitazioni in laboratorio sotto la supervisione di un docente.
Learning process monitoring: during the course the students will complete assignments in the computer lab under the supervision of a teacher.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto o orale con alcune (da 4 a 6) domande sui diversi argomenti trattati nel corso e alcuni (da 1 a 3) esercizi di programmazione riguardanti le esercitazioni pratiche svolte in laboratorio. Il voto finale terrà conto della valutazione ottenuta sulle singole domande e esercizi.
Written or oral exam consisting in 4-6 questions and 1-3 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso/Content
Nozioni fondamentali sull'architettura del sistema operativo di un elaboratore multiutente. Nucleo del sistema operativo. Gestione di processi e threads. Sincronizzazione di processi e threads e programmazione concorrente. Deadlocks. Gestione della memoria. Processi nel sistema Unix. Generalità sull'utilizzo delle chiamate di sistema Unix; chiamate di sistema per gestione di processi, libreria per threads. Chiamate di sistema e funzioni di libreria per sincronizzazione di processi e threads.
General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix systems. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame.
Achievement of the learning targets, as measured by the examination grade.
Show parent course details
×
Print
Course
SISTEMI OPERATIVI: SISTEMI OPERATIVI 2
Course ID
MF0370
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GUAZZONE Marco
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
2
Period
Secondo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il programma del corso si articola su tre tematiche principali, ovvero gestione dell'I/O, progettazione e realizzazione dei file system, e tecniche di virtualizzazione.
The course focuses on three main topics, namely I/O management, design and implementation of file systems, and virtualization techniques.
Testi di riferimento/Textbooks
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Education, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: apprendere i principi generali che sono alla base del comportamento, della progettazione, e dello sviluppo dei componenti dei sistemi operativi moderni che si occupano (1) della gestione dei dispositivi di I/O (ad es., il sotto-sistema di I/O), (2) della gestione della memoria di massa (ad es., i file system), e (3) della virtualizzazione delle risorse hardware (ad es., gli hypervisor). Capacità di applicare conoscenza e comprensione: applicare i principi generali in un sistema reale. Autonomia di giudizio: valutare autonomamente, in termini di efficienza di gestione e di prestazioni, le migliori tecniche per la gestione dei dispositivi di I/O e della memoria secondaria, e quelle per la virtualizzazione. Abilità comunicative: comunicare e spiegare i principi fondamentali dei sistemi operativi legati alla gestione dei dispositivi di I/O e della memoria di massa, e alla tecniche per la virtualizzazione delle risorse hardware. Capacità di apprendere: acquisire quelle conoscenze metodologiche necessarie per valutare e utilizzare tecniche per la gestione dei dispositivi di I/O e della memoria secondaria, così come tecniche per la virtualizzazione delle risorse hardware, non affrontate nel corso.
Knowledge and understanding: learn the general principles underneath the behavior, the design and the development of the components of modern operating systems in charge of (1) managing I/O devices (e.g., I/O subsystems), (2) managing mass storage (e.g., file systems), and (3) virtualizing hardware resources (e.g., hypervisors). Applying knowledge and understanding: applying the general principles in a real system. Making judgements: autonomously evaluate, in terms of efficiency of management and performance, the best techniques to manage I/O devices and mass storage, as well as for the virtualization of hardware resources. Communication skills: communicate and justify the fundamentals principles of operating systems related to the management of I/O devices and of mass storage as well as to the techniques for the virtualization of hardware resources. Learning skills: Autonomously learn the methodological skills needed to evaluate and use techniques for the management of I/O devices and mass storage, as well as for the virtualization of hardware resources, not studied during the course.
Prerequisiti/Required background knowledge
Architetture degli Elaboratori, Sistemi Operativi 1.
Computer Architecture, Operating Systems 1
Metodi didattici/Teaching methods
Solo lezioni frontali
Class lectures only
Altre informazioni/Further information
Per superare l'esame lo studente deve dimostrare di aver appreso (1) i concetti relativi al funzionamento delle periferiche di I/O, (2) i meccanismi impiegati dal sistema operativo per gestire tali periferiche, (3) le metodologie di progettazione e sviluppo dei file system, e (4) le tecniche di virtualizzazione delle risorse hardware.
To pass the exam, the student has to prove the knowledge (1) of the concepts underlying the operation of I/O devices, (2) of the mechanisms employed by the operating system to manage the above devices, (3) of the design and implementation methodologies and (4) of the techniques for the virtualization of hardware resources.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto e orale opzionale. La prova d'esame prevede uno o più quesiti (tipicamente 4 o 5) posti sotto forma di domande teoriche o esercizi. Gli argomenti comprendono quelli presentati durante le lezioni frontali e dettagliati nel programma del corso. Il voto finale terrà conto del risultato parziale ottenuto in ogni quesito.
Written and optional oral examination. The examination consist in one or more questions (usually 4 or 5) posed in the form of theoretical questions or exercises. Topics include those presented during classroom lessons and detailed in the course program. The final score will take into account the partial score got in each question.
Programma esteso/Content
Il programma del corso si articola in tre macro-argomenti: 1) Gestione dell'I/O: architettura del sottosistema di I/O; interfaccia di I/O per le applicazioni; sottosistema di I/O del kernel; struttura dei dispositivi di memorizzazione; struttura dei dischi; scheduling del disco; gestione dell'unità a disco; sistemi RAID; gestione del risparmio energetico. 2) Progettazione e realizzazione di file system: il concetto di file e di file system; struttura della directory e del disco; condivisione di file; meccanismi di protezione dei file; struttura del file system; implementazione di file e directory; metodi di allocazione; gestione dello spazio libero; metodi di allocazione; efficienza e prestazioni; consistenza; backup e ripristino. 3) Progettazione e realizzazione di tecniche di virtualizzazione: il concetto di macchina virtuale e di hypervisor; virtualizzare la CPU; problematiche e soluzioni per la virtualizzazione dell'architettura x86; virtualizzare la memoria; virtualizzare l'I/O; il Cloud.
The course program consists of three main topics: 1) I/O Management: the architecture of the I/O subsystem; I/O interface; kernel I/O subsystems; storage devices; disk structure, management, and scheduling; RAID systems. power management. 2) File systems: file system organizations; file system structures; file system design and implementation techniques; mechanisms for file sharing and protection; disk free space management; disk space allocation; performance and efficiency of file systems; consistenza; backup and restore 3) Virtualization: virtual machines and hypervisors; CPU virtualization, issues and solution for the virtualization of the x86 architecture; Memory virtualization; I/O virtualization; the Cloud.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame.
Achievement of the learning targets, as measured by the examination grade.
×
Print
Course
METODOLOGIE DI PROGRAMMAZIONE PER IL WEB
Course ID
MF0438
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CANNAVO' ALBERTO
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
2
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Scopo del corso è acquisire le capacità di base per progettare e realizzare siti ed applicazioni sul World Wide Web, costituiti da testi, elementi multimediali e interattivi secondo un'architettura 3-tier (client/application/data). Verranno illustrati i concetti di base sull'utilizzo di markup languages come HTML5 e CSS3, i concetti più importanti relativi alla programmazione Web lato client (JavaScript) e lato server (Node.js), nonché le modalità di interazione con DBMS relazionali (RDBMS). Particolare attenzione verrà posta agli aspetti di accessibilità di siti e applicazioni web.
The aim of the course is to acquire the basic skills to design and build websites and applications on the World Wide Web, consisting of texts and interactive elements according to a 3-tier architecture (client / application / data). During the course, the basic concepts of using markup languages ​​such as HTML5 and CSS3 and the most important concepts related to client-side (JavaScript) and server-side (Node.js) web programming will be illustrated, , as well as interaction with DBMS relational modes (RDBMS ). Particular attention will be paid to the accessibility aspects of websites and web applications.
Testi di riferimento/Textbooks
Materiale fornito dal docente. Opzionalmente: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson
Material provided by the teacher. Optionally: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson
Obiettivi formativi/Mission
Acquisire le capacità di base per realizzare siti ed applicazioni web di media complessità, usabili e accessibili, costituiti da testi, elementi multimediali e interattivi secondo un'architettura 3-tier (client/application/data).
To acquire the basic skills to create websites and web applications of medium complexity, usable and accessible, consisting of texts, multimedia and interactive elements according to a 3-tier architecture (client / application / data).
Prerequisiti/Required background knowledge
Programmazione ad oggetti. Basi di Dati.
Object-oriented programming. Databases.
Metodi didattici/Teaching methods
Il corso è organizzato in lezioni frontali e laboratori pratici in cui saranno applicati i concetti esposti su esempi di complessità crescente.
The course is organized in lectures and practical workshops in which the concepts presented will be applied to examples of increasing complexity.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame consisterà nella realizzazione e discussione di un progetto pratico scelto dallo studente e che deve corrispondere a requisiti funzionali e architetturali illustrati ad inizio corso. Lo studente dovrà autonomamente dimostrare di aver appreso le seguenti competenze: - definire i requisiti funzionali del sito/applicazione web - strutturare il sito/applicazione web, organizzandolo in pagine e moduli coerenti - selezionare il paradigma architetturale da utilizzare sulla base di quelli descritti durante il corso, e progettare l'architettura dell'applicazione secondo il modello 3-tier - definire e implementare le caratteristiche delle pagine secondo i principi di usabilità introdotti durante il corso, e utilizzando in maniera appropriata HTML, CSS e Javascript - costruire un sito con elementi dinamici interfacciandosi opportunamente con il database progettato - gestire l'autenticazione e autorizzazione degli utenti, personalizzando il comportamento dell'applicazione sulla base del tipo di utente La valutazione del progetto terrà conto: - del rispetto dei requisiti tecnici, stilistici e funzionali indicati - della correttezza dell’implementazione (assenza di bug, crash, comportamenti inattesi) - dell’appropriatezza delle scelte progettuali effettuate - dell’accuratezza dell’implementazione (accuratezza dei controlli, personalizzazione del front end, usabilità, etc.) - della complessità tecnica dei requisiti scelti (a titolo di esempio, il numero e tipologie di utenti previsti) La valutazione del progetto sarà espressa in 30/30. Saranno previsti fino a 2 punti aggiuntivi che tengono conto della complessità dell’applicazione implementata e dell’accuratezza dell’implementazione sia dal punto di vista funzionale che tecnico/stilistico.
The exam will consist in the design, implementation and discussion of a practical project chosen by the student and which must correspond to the functional and architectural requirements illustrated at the beginning of the course. The student must independently demonstrate the following skills: - define the functional requirements of the website / web application - structure the website / web application, organizing it into coherent pages and modules - select the architectural paradigm to be used on the basis of those described during the course, and design the application architecture according to the 3-tier model - define and implement the features of the pages according to the usability principles introduced during the course, and using HTML, CSS and Javascript appropriately - build a site with dynamic elements by interfacing appropriately with the designed database - manage user authentication and authorization, customizing the application behavior based on the user type The project assessment will take into account: - compliance with the technical, stylistic and functional requirements indicated - the correctness of the implementation (absence of bugs, crashes, unexpected behaviours) - the appropriateness of the design and architectural choices - the accuracy of the implementation (accuracy of controls, customization of the front end, usability, etc.) - the technical complexity of the chosen requirements (e.g., the number and types of users expected, etc.) The assessment of the project will be expressed in 30/30. Up to 2 additional points may be assigned based on the complexity of the implemented application and the accuracy of the implementation from either a functional or technical / stylistic point of view.
Programma esteso/Content
Concetti base di programmazione e progettazione per il web Il linguaggio HTML (HTML5) Cascading Style Sheets (CSS3) e il design responsive Accessibilità di pagine e applicazioni web Programmazione client-side: JavaScript, DOM, AJAX Richiami di progettazione RDBMS Programmazione server-side: web server e architettura 3-tier, node.js e il framework Express Interfacciamento con RDBMS Cenni sui web service e sulle API Strumenti di sviluppo, dentro e fuori dal browser
Basic concepts of programming and design for the web HTML language (HTML5) Cascading Style Sheets (CSS3) and responsive design Accessibility of web pages and applications Client-side programming: JavaScript, DOM, AJAX Review of RDBMS design Server-side programming: web server and 3-tier architecture, node.js and the Express framework Interfacing with RDBMS Notes on web services and APIs Development tools, in and out of the browser
Risultati di apprendimento attesi/Intended learning objectives
Acquisire le capacità di base per realizzare siti ed applicazioni web di media complessità, usabili e accessibili, costituiti da testi, elementi multimediali e interattivi secondo un'architettura 3-tier (client/application/data).
To acquire the basic skills to create websites and web applications of medium complexity, usable and accessible, consisting of texts, multimedia and interactive elements according to a 3-tier architecture (client / application / data).
×
Print
Course
BASI DI DATI E SISTEMI INFORMATIVI
Course ID
MF0211
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GIORDANO Laura
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Dei principali modelli dei dati adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello. Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali. La parte di sperimentazioni comprende lo sviluppo di casi di studio di progettazione concettuale e logica, un'introduzione al linguaggio SQL e sue applicazioni alla gestione di una base di dati.
Among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. Sperimentazioni: We introduce some case studies and we design databases for such case studies by defining conceptual and logical models. We also introduce the SQL language for the management of a database.
Testi di riferimento/Textbooks
Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di Dati: Modelli e Linguaggi di Interrogazione Mc Graw-Hill, quinta edizione, 2018
Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di Dati: Modelli e Linguaggi di Interrogazione Mc Graw-Hill, quinta edizione, 2018
Obiettivi formativi/Mission
Obiettivo del corso è fornire gli strumenti metodologici e formali per progettare le strutture logiche e fisiche di una base di dati relazionale a partire dai requisiti del sistema informatico espressi dagli utenti. Favorire lo sviluppo da parte degli studenti di abilità pratiche nella progettazione concettuale e logica di una base di dati. Sviluppare competenze nell'uso del linguaggio SQL sia negli aspetti DDL che DML.
The course aims at introducing the main methodological and formal tools for designing the logical structure of a relational database, starting from the requirements specification. Another aim is to promote the development by students of practical skills in the conceptual and logical design of a database and of skills in the use of SQL language in both the definition and manipulation of databases.
Prerequisiti/Required background knowledge
Avere seguito i corsi di Programmazione e di Architettura degli elaboratori del I anno.
The courses in programming and computer architectures of the first year.
Metodi didattici/Teaching methods
Lezioni frontali in aula e esercitazioni in aula e in laboratorio informatico.
Lectures and exercises in the classroom and computer lab.
Altre informazioni/Further information
Le competenze da verificare, e necessarie per il superamento del corso consistono nella capacità di aver appreso i concetti di base relativi al modello relazionale, al modello Entità-Relazione e alla teoria della normalizzazione. Sperimentazioni: Le competenze verificate in sede d'esame consistono nella dimostrazione di aver appreso i concetti di base relativamente alla progettazione di basi di dati e l'uso del linguaggio SQL, mediante lo sviluppo di un progetto di laboratorio.
The students should have acquired the base notions of the relational model, of the entity-relation model and of normalization theory. Sperimentazioni: for successfully completing Sperimentazioni the students should prove to have learned the basic concepts relating to database design and the use of SQL language, through the realization of a lab project.
Modalità di verifica dell'apprendimento/Assessment methods
Fondamenti: un esame scritto ed un'orale opzionale. La prova prevede diverse domande, riguardanti argomenti svolti in una parte diversa del programma. La valutazione complessiva terrà conto dei risultati conseguiti nelle singole domande. Sperimentazioni: una prova orale individuale comprendente la discussione di una relazione riguardante un progetto di laboratorio assegnato dai docenti. Il progetto di laboratorio consiste di due parti: i) progettazione di un modello concettuale e un modello logico per una base di dati adeguata ai requisiti assegnati dai docenti e ii) scrittura di alcune query SQL sullo schema relazionale ottenuto. Il progetto di laboratorio viene svolto autonomamente dagli studenti in piccoli gruppi di indicativamente massimo tre persone e dovranno preparare una relazione da consegnare al docente alcuni giorni prima della discussione. La discussione della relazione può essere integrata con domande riguardanti i concetti fondamentali delle basi di dati relazionali usando come spunto la relazione presentata. Il punteggio totale della discussione è di 30 punti. La valutazione complessiva terrà conto dei punteggi parziali conseguiti nelle due parti.
Fondamenti: A written examination and an optional discussion. The exam involves several questions on different subjects within the course contents. The evaluation takes into account the answers to the different questions. Sperimentazioni: an individual oral examination where a lab project will be discussed. The lab project consists of two parts: i) the design of a conceptual and a logical model for a database (the requirements for such a database are assigned by the teachers) and ii) some SQL queries assigned by the teacher on the relational schema. The lab project is carried out by the students working in small groups of approximately up to three people. The students are expected to write a report about their lab project to be delivered to the teacher a few days before the discussion. The individual oral examination can be supplemented with questions regarding the basic concepts of relational databases using as a basis the students’ report. The total score of this partial test is 30 points. The overall assessment will take account of the partial scores obtained in the two parts.
Programma esteso/Content
Fondamenti: dei principali modelli dei dati adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello. Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali. Il corso si articola nelle seguenti parti: Modello Relazionale; Algebra Relazionale; Modello Entità-Relazione; Traduzione del Modello ER nel modello Relazionale; Normalizzazione. Viene inoltre descritta brevemente l'architettura di un DBMS, che viene presentata succintamente seguendo lo schema di descrizione generale a tre livelli di astrazione: esterno, logico e fisico. Vengono introdotte le nozioni di base sugli indici e sulle transazioni. Sperimentazioni: Progettazione concettuale e logica: presentazione di casi di studio. Introduzione al linguaggio SQL: Data Definition Language, Data Manipulation Language e Query Language. Implementazione e gestione di una base dati relazionale usando SQL mediante la realizzazione di alcuni casi di studio in laboratorio. Utilizzo del DBMS PostgreSQL.
Among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. The course consists of the following parts: Relational Model; Relational Algebra; Entity-Relationship Model; translation from the ER model to the relational model; Normal Forms. The threelevel architecture of a DBMS is introduced. The main notions on indexes and transactions are briefly discussed. Sperimentazioni: Conceptual and logical design: introduction of case studies. Introduction to SQL: Data Definition Language, Data Manipulation Language and Query Language. Implementation and management of a relational database using SQL through the implementation of some case studies in the computer lab. Use of the PostgreSQL DBMS.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Print
Course
CALCOLO DELLE PROBABILITÀ E STATISTICA
Course ID
MF0357
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FERRERO ALBERTO
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
2
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Elementi di Probabilità: assiomi della probabilità, diagrammi di Venn, spazi equiprobabili, probabilità condizionata, Teorema di Bayes. Variabili aleatorie discrete e continue, variabili aleatorie indipendenti, valore atteso. Varianza e covarianza. Modelli di variabili aleatorie: variabili di Bernoulli e binomiali, ipergeometriche, geometriche. Distribuzione di Poisson, variabili aleatorie uniformi, variabili aleatorie normali, variabili aleatorie esponenziali. Teorema del Limite Centrale. Statistica di base. Gruppi di dati, media, mediana, quartili. Definizione delle statistiche campionarie. Valori attesi, varianza campionaria. Stime dei parametri. Verifica delle ipotesi e applicazioni.
Basic probability theory: the axioms of probability, Venn diagrams, space with equally likely outcomes, conditional probability, Bayes formula. Discrete and continuous random variables, independent random variables, expected values. Variance and covariance. Special random variables: Bernoulli and binomial random variables, hypergeometric and geometric variables. Poisson distribution, uniform random variables, normal random variables, exponential random variables. Central Limit Theorem. Basic statistics. Set of data, mean, quartiles. Definition of sample statistics, sample variance. Parameter estimations. Hypothesis testing and applications.
Testi di riferimento/Textbooks
Sheldon M. Ross: Probabilità e Statistica per l'Ingegneria e le Scienze, Apogeo Education – Seconda Edizione 2008
Sheldon M. Ross: Introduction to probability and statistics for Engineers and scientists, Elsevier 2004 (Probabilità e Statistica per l'Ingegneria e le Scienze,Apogeo Education – Seconda Edizione 2008)
Obiettivi formativi/Mission
Avviare lo studente agli elementi base della teoria e della pratica del calcolo delle probabilità.  Introdurre le principali distribuzioni di probabilità e il loro utilizzo. Introdurre lo studente alle basi della statistica, definizione della statistiche, stima dei parametri, verifica delle ipotesi.
Introduce the student to the basic elements of theory and application of probability. Introduce the most important probability distributions with applications. Introduce the students to the basic elements of statistics, statistical mean, statistical variance, parameter estimations, hypothesis verifications.
Prerequisiti/Required background knowledge
Conoscenza dei principali contenuti dei corsi di Analisi Matematica I e Matematica Discreta.
Basic notions of the courses of Mathematical Analysis I and Discrete Mathematics.
Metodi didattici/Teaching methods
Lezioni frontali ed esercitazioni.
Class lectures with exercises.
Altre informazioni/Further information
L'esame è costituito da una prova scritta e da una prova orale facoltativa.
The exam consists of a written test and of an optional oral test.
Modalità di verifica dell'apprendimento/Assessment methods
La prova scritta è costituita da esercizi suddivisi equamente tra la parte di teoria della probabilità e la parte di statistica. Non è esclusa la presenza di una domanda teorica per verificare il livello di approfondimento raggiunto dallo studente.
The written exam consists in exercises, focused equitably on a part about probability theory and a part about statistics. The presence of a theoretical question to verify the level of knowledge achieved by the student, is not excluded.
Programma esteso/Content
Elementi di Probabilità: assiomi della probabilità, diagrammi di Venn, spazi equiprobabili, probabilità condizionata, Teorema di Bayes. Variabili aleatorie discrete e continue, variabili aleatorie indipendenti, valore atteso. Varianza e covarianza. Modelli di variabili aleatorie: variabili di Bernoulli e binomiali, ipergeometriche, geometriche. Distribuzione di Poisson, variabili aleatorie uniformi, variabili aleatorie normali, variabili aleatorie esponenziali. Teorema del Limite Centrale. Statistica di base. Gruppi di dati, media, mediana, quartili. Definizione delle statistiche campionarie. Valori attesi, varianza campionaria. Stima dei parametri. Stimatori di massima verosomiglianza, derivazione delle principali distribuzioni. Stima per la media, per la varianza e stime parametriche. Intervalli di confidenza. Verifica delle ipotesi e applicazioni.
Basic probability theory: the axioms of probability, Venn diagrams, space with equally likely outcomes, conditional probability, Bayes formula. Discrete and continuous random variables, independent random variables, expected values. Variance and covariance. Special random variables: Bernoulli and binomial random variables, hypergeometric and geometric variables. Poisson distribution, uniform random variables, normal random variables, exponential random variables. Central Limit Theorem. Basic statistics. Set of data, mean, quartiles. Definition of sample statistics, sample variance. Parameter estimations, Maximal Likelihodd technique for common distributions. Confidence level and intervals. Hypothesis testing and applications.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza della teoria della probabilità elementare e della statistica. Saper applicare gli apprendimenti a problematiche della scienza informatica. Gestione delle informazioni sulla base dei dati.
Knowledge of elementary probability theory. Knowledge of elementary statistics. Know how to apply probability and statistics theory to computer science and managing of data.
×
Print
Course
PARADIGMI DI PROGRAMMAZIONE
Course ID
MF0364
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
PIOVESAN LUCA
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il corso si compone di due parti. Nella prima viene introdotta la programmazione ad oggetti in Java e la metodologia di sviluppo di programmi basata su Test. Nella seconda parte viene introdotta la programmazione funzionale usando il linguaggio Python.
The course consists of two parts. In the first, object-oriented programming in Java and the Test-based program development methodology are introduced. In the second part, functional programming is introduced using the Python language.
Testi di riferimento/Textbooks
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Consigliati: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall. Materiale fornito dal docente.
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Recommended: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall. Material supplied by the teacher.
Obiettivi formativi/Mission
Obiettivi formativi Conoscenza e capacità di comprensione: familiarità con i principi della programmazione ad oggetti e funzionale, con il linguaggio Java, le architetture modello/vista/controllore e con il linguaggio Python. Capacità di applicare conoscenza e comprensione: abilità di strutturare e realizzare un progetto usando gli strumenti della programmazione ad oggetti e funzionale derivando il codice dai test. Autonomia di giudizio: abilità di riconoscere 1) buone e cattive pratiche di programmazione, 2) quando un paradigma è più o meno appropriato e 3) e valutare la qualità architetturale di un progetto. Abilità comunicative: padronanza della terminologia specifica della programmazione ad oggetti e funzionale e miglioramento nell’abilità di lavoro in gruppo. Capacità di apprendere: maggior facilità ad apprendere autonomamente l’utilizzo di altri linguaggi e altre librerie con strutturazione oggetti e/o funzionale.
Knowledge and understanding: familiarity with the principles of object oriented and functional programming, with the specific Java language, the model/view/controller architecture and the language Python. Applying knowledge and understanding: ability to design and implement a project using object programming tools and deriving code from tests. Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is more or less appropriate and 3) and to evaluate the architectural quality of a project. Communication Skills: mastering the specific terminology of object programming and functional programming and improving teamwork skills. Learning Skills: ability to learn autonomously the use of other languages and other object oriented and/or functionally structured libraries.
Prerequisiti/Required background knowledge
Prerequisiti: superamento dei corsi di Programmazione 1 e 2. Prerequisiti sostanziali: padronanza dei principi della programmazione imperativa.
Formal prerequisites: passing grade in the Programming 1 and 2 courses. Substantial prerequisites: mastering the principles of imperative programming.
Metodi didattici/Teaching methods
Lezioni frontali in aula ed esercitazioni in laboratorio. Nelle lezioni frontali si affrontano gli argomenti di teoria tramite presentazioni diapositive, con esempi e alcune domande per verificare l’apprendimento degli studenti. Nelle esercitazioni gli studenti sono guidati nella realizzazione di semplici progetti volti a mettere in pratica le conoscenze teoriche acquisite.
Classroom lessons and lab sessions. In classroom lessons are introduced the theoretical topics through slide presentations, with examples and some question sessions to test student understanding. In the lab sessions, students are guided in the implementation of simple projects designed to put into practice the theoretical knowledge acquired.
Altre informazioni/Further information
Allo studente vengono proposti esercizi (facoltativi), il cui svolgimento, iniziato in laboratorio, deve essere completato a cura del medesimo. Gli esercizi vengono commentati e corretti sia singolarmente che in classe. Le prove finali (descritte nelle "modalità di verifica") valutano l'autonomia dello studente nella progettazione, realizzazione e testing di programmi ad oggetti implementati in Java.
The student is presented with weekly exercises (optional), which solution is started during the lab sessions and that should be completed by the student. The exercises are discussed and corrected both individually and in the classroom. The final tests (described in "modalità di verifica") assess the student autonomy with respect to the design, implementation and testing of object-oriented programs implemented in Java.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame consiste di tre parti. La prima parte, è una prova in laboratorio volta ad accertare la padronanza degli strumenti di programmazione introdotti (uso IDE, sviluppo di test) e dei concetti teorici presentati a lezione. Il test sulla padronanza degli strumenti prevede l’implementazione di 2-3 classi con le relative classi di test usando l’IDE eclipse ed il test sulla conoscenza teorica la risposta a 2-3 domande sui fondamenti della programmazione orientata ad oggetti in Java. La seconda parte richiede lo svolgimento di un progetto personalmente o in gruppo volto ad accertare sia la capacità di strutturazione di un problema nel paradigma ad oggetti che la sua implementazione con l'uso delle librerie Java. Il progetto viene discusso durante un esame orale. La terza parte verifica le competenze acquisite per quanto riguarda la programmazione funzionale. Il voto è determinato dalla votazione delle tre prove.
The exam is made of three parts. The first part done in the lab is aimed at testing the mastering of the programming tools (IDE use, test development) exercised during the lab sessions and of the theoretical concepts presented in lesson. For the testing of the tools the student is required to implement 2-3 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 2-3 questions about the Java-oriented programming basics. The second part requires to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests.
Programma esteso/Content
Introduzione a Java. Oggetti, classi, metodi Tipi fondamentali, strutture sintattiche per controllo di flusso, array. Tipi involucro (per tipi primitivi) e auto-boxing/unboxing Interfacce, polimorfismo, ereditarietà Programmazione parametrica Gestione di eccezioni Panoramica delle librerie di base Caratteristiche funzionali di Java 8 e nuove librerie di collezioni Sviluppo guidato dai Test Pattern di programmazione Model-View-Controller Introduzione alla programmazione funzionale in Python. Funzioni come valori Funzioni di ordine superiore Dati immutabili Valutazione lazy Lavorare con le Collezioni: ricorsione e riduzione
Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and auto-boxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries Test-Driven Development Pattern Programming Model-View-Controller Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction
Risultati di apprendimento attesi/Intended learning objectives
Conoscere i fondamenti teorici della programmazione a oggetti e di quella funzionale. Essere in grado di modellare un applicativo individuandone le componenti e il paradigma migliore per la loro descrizione. Saper progettare e implementare la soluzione scelta usando sia Java che Python. Realizzarne test con JUnit. Avere padronanza del Collections framework di Java e di Python. Saper riconoscere e gestire i casi non standard tramite eccezioni.
Know the theoretical foundations of object-oriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage non-standard cases through exceptions.
×
Print
Course
SISTEMI OPERATIVI
Course ID
MF0365
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
THESEIDER DUPRE' Daniele
CFU
12
Teaching duration (hours)
96
SSD
INF/01 - INFORMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
2
Period
Annuale
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Introduzione ai sistemi operativi, gestione di processi e threads, sincronizzazione dei processi e thread e programmazione concorrente, gestione della memoria. Gestione e sincronizzazione di processi e threads in Unix. Gestione dell'Input/Output. Progettazione e realizzazione dei file system Tecniche di virtualizzazione di sistemi
Introduction to operating system, process and thread management, process and thread synchronization and concurrent programming, memory management. Process and thread management and synchronization in Unix.
Testi di riferimento/Textbooks
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
A. S. Tanenbaum, H. Bos. Modern Operating Systems, 4th edition
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: Comprendere i principi generali e il ruolo dei sistemi operativi, le nozioni fondamentali relative ai processi, ai threads e alla gestione della memoria, alla gestione delle memorie secondarie e dei dispositivi di I/O, con particolare riferimento al file system ed al sottosistema di I/O, nonché delle tecniche di virtualizzazione delle risorse. Capacità di applicare conoscenza e comprensione: Applicare i principi generali in un sistema reale in particolare mediante le chiamate di sistema di Unix. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per applicare in casi concreti le metodologie e le tecniche per la progettazione e realizzazione dei meccanismi e delle politiche per la gestione delle memorie secondarie, dei dispositivi di I/O, dei file system, e dei sistemi di virtualizzazione delle risorse. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto al migliore uso di processi e threads e delle tecniche di gestione della memoria. Gli studenti dovranno essere in grado di comunicare e spiegare i principi fondamentali dei sistemi operativi. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per utilizzare anche chiamate di sistema e tecniche di gestione dei processi e della memoria non svolte a lezione.
Knowledge and understanding: Understanding the role and the main principles of operating systems, the basic notions on process and thread management, memory management, I/O devices, with particular emphasis on file systems, I/O subsystems, and resource virtualization Applying knowledge and understanding: Applying the general principles in a real system, in particular, using Unix system calls. Making judgements: students will be able to autonomously evaluate the best ways to use processes and threads and manage system memory. Communication skills: students will learn to communicate and justify the basic principles of operative systems. Learning skills: students will be able to autonomously learn how use system calls and processes mangemtn techniques not studied during the course.
Prerequisiti/Required background knowledge
Architettura degli Elaboratori. Programmazione 1 e 2.
Computer Architecture. Programming 1 & 2
Metodi didattici/Teaching methods
Lezioni frontali. Esercitazioni in laboratorio. Le lezioni mettono in evidenza gli obiettivi per cui sono state messi a punto i meccanismi e le politiche di gestione di processi e threads e di gestione della memoria. In laboratorio lo studente viene guidato nell'implementazione di programmi che fanno uso di processi e di threads. Sulla piattaforma DIR sono indicati i libri di testo suggeriti ed è a disposizione degli studenti del materiale integrativo aggiuntivo.
Standard lectures and programming sessions in the computer lab. Lectures point out the goals of mechanisms and policies for process and thread management and memory management. In the programming sessions students are followed in the implementation of programs making use of processes and threads. On the DIR platform students can find the suggested textbooks and additional material.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto consistente in da 4 a 10 domande su argomenti diversi del corso, compresa la programmazione con l'uso di chiamate di sistema. Il voto finale terrà conto della valutazione ottenuta sulle singole domande
Written exam consisting in 4-10 questions on different course topics, including programming with system calls. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso/Content
Nozioni fondamentali sull'architettura del sistema operativo di un elaboratore multiutente. Nucleo del sistema operativo. Gestione di processi e threads. Sincronizzazione di processi e threads e programmazione concorrente. Deadlocks. Gestione della memoria. Processi nel sistema Unix. Generalità sull'utilizzo delle chiamate di sistema Unix; chiamate di sistema per gestione di processi, libreria per threads. Chiamate di sistema e funzioni di libreria per sincronizzazione di processi e threads. 1) Gestione dell'Input/Ouput: architettura del sottosistema di I/O; interfaccia di I/O per le applicazioni; sottosistema di I/O del kernel; struttura dei dispositivi di memorizzazione; struttura dei dischi; scheduling del disco; gestione dell’unitá a disco; sistemi RAID. 2) Progettazione e sviluppo di driver di periferiche di Input/Output: struttura di un driver; i driver nel sistema operativo xv6; il driver IDE nel sistema operativo xv6. 3) Progettazione e realizzazione di file system: il concetto di file e di file system; struttura della directory e del disco; condivisione di file; meccanismi di protezione dei file; struttura del file system; implementazione di file e directory; metodi di allocazione; gestione dello spazio libero; metodi di allocazione; efficienza e prestazioni; backup e ripristino. 4) tecniche di virtualizzazione delle risorse: virtualizzazione del processore: nozioni generali, tecniche software ed hardware per la virtualizzazione dei processori della famiglia xv6; virtualizzazione della memoria: nozioni generali, tecniche software ed hardware per la virtualizzazione della memoria virtuale.
General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix system. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization. 1) I/O Management: the architecture of the I/O subsystem; I/O interface; kernel I/O subsystems; storage devices; disk structure, management, and scheduling; RAID systems; 2) Device drivers: driver architecture; driver in the xv6 operating system; the IDE driver in the xv6 operating system. 3) File systems: file system organizations; file system structures; file system design and implementation techniques; mechanisms for file sharing and protection; disk free space management; disk space allocation; performance and efficiency of file systems; backup and restore. 4) resource virtualization techniques: processor virtualization techniques: general concepts, software and hardware techniques for the virtualization of the x86 processor family; memory virtualization techniques: general concepts, software and hardware techniques for the memory virtualization in the x86 processor family
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
Modules
Course ID Course SSD Teachers Agenda web
MF0366SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 INF/01 - INFORMATICA Theseider Dupre' Daniele
MF0367SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 INF/01 - INFORMATICA Anglano Cosimo Filomeno
Show parent course details
×
Print
Course
SISTEMI OPERATIVI: SISTEMI OPERATIVI 1
Course ID
MF0366
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
THESEIDER DUPRE' Daniele
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Introduzione ai sistemi operativi, gestione di processi e threads, sincronizzazione dei processi e thread e programmazione concorrente, gestione della memoria. Gestione e sincronizzazione di processi e threads in Unix.
Introduction to operating system, process and thread management, process and thread synchronization and concurrent programming, memory management. Process and thread management and synchronization in Unix.
Testi di riferimento/Textbooks
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
A. S. Tanenbaum, H. Bos. Modern Operating Systems, 4th edition
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: Comprendere i principi generali e il ruolo dei sistemi operativi, le nozioni fondamentali relative ai processi, ai threads e alla gestione della memoria. Capacità di applicare conoscenza e comprensione: Applicare i principi generali in un sistema reale in particolare mediante le chiamate di sistema di Unix. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto al migliore uso di processi e threads e delle tecniche di gestione della memoria. Gli studenti dovranno essere in grado di comunicare e spiegare i principi fondamentali dei sistemi operativi. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per utilizzare anche chiamate di sistema e tecniche di gestione dei processi e della memoria non svolte a lezione.
Knowledge and understanding: Understanding the role and the main principles of operating systems, the basic notions on process and thread management and memory management. Applying knowledge and understanding: Applying the general principles in a real system, in particular, using Unix system calls. Making judgements: students will be able to autonomously evaluate the best ways to use processes and threads and manage system memory. Communication skills: students will learn to communicate and justify the basic principles of operative systems. Learning skills: students will be able to autonomously learn how use system calls and processes mangemtn techniques not studied during the course.
Prerequisiti/Required background knowledge
Architettura degli Elaboratori. Programmazione 1 e 2.
Computer Architecture. Programming 1 & 2
Metodi didattici/Teaching methods
Lezioni frontali. Esercitazioni in laboratorio. Le lezioni mettono in evidenza gli obiettivi per cui sono state messi a punto i meccanismi e le politiche di gestione di processi e threads e di gestione della memoria. In laboratorio lo studente viene guidato nell'implementazione di programmi che fanno uso di processi e di threads. Sulla piattaforma DIR sono indicati i libri di testo suggeriti ed è a disposizione degli studenti del materiale integrativo aggiuntivo.
Standard lectures and programming sessions in the computer lab. Lectures point out the goals of mechanisms and policies for process and thread management and memory management. In the programming sessions students are followed in the implementation of programs making use of processes and threads. On the DIR platform students can find the suggested textbooks and additional material.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto consistente in da 4 a 10 domande oppure esame orale consistente in da 2 a 4 domande su argomenti diversi del corso, compresa la programmazione con l'uso di chiamate di sistema. Il voto finale terrà conto della valutazione ottenuta sulle singole domande
Written exam consisting in 4-10 questions or oral exam consisting in 2-4 questions on different course topics, including programming with system calls. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso/Content
Nozioni fondamentali sull'architettura del sistema operativo di un elaboratore multiutente. Nucleo del sistema operativo. Gestione di processi e threads. Sincronizzazione di processi e threads e programmazione concorrente. Deadlocks. Gestione della memoria. Processi nel sistema Unix. Generalità sull'utilizzo delle chiamate di sistema Unix; chiamate di sistema per gestione di processi, libreria per threads. Chiamate di sistema e funzioni di libreria per sincronizzazione di processi e threads.
General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix system. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
Show parent course details
×
Print
Course
SISTEMI OPERATIVI: SISTEMI OPERATIVI 2
Course ID
MF0367
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
THESEIDER DUPRE' Daniele
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
2
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il programma del corso si articola su tre tematiche principali, ovvero 1) gestione dell'Input/Output 2) progettazione e realizzazione dei file system 3) tecniche di virtualizzazione di sistemi
The course focuses on three main topics, namely 1) I/O management 2) design and implementation of file systems 3) system virtualization techniques
Testi di riferimento/Textbooks
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: comprendere i principi generali inerenti il funzionamento, la progettazione e la realizzazione delle componenti del sistema operativo preposte alla gestione delle memorie secondarie e dei dispositivi di I/O, con particolare riferimento al file system ed al sottosistema di I/O, nonché delle tecniche di virtualizzazione delle risorse. Conoscenza e capacitá di comprensione applicate: gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per applicare in casi concreti le metodologie e le tecniche per la progettazione e realizzazione dei meccanismi e delle politiche per la gestione delle memorie secondarie, dei dispositivi di I/O, dei file system, e dei sistemi di virtualizzazione delle risorse. Autonomia di giudizio: gli studenti dovranno essere in grado di valutare quali delle metodologie e delle tecniche trattate nel corso siano i piú adatti ad essere impiegati in un caso reale. Abilitá comunicative: gli studenti dovranno essere in grado di comunicare e spiegare i principi fondamentali del funzionamento, della progettazione e della realizzazione delle componenti del sistema operativo preposte alla gestione delle memorie secondarie, dei dispositivi di I/O, dei file system, ed alla virtualizzazione delle risorse. Capacitá di apprendere: gli studenti dovranno apprendere le conoscenze metodologiche necessarie per utilizzare anche metodologie e tecniche non trattati nel corso, e che saranno frutto dei progressi nel campo dei sistemi operativi.
Learn the general principles underneath the behavior, the design and the development of the components of modern operating systems in charge of managing storage and I/O devices, with particular emphasis on file systems, I/O subsystems, and resource virtualization
Prerequisiti/Required background knowledge
Architetture degli Elaboratori 1 e 2, Sistemi Operativi 1
Computer Architetture 1 and 2, Operating Systems 1
Metodi didattici/Teaching methods
Lezioni frontali in aula. Svolgimento di esercitazioni in cui si applicano a casi concreti i concetti illustrati a lezione
Class lectures. Practical exercises in which the concepts illustrated during the lectures are applied in practice.
Altre informazioni/Further information
Le competenze verificate in sede d'esame, necessarie per il superamento del corso, consistono nella dimostrazione di aver appreso i concetti di base relativi al funzionamento delle periferiche di I/O, dei meccanismi utilizzati dal sistema operativo per interagire con tali periferiche, delle metodologie di progettazione e realizzazione di driver per le periferiche, e delle metodologie di progettazione e realizzazione dei file system.
To pass the exam, the student has to prove the knowledge of the concepts underlying the operation of I/O devices, of the mechanisms employed by the operating system to manage with the above devices, and of the design and implementation methodologies and techniques for file systems.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto obbligatorio ed orale facolativo. Esame scritto consiste in da 4 a 10 domande ed esercizi sull'applicazione concreta dei concetti trattati durante il corso. L'esame orale consiste in da 2 a 4 domande sui concetti argomenti diversi del corso. Il voto finale terrà conto della valutazione ottenuta sulle singole domande e esercizi.
Written (mandatory) and oral (optional) examination. The written examination consists in 4 to 10 questions and exercise in which the student will be asked to apply in practice the concepts discussed in the course. The oral examination consists in 2 to 4 questions on the general concepts discussed in the course. The final grade takes into account the evaluation of the individual questions and exercises.
Programma esteso/Content
1) Gestione dell'Input/Ouput: architettura del sottosistema di I/O; interfaccia di I/O per le applicazioni; sottosistema di I/O del kernel; struttura dei dispositivi di memorizzazione; struttura dei dischi; scheduling del disco; gestione dell’unitá a disco; sistemi RAID. 2) Progettazione e sviluppo di driver di periferiche di Input/Output: struttura di un driver; i driver nel sistema operativo xv6; il driver IDE nel sistema operativo xv6. 3) Progettazione e realizzazione di file system: il concetto di file e di file system; struttura della directory e del disco; condivisione di file; meccanismi di protezione dei file; struttura del file system; implementazione di file e directory; metodi di allocazione; gestione dello spazio libero; metodi di allocazione; efficienza e prestazioni; backup e ripristino. 4) tecniche di virtualizzazione delle risorse: virtualizzazione del processore: nozioni generali, tecniche software ed hardware per la virtualizzazione dei processori della famiglia xv6; virtualizzazione della memoria: nozioni generali, tecniche software ed hardware per la virtualizzazione della memoria virtuale;
1) I/O Management: the architecture of the I/O subsystem; I/O interface; kernel I/O subsystems; storage devices; disk structure, management, and scheduling; RAID systems; 2) Device drivers: driver architecture; driver in the xv6 operating system; the IDE driver in the xv6 operating system. 3) File systems: file system organizations; file system structures; file system design and implementation techniques; mechanisms for file sharing and protection; disk free space management; disk space allocation; performance and efficiency of file systems; backup and restore. 4) resource virtualization techniques: processor virtualization techniques: general concepts, software and hardware techniques for the virtualization of the x86 processor family; memory virtualization techniques: general concepts, software and hardware techniques for the memory virtualization in the x86 processor family
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
Achievement of the training objectives, as measured by the grade obtained by the student.
×
Print
Course
BASI DI DATI E SISTEMI INFORMATIVI
Course ID
MF0158
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GIORDANO Laura
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Dei principali modelli dei dati adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello. Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali. La parte di sperimentazioni comprende lo sviluppo di casi di studio di progettazione concettuale e logica, un'introduzione al linguaggio SQL e sue applicazioni alla gestione di una base di dati.
Among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. Sperimentazioni: We introduce some case studies and we design databases for such case studies by defining conceptual and logical models. We also introduce the SQL language for the management of a database.
Testi di riferimento/Textbooks
Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di Dati: Modelli e Linguaggi di Interrogazione Mc Graw-Hill, quinta edizione, 2018
Atzeni, Ceri, Fraternali, Paraboschi, Torlone Basi di Dati: Modelli e Linguaggi di Interrogazione Mc Graw-Hill, quinta edizione, 2018
Obiettivi formativi/Mission
Obiettivo del corso è fornire gli strumenti metodologici e formali per progettare le strutture logiche e fisiche di una base di dati relazionale a partire dai requisiti del sistema informatico espressi dagli utenti. Favorire lo sviluppo da parte degli studenti di abilità pratiche nella progettazione concettuale e logica di una base di dati. Sviluppare competenze nell'uso del linguaggio SQL sia negli aspetti DDL che DML.
The course aims at introducing the main methodological and formal tools for designing the logical structure of a relational database, starting from the requirements specification. Another aim is to promote the development by students of practical skills in the conceptual and logical design of a database and of skills in the use of SQL language in both the definition and manipulation of databases.
Prerequisiti/Required background knowledge
Avere seguito i corsi di Programmazione e di Architettura degli elaboratori del I anno.
The courses in programming and computer architectures of the first year.
Metodi didattici/Teaching methods
Lezioni frontali in aula e esercitazioni in aula e in laboratorio informatico.
Lectures and exercises in the classroom and computer lab.
Altre informazioni/Further information
Le competenze da verificare, e necessarie per il superamento del corso consistono nella capacità di aver appreso i concetti di base relativi al modello relazionale, al modello Entità-Relazione e alla teoria della normalizzazione. Sperimentazioni: Le competenze verificate in sede d'esame consistono nella dimostrazione di aver appreso i concetti di base relativamente alla progettazione di basi di dati e l'uso del linguaggio SQL, mediante lo sviluppo di un progetto di laboratorio.
The students should have acquired the base notions of the relational model, of the entity-relation model and of normalization theory. Sperimentazioni: for successfully completing Sperimentazioni the students should prove to have learned the basic concepts relating to database design and the use of SQL language, through the realization of a lab project.
Modalità di verifica dell'apprendimento/Assessment methods
Fondamenti: un esame scritto ed un'orale opzionale. La prova prevede diverse domande, riguardanti argomenti svolti in una parte diversa del programma. La valutazione complessiva terrà conto dei risultati conseguiti nelle singole domande. Sperimentazioni: una prova orale individuale comprendente la discussione di una relazione riguardante un progetto di laboratorio assegnato dai docenti. Il progetto di laboratorio consiste di due parti: i) progettazione di un modello concettuale e un modello logico per una base di dati adeguata ai requisiti assegnati dai docenti e ii) scrittura di alcune query SQL sullo schema relazionale ottenuto. Il progetto di laboratorio viene svolto autonomamente dagli studenti in piccoli gruppi di indicativamente massimo tre persone e dovranno preparare una relazione da consegnare al docente alcuni giorni prima della discussione. La discussione della relazione può essere integrata con domande riguardanti i concetti fondamentali delle basi di dati relazionali usando come spunto la relazione presentata. Il punteggio totale della discussione è di 30 punti. La valutazione complessiva terrà conto dei punteggi parziali conseguiti nelle due parti.
Fondamenti: A written examination and an optional discussion. The exam involves several questions on different subjects within the course contents. The evaluation takes into account the answers to the different questions. Sperimentazioni: an individual oral examination where a lab project will be discussed. The lab project consists of two parts: i) the design of a conceptual and a logical model for a database (the requirements for such a database are assigned by the teachers) and ii) some SQL queries assigned by the teacher on the relational schema. The lab project is carried out by the students working in small groups of approximately up to three people. The students are expected to write a report about their lab project to be delivered to the teacher a few days before the discussion. The individual oral examination can be supplemented with questions regarding the basic concepts of relational databases using as a basis the students’ report. The total score of this partial test is 30 points. The overall assessment will take account of the partial scores obtained in the two parts.
Programma esteso/Content
Fondamenti: dei principali modelli dei dati adottati dai sistemi di gestione delle basi di dati (DBMS) viene approfondito il modello relazionale, in particolare sono presentati gli aspetti teorici di tale modello. Le strutture logiche di una base di dati sono progettate con modelli semantici ed analizzate alla luce di opportune forme normali. Il corso si articola nelle seguenti parti: Modello Relazionale; Algebra Relazionale; Modello Entità-Relazione; Traduzione del Modello ER nel modello Relazionale; Normalizzazione. Viene inoltre descritta brevemente l'architettura di un DBMS, che viene presentata succintamente seguendo lo schema di descrizione generale a tre livelli di astrazione: esterno, logico e fisico. Vengono introdotte le nozioni di base sugli indici e sulle transazioni. Sperimentazioni: Progettazione concettuale e logica: presentazione di casi di studio. Introduzione al linguaggio SQL: Data Definition Language, Data Manipulation Language e Query Language. Implementazione e gestione di una base dati relazionale usando SQL mediante la realizzazione di alcuni casi di studio in laboratorio. Utilizzo del DBMS PostgreSQL.
Among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. The course consists of the following parts: Relational Model; Relational Algebra; Entity-Relationship Model; translation from the ER model to the relational model; Normal Forms. The threelevel architecture of a DBMS is introduced. The main notions on indexes and transactions are briefly discussed. Sperimentazioni: Conceptual and logical design: introduction of case studies. Introduction to SQL: Data Definition Language, Data Manipulation Language and Query Language. Implementation and management of a relational database using SQL through the implementation of some case studies in the computer lab. Use of the PostgreSQL DBMS.
Risultati di apprendimento attesi/Intended learning objectives
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Print
Course
RETI 1
Course ID
MF0216
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MUNAFO' MAURIZIO MATTEO
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
2
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il tema del corso è la rete Internet, affrontato secondo un approccio che partendo dalle applicazioni di rete scende via via in profondità, descrivendo il livello "trasporto" e quindi il livello "rete" dei protocolli TCP/IP.
The central theme of the course is the Internet approached starting from the network applications down to lower levels of the TCP/IP stack, describing the transport level and the network level.
Testi di riferimento/Textbooks
James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down, Settima Edizione.
James F. Kurose, Keith W. Ross, Computer Networking: A Top-Down Approach 7th Edition
Obiettivi formativi/Mission
Approfondire le tematiche relative alle reti informatiche.
In depth learning of computer networks.
Prerequisiti/Required background knowledge
Conoscenze acquisite nei corsi di Architetture e Sistemi operativi.
The student should know the topics in the program of the Computer Architecture and Operating Systems courses.
Metodi didattici/Teaching methods
Lezioni e laboratorio in modalità mista (frontali in aula e in remoto), uso della piattaforma Moodle.
Blended (online and onsite) lessons and lab activities , use of the Moodle platform.
Altre informazioni/Further information
Durante il corso vengono fatte esercitazioni volte a valutare l’acquisizione degli strumenti presentati e dei concetti introdotti.
All along the course self-evaluation exercises are proposed to assess understanding of concepts and technical aspects.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto con relazione di laboratorio. La prova scritta prevede 3-4 domande, riguardanti argomenti svolti a lezione. La valutazione complessiva terrà conto dei punteggi parziali conseguiti nelle singole domande della prova scritta e del punteggio assegnato alla relazione di laboratorio.
The exam consists of a written test with 3-4 questions about the topics of the course, and a report on the lab activity. The final mark is the sum of the scores assigned to each answer in the written test and the score of the lab report.
Programma esteso/Content
Il corso tratta i seguenti argomenti: − Introduzione intuitiva alla rete, descrivendone in modo qualitativo la struttura e le funzionalità. − Livello applicazione: protocolli per la gestione della posta elettronica, del WEB e del DNS. − Livello sessione: i socket, programmazione dei socket. − Livello trasporto: protocolli TCP e UDP − Livello rete: protocolli IP e ICMP. − Protocolli di instradamento: algoritmi di instradamento, nozione di Sistema Autonomo, protocolli RIP, OSPF, BGP. Oltre alla descrizione dei protocolli succitati, il corso si propone di fornire allo studente anche un'esperienza diretta delle problematiche connesse con la gestione delle reti informatiche. Pertanto, durante il percorso di studio, vengono tenute anche lezioni pratiche in cui vengono assegnati esercizi da svolgere in aula o a casa.
The course deals with the following: -Intuitive introduction to the network describing in a qualitative way its structure and functionalities. -Application level: protocols for e-mail, web and DNS. -Session level: socket and socket programming. -Transport level: protocols TCP and UDP -Network level: protocols IP and ICMP -Routing protocols: routing algorithms, notion of Autonomous System, protocols RIP, OSPF, BGP. Besides the description of the mentioned protocols, the course aims at endowing the student with a direct experience on management of computer networks and the related issues. Therefore, part of the course consists of practical lessons in which the student is given exercises to complete in lab hours or as a homework.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza della struttura di Internet e delle reti di calcolatori moderne, e delle scelte progettuali necessarie per la creazione e la gestione di un sistema di trasmissione dati su larga scala
Knowledge of the structure of the Internet and any modern computer network, and the design choices needed to create and manage a large-scale data transmission system
×
Print
Course
Algoritmi I
Course ID
MF0034
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MONTANI Stefania
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Metodi di analisi degli algoritmi. Strutture dati fondamentali. Algoritmi fondamentali (ricerca e ordinamento)
Algorithm analysis methods. Basic data structures. Fundamental sorting and search algorithms.
Testi di riferimento/Textbooks
Algoritmi e strutture dati 2/ed, Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, MC Graw Hill
Algoritmi e strutture dati 2/ed, Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, MC Graw Hill
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: familiarità con l’analisi degli algoritmi, delle strutture dati di base, e di algoritmi fondamentali, con particolare riferimento agli algoritmi di ricerca ed ordinamento. Capacità di applicare conoscenza e comprensione:sapere applicare le tecniche di analisi negli esercizi, saper scrivere un algoritmo fondamentale o una sua variazione ideando soluzioni nuove in maniera tecnicamente corretta.Autonomia di giudizio: analizzare gli algoritmi ricorsivi; saper affrontare con spirito critico gli esercizi proposti, proponendo soluzioni corrette in modo autonomo.Abilità comunicative: aver acquisito e saper utilizzare la terminologia formale specifica relativa alle aree citate, saper giustificare le scelte fatte e comunicarle in modo chiaro anche a utenti meno esperti. Capacità di apprendere: Essere in grado di intraprendere con profitto studi successivi sugli elementi di algoritmica
Knowledge and understanding: knowing the analysis of algorithms and the data structures, focusing on search and sorting algorithms. Applying knowledge and understanding: Capability to apply the analysis techniques in the exercises, capability to write a classical algorithm, or a possible variation of it, proposing novel technically correct solutions.Making judgements: being able to analyze recursive algorithms; being able to afford in a critical way the exercises, proposing correct solutions in an autonomous way.Communication skills: knowing and correctly applying the terminology of the field, justifying the choices and clearly communicating them also to a non expert audience. Learning skills: Being able to proceed in more advanced algorithmic notions studies.
Prerequisiti/Required background knowledge
Aver superato l’esame di Programmazione 1 e 2.
Having passed the Programming 1 and 2 exams.
Metodi didattici/Teaching methods
Lezioni in aula (eventualmente in modalità blended) ed esercitazioni in laboratorio. Nelle lezioni in aula vengono esposte le nozioni fondamentali, corredate di esempi. Vengono confrontate diverse strutture dati, e algoritmi diversi mirati a risolvere problemi della stessa classe.Sulla piattaforma DIR sono indicati i libri di testo suggeriti ed è a disposizione degli studenti del materiale, che ricalca gli argomenti trattati a lezione, risultando di aiuto anche per chi non fosse stato presente. Sono inoltre forniti alcuni esercizi ed esempi di temi d’esame.In laboratorio lo studente viene guidato nell'implementazione degli algoritmi visti a lezione, realizzando per ciascun algoritmo alcune varianti, come esercizio propedeutico all'uso degli algoritmi per la soluzione di problemi. Sul DIR sono a disposizione, per ogni argomento trattato nelle lezioni in laboratorio, delle slide come riferimento e guida sia per chi ha seguito la lezione che per gli assenti.
Classroom lessons (possibly in a blended modality) and assisted exercises in the lab. Classroom lessons will present the fundamental concepts, and will also include example exercises. Different data structures and different algorithms meant to solve problems of the same class will be compared. On the DIR platform the students will find indications about the textbooks and materials, closely related to the topics presented at the lessons; this will help students that do not attend to easily follow the course development. Exercises and example tests will be provided as well.In the lab, the student is guided in the implementation of the algorithms studied in the classroom lessons, realizing some variations. On the DIR platform the students will find slides and additional material referring to the single lab lessons, as a guide also for those who did not attend.
Modalità di verifica dell'apprendimento/Assessment methods
Teoria: Esame scritto, eventualmente in forma di quiz. L'esame prevede un minimo di 3 esercizi, che verteranno su argomenti svolti in una parte diversa del programma: un esercizio riguarderà l’analisi della complessità, mentre gli altri due riguarderanno due argomenti tra: strutture dati fondamentali, algoritmi di ordinamento, algoritmi di ricerca tramite alberi, tabelle hash, code con priorità. Il voto terra' conto dei risultati parziali ottenuti nei singoli esercizi. Eventualmente (ad esempio, per richiesta dello studente), la stessa tipologia di esame potra' essere svolta oralmente, o integrata da una prova orale. Laboratorio: Esame pratico. L'esame prevede l'implementazione di uno o più programmi in linguaggio C. Gli argomenti comprendono quelli presentati durante le lezioni frontali e in laboratorio. Il voto terra' conto dei risultati parziali ottenuti nei singoli esercizi. La votazione finale terrà conto dei risultati finali ottenuti nelle prove d'esame di Teoria e di Laboratorio.
Theory: Written test, possibly as a quiz. The test will be composed by three exercises at least, focused on different course topics. One exercise will involve complexity analysis, while the other two will involve two topics among: fundamental data structures, sorting algorithms, searching algorithms by using trees, hash tables, priority queues. The final score will take into account the partial scores of the different exercises. Possibly (e.g., on student's request), the same exam type will be executed orally, or integrated by means of an oral examination. Lab: Practical examination. The exam consists in developing one or more programs in C language. Topics include those presented during classroom lessons and in the lab. The final score will take into account the partial scores of the different exercises. The global score will take into account the final scores obtained in the Theory and Lab examinations.
Programma esteso/Content
- Introduzione agli algoritmi. - Modelli di analisi. Notazioni asintotiche: O, Omega e Theta. Limiti inferiori. Teorema Master. - Tipi di dato astratto: Pile , Code, Alberi. - Algoritmi di ordinamento: insertion sort, selection sort, merge sort, quicksort, heap sort, integer sort, radix sort - Alberi binari di Ricerca. Alberi AVL, alberi 2-3. - Tabelle Hash. - Code con priorità. Tali aspetti sono poi meglio studiati in pratica durante le esercitazioni tenute in laboratorio. In particolare in laboratorio verranno implementati esercizi relativi ai seguenti argomenti: Ricerca binaria e Algoritmi di ordinamento: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Strutture dati dinamiche: Liste, Code, Pile; Ricerca indicizzata:Alberi binari di ricerca Tabelle di hash
- Introduction to algorithms.  - Analysis of algorithms: O, Omega and Theta notations. Master theorem on recurrences.  - Abstract data structures: Stack, Queue, Tree.  - Sorting algorithms: insertion sort, selection sort, merge sort, quicksort, heap sort, integer sort, radix sort  - Search binary trees. AVL trees, 2-3 trees.  - Hash tables.  - Priority queues. These notions will then be further examined by means of their implementation. In particular, the exercises will refer to the following topics:   Sorting algorithms: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Dynamic data structures: Lists, Queues, Stacks; Trees; Hash tables.
Risultati di apprendimento attesi/Intended learning objectives
Enunciare la definizione delle strutture dati fondamentali e saperle adottare in problemi proposti. Analizzare un algoritmo dato, sia esso ricorsivo che iterativo. Saper descrivere gli algoritmi di ricerca e di ordinamento. Saper applicare un algoritmo specifico, tra quelli visti, ad un problema dato. Essere in grado di darne un'implementazione in C.
Providing the definition of the fundamental data structures and being able to adopt them in the proposed exercises. Being able to analyse recursive and iterative algorithms. Being able to describe the sorting and search algorithms. Being able to apply a specific algorithm among them, to a given problem. Being able to provide its implementation in C.
×
Print
Course
Algoritmi 2
Course ID
MF0054
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
EGIDI Lavinia
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Tecniche algoritmiche, nozione di grafo e algoritmi su grafi
Algorithmic techniques, notion of graph and algorithms on graphs
Testi di riferimento/Textbooks
P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson oppure C. Demetrescu, I.Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, Seconda Edizione, McGraw-Hill oppure Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduzione agli algoritmi e strutture dati,, terza edizione, McGraw-Hill, 2010
P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson or C. Demetrescu, I.Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, Seconda Edizione, McGraw-Hill or Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: familiarità con il concetto di grafo, visita di grafo, tecnica greedy e di programmazione dinamica, e con alcuni problemi classici sui grafi. Capacità di applicare conoscenza e comprensione: - modellare problemi utilizzando grafi - risolvere problemi tramite l'implementazione di algoritmi classici di visita di grafi - risolvere problemi utilizzando tecniche greedy e di programmazione dinamica, anche implementando algoritmi classici Come aspetto collaterale il corso sviluppa le competenze di programmazione (in particolare nel linguaggio Java). Autonomia di giudizio: - analizzare correttezza e costo di algoritmi greedy e di programmazione dinamica - saper affrontare con spirito critico gli algoritmi proposti, distinguendo i diversi gradi di difficoltà, e apprezzando la necessità di utilizzare tecniche avanzate (appena accennate in questo corso) per problemi per i quali non si conoscono algoritmi polinomiali - riconoscere gli ingredienti comuni delle le strategie per la progettazione di algoritmi greedy o di programmazione dinamica per i problemi studiati Abilità comunicative: aver acquisito e saper utilizzare la terminologia formale specifica relativa alle aree citate. Capacità di apprendere: la comprensione delle tecniche algoritmiche e dei meccanismi di ragionamento e analisi relativi permetterà agli studenti di comprendere e apprendere algoritmi per problemi diversi che utilizzano le tecniche algoritmiche presentate.
Knowledge and understanding: familiarity with the concepts of graph, graph traversal, greedy techinique, dynamic programming, and with some classical problems on graphs. Applying knowledge and understanding: - model problems using graphs - solve problems implementing classical graph traversal algorithms - solve problems using greedy or dynamic programming techniques, also implementing classical algorithms.As a byproduct, the course develops the students' programming skills (in Java, in particular). Making judgements: - analyze correctness and cost of greedy and dynamic programming algorithms - be able to critically view the algorithms taught in the course, distinguishing the different degrees of complexity, and realizing that it is the necessary to use advanced techniques (just mentioned in this course) for problems for which polynomial time algorithms are not known -recognize the ingredients common to the strategies for the design of greedy (resp. dynamic programming) algorithms presented in the course. Communication skills: the student must have acquired and must be able to use the specific formal terminology of the mentioned fields Learning skills: The comprehension of algorithmic techniques and of the machanisms of reasoning and analisys thereof will allow the students to understand and learn algorithms for different problems that are based on the algorithmic techinques taught in the course.
Prerequisiti/Required background knowledge
Prerequisiti formali: Lo studente non può accedere alle prove d'esame se non ha già sostenuto e verbalizzato gli esami di Programmazione 1 e Programmazione 2. Prerequisiti sostanziali: Nozioni di programmazione insegnate nei corsi di Programmazione 1 e 2; le nozioni base di algoritmica insegnate nel corso di Algoritmi 1. Principi e linguaggi di programmazione insegnati nei corsi di semestri precedenti.
Formal prerequisites: Students cannot access final exams unless they have passed and verbalized the exams of Programming 1 and Programming 2. Substantial prerequisites: Fundamentals of programming taught in the first year courses on programming, basic algorithmic notions taught in Algorithms and Data Structures 1. Programming principles and languages taught in previous semesters courses.
Metodi didattici/Teaching methods
Il corso è insegnato in aula e in laboratorio. Nelle lezioni in aula vengono esposte le nozioni fondamentali, corredate di esempi, anche utilizzando un software di simulazione di algoritmi. Le dimostrazioni vengono presentate come strumento di analisi del problema per la progettazione degli algoritmi e come strumento di approfondimento delle tecniche, facendo leva sull'analogia tra gli algoritmi che utilizzano una stessa tecnica. Viene discussa l'utilità ai fini pratici dei diversi algoritmi per risolvere specifiche tipologie di problemi. Sulla piattaforma DIR sono indicati i libri di testo suggeriti ed è a disposizione degli studenti del materiale integrativo aggiuntivo. Inoltre dopo ogni lezione, vengono indicati sul DIR gli argomenti trattati, con riferimento bibliografico, per chi non avesse seguito la lezione (ma anche per i presenti). In laboratorio lo studente viene guidato nell'implementazione degli algoritmi visti a lezione, realizzando per ciascun algoritmo alcune varianti, come esercizio propedeutico all'uso degli algoritmi per la soluzione di problemi. Sul DIR sono a disposizione, per ogni argomento trattato nelle lezioni in laboratorio, delle slide come riferimento e guida sia per chi ha seguito la lezione che per gli assenti. Sul corso DIR è attivo un forum di domande e risposte per offrire agli studenti un luogo di approfondimento e discussione degli argomenti insegnati; dopo ogni lezione la docente propone alcuni quesiti mirati a sollecitare gli studenti a ragionare su specifici argomenti. La docente controlla le risposte ma partecipa solo il minimo indispensabile per fornire una ragionevole guida, lasciando il dibattito agli studenti. Sul DIR sono disponibili dei quiz di esercizio e autovalutazione (identici agli esercizi d'esame, presentano di volta in volta istanze diverse di domande di ciascun tipo) che forniscono allo studente un modo di misurarsi con gli argomenti presentati, in modo da scoprire eventuali proprie lacune o dubbi e poter quindi rivolgersi per tempo al docente per chiarimenti. Inoltre, allo stesso scopo, sono fornite le specifiche di quesiti di programmazione d'esame usati in passato. Sul DIR sono disponibili anche link a registrazioni di lezioni, tenute dalla docente, divise per argomento, per agevolare gli studenti che non possono seguire le lezioni e come complemento per tutti.
The course is taught in class and in lab. In class the fundamental notions are presented, along with examples, also with the help of a software for simulation of algorithms. Proofs are presented as a tool to analyse the problems and design the algorithms, and as a tool to study in depth the algorithmic techniques, leveraging on analogies among algorithms that use the same techniques. The presentation is completed with discussions on the usage of each algorithm in practice to solve specific kinds of problems. On the DIR platform students can find the suggested textbooks and additional material. Moreover, after each lecture, the subject of the lecture is reported on the DIR together with relevant bibliographic references, especially (but not only) for those who couldn't attend the lecture. In lab the student is guided in impementing the algorithms seen in class, realizing for each algorithm a few variants as a propedeutic exercise to problem solving. On DIR the students can find, for each lab lecture, slides that work as reference and guide for those who attended the class and those who didn't. On the DIR course a question and answer forum offers the students a virtual room for discussing and reasoning on course subjects; after each lesson the instructor proposes a few questions to help understand in depth what has just been presented in class. The instructor monitors answers and participates just to offer a minimal guide, leaving the discussion to the students. On the DIR course the students have access to quizzes that serve as practice and selfevaluation for exam exercises. The aim is to offer to the stundents a means to check their own progress and comprehension, so as to discover as early as possible their weaknesses and to be able to ask for explanations to the teacher. Moreover, to the same end, specifications of exam problems proposed in the past are available to the students. On the DIR course students find links to recordings of lessons, given by the instructor, and divided by argument. Such material is of help to students who cannot attend class but also a complement for everybody.
Altre informazioni/Further information
L'attività in laboratorio richiede una partecipazione attiva e individuale degli studenti, che in tal modo sviluppano abilità pratiche (le capacità di realizzare un programma). Inoltre, il coinvolgimento attivo li induce a porsi dei quesiti (e spesso di conseguenza a porne al docente); in tal modo si realizza una regolare verifica del modo in cui gli argomenti vengono recepiti.
Hands-on activity requires active participation of the students, who this way develop pracatical skills (ability to implement a program). Moreover, the active involvement leads the students to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this allows a regular monitoring of the way the subject is being understood.
Modalità di verifica dell'apprendimento/Assessment methods
Prova pratica seguita da esame orale La prova in laboratorio è costituita da un semplice problema da risolvere con l'implementazione di uno degli algoritmi visti a lezione. E' seguita nella stessa giornata (compatibilmente con il numero di iscritti) da una prova orale tesa a verificare la comprensione dello studente della teoria alla base degli algoritmi insegnati nel corso, del funzionamento degli algoritmi classici presentati a lezione. Inoltre, nel corso della discussione si verifica che lo studente abbia acquisito la terminologia formale, che sia in grado di spiegare i ragionamenti alla base della progettazione e della dimostrazione di correttezza degli algoritmi e che abbia acquisito capacità di analisi. Il numero di domande può variare a seconda del modo in cui lo studente risponde (formalità, chiarezza, completezza, precisione,...) e della qualità del programma implementato. La valutazione complessiva tiene conto della qualità del lavoro di programmazione e della discussione orale.
Programming task followed by oral exam For the programming task, the student is proposed a simple problem that requires implementation of one of the classical algorithms presented in class. This part is followed on the same day (as far as the number of participating students allows), by an oral exam whose aim is to verify that the student has understood the theory underlying the algorithms that are taught in the course and the classical algorithms presented in class. Moreover, it will be verified that the student has acquired the formal terminology, that he/she can explain the reasonings on which design and correctness proofs are based and that he/she has acquired analytical skills in reference to the course's matter. The number of questions can vary depending on the quality of the answers (with respect to clarity, completeness, precision, formality,...) and on the results of the programming task, since the final aim is to ascertain that the formative objectives have been reached. The final evaluation takes into account the quality of both the implementation and of the interview.
Programma esteso/Content
Grafi: -definizioni e terminologia: grafi non orientati, grafi orientati, archi pesati, cammini, cicli, componenti connesse e fortemente connesse: significato e utilizzo delle diverse varianti per modellare diverse situazioni; -rappresentazioni di grafi: matrici e liste di adiacenza e loro impatto dal punto di vista dell'implementazione -visita di grafi in ampiezza e in profondità, caratteristiche comuni e differenze delle varie visite proposte e loro applicazioni Tecnica golosa (greedy): -introduzione e algoritmi di esempio; -cammini minimi su grafo pesato da un nodo sorgente: algoritmo di Dijkstra e applicazioni -minimo albero ricoprente: algoritmi di Prim e Kruskal e loro utilizzo per risolvere problemi pratici -tecniche di dimostrazione di correttezza e loro funzione in relazione alla progettazione di algoritmi greedy -limiti della tecnica golosa Tecnica di programmazione dinamica -introduzione alla tecnica e proprietà della sottostruttura ottima; confronto con la tecnica golosa e con il divide et impera -aspetti e scelte di impementazione: algoritmi ricorsivi e iterativi, memoization -utilizzo dei teoremi della sottostruttura ottima per l'analisi di problemi e la progettazione di algoritmi di programmazione dinamica; analisi di problemi classici (massimo sottoinsieme indipendente, zaino, sottosequenza comune di lunghezza massima); -cammini minimi da un nodo sorgente: algoritmo di Bellman-Ford -cammini minimi da tutti i nodi: algoritmo di Floyd-Warshall Cenni sui problemi intrattabili: -classi P, NP ed NP completezza -algoritmi di complessità pseudopolinomiale -introduzione alle tecniche per affrontare i problemi difficili.
Graphs -definitions and terminology: undirected and directed graphs, weighted graphs, paths, cycles, connected components and strongly connected components: meaning and usage of each variant to model different situations; -representations: adjacency matrices and lists and their impact from the implementation point of view; -breadth first and depth first traversals: common characteristics and differences and applications Greedy technique: -introduction and examples; -single source shortest paths on a weighted graph: Dijkstra's algorithm and applications -minimum spanning tree: Prim's and Kruskal's algorithms and their use to solve practival problems; -techinques for proofs of correctness and their function in designing greedy algorithms; -limits of greedy techniques Dynamic programming technique: -introduction to the dynamic programming technique, optimal substructure property; comparison with greedy and divide et impera techniques; -implementation aspects and choices: recursive and iterative algorithms, memoization; -usage of the optimal substructure theorems to analyze problems and design synamic programming algorithms; analysis of classical problems (maximal independent set, knapsack, longest common subsequence); -single source shortest paths on a weighted graph: Bellman-Ford's algorithm -all-pairs shortest paths on a weighted graph: Floyd-Warshall's algorithm Introduction to intractable problems: -P, NP complexity classes and NP-completeness -pseudopolinomial algorithms -introduction to the techniques to deal with intractable problems.
Risultati di apprendimento attesi/Intended learning objectives
Enunciare la definizione di grafo, ed analizzare i diversi modi di rappresentare un grafo in relazione alle applicazioni. Descrivere il concetto di visita di grafo, e identificarne esempi. Descrivere le strategie greedy e di programmazione dinamica. Identificare esempi per ciascuna delle strategie elencate. Descrivere e spiegare il ragionamento che porta alla progettazione (e che dimostra la correttezza) di algoritmi classici su grafi. Descrivere l'analisi di complessità/correttezza di tali algoritmi. Applicare gli algoritmi classici a semplici istanze. Descrivere le classi P ed NP e il loro rapporto e l'idea di soluzione approssimata; illustrare l'analisi degli algoritmi approssimati visti a lezione. Modellare un problema dato con un problema classico su grafo, scegliendo il tipo di grafo appropriato. Implementare in Java gli algoritmi classici sui grafi presentati a lezione.
Define a graph, and analyze the different ways of representing a graph for different applications. Describe the concept of graph traversal, and identify examples thereof. Describe the freedy and dynamic programming strategies. Identify examples for each one of the mentioned strategies. Describe and explain the reasoning that leads to the design (and proves the correctness) of classical algorithms on graphs. Describe the complexity/correctness analysis of such algorithms. Apply classical algorithms to simple instances. Describe classes P and NP and their relashionship and the idea of approximate solution; explain the analysis of approximate algorithms presented in class. Model a given problem with a classical problem on a graph, choosing the appropriate kind of graph. Implement the classical algorithms on graphs studied in class.
×
Print
Course
CALCOLO DELLE PROBABILITÀ E STATISTICA
Course ID
MF0358
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GRASSI PIETRO
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
2
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Elementi di Probabilità: Assiomi della probabilità, diagrammi di Venn, Spazi equiprobabili, probabilità condizionata, Teorema di Bayes. Variabili aleatorie e valore atteso. Variabili aleatorie discrete e continue, variabili aleatorie indipendenti, valore atteso. Varianza e covarianza. Modelli di variabili aleatorie: Variabili di Bernoulli e binomiali, ipergeometriche, geometriche e negative. Distribuzione di Poisson, Variabili aleatorie uniformi, variabili aleatorie normali, variabili aleatorie esponenziali. Teorema limite centrale. Statistica di base. Gruppi di dati, media, mediana, quartili. Definizione delle statistiche campionarie. Valori attesi, varianza campionaria. Stima dei parametri, stimatori Bayesiani. Verifica delle ipotesi e applicazioni all'informatica.
Basic probability theory: the axioms of probability, Venn diagrams, space with equally likely outcomes, conditional probability, Bayes’ formula. Random variables and expectation: discrete and continuous random variables, independent random variables, expected values, variance and covariance. Special random variables: Bernoulli and binomial random variables, Poisson distribution, uniform random variables, normal random variables, exponential random variables. Central limit theorem. Basic statistics. Set of data, mean, quartiles. Definition of sample statistics, sample variance. Parameter estimations, Bayesian estimators. Hypothesis testing and applications to computer science.
Testi di riferimento/Textbooks
Sheldon M. Ross: Probabilità e Statistica per l'Ingegneria e le Scienze,Apogeo Education – Seconda Edizione 2008
Sheldon M. Ross: Introduction to probability and statistics for Engineers and scientists, Elsevier 2004 (Probabilità e Statistica per l'Ingegneria e le Scienze,Apogeo Education – Seconda Edizione 2008)
Obiettivi formativi/Mission
Avviare lo studente agli elementi base della teoria e della pratica del calcolo delle probabilità.  Introdurre le principali distribuzioni di probabilità e il loro utilizzo. Introdurre lo studente alle basi della statistica, definizione della statistiche, stima dei parametri. Verifica delle ipotesi.
Introduce the student to the basic elements of theory and application of probability. Introduce the most important probability distributions with applications.Introduce the students to the basic elements of statistics, statistical mean, statistical variance. Parameter estimations. Hypothesis verifications.
Prerequisiti/Required background knowledge
Analisi e matematiche discrete. Algebra elementare e algebra lineare.
Calculus and discrete mathematics. Elementary algebra and Linear Algebra.
Metodi didattici/Teaching methods
Lezioni frontali ed esercitazioni.
Class lectures with exercises.
Altre informazioni/Further information
L'esame è in una unica prova, consistente in un test scritto.
The exam consists of a written examination.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto. L'esame consiste in due esercizi, uno centrato sulla teoria delle probabilita' e uno sulla statistica. Ogni esercizio consta di 5 domande distinte con livello di difficolta' crescente. Ogni esercizio prevede anche una domanda piu' teorica per verificare le conoscenze della teoria oltre alla capacita' di svolgere l'esercizio.
Written test. The exam consists in two exercises, one focused on probability and the other on statistics. Each exercise has 5 questions with increasing level of difficulty. Each exercise has also a theoretical question to value the preparation.
Programma esteso/Content
Elementi di Probabilità: Assiomi della probabilità, diagrammi di Venn, Spazi equiprobabili, probabilità condizionata, Teorema di Bayes. Variabili aleatorie e valore atteso: Variabili aleatorie discrete e continue, variabili aleatorie indipendenti, valore atteso, Varianza e covarianza. Modelli di variabili aleatorie: Variabili di Bernoulli e binomiali,Distribuzione di Poisson, Variabili aleatorie uniformi, variabili aleatorie normali, variabili aleatorie esponenziali.  Teorema limite centrale. Statistica di base. Gruppi di dati, media, mediana, quartili. Definizione delle statistiche campionarie. Valori attesi, varianza campionaria. Stima dei parametri, stimatori Bayesiani. Stimatori di massima verosomiglianza, derivazione delle principali distribuzioni. Stima per la media, per la varianza e stime parametriche. Intervalli di confidenza. Verifica delle ipotesi e applicazioni all'informatica.
Basic probability theory: the axioms of probability, Venn diagrams, space with equally likely outcomes, conditional probability, Bayes’ formula. Random variables and expectation: discrete and continuous random variables, independent random variables, expected values, variance and covariance. Special random variables: Bernoulli and binomial random variables, Poisson distribution, uniform random variables, normal random variables, exponential random variables. Central limit theorem. Basic statistics. Set of data, mean, quartiles. Definition of sample statistics, sample variance. Parameter estimations, Bayesian estimators. Maximal Likelihodd technique for common distributions. Confidence level and intervals. Hypothesis testing and applications to computer science.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza della teoria della probabilita' elementare. Saper applicare gli apprendimenti a problematiche della scienza informatica. Gestione delle informazioni sulla base dei dati.
Knowledge of elementary probability theory. Know how for applications to computer science and managing of data. Knowledge of elementary statistics. Know how for applications to computer science and managing of data.
×
Print
Course
RETI 1
Course ID
S1609
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CANONICO Massimo
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
2
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il tema del corso è la rete Internet, affrontato secondo un approccio che partendo dalle applicazioni di rete scende via via in profondità, descrivendo il livello "trasporto" e quindi il livello "rete" dei protocolli TCP/IP.
The course explain how a device network works from the application layer until the network layer following the TCP/IP's iso/osi stack.
Testi di riferimento/Textbooks
James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down, Settima Edizione.
James F. Kurose, Keith W. Ross, Computer Networking: A Top-Down Approach 7th Edition.
Obiettivi formativi/Mission
Approfondire le tematiche relative alle reti informatiche.
Understand how device connected via networks can communicate each other.
Prerequisiti/Required background knowledge
Conoscenze acquisite nei corsi di Architetture e Sistemi operativi.
The student should know the topics in the program of the Computer Architecture and Operating Systems courses
Metodi didattici/Teaching methods
Lezioni frontali in aula ed in laboratorio.
Lessons in class and in the computer lab.
Altre informazioni/Further information
Durante il corso vengono fatte esercitazioni volte a valutare l’acquisizione degli strumenti presentati e dei concetti introdotti.
All along the course self-evaluation exercises are proposed to assess understanding of the concepts and of the technical aspects.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto. La prova prevede domande, riguardanti argomenti svolti a lezione. La valutazione complessiva terrà conto dei punteggi parziali conseguiti nelle singole domande.
The exam consists of a written test with questions about the topics of the course. The final mark is the sum of the scores assigned to each answer.
Programma esteso/Content
Il corso tratta i seguenti argomenti: − Introduzione intuitiva alla rete, descrivendone in modo qualitativo la struttura e le funzionalità.  − Livello applicazione: protocolli per la gestione della posta elettronica, del WEB e del DNS. − Livello sessione: i socket, programmazione dei socket. − Livello trasporto: protocolli TCP e UDP − Livello rete: protocolli IP e ICMP.  − Protocolli di instradamento: algoritmi di instradamento, nozione di Sistema Autonomo, protocolli RIP, OSPF, BGP. Oltre alla descrizione dei protocolli succitati, il corso si propone di fornire allo studente anche un'esperienza diretta delle problematiche connesse con la gestione delle reti informatiche. Pertanto, durante il percorso di studio, vengono tenute anche lezioni pratiche in cui vengono assegnati esercizi da svolgere in aula o a casa.
The course deals with the following: -Intuitive introduction to the network describing in a qualitative way its structure and functionalities. -Application level: protocols for e-mail, web and DNS. -Session level: socket and socket programming. -Transport level: protocols TCP and UDP -Network level: protocols IP and ICMP -Routing protocols: routing algorithms, notion of Autonomous System, protocols RIP, OSPF, BGP. Besides the description of the mentioned protocols, the course aims at endowing the student with a direct experience on management of computer networks and the related issues. Therefore, part of the course consists of practical lessons in which the student is given exercises to complete in lab hours or as a homework.
Risultati di apprendimento attesi/Intended learning objectives
Capire la complessita di gestire la comunicazione tra device e quindi lo sviluppo di applicazioni di rete.
Learn the complexity related to the network communication between devices and consequently the development of network applications.
×
Print
Course
ALGORITMI 2
Course ID
MF0210
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
PIOVESAN LUCA
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Tecniche algoritmiche, nozione di grafo e algoritmi su grafi
Algorithmic techniques, notion of graph and algorithms on graphs
Testi di riferimento/Textbooks
- Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed MacGraw-Hill, 2008; ISBN: 978 88 386 64687 - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010. (presente anche in italiano)
- Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed MacGraw-Hill, 2008; ISBN: 978 88 386 64687 - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: familiarità con il concetto di grafo, visita di grafo, tecnica greedy e di programmazione dinamica, e con alcuni problemi classici sui grafi. Capacità di applicare conoscenza e comprensione: - modellare problemi utilizzando grafi - risolvere problemi tramite l'implementazione di algoritmi classici di visita di grafi - risolvere problemi utilizzando tecniche greedy e di programmazione dinamica, anche implementando algoritmi classici Come aspetto collaterale il corso sviluppa le competenze di programmazione (in particolare nel linguaggio Java). Autonomia di giudizio: - analizzare correttezza e costo di algoritmi greedy e di programmazione dinamica - saper affrontare con spirito critico gli algoritmi proposti, distinguendo i diversi gradi di difficoltà, e apprezzando la necessità di utilizzare tecniche avanzate (appena accennate in questo corso) per problemi per i quali non si conoscono algoritmi polinomiali - riconoscere gli ingredienti comuni delle le strategie per la progettazione di algoritmi greedy o di programmazione dinamica per i problemi studiati Abilità comunicative: aver acquisito e saper utilizzare la terminologia formale specifica relativa alle aree citate. Capacità di apprendere: la comprensione delle tecniche algoritmiche e dei meccanismi di ragionamento e analisi relativi permetterà agli studenti di comprendere e apprendere algoritmi per problemi diversi che utilizzano le tecniche algoritmiche presentate.
Knowledge and understanding: familiarity with the concepts of graph, graph traversal, greedy techinique, dynamic programming, and with some classical problems on graphs. Applying knowledge and understanding:- model problems using graphs - solve problems implementing classical graph traversal algorithms - solve problems using greedy or dynamic programming techniques, also implementing classical algorithms.As a byproduct, the course develops the students' programming skills (in Java, in particular). Making judgements:- analyze correctness and cost of greedy and dynamic programming algorithms- be able to critically view the algorithms taught in the course, distinguishing the different degrees of complexity, and realizing that it is the necessary to use advanced techniques (just mentioned in this course) for problems for which polynomial time algorithms are not known-recognize the ingredients common to the strategies for the design of greedy (resp. dynamic programming) algorithms presented in the course. Communication skills: the student must have acquired and must be able to use the specific formal terminology of the mentioned fields Learning skills: The comprehension of algorithmic techniques and of the machanisms of reasoning and analisys thereof will allow the students to understand and learn algorithms for different problems that are based on the algorithmic techinques taught in the course.
Prerequisiti/Required background knowledge
Prerequisiti formali: Lo studente non può accedere alle prove d'esame se non ha già sostenuto e verbalizzato gli esami di Programmazione 1 e Programmazione 2. Prerequisiti sostanziali: Nozioni di programmazione insegnate nei corsi di Programmazione 1 e 2; le nozioni base di algoritmica insegnate nel corso di Algoritmi 1. Principi e linguaggi di programmazione insegnati nei corsi di semestri precedenti.
Formal prerequisites: Students cannot access final exams unless they have passed and verbalized the exams of Programming 1 and Programming 2. Substantial prerequisites: Fundamentals of programming taught in the first year courses on programming, basic algorithmic notions taught in Algorithms and Data Structures 1. Programming principles and languages taught in previous semesters courses.
Metodi didattici/Teaching methods
Il corso è insegnato in aula e in laboratorio. Nelle lezioni in aula vengono esposte le nozioni fondamentali, corredate di esempi, anche utilizzando un software di simulazione di algoritmi. Le dimostrazioni vengono presentate come strumento di approfondimento delle tecniche, facendo leva sull'analogia tra gli algoritmi che utilizzano una stessa tecnica. Viene discussa l'utilità ai fini pratici dei diversi algoritmi per risolvere specifiche tipologie di problemi. In laboratorio lo studente viene guidato nell'implementazione degli algoritmi visti a lezione, realizzando per ciascun algoritmo diverse varianti, in modo da apprezzare le informazioni che si possono trarre dall'utilizzo di ciascun algoritmo. Sul sito DIR del corso sono disponibili dei quiz di esercizio e autovalutazione che forniscono allo studente un modo di misurarsi con gli argomenti presentati, in modo da scoprire eventuali proprie lacune o dubbi e poter quindi rivolgersi per tempo al docente per chiarimenti.
The course is taught in class and in lab. In class the fundamental notions are presented, along with examples, also with the help of a software for simulation of algorithms. Proofs are presented as a tool to study in depth the algorithmic techniques, leveraging on analogies among algorithms that use the same techniques. The presentation is completed with discussions on the usage of each algorithm in practice to solve specific kinds of problems. In lab the student is guided in implementing the algorithms seen in class, realizing for each algorithm a few variants as a propaedeutic exercise to problem solving. On the DIR site of the course the students have access to quizzes that serve as practice and self-evaluation. The aim is to offer to the students a means to check their own progress and comprehension, so as to discover as early as possible their weaknesses and to be able to ask for explanations to the teacher.
Altre informazioni/Further information
L'attività in laboratorio richiede una partecipazione attiva e individuale degli studenti, che in tal modo sviluppano abilità pratiche (le capacità di realizzare un programma). Inoltre, il coinvolgimento attivo li induce a porsi dei quesiti (e spesso di conseguenza a porne al docente); in tal modo si realizza una regolare verifica del modo in cui gli argomenti vengono recepiti.
Hands-on activity requires active participation of the students, who this way develop prcatical skills (ability to implement a program). Moreover, he active involvement leads the students to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this allows a regular monitoring of the way the subject is being understood.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto seguito da orale (con discussione degli esercizi svolti in laboratorio) L'esame scritto ha lo scopo di verificare che lo studente abbia capito gli algoritmi classici e il loro utilizzo, e sia in grado di applicarli alla risoluzione di problemi. Principalmente, sono richiesti due tipi di competenze: (i) aver capito, e saper utilizzare in casi semplici, gli algoritmi classici visti a lezione e (ii) saper risolvere, tramite l’implementazione o la modifica di un algoritmo classico, dei semplici problemi posti. L’esame scritto è solitamente composto da 5 domande, delle quali - almeno una richiede l’applicazione di un algoritmo standard sui grafi, - almeno una richiede l’applicazione di un algoritmo greedy o di programmazione dinamica - almeno una richiede di modificare un algoritmo conosciuto per affrontare un problema posto - almeno una riguarda la teoria, con risposte aperte o a crocette V/F Lo studente che supera l’esame scritto (con votazione >= 18) può accedere alla prova orale. L’esame orale è composto da 2 parti: la discussione degli esercizi svolti in laboratorio ed una parte teorica. Nella parte di laboratorio si discutono gli esercizi svolti in laboratorio e le soluzioni adottate. Si noti che il laboratorio durante il corso è svolto a gruppi, mentre la discussione è individuale. Nel corso della parte teorica si verifica che lo studente abbia acquisito la terminologia formale e la capacità di analisi. Vengono poste delle domande (solitamente 3, il cui numero può variare in base alle risposte date) che hanno come obbiettivo: (i) verifica della familiarità con il concetto di grafo nelle sue varianti, (ii) capacità di analisi di algoritmi di visita di grafi, (iii) capacità di analisi di algoritmi greedy e di programmazione dinamica, (iv) basilare sensibilità su come affrontare problemi difficili. Al termine della prova orale viene espresso un voto che tiene conto per il 50% della prova scritta e per l’altro 50% della prova orale.
Written exam followed by oral exam (with discussion of the lab exercises) The aim of the written exam is to verify that the student has understood the classical algorithms and their usage, and is capable of applying them to problem solving. Two types of skills are required: (i) understanding the classical algorithms presented in class and can using them on simple instances; (ii) solving simple problems implementing (or modifying) one of the classical algorithms presented in class. Usually, a written exam contains 5 questions, among which: - at least a question involving the application of a standard graph algorithm - at least a question involving the application of a greedy or dynamic programming algorithm - at least a question involving the modification of a known algorithm - at least a theoretical question (with open or closed answers) A student obtaining a mark >= 18 accesses the oral examination. The oral examination consists of two parts: the discussion of the lab exercises and a theoretical part. During the lab discussion the lab exercises are examined. Please notice that, while they are made in groups, the examination is individual. The aim of the oral exam it to verify that the student has acquired the formal terminology and analysis capability; it normally consists of three questions (which number may vary depending on the provided answers). The aim is to ascertain that the student has acquired (i) familiarity with the concept of graph in all its variants, (ii) ability to analyze graph traversal algorithms, (iii) ability to analyze greedy and dynamic programming algorithms, (iv) basic sensibility on how to deal with difficult problems. At the end of the oral examination, a mark is given depending (in equal parts) both on the written exam and on the oral one.
Programma esteso/Content
Grafi: -definizioni e terminologia: grafi non orientati, grafi orientati, archi pesati, cammini, cicli, componenti connesse e fortemente connesse: significato e utilizzo delle diverse varianti per modellare diverse situazioni; -rappresentazioni di grafi: matrici e liste di adiacenza e loro impatto dal punto di vista dell'implementazione -visita di grafi in ampiezza e in profondità, caratteristiche comuni e differenze delle varie visite proposte e loro applicazioni Tecnica golosa (greedy): -introduzione e algoritmi di esempio; -cammini minimi su grafo pesato da un nodo sorgente: algoritmo di Dijkstra e applicazioni -minimo albero ricoprente: algoritmi di Prim e Kruskal e loro utilizzo per risolvere problemi pratici -tecniche di dimostrazione di correttezza e loro funzione in relazione alla progettazione di algoritmi greedy -limiti della tecnica golosa (problema del resto) Tecnica di programmazione dinamica -introduzione alla tecnica e proprietà della sottostruttura ottima; confronto con la tecnica golosa e con il divide et impera -aspetti e scelte di impementazione: algoritmi ricorsivi e iterativi, memoization -utilizzo dei teoremi della sottostruttura ottima per l'analisi di problemi e la progettazione di algoritmi di programmazione dinamica; analisi di problemi classici (massimo sottoinsieme indipendente, zaino, sottosequenza comune di lunghezza massima); -cammini minimi da un nodo sorgente: algoritmo di Bellman-Ford (utilizzo negli algoritmi di routing) -cammini minimi da tutti i nodi: algoritmo di Floyd-Warshall Cenni sui problemi intrattabili: -classi P, NP ed NP completezza -algoritmi di complessità pseudopolinomiale -introduzione alle tecniche per affrontare i problemi difficili.
Graphs -definitions and terminology: undirected and directed graphs, weighted graphs, paths, cycles, connected components and strongly connected components: meaning and usage of each variant to model different situations; -representations: adjacency matrices and lists and their impact from the implementation point of view; -breadth first and depth first traversals: common characteristics and differences and applications Greedy technique: -introduction and examples; -single source shortest paths on a weighted graph: Dijkstra's algorithm and applications -minimum spanning tree: Prim's and Kruskal's algorithms and their use to solve practical problems; -techinques for proofs of correctness and their function in designing greedy algorithms; -limits of greedy techniques (the problem of coin change) Dynamic programming technique: -introduction to the dynamic programming technique, optimal substructure property; comparison with greedy and divide et impera techniques; -implementation aspects and choices: recursive and iterative algorithms, memoization; -usage of the optimal substructure theorems to analyze problems and design synamic programming algorithms; analysis of classical problems (maximal independent set, knapsack, longest common subsequence); -single source shortest paths on a weighted graph: Bellman-Ford's algorithm (use in routing algorithms) -all-pairs shortest paths on a weighted graph: Floyd-Warshall's algorithm Introduction to intractable problems: -P, NP complexity classes and NP-completeness -pseudopolinomial algorithms -introduction to the techniques to deal with intractable problems.
Risultati di apprendimento attesi/Intended learning objectives
Enunciare la definizione di grafo, ed analizzare i diversi modi di rappresentare un grafo in relazione alle applicazioni. Descrivere il concetto di visita di grafo, e identificarne esempi. Descrivere le strategie greedy e di programmazione dinamica. Identificare esempi per ciascuna delle strategie elencate. Descrivere e spiegare il ragionamento che porta alla progettazione (e che dimostra la correttezza) di algoritmi classici su grafi. Descrivere l'analisi di complessità/correttezza di tali algoritmi. Applicare gli algoritmi classici a semplici istanze. Descrivere le classi P ed NP e il loro rapporto e l'idea di soluzione approssimata; illustrare l'analisi degli algoritmi approssimati visti a lezione. Modellare un problema dato con un problema classico su grafo, scegliendo il tipo di grafo appropriato. Implementare in Java gli algoritmi classici sui grafi presentati a lezione.
Define a graph, and analyze the different ways of representing a graph for different applications. Describe the concept of graph traversal, and identify examples thereof. Describe the freedy and dynamic programming strategies. Identify examples for each one of the mentioned strategies. Describe and explain the reasoning that leads to the design (and proves the correctness) of classical algorithms on graphs. Describe the complexity/correctness analysis of such algorithms. Apply classical algorithms to simple instances. Describe classes P and NP and their relashionship and the idea of approximate solution; explain the analysis of approximate algorithms presented in class. Model a given problem with a classical problem on a graph, choosing the appropriate kind of graph. Implement the classical algorithms on graphs studied in class.
×
Print
Course
ALGORITMI 1
Course ID
MF0209
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MONTANI Stefania
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Metodi di analisi degli algoritmi. Strutture dati fondamentali. Algoritmi fondamentali (ricerca e ordinamento)
Algorithm analysis methods. Basic data structures. Fundamental sorting and search algorithms.
Testi di riferimento/Textbooks
Algoritmi e strutture dati 2/ed, Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, MC Graw Hill
Algoritmi e strutture dati 2/ed, Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano, MC Graw Hill
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: familiarità con l’analisi degli algoritmi, delle strutture dati di base, e di algoritmi fondamentali, con particolare riferimento agli algoritmi di ricerca ed ordinamento. Capacità di applicare conoscenza e comprensione:sapere applicare le tecniche di analisi negli esercizi, saper scrivere un algoritmo fondamentale o una sua variazione ideando soluzioni nuove in maniera tecnicamente corretta.Autonomia di giudizio: analizzare gli algoritmi ricorsivi; saper affrontare con spirito critico gli esercizi proposti, proponendo soluzioni corrette in modo autonomo.Abilità comunicative: aver acquisito e saper utilizzare la terminologia formale specifica relativa alle aree citate, saper giustificare le scelte fatte e comunicarle in modo chiaro anche a utenti meno esperti. Capacità di apprendere: Essere in grado di intraprendere con profitto studi successivi sugli elementi di algoritmica
Knowledge and understanding: knowing the analysis of algorithms and the data structures, focusing on search and sorting algorithms. Applying knowledge and understanding: Capability to apply the analysis techniques in the exercises, capability to write a classical algorithm, or a possible variation of it, proposing novel technically correct solutions.Making judgements: being able to analyze recursive algorithms; being able to afford in a critical way the exercises, proposing correct solutions in an autonomous way.Communication skills: knowing and correctly applying the terminology of the field, justifying the choices and clearly communicating them also to a non expert audience. Learning skills: Being able to proceed in more advanced algorithmic notions studies.
Prerequisiti/Required background knowledge
Aver superato l’esame di Programmazione 1 e 2.
Having passed the Programming 1 and 2 exams.
Metodi didattici/Teaching methods
Lezioni in aula (eventualmente in modalità blended) ed esercitazioni in laboratorio. Nelle lezioni in aula vengono esposte le nozioni fondamentali, corredate di esempi. Vengono confrontate diverse strutture dati, e algoritmi diversi mirati a risolvere problemi della stessa classe.Sulla piattaforma DIR sono indicati i libri di testo suggeriti ed è a disposizione degli studenti del materiale, che ricalca gli argomenti trattati a lezione, risultando di aiuto anche per chi non fosse stato presente. Sono inoltre forniti alcuni esercizi ed esempi di temi d’esame.In laboratorio lo studente viene guidato nell'implementazione degli algoritmi visti a lezione, realizzando per ciascun algoritmo alcune varianti, come esercizio propedeutico all'uso degli algoritmi per la soluzione di problemi. Sul DIR sono a disposizione, per ogni argomento trattato nelle lezioni in laboratorio, delle slide come riferimento e guida sia per chi ha seguito la lezione che per gli assenti.
Classroom lessons (possibly in blended madality) and assisted exercises in the lab. Classroom lessons will present the fundamental concepts, and will also include example exercises. Different data structures and different algorithms meant to solve problems of the same class will be compared. On the DIR platform the students will find indications about the textbooks and materials, closely related to the topics presented at the lessons; this will help students that do not attend to easily follow the course development. Exercises and example tests will be provided as well.In the lab, the student is guided in the implementation of the algorithms studied in the classroom lessons, realizing some variations. On the DIR platform the students will find slides and additional material referring to the single lab lessons, as a guide also for those who did not attend.
Modalità di verifica dell'apprendimento/Assessment methods
Teoria: Esame scritto, eventualmente in forma di quiz. L'esame prevede un minimo di 3 esercizi, che verteranno su argomenti svolti in una parte diversa del programma: un esercizio riguarderà l’analisi della complessità, mentre gli altri due riguarderanno due argomenti tra: strutture dati fondamntali, algoritmi di ordinamento, algoritmi di ricerca tramite alberi, tabelle hash, code con priorità. Il voto terra' conto dei risultati parziali ottenuti nei singoli esercizi. Eventualmente (ad esempio, per richiesta dello studente), la stessa tipologia di esame potra' essere svolta oralmente o integrata da una prova orale. Laboratorio: Esame pratico. L'esame prevede l'implementazione di uno o più programmi in linguaggio C. Gli argomenti comprendono quelli presentati durante le lezioni frontali e in laboratorio. Il voto terra' conto dei risultati parziali ottenuti nei singoli esercizi. La votazione finale terrà conto dei risultati finali ottenuti nelle prove d'esame di Teoria e di Laboratorio.
Theory: Written test, possibly as a quiz. The test will be composed by three exercises at least, focused on different course topics. One exercise will involve complexity analysis, while the other two will involve two topics among: fundamental data structures, sorting algorithms, searching algorithms by using trees, hash tables, priority queues. The final score will take into account the partial scores of the different exercises. Possibly (e.g., on student's request), the same exam type will be executed orally, or integrated by means of an oral examination. Lab: Practical examination. The exam consists in developing one or more programs in C language. Topics include those presented during classroom lessons and in the lab. The final score will take into account the partial scores of the different exercises. The global score will take into account the final scores obtained in the Theory and Lab examinations.
Programma esteso/Content
- Introduzione agli algoritmi. - Modelli di analisi. Notazioni asintotiche: O, Omega e Theta. Limiti inferiori. Teorema Master. - Tipi di dato astratto: Pile , Code, Alberi. - Algoritmi di ordinamento: insertion sort, selection sort, merge sort, quicksort, heap sort, integer sort, radix sort - Alberi binari di Ricerca. Alberi AVL, alberi 2-3. - Tabelle Hash. - Code con priorità. Tali aspetti sono poi meglio studiati in pratica durante le esercitazioni tenute in laboratorio. In particolare in laboratorio verranno implementati esercizi relativi ai seguenti argomenti: Ricerca binaria e Algoritmi di ordinamento: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Strutture dati dinamiche: Liste, Code, Pile; Ricerca indicizzata:Alberi binari di ricerca Tabelle di hash
- Introduction to algorithms. - Analysis of algorithms: O, Omega and Theta notations. Master theorem on recurrences. - Abstract data structures: Stack, Queue, Tree. - Sorting algorithms: insertion sort, selection sort, merge sort, quicksort, heap sort, integer sort, radix sort. - Search binary trees. AVL trees, 2-3 trees. - Hash tables. - Priority queues. These notions will then be further examined by means of their implementation. In particular, the exercises will refer to the following topics: Sorting algorithms: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Dynamic data structures: Lists, Queues, Stacks; Trees; Hash tables.
Risultati di apprendimento attesi/Intended learning objectives
Enunciare la definizione delle strutture dati fondamentali e saperle adottare in problemi proposti. Analizzare un algoritmo dato, sia esso ricorsivo che iterativo. Saper descrivere gli algoritmi di ricerca e di ordinamento. Saper applicare un algoritmo specifico, tra quelli visti, ad un problema dato. Essere in grado di darne un'implementazione in C.
Providing the definition of the fundamental data structures and being able to adopt them in the proposed exercises. Being able to analyse recursive and iterative algorithms. Being able to describe the sorting and search algorithms. Being able to apply a specific algorithm among them, to a given problem. Being able to provide its implementation in C.
×
Print
Course
METODOLOGIE DI PROGRAMMAZIONE PER IL WEB
Course ID
MF0437
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
BOTTRIGHI Alessio
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
2
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Scopo del corso è acquisire le capacità di base per progettare e realizzare siti ed applicazioni sul World Wide Web, costituiti da testi, elementi multimediali e interattivi secondo un'architettura 3-tier (client/application/data). Verranno illustrati i concetti di base sull'utilizzo di markup languages come HTML5 e CSS3, i concetti più importanti relativi alla programmazione Web lato client (JavaScript) e lato server (Node.js), nonché le modalità di interazione con DBMS relazionali (RDBMS). Particolare attenzione verrà posta agli aspetti di accessibilità di siti e applicazioni web.
The goal of the course is to learn how to design and build web sites and applications by following a 3-tier architecture (client/application/data). Concepts related to markup languages like HTML5 will be introduced, together with concepts related to style notations like CCS3. The course will also cover client-side programming (JavaScript) and server-side programming (Node.js), as well as methods for interacting with relational DBMS (RDBMS). Accessibility and usability aspects will be considered along the course, to allow web pages and applications to be really usable by everyone.
Testi di riferimento/Textbooks
Materiale fornito dal docente. Opzionalmente: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson
Material provided by the teacher on DIR. Optional books: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson
Obiettivi formativi/Mission
Acquisire le capacità di base per progettare e realizzare siti ed applicazioni di media complessità, usabili e accessibili, sul World Wide Web costituiti da testi, immagini e programmi secondo un'architettura 3-tier (client/application/data).
Being able to build complex, yet accessible and usable, web sites and applications by following a 3-tier architecture (client/application/data).
Prerequisiti/Required background knowledge
Programmazione ad oggetti. Basi di Dati.
Object-oriented Programming. Database systems.
Metodi didattici/Teaching methods
Lezioni e laboratori
Lectures and exercises
Modalità di verifica dell'apprendimento/Assessment methods
L'esame consisterà nella realizzazione e discussione di un progetto pratico assegnato a inizio corso.
The exam will consist in the realization and discussion of an assigned project.
Programma esteso/Content
Concetti base di programmazione e progettazione per il web Il linguaggio HTML (HTML5) Cascading Style Sheets (CSS3) e il design responsive Accessibilità di pagine e applicazioni web Programmazione client-side: JavaScript, DOM, AJAX Richiami di progettazione RDBMS Programmazione server-side: web server e architettura 3-tier, node.js e il framework Express Interfacciamento con RDBMS Cenni sui web service e sulle API Strumenti di sviluppo, dentro e fuori dal browser
Basic notions about programming and designing for the Web The HTML5 language Cascading Style Sheets (CSS3) and responsive web design Create accessible web pages and applications Client-side programming: JavaScript, Dynamic HTML and DOM, AJAX Overview on RDBMS design Server-side programming: web servers and 3-tier architectures, node.js and the Express framework Interaction with RDBMS Overview on web services and APIs Development tools for the web, inside and outside the browser
Risultati di apprendimento attesi/Intended learning objectives
Acquisire le capacità di base per realizzare siti ed applicazioni web di media complessità, usabili e accessibili, costituiti da testi, elementi multimediali e interattivi secondo un'architettura 3-tier (client/application/data).
Being able to build complex, yet usable and accessible, web sites and applications by following a 3-tier architecture (client/application/data).
×
Print
Course
PARADIGMI DI PROGRAMMAZIONE
Course ID
MF0363
Academic Year
2021/2022
Year of rule
2020/2021
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
GIANNINI Paola
Teachers
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
B
Year
2
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il corso si compone di due parti. Nella prima viene introdotta la programmazione ad oggetti in Java e la metodologia di sviluppo di programmi basata su Test. Nella seconda parte viene introdotta la programmazione funzionale usando il linguaggio Python.
The course consists of two parts. In the first, object-oriented programming in Java and the Test-based program development methodology are introduced. In the second part, functional programming is introduced using the Python language.
Testi di riferimento/Textbooks
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Consultazione: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Functional Python Programming: Discover the power of functional programming, generator functions, lazy evaluation, the built-in itertools library, and monads, 2nd Edition Paperback – April 13, 2018 by Steven F. Lot Materiale fornito dal docente.
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Recommended: Reference: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall. Material supplied by the teacher.
Obiettivi formativi/Mission
Conoscenza e capacità di comprensione: familiarità con i principi della programmazione ad oggetti e funzionale, con il linguaggio Java, le architetture modello/vista/controllore e con il linguaggio Python. Capacità di applicare conoscenza e comprensione: abilità di strutturare e realizzare un progetto usando gli strumenti della programmazione ad oggetti e funzionale derivando il codice dai test. Autonomia di giudizio: abilità di riconoscere 1) buone e cattive pratiche di programmazione, 2) quando un paradigma è più o meno appropriato e 3) e valutare la qualità architetturale di un progetto. Abilità comunicative: padronanza della terminologia specifica della programmazione ad oggetti e funzionale e miglioramento nell’abilità di lavoro in gruppo. Capacità di apprendere: maggior facilità ad apprendere autonomamente l’utilizzo di altri linguaggi e altre librerie con strutturazione oggetti e/o funzionale.
Knowledge and understanding: familiarity with the principles of object oriented and functional programming, with the specific Java language, the model/view/controller architecture and the language Python. Applying knowledge and understanding: ability to design and implement a project using object programming tools and deriving code from tests. Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is more or less appropriate and 3) and to evaluate the architectural quality of a project. Communication Skills: mastering the specific terminology of object programming and functional programming and improving teamwork skills. Learning Skills: ability to learn autonomously the use of other languages and other object oriented and/or functionally structured libraries.
Prerequisiti/Required background knowledge
Prerequisiti formali: superamento dei corsi di Programmazione 1 e 2. Prerequisiti sostanziali: padronanza dei principi della programmazione imperativa.
Formal prerequisites: passing grade in the Programming 1 and 2 courses. Substantial prerequisites: mastering the principles of imperative programming.
Metodi didattici/Teaching methods
Lezioni che introducono i concetti teorici ed esercitazioni in laboratorio che li applicano. Nelle lezioni si affrontano gli argomenti di teoria tramite presentazioni diapositive, con esempi e alcune domande per verificare l’apprendimento degli studenti. Nelle esercitazioni in laboratorio gli studenti sono guidati nella realizzazione di semplici progetti volti a mettere in pratica le conoscenze teoriche acquisite.
Lectures that introduce theoretical concepts and laboratory exercises that apply them. In the lessons, theoretical topics are addressed through slide presentations, with examples and some questions to verify students' learning. In laboratory exercises, students are guided in the realisation of simple projects aimed at putting into practice the theoretical knowledge acquired.
Altre informazioni/Further information
Allo studente vengono proposti esercizi settimanali (facoltativi), il cui svolgimento, iniziato in laboratorio,  deve essere completato a cura del medesimo. Gli esercizi vengono commentati e corretti sia singolarmente che in classe. Le prove finali (descritte nelle "modalità di verifica") valutano l'autonomia dello studente nella progettazione, realizzazione e testing di programmi ad oggetti implementati in Java.
The student is presented with weekly exercises (optional), which solution is started during the lab sessions and that should be completed by the student. The exercises are discussed and corrected both individually and in the classroom. The final tests (described in "modalità di verifica") assess the student autonomy with respect to the design, implementation and testing of object-oriented programs implemented in Java.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame consiste di tre parti. La prima parte, è una prova in laboratorio volta ad accertare la padronanza degli strumenti di programmazione introdotti (uso IDE, sviluppo di test) e dei concetti teorici presentati a lezione. Il test sulla padronanza degli strumenti prevede l’implementazione di 2-3 classi con le relative classi di test usando l’IDE eclipse ed il test sulla conoscenza teorica la risposta a 2-3 domande sui fondamenti della programmazione orientata ad oggetti in Java. La seconda richieda lo svolgimento di un progetto personalmente o in gruppo volto ad accertare sia la capacità di strutturazione di un problema nel paradigma ad oggetti che la sua implementazione con l'uso delle librerie Java. Il progetto viene discusso durante un esame orale. La terza parte verifica le competenze acquisite per quanto riguarda la programmazione funzionale. Il voto è determinato dalla votazione delle tre prove.
The exam is made of two parts. The first part done in the lab is aimed at testing the mastering of the programming tools (IDE use, test development) exercised during the lab sessions and of the theoretical concepts presented in lesson. For the testing of the tools the student is required to implement 2-3 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 2-3 questions about the Java-oriented programming basics. The second part require to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests.
Programma esteso/Content
Introduzione a Java.  Oggetti, classi, metodi  Tipi fondamentali, strutture sintattiche per controllo di flusso, array.  Tipi involucro (per tipi primitivi) e auto-boxing/unboxing Interfacce, polimorfismo, ereditarietà  Programmazione parametrica  Gestione di eccezioni  Panoramica delle librerie di base  Caratteristiche funzionali di Java 8 e nuove librerie di collezioni Sviluppo guidato dai Test  Pattern di programmazione Model-View-Controller Introduzione alla programmazione funzionale in Python. Funzioni come valori Funzioni di ordine superiore Dati immutabili Valutazione lazy Lavorare con le Collezioni: ricorsione e riduzione
Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and auto-boxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries Test-Driven Development Pattern Programming Model-View-Controller Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction
Risultati di apprendimento attesi/Intended learning objectives
Conoscere i fondamenti teorici della programmazione a oggetti e di quella funzionale. Essere in grado di modellare un applicativo individuandone le componenti e il paradigma migliore per la loro descrizione. Saper progettare e implementare la soluzione scelta usando sia Java che Python. Realizzarne test con JUnit. Avere padronanza del Collections framework di Java e di Python. Saper riconoscere e gestire i casi non standard tramite eccezioni.
Know the theoretical foundations of object-oriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage non-standard cases through exceptions.
×
Print
Course
CONOSCENZE INIZIALI
Course ID
MF0435
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MARTIGNONE Francesca
Teaching duration (hours)
24
SSD
NN -
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
D
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il corso ha lo scopo di sviluppare competenze di base e capacità relative alla comprensione dei testi scientifici, incluse le rappresentazioni e le notazioni della matematica, tenuto conto dei programmi delle Indicazioni Nazionali e Linee Guida per della scuola secondaria di secondo grado.
The course aims at developing basic competencies and skills related to the comprehension of scientific texts, including mathematical representations and notations, taking into account the National Guidelines for secondary school.
Testi di riferimento/Textbooks
Materiale didattico messo a disposizione dal docente sulla piattaforma DIR del corso.
Didactic material provided by the teacher on the DIR platform of the course
Obiettivi formativi/Mission
Saper interpretare testi scientifici e, in particolare, saper decodificare e manipolare scritture specifiche della matematica. Si vogliono sviluppare competenze relative all'interpretazione di testi di problemi matematici e all'applicazione delle strategie risolutive. Tutte le attività richiederanno una comunicazione efficace dei processi svolti e dei risultati ottenuti.
Being able to interpret scientific texts and, in particular, to be able to decode and manipulate specific mathematical notations. The goal is to develop competencies related to the interpretation of mathematical problem texts and to the implementation of solution strategies. All the activities will require effective communication of the processes carried out and of the results obtained.
Prerequisiti/Required background knowledge
Competenze relative al linguaggio e alla matematica richieste al termine della scuola secondaria di secondo grado.
Language and mathematical skills required at the end of secondary school.
Metodi didattici/Teaching methods
Lezioni e esercitazioni a distanza svolte anche attraverso l'uso della piattaforma Moodle dell’Università.
Lectures and training sessions carried out by means of the use of the University Moodle platform.
Altre informazioni/Further information
Controllo dell'apprendimento: attività supportate dall'utilizzo della piattaforma Moodle dell’Università. Queste attività hanno un obiettivo formativo: sono discusse e corrette insieme agli studenti
Learning monitoring: activities supported by the use of the Moodle platform of the University. These activities have a formative goal: they are discussed and corrected together with the students
Modalità di verifica dell'apprendimento/Assessment methods
Test finale in analogia con il test iniziale delle competenze. La prova consiste in 20 domande di comprensione e uso dei testi scientifici, incluse le rappresentazioni e le notazioni della matematica. Per superare la prova è necessario ottenere almeno il 50% dei punti.
Final test in analogy with the competence assessment initial test. The final test consists of 20 questions about the understanding of scientific texts, including representations and notations of mathematics. To get through the test it is necessary to get at least 50% of the points.
Programma esteso/Content
Nel corso saranno trattati contenuti e affrontati problemi relativi a competenze di base che sono necessarie per affrontare i corsi del primo anno del DiSIT. Saranno analizzati testi scientifici che includono le rappresentazioni e le notazioni della matematica e saranno svolte di attività di problem solving. In particolare saranno oggetto di studio: 1)Alcune caratteristiche fondamentali dei testi scientifici. 2)Diverse rappresentazioni dei numeri e delle misure. 3) Proprietà delle notazioni algebriche. 4)Rappresentazioni grafiche di fenomeni
The course will deal with content and problems related to basic skills that are required to face the DiSIT first year courses. Scientific texts, that include mathematical representations and notations, will be analyzed and problem solving activities will be carried out. In particular they will be studied: 1) Some fundamental features of scientific texts. 2) Different representations of number and measures. 3) Algebraic notations proprieties. 4) Graphic representations of phenomena
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza di alcuni concetti di base della matematica, in particolare: numeri reali e loro rappresentazioni e principali funzioni elementari. Capacità di applicare questi concetti nella risoluzione di semplici problemi e nell'interpretazione di grafici. Consapevolezza delle potenzialità e dei limiti dei concetti e dei metodi adottati.
Knowledge of some basic concepts of mathematics, in particular: real numbers and their representations and main elementary functions. Ability at applying these concepts in simple problem solving and in the interpretation of graphs. Awareness about potential and limits of the concepts and methods adopted.
×
Print
Course
TECNICHE DI COMUNICAZIONE E SCRITTURA
Course ID
MF0396
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
DEMARTINI SILVIA
Teachers
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
L-FIL-LET/12 - LINGUISTICA ITALIANA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
1
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il corso punta a fornire una buona conoscenza delle principali tecniche di comunicazione e di scrittura, tenendo in particolare considerazione il tipo di formazione scientifica degli studenti e le loro più frequenti occasioni di scrittura in campo accademico e professionale. Per questo, sono esaminati i principali modelli della comunicazione, compresi i principi e le massime del comunicare. Inoltre, sono precisate le fasi della scrittura ed è approfondita la strutturazione del testo in capoversi e paragrafi. Il corso include anche una descrizione delle principali caratteristiche della lingua italiana, e un esame dei più ricorrenti errori di grammatica e scrittura; questi saranno rilevati e monitorati attraverso diverse modalità durante gli incontri, al fine di promuoverne un recupero consapevole e autonomo da parte degli studenti.
The course aims to provide a good knowledge of the main communication and writing techniques, taking into particular consideration the type of scientific training of the students and their more frequent academic and professional writing opportunities. For this, the main models of communication are examined, including the principles and maxims of communicating. In addition, the phases of writing are specified and the structuring of the text into paragraphs and paragraphs is deepened. The course also includes a description of the main characteristics of the Italian language, and an examination of the most common grammar and writing errors; these will be detected and monitored in different ways during the meetings, in order to promote a conscious and autonomous re-use by the students.
Testi di riferimento/Textbooks
Dario Corno, Scrivere e comunicare. La scrittura in lingua italiana in teoria e in pratica. Milano: Bruno Mondadori, 2012. Luca Cignetti, Simone Fornara, Il piacere di scrivere. Guida all’italiano del Terzo millennio. Roma: Carocci, 2014. Luca Cignetti, Silvia Demartini, L’ortografia. Roma: Carocci, 2016. Giuseppe Patota, L’italiano dalla A alla X. Prontuario di grammatica. Roma-Bari: Laterza, 2013.
Dario Corno, Scrivere e comunicare. La scrittura in lingua italiana in teoria e in pratica. Milano: Bruno Mondadori, 2012. Luca Cignetti, Simone Fornara, Il piacere di scrivere. Guida all’italiano del Terzo millennio. Roma: Carocci, 2014. Luca Cignetti, Silvia Demartini, L’ortografia. Roma: Carocci, 2016. Giuseppe Patota, L’italiano dalla A alla X. Prontuario di grammatica. Roma-Bari: Laterza, 2013.
Obiettivi formativi/Mission
Alla fine del corso, ci si aspetta che gli studenti inizino a cogliere l’importanza di una comunicazione corretta, chiara e funzionale come aspetto imprescindibile della loro formazione scientifica e della loro professione futura. Inoltre, dovranno saper applicare alla redazione di un testo le indicazioni fornite ed esercitate durante il corso, in modo adeguato alle diverse tipologie e generi testuali (con attenzione particolare al saggio scientifico). Infine, dovranno aver in gran parte colmato le lacune grammaticali di base e, soprattutto, dovranno aver accresciuto la loro sensibilità a cogliere e a risolvere le proprie difficoltà linguistico-comunicative.
At the end of the course, students are expected to begin to grasp the importance of correct, clear and functional communication as an essential aspect of their scientific training and their future profession. Furthermore, they will have to know how to apply the indications provided and exercised during the course to the drafting of a text, in an appropriate way for the different text types and genres (with particular attention to the scientific essay). Finally, they must have largely filled the basic grammatical gaps and, above all, they must have increased their sensitivity to check and solve their linguistic-communicative difficulties.
Prerequisiti/Required background knowledge
Nessuno
No background knowledge is required
Metodi didattici/Teaching methods
Lezioni frontali Laboratori di scrittura Apprendimento cooperativo
Frontal lessons Writing workshops Cooperative learning
Altre informazioni/Further information
Il corso è aperto agli studenti e alle studentesse che non hanno l'italiano come madrelingua
Students that are learning Italian as a L2 o LS are welcome
Modalità di verifica dell'apprendimento/Assessment methods
Esercitazioni in itinere Esame scritto
Writing exercices Final written exam
Programma esteso/Content
• La comunicazione (segni, codici) • Prova formativa d'entrata (2 ore) • Restituzione prova d'entrata • Segni e linguaggi, significato e significante, langue e parole, registri linguistici • Spiegazione esercitazione sulla scrittura di una mail • Registri linguistici e Modello di Jakobson (della comunicazione). Ideazione di uno slogan per l’UPO (esercitazione orale). • Il parlato in pubblico: tratti del parlato; la presentazione; il dibattito. • Esercitazione orale a gruppi: presentare e dibattere su un argomento • che si presta alla documentazione e alla discussione. • Il processo di scrittura e le sue fasi (focus su destinatari, pianificazione, fonti) • Consigli pratici di scrittura • La citazione delle fonti • Quiz su aspetti grammaticali • Cenni di storia della scrittura e dell'italiano (breve focus su scrittura scientifica) • Un'ora di esercitazione e cenni al CV
• Communication (signs, codes) • Entry exam (2 hours) • Return proof of entry • Signs and languages, meaning and signifier, langue and parole, linguistic registers • Explanation of the tutorial on writing an email • Linguistic registers and the Jakobson model (of communication). Creation of a slogan for the UPO (oral exercise). • Public speaking: speech traits; the presentation; the debate. • Oral exercise in groups: presenting and discussing a topic • which lends itself to documentation and discussion. • The writing process and its phases (focus on recipients, planning, sources) • Practical writing tips • The citation of sources • Quiz on grammar aspects • Notes on the history of writing and Italian (short focus on scientific writing) • One hour of practice and references to the CV
Risultati di apprendimento attesi/Intended learning objectives
- Padroneggiare le basi della scrittura funzionale, accademica e professionale; - colmare le lacune grammaticali; - acquisire conoscenze di base sui processi comunicativi orali e scritti; - acquisire competenza di scrittura idonea al percorso accademico.
- Magaging the basics of functional, academic and professional writing; - filling in grammatical gaps; - acquiring basic knowledge on oral and written communication processes; - acquiring writing skills suitable for the academic path.
×
Print
Course
FISICA
Course ID
MF0203
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
BARONE Vincenzo
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
FIS/01 - FISICA SPERIMENTALE
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
1
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Concetti fondamentali della Fisica classica: Meccanica, Calorimetria e Termodinamica, Elettrictà e Magnetismo.
Fundamental concepts of Classical Physics: Mechanics, Calorimetry and Thermodynamics, Electricity and Magnetism.
Testi di riferimento/Textbooks
A.Giambattista, B.McCarthy, R.Richardson, Fisica generale, McGraw Hill D.C.Giancoli, Fisica, Casa Editrice Ambrosiana D.Halliday, R.Resnick, J.Walker, Fondamenti di Fisica, Casa Editrice Ambrosiana
A.Giambattista, B.McCarthy, R.Richardson, Fisica generale, McGraw Hill D.C.Giancoli, Fisica, Casa Editrice Ambrosiana D.Halliday, R.Resnick, J.Walker, Fondamenti di Fisica, Casa Editrice Ambrosiana
Obiettivi formativi/Mission
Fornire agli Studenti una conoscenza del metodo di indagine in Fisica e dei fondamenti della Fisica Classica. Modellizzare semplici sistemi e spiegare alcuni fenomeni dell'esperienza ordinaria.
To give the Students a knowledge of the research methods in Physics and of the fundamental concepts in Classical Physics. Modelling simple systems and understanding some phenomena of ordinary experience,
Prerequisiti/Required background knowledge
Analisi matematica 1
Calculus 1
Metodi didattici/Teaching methods
Lezioni frontali sulla parte teorica ed esercizi numerici.
Frontal lectures on the theoretical part and numerical exercises.
Altre informazioni/Further information
Sulla pagina DIR del Corso sono messe a disposizione delle dispense come guida allo studio, e una raccolta di esercizi, divisi per argomento, per una migliore preparazione all'esame. Le dispense non possono essere considerate sostitutive di un libro di testo.
On the DIR web page of the Course some notes are available as a guide for studying, along with a collection of exercises, divided by argument, for a better preparation to the exam. The notes cannot be considered a replacement of a good textbook.
Modalità di verifica dell'apprendimento/Assessment methods
Prova scritta quiz a risposta multipla e domande aperte, consistenti in esercizi numerici e domande di teoria. E' possibile utilizzare un formulario privo di testo e una calcolatrice non programmabile. Ad ogni domanda è assegnato un punteggio proporzionale alla difficoltà. Per il supersamento dell'esame scritto è necessario raggiungere un punteggio minimo di 18/30. A richiesta, eventuale prova orale integrativa.
Written exam with multiple choice tests and open questions, consisting in numerical exercises and theoretical questions. Students can use a formulary without text and a non-programmable calculator. A score is associated to each question, proportional to its complexity. To pass the written test a minimum total score of 18/30 is required. On demand, possible supplementary oral exam.
Programma esteso/Content
Richiami di matematica di base. Grandezze fisiche e unità di misura. Cinematica del punto materiale. Forze e principi della Dinamica. Lavoro ed energia. Forza gravitazionale. Elementi di meccanica dei fluidi. Temperatura, calore e principi della Termodinamica. Carica elettrica, campo elettrico, conduttori e isolanti, moto di cariche in campo elettrico. Potenziale elettrico, capacità elettrica. Corrente elettrica, effetto Joule, resistenze. Campo magnetico, effetti magnetici di una corrente, induzione magnetica. Elementi di meccanica delle onde.
Recall of basic Mathematics. Physical quantities and unit measures. Kinematics of a material point. Forces and the Principles of Dynamics. Work and energy. The gravitational force. Elements of Mechanics of fluids. Temperature, heat and the Principles of Thermodynamics. Electric charge, electric field, conductors and insulations, motion of charges in an electric field. Electric potential and capacity. Electric current, Joule effect, resistance. The magnetic field, magnetic effects of currents, induction. Elements of Mechanics of waves.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza delle basi della Fisica classica. Saper risolvere semplici problemi di Fisica.
Knowning the basis of classical Physics and how to solve simple Physics problems.
×
Print
Course
FISICA
Course ID
MF0202
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
SITTA Mario
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
FIS/01 - FISICA SPERIMENTALE
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
1
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Concetti fondamentali della Fisica classica: Meccanica, Calorimetria e Termodinamica, Elettricità e Magnetismo.
Fundamental concepts of Classical Physics: Mechanics, Calorimetry and Thermodynamics, Electricity and Magnetism.
Testi di riferimento/Textbooks
A.Giambattista, B.McCarthy, R.Richardson, Fisica generale, McGraw Hill D.C.Giancoli, Fisica, Casa Editrice Ambrosiana D.Halliday, R.Resnick, J.Walker, Fondamenti di Fisica, Casa Editrice Ambrosiana
A.Giambattista, B.McCarthy, R.Richardson, Fisica generale, McGraw Hill D.C.Giancoli, Fisica, Casa Editrice Ambrosiana D.Halliday, R.Resnick, J.Walker, Fondamenti di Fisica, Casa Editrice Ambrosiana
Obiettivi formativi/Mission
Fornire agli Studenti una conoscenza del metodo di indagine in Fisica e dei fondamenti della Fisica Classica. Modellizzare semplici sistemi e spiegare alcuni fenomeni dell'esperienza ordinaria.
To give the Students a knowledge of the research methods in Physics and of the fundamental concepts in Classical Physics. Modelling simple systems and understanding some phenomena of ordinary experience,
Prerequisiti/Required background knowledge
Analisi Matematica 1
Calculus 1
Metodi didattici/Teaching methods
Lezioni frontali sulla parte teorica ed esercizi numerici. rici. Gli Studenti possono trovare sulla piattaforma DIR molti esercizi messi a disposizione dal Docente al fine di migliorare la preparazione all'esame.
Frontal lectures on the theoretical part and numerical exercises. On the DIR web site Students can find many exercises made available to improve their competence for the exam.
Altre informazioni/Further information
Sulla pagina DIR del Corso sono messe a disposizione delle dispense come guida allo studio, e una raccolta di esercizi, divisi per argomento, per una migliore preparazione all'esame. Le dispense non possono essere considerate sostitutive di un libro di testo.
On the DIR web page of the Course some notes are available as a guide for studying, along with a collection of exercises, divided by argument, for a better preparation to the exam. The notes cannot be considered a replacement of a good textbook.
Modalità di verifica dell'apprendimento/Assessment methods
Prova scritta con quiz a risposta multipla e domande aperte, consistenti in esercizi numerici e domande di teoria. E' possibile utilizzare un formulario privo di testo e una calcolatrice non programmabile. e. Ad ogni domanda è assegnato un punteggio proporzionale alla difficoltà. Per il superamento dell'esame scritto è necessario raggiungere un punteggio minimo di 18/30. A richiesta, eventuale prova orale integrativa.
Written exam with multiple choice tests and open questions, consisting in numerical exercises and theoretical questions. Students can use a formulary without text and a non-programmable calculator. A score is associated to each question, proportional to its complexity. To pass the written test a minimum total score of 18/30 is required. On demand, possible supplementary oral exam.
Programma esteso/Content
Richiami di matematica di base. Grandezze fisiche e unità di misura. Cinematica del punto materiale. Forze e principi della Dinamica. Lavoro ed energia. Forza gravitazionale. Elementi di meccanica dei fluidi. Temperatura, calore e principi della Termodinamica. Carica elettrica, campo elettrico, conduttori e isolanti, moto di cariche in campo elettrico. Potenziale elettrico, capacità e condensatori. Corrente elettrica, effetto Joule, resistenze. Campo magnetico, effetti magnetici di una corrente, induzione magnetica. Elementi di meccanica delle onde.
Recall of basic Mathematics. Physical quantities and unit measures. Kinematics of a material point. Forces and the Principles of Dynamics. Work and energy. The gravitational force. Elements of Mechanics of fluids. Temperature, heat and the Principles of Thermodynamics. Electric charge, electric field, conductors and insulations, motion of charges in an electric field. Electric potential and capacity. Electric current, Joule effect, resistance. The magnetic field, magnetic effects of currents, induction. Elements of Mechanics of waves.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza delle basi della Fisica classica. Saper risolvere semplici problemi di Fisica.
Knowning the basis of classical Physics and how to solve simple Physics problems.
×
Print
Course
TECNICHE DI COMUNICAZIONE E SCRITTURA
Course ID
MF0395
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
BUSSOLINO CLAUDIA
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
L-FIL-LET/12 - LINGUISTICA ITALIANA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
C
Year
1
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il corso punta a formare una buona conoscenza delle principali tecniche di comunicazione e di scrittura. Per questo, sono esaminati i principali modelli della comunicazione, compresi i principi e le massime del comunicare. Inoltre sono precisate le fasi della scrittura. Il corso include anche una descrizione delle più importanti caratteristiche della lingua italiana e dei più ricorrenti errori di scrittura.
The course aims to form a good knowledge of the main communication and writing techniques. For this, the main models of communication are examined, including the principles and maxims of communicating. Furthermore, the phases of writing are specified. The course also includes a description of the most important characteristics of the Italian language and of the most common writing errors.
Testi di riferimento/Textbooks
Dario Corno, Scrivere e comunicare. La scrittura in lingua italiana in teoria e in pratica, Milano, Pearson, 2019. OPPURE Simone Fornara - Luca Cignetti, Il piacere di scrivere. Guida all’Italiano del terzo millennio, Roma, Carocci, 2017.
Dario Corno, Scrivere e comunicare. La scrittura in lingua italiana in teoria e in pratica, Milano, Pearson, 2019. OR Simone Fornara - Luca Cignetti, Il piacere di scrivere. Guida all’Italiano del terzo millennio, Roma, Carocci, 2017.
Obiettivi formativi/Mission
Il corso punta a formare una buona competenza: - nell’uso analitico dei modelli della comunicazione - nell’uso delle massime del comunicare - di scrittura verificata in tutte le sue componenti (documentazione, pianificazione, stesura, revisione, editing, pubblicazione) - della lingua italiana scritta - nella progettazione di testi scritti - nella realizzazione scritta di testi scientifici.
The course aims to train good competence: - in the analytical use of communication models - in the use of the maxims of communicating - writing verified in all its components (documentation, planning, drafting, revision, editing, publication) - of the written Italian language - in the design of written texts - in the written production of scientific texts.
Prerequisiti/Required background knowledge
È richiesta la conoscenza della lingua italiana, almeno a livello C1.
Proficiency in the Italian language is required (C1 QCER).
Metodi didattici/Teaching methods
Sono presentate lezioni frontali con l’ausilio di slides (ppt).
Lectures are presented with the use of slides.
Altre informazioni/Further information
Durante il corso gli studenti si impegnano in esercitazioni scritte che sono valutate talora collettivamente, talora individualmente.
During the course, students engage in written exercises that are sometimes assessed collectively, sometimes individually.
Modalità di verifica dell'apprendimento/Assessment methods
In sede d’esame allo studente è richiesto di comporre per iscritto un testo consistente in una relazione su quanto appreso nel corso (tempo: 2h30).
During the exam, the student is required to compose in writing a text consisting of a report on what they have learned in the course (time: 2h30).
Programma esteso/Content
Il corso esamina i seguenti contenuti: 1. Comunicazione e linguaggio – 2. I modelli della comunicazione – 3. Il testo – 4. La scrittura professionale – 5. Il processo di scrittura – 6. La documentazione – 7. La pianificazione – 8. Il paragrafo – 9. La stesura – 10.Il capoverso e l’uso della lingua – 11. Le norme – 12. Lo stile e la revisione. – 13. Il significato e il lessico – 14. La sintassi e il testo. – 15. La relazione d’esame – 16. Il testo professionale – 17. La lingua italiana e le sue caratteristiche – 18. La lingua italiana e i suoi principali errori nella scrittura – 19. Il testo scientifico.
The course examines the following contents: 1. Communication and language - 2. The communication models - 3. The text - 4. The professional writing - 5. The writing process - 6. The documentation - 7. The planning - 8. Paragraph - 9. The drafting - 10. The paragraph and the use of language - 11. The rules - 12. The style and revision. - 13. The meaning and the lexicon - 14. The syntax and the text. - 15. The examination report - 16. The professional text - 17. The Italian language and its characteristics - 18. The Italian language and its main errors in writing - 19. The scientific text.
Risultati di apprendimento attesi/Intended learning objectives
Lo studente dovrà dimostrare una competenza nella comprensione e produzione dei testi complessi utili nel percorso universitario e lavorativo.
The student will have to demonstrate competence in the understanding and production of complex texts useful in the university and work path.
×
Print
Course
MATEMATICA DISCRETA
Course ID
MF0204
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
LAGUZZI Giorgio
Teachers
CFU
9
Teaching duration (hours)
72
SSD
MAT/03 - GEOMETRIA, MAT/01 - LOGICA MATEMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Parte di Algebra: numeri interi, algoritmo di Euclide, equazioni diofantee, classi di resto, elementi di crittografia. Parte di Geometria: vettori nel piano, nello spazio tridimensionale ed estensione al caso di R^N, matrici, sistemi lineari, geometria analitica nello spazio tridimensionale. Parte di Logica: Logica Proposizionale e relativo calcolo della Deduzione naturale. Introduzione alla Logica dei Predicati.
Algebra: integer numbers, Euclidean algorithm, Diophantine equations, basics of crittography. Geometry: vectors in the plane, in the tridimensional space and extension to the case of R^N, matrices, linear systems, analytical geometry in the tridimensional space. Logic: propositional Logic and relative calculation of the Natural Deduction. Introduction to the Logic of Predicates.
Testi di riferimento/Textbooks
Testi consigliati per la parte di Algebra: Facchini, "Sussidiario di algebra e matematica discreta", ed. Zanichelli. Facchini, "Algebra per informatica. Introduzione ai metodi della matematica discreta e all'algebra astratta", ed. Zanichelli. Testo consigliato per la parte di Geometria: Bramanti, Pagani, Salsa, "Analisi Matematica 1 con elementi di algebra lineare", Ed. Zanichelli. Testo consigliato per la parte di Logica: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997) Acquistabile solo il formato PDF
Suggested books for the part of Algebra: Facchini, "Sussidiario di algebra e matematica discreta", ed. Zanichelli. Facchini, "Algebra per informatica. Introduzione ai metodi della matematica discreta e all'algebra astratta", ed. Zanichelli. Suggested book for the part of Geometry: Bramanti, Pagani, Salsa, "Analisi Matematica 1 con elementi di algebra lineare", Ed. Zanichelli. Suggested book concerning the part about Logic: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997) Only available in PDF format
Obiettivi formativi/Mission
Acquisizione delle principali nozioni dell'algebra, del calcolo vettoriale e matriciale e delle loro applicazioni. Introdurre le nozioni elementari di logica delle proposizioni e del primo ordine con particolare attenzione alla relazione fra verità e derivabilità ed alla rappresentabilità nel calcolo dei predicati.
Acquire the basic notions of algebra, vector and matrix calculus and their applications. Introduction of the elementary notions of propositional logic and first order logic with particular attention to the relationship between truth and derivability and to the representability in the propositional calculus.
Prerequisiti/Required background knowledge
Nozioni di base della matematica elementare.
Basic knowledge in elementary mathematics.
Metodi didattici/Teaching methods
Il corso è organizzato con lezioni frontali con parte teorica ed esercizi. Ogni argomento del corso viene introdotto per mezzo di una discussione generale che ha lo scopo di renderla il più possibile comprensibile agli studenti. In un secondo momento vengono introdotte le nozioni di base di ciascun argomento; esse sono successivamente seguite da esempi con lo scopo di chiarirne il significato. Il terzo passo è dedicato agli enunciati dei principali teoremi e alle loro dimostrazioni. L'ultima parte è dedicata agli esercizi.
The course is organized with frontal lessons with theoretical sessions and exercises. Each subject of the course is introduced by mean of a general discussion which has the purpose of make it comprehensible to the students as much as possible. In a second time the basic notions of each subject are introduced; they are successively followed by examples with the purpose of clarifying their meaning. The third step is devoted to the statements of the main theorems and their proofs. The last part is devoted to the exercises.
Altre informazioni/Further information
Oltre ai libri suggeriti per la teoria e gli esercizi, eventuale ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso.
In addition to the suggested books for the theoretical part and the exercises, eventual further material for the preparation of the exam will be provided during the development of the course.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame è costituito da una prova scritta contenente un numero variabile di esercizi su diversi argomenti del corso e da una prova orale facoltativa. In ogni prova scritta, la maggior parte degli argomenti contenuti nel corso viene coperta. La presenza di domande sulla parte teorica non è esclusa. La prova orale è costituita da domande sulla parte teorica del corso.
The exam consists of a written test made of a variable number of exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam consists of questions about the theoretical part of the course.
Programma esteso/Content
Numeri interi, divisione euclidea, massimo comun divisore, algoritmo di Euclide. Equazioni diofantee. Sistemi di congruenze e Teorema Cinese del Resto. Classi di resto modulo n. Il Teorema di Eulero. Il problema del logaritmo discreto. Calcolo del logaritmo discreto. Applicazioni alla crittografia. Vettori nel piano e nello spazio tridimensionale ed estensione del concetto di vettore al caso di R^N. Definizione di matrice, somma tra matrici, prodotto tra uno scalare e una matrice, prodotto riga per colonna tra matrici. Definizione di matrice trasposta, matrice simmetrica, matrice inversa. Definizione di determinante per matrici quadrate e interpretazione geometrica. Prodotto scalare, prodotto vettoriale e prodotto misto tra vettori e applicazioni del determinante nel calcolo di prodotti vettoriali e misti. Rango di una matrice e applicazione del determinante nel calcolo del rango. Sistemi lineari, Teorema di Rouchè-Capelli, Regola di Cramer. Risoluzione di sistemi lineari con il Metodo di Eliminazione di Gauss, rette e piani nello spazio tridimensionale. Logica Proposizionale: • Sintassi. • Semantica: interpretazione, definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi, equivalenza semantica, completezza funzionale e forma normali. • Deduzione naturale: regole e dimostrazioni, correttezza, enunciato di completezza. Logica dei Predicati: • Sintassi: variabili libere e legate, sostituzione. • Semantica: Interpretazione, definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi.
Integer numbers, euclidean division, greatest common divisor, Euclid's algorithm. Diophantine equations. Congruence systems and Chinese Remainder Theorem. Residue classes. The Euler Theorem. The problem of the discrete logarithm. Computation of the discrete logarithm. Applications to cryptography. The Diffie-Hellman protocol, the RSA protocol. Millar-Rabin primality test. Vectors in the plane and in the tridimensional space and extension to the case of R^N. Definition of matrix, sum of matrices, product between a scalar and a matrix, row column product of matrices. Definition of transposed matrix, symmetric matrix, inverse matrix. Definition of determinant for square matrices and its geometric interpretation. Scalar product, vector product and mixed product of vectors and applications of the determinant in the computation of vector and mixed products. Rank of a matrix and applications of the determinant in the computation of the rank. Linear systems, Rouchè-Capelli Theorem, Cramer Rule. Resolution of linear systems with the Gauss Elimination Method, lines and planes in the tridimensional space. Propositional Logic: • Syntax. • Semantics: interpretation, definitions of satisfiable, contradictory, tautology, semantic consequence and related results, semantic equivalence, functional completeness and normal form. • Natural deduction: rules and proofs, correctness, completeness theorem. Logic of Predicates: • Syntax: free and bound variables, substitution. • Semantics: Interpretation, definitions of satisfiable, contradictory, tautology, semantic consequence and related results.
Risultati di apprendimento attesi/Intended learning objectives
Il primo obiettivo è quello di fornire agli studenti una metodologia di studio basata sul rigore delle dimostrazioni che consenta loro di sfruttare tale acquisita capacità anche in ambiti diversi dalla Matematica. Passando ora alla parte più tecnica riguardante i contenuti del corso, si puntualizza il fatto che uno dei principali obiettivi del corso è quello di fornire agli studenti le conoscenze di base sull'algebra e sul calcolo vettoriale e matriciale, di fondamentale importanza nelle applicazioni. Queste nozioni devono necessariamente entrare a far parte del bagaglio culturale degli studenti per consentire loro di poter affrontare con maggiore facilità alcuni esami applicativi in cui le suddette nozioni trovano un'applicazione diretta come nel caso della Fisica. Per la parte di Logica, le competenze da verificare, e necessarie per il superamento del corso consistono nella comprensione dei concetti di base della logica proposizionale (sia per quanto riguarda la semantica sia per quanto riguarda i metodi di prova) e della logica dei predicati.
The first purpose is to provide the students with a method of study based on rigorous proofs which allows them to exploit such an acquired skill also in subjects different from Mathematics. Coming now to the more technical part dealing with the contents of the course, we point out the fact that one of the main purposes of the course is to provide the students with the basic notions of algebra and vector and matrix calculus, of fundamental importance in the applications. These notions have to become necessarily part of the knowledge of the students in order to allow them to better face some applicable courses in which such notions find a direct application such as in the case of Physics. Concerning Logic, the skills to be tested, and necessary to pass the course, consist in understanding the basic concepts of propositional logic (both as regards semantics and syntax) and predicate logic.
Modules
Course ID Course SSD Teachers Agenda web
MF0205ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Laguzzi Giorgio
MF0206LOGICA MAT/01 - LOGICA MATEMATICA Laguzzi Giorgio
Show parent course details
×
Print
Course
MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA
Course ID
MF0205
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
LAGUZZI Giorgio
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/03 - GEOMETRIA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Parte di Algebra: numeri interi, algoritmo di Euclide, equazioni diofantee, classi di resto, elementi di crittografia. Parte di Geometria: vettori nel piano, nello spazio tridimensionale ed estensione al caso di R^N, matrici, sistemi lineari, geometria analitica nello spazio tridimensionale.
Part of Algebra: integer numbers, Euclidean algorithm, Diophantine equations, basics of crittography. Part of Geometry: vectors in the plane, in the tridimensional space and extension to the case of R^N, matrices, linear systems, analytical geometry in the tridimensional space.
Testi di riferimento/Textbooks
Testi consigliati per la parte di Algebra: Facchini, "Sussidiario di algebra e matematica discreta", ed. Zanichelli. Facchini, "Algebra per informatica. Introduzione ai metodi della matematica discreta e all'algebra astratta", ed. Zanichelli. Testo consigliato per la parte di Geometria: Bramanti, Pagani, Salsa, "Analisi Matematica 1 con elementi di algebra lineare", Ed. Zanichelli.
Suggested book for the part of Algebra: Facchini, "Sussidiario di algebra e matematica discreta", ed. Zanichelli. Facchini, "Algebra per informatica. Introduzione ai metodi della matematica discreta e all'algebra astratta", ed. Zanichelli. Suggested book for the part of Geometry: Bramanti, Pagani, Salsa, "Analisi Matematica 1 con elementi di algebra lineare", Ed. Zanichelli.
Obiettivi formativi/Mission
Acquisizione delle principali nozioni dell'algebra, del calcolo vettoriale e matriciale e delle loro applicazioni.
Acquire the basic notions of algebra, vector and matrix calculus and their applications.
Prerequisiti/Required background knowledge
Nozioni di base della matematica elementare.
Basic notions of elementary mathematics.
Metodi didattici/Teaching methods
Il corso è organizzato con lezioni frontali con parte teorica ed esercizi. Ogni argomento del corso viene introdotto per mezzo di una discussione generale che ha lo scopo di renderla il più possibile comprensibile agli studenti. In un secondo momento vengono introdotte le nozioni di base di ciascun argomento; esse sono successivamente seguite da esempi con lo scopo di chiarirne il significato. Il terzo passo è dedicato agli enunciati dei principali teoremi e alle loro dimostrazioni. L'ultima parte è dedicata agli esercizi.
The course is organized with frontal lessons with theoretical sessions and exercises. Each subject of the course is introduced by mean of a general discussion which has the purpose of make it comprehensible to the students as much as possible. In a second time the basic notions of each subject are introduced; they are successively followed by examples with the purpose of clarifying their meaning. The third step is devoted to the statements of the main theorems and their proofs. The last part is devoted to the exercises.
Altre informazioni/Further information
Oltre ai libri suggeriti per la teoria e gli esercizi, eventuale ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso.
In addition to the suggested books for the theoretical part and the exercises, eventual further material for the preparation of the exam will be provided during the development of the course.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame è costituito da una prova scritta contenente un numero variabile di esercizi su diversi argomenti del corso e da una prova orale facoltativa. In ogni prova scritta, la maggior parte degli argomenti contenuti nel corso viene coperta. La presenza di domande sulla parte teorica non è esclusa. La prova orale è costituita da domande sulla parte teorica del corso.
The exam consists of a written test made of a variable number of exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam consists of questions about the theoretical part of the course.
Programma esteso/Content
Numeri interi, divisione euclidea, massimo comun divisore, algoritmo di Euclide. Equazioni diofantee. Sistemi di congruenze e Teorema Cinese del Resto. Classi di resto modulo n. Il Teorema di Eulero. Il problema del logaritmo discreto. Calcolo del logaritmo discreto. Applicazioni alla crittografia. Vettori nel piano e nello spazio tridimensionale ed estensione del concetto di vettore al caso di R^N. Definizione di matrice, somma tra matrici, prodotto tra uno scalare e una matrice, prodotto riga per colonna tra matrici. Definizione di matrice trasposta, matrice simmetrica, matrice inversa. Definizione di determinante per matrici quadrate e interpretazione geometrica. Prodotto scalare, prodotto vettoriale e prodotto misto tra vettori e applicazioni del determinante nel calcolo di prodotti vettoriali e misti. Rango di una matrice e applicazione del determinante nel calcolo del rango. Sistemi lineari, Teorema di Rouchè-Capelli, Regola di Cramer. Risoluzione di sistemi lineari con il Metodo di Eliminazione di Gauss, rette e piani nello spazio tridimensionale.
Integer numbers, euclidean division, greatest common divisor, Euclid's algorithm. Diophantine equations. Congruence systems and Chinese Remainder Theorem. Residue classes. The Euler Theorem. The problem of the discrete logarithm. Computation of the discrete logarithm. Applications to cryptography. The Diffie-Hellman protocol, the RSA protocol. Millar-Rabin primality test. Vectors in the plane and in the tridimensional space and extension to the case of R^N. Definition of matrix, sum of matrices, product between a scalar and a matrix, row column product of matrices. Definition of transposed matrix, symmetric matrix, inverse matrix. Definition of determinant for square matrices and its geometric interpretation. Scalar product, vector product and mixed product of vectors and applications of the determinant in the computation of vector and mixed products. Rank of a matrix and applications of the determinant in the computation of the rank. Linear systems, Rouchè-Capelli Theorem, Cramer Rule. Resolution of linear systems with the Gauss Elimination Method, lines and planes in the tridimensional space.
Risultati di apprendimento attesi/Intended learning objectives
Il primo obiettivo è quello di fornire agli studenti una metodologia di studio basata sul rigore delle dimostrazioni che consenta loro di sfruttare tale acquisita capacità anche in ambiti diversi dalla Matematica. Passando ora alla parte più tecnica riguardante i contenuti del corso, si puntualizza il fatto che uno dei principali obiettivi del corso è quello di fornire agli studenti le conoscenze di base sull'algebra e sul calcolo vettoriale e matriciale, di fondamentale importanza nelle applicazioni. Queste nozioni devono necessariamente entrare a far parte del bagaglio culturale degli studenti per consentire loro di poter affrontare con maggiore facilità alcuni esami applicativi in cui le suddette nozioni trovano un'applicazione diretta come nel caso della Fisica.
The first purpose is to provide the students with a method of study based on rigorous proofs which allows them to exploit such an acquired skill also in subjects different from Mathematics. Coming now to the more technical part dealing with the contents of the course, we point out the fact that one of the main purposes of the course is to provide the students with the basic notions of algebra and vector and matrix calculus, of fundamental importance in the applications. These notions have to become necessarily part of the knowledge of the students in order to allow them to better face some applicable courses in which such notions find a direct application such as in the case of Physics.
Show parent course details
×
Print
Course
MATEMATICA DISCRETA: LOGICA
Course ID
MF0206
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
LAGUZZI Giorgio
Teachers
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
MAT/01 - LOGICA MATEMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
C
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Logica Proposizionale e relativo calcolo della Deduzione naturale. Introduzione alla Logica dei Predicati.
Propositional Logic and relative calculation of the Natural Deduction. Introduction to the Logic of Predicates.
Testi di riferimento/Textbooks
"Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997) Acquistabile solo il formato PDF
"Logica a Informatica" by A. Asperti and A. Ciabattoni, Mc Grow Hill Education (1997) Only available in PDF format
Obiettivi formativi/Mission
Introdurre le nozioni elementari di logica delle proposizioni e del primo ordine con particolare attenzione alla relazione fra verità e derivabilità ed alla rappresentabilità nel calcolo dei predicati.
Introduction of the elementary notions of propositional logic and first order logic with particular attention to the relationship between truth and derivability and to the representability in the propositional calculus.
Prerequisiti/Required background knowledge
Conoscenze acquisite nel corso di algebra e geometria.
Notions acquired in the course of algebra and geometry.
Metodi didattici/Teaching methods
Lezioni frontali che includono esercitazioni.
Frontal lessons that include exercises.
Altre informazioni/Further information
Il voto del modulo di logica fa media pesata con il voto del modulo di algebra e geometria per ottenere il voto finale di Matematica discreta.
Il voto del modulo di logica fa media pesata con il voto del modulo di algebra e geometria per ottenere il voto finale di Matematica discreta.
Modalità di verifica dell'apprendimento/Assessment methods
La verifica finale consiste in una prova scritta della durata di due ore e in una prova orale facoltativa.
The grade of the logic module is a weighted average with the grade of the algebra and geometry module to obtain the final grade of Discrete Mathematics.
Programma esteso/Content
Logica Proposizionale: • Sintassi. • Semantica: interpretazione, definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi, equivalenza semantica, completezza funzionale e forma normali. • Deduzione naturale: regole e dimostrazioni, correttezza, enunciato di completezza. Logica dei Predicati: • Sintassi: variabili libere e legate, sostituzione. • Semantica: Interpretazione, definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi.
Propositional Logic: • Syntax. • Semantics: interpretation, definitions of satisfiable, contradictory, tautology, semantic consequence and related results, semantic equivalence, functional completeness and normal form. • Natural deduction: rules and proofs, correctness, completeness theorem. Logic of Predicates: • Syntax: free and bound variables, substitution. • Semantics: Interpretation, definitions of satisfiable, contradictory, tautology, semantic consequence and related results.
Risultati di apprendimento attesi/Intended learning objectives
Le competenze da verificare, e necessarie per il superamento del corso consistono nella comprensione dei concetti di base della logica proposizionale (sia per quanto riguarda la semantica sia per quanto riguarda i metodi di prova) e della logica dei predicati.
The skills to be tested, and necessary to pass the course, consist in understanding the basic concepts of propositional logic (both as regards semantics and syntax) and predicate logic.
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI
Course ID
S1363
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FRANCESCHINIS Giuliana Annamaria
CFU
12
Teaching duration (hours)
96
SSD
INF/01 - INFORMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
1
Period
Annuale
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione, delle sue principali componenti hardware e della sua interfaccia verso i livelli software eseguiti su tale hardware. Il corso si articola in due moduli: il primo pone le basi introducendo la rappresentazione binaria di tutti i tipi di dati (numeri, testo, immagini, grandezze analogiche); i componenti base dell’hardware di un calcolatore e in particolare la struttura interna del processore; l’interazione tra il processore e la memoria centrale e i principali dispositivi di input/output. Il secondo analizza più dettagliatamente la struttura interna di uno specifico processore, semplice ma realistico, il suo linguaggio macchina e la relativa implementazione tramite microinterprete; vengono discusse possibili varianti di tale processore, via via più efficienti; viene inoltre presentato il meccanismo di funzionamento della memoria cache e in generale tutta la gerarchia delle memorie di un sistema di calcolo; infine segue un’analisi generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina e dei modi alternativi di realizzare l’interazione tra il processore e i dispositivi di I/O.
The layered architecture of modern computers is introduced. The main hardware components are presented and their interface towards the upper software layers is explained. The course comprises two units: the first one introduces the basic concepts, in particular the binary representation of data (numbers, text, images, analog quantities); the basic hardware components of a computer, in particular the processor architecture; the interaction between the processor, the memory and the main I/O devices. The second unit analyzes in detail a processor architecture, which is relatively simple but realistic, including its Instruction Set Architecture which is implemented through a microinterpreter; alternative internal organizations of the processor are discussed and their efficiency is compared; the basic principles about the cache memory and in general about the memory hierarchy of a computer system are introduced; finally the Instruction Set Architecture (ISA) level is introduced, with the analysis of the main characteristics of machine languages and the possible interaction modes between the processor and the I/O devices.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi/Mission
Conoscere i principali componenti di un sistema di calcolo, comprendere i principi di base del loro funzionamento e delle loro interazioni e la codifica binaria di tutti i tipi di dato elaborati e memorizzati dai calcolatori. Comprendere i vantaggi di un’architettura stratificata che permette di realizzare funzioni complesse componendo funzioni più semplici, realizzate tramite hardware o tramite software. Comprendere l’impatto che l’evoluzione tecnologica ha avuto sull’evoluzione dell’organizzazione dei sistemi di calcolo, sviluppare l’abilità di confrontare le caratteristiche di diverse organizzazioni di sistemi di calcolo (o di singoli componenti) e valutarne le differenze in termini di costo e prestazioni. Conoscere l’architettura interna di un processore, le tecniche di ottimizzazione, le principali caratteristiche dei linguaggi macchina, ed il funzionamento della gerarchia delle memorie. Conoscere le principali tipologie di architetture parallele, comprendendo le problematiche relative alla gestione della memoria e l’impatto sulla programmazione. Acquisire la capacità di aggiornarsi su aspetti specifici e temi più avanzati dell’architettura dei sistemi di calcolo, in particolare facendo ricorso a risorse disponibili on-line.
Know the main components of a computer, understand the basic operational principles and the interactions among such components, as well as the binary encoding of any data type stored and processed by computers. Understand the advantages of a layered architecture, allowing to implement complex functions by composing simpler functions which can be implemented in hardware or in software. Understand the impact of technological evolution on the computer organization evolution, develop the ability to compare the characteristics of different computer architecture (or computer component) organizations and to evaluate the difference in cost and performance. Know the internal architecture of a processor, the optimization techniques, the main features of the machine languages, and how the memory hierarchy works. Know the main types of parallel architectures, and understand the problems related with the memory management and the impact on the programming style. Acquire the skills for autonomous learning of specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation on-line).
Prerequisiti/Required background knowledge
Il corso è introduttivo, quindi non ci sono specifici requisiti. I contenuti del primo modulo sono propedeutici a quelli del secondo, quindi è necessario studiare i due moduli in sequenza.
The course is introductory, so there are no specific requirements. The first unit should be studied before proceeding to the second one.
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti tramite lezioni frontali ed integrate con esercitazioni pratiche basate sull’uso di vari strumenti software allo scopo di far osservare tramite esempi concreti quanto esposto a lezione. Per ogni argomento trattato vengono proposti esercizi o quiz formativi. Vengono inoltre proposti incontri a piccoli gruppi alla presenza di un tutor, per svolgere e discutere esercizi (simili a quelli proposti nelle prove scritte).
The topics of the course are mainly presented through class lectures that may be integrated with practical exercises based on various software tools with the aim of allowing to observe through examples the concepts presented in the lectures. After presenting each topic the students are challenged with exercises and formative quizzes. Tutored meetings in small groups are proposed, to develop and discuss exercises (similar to those included in the written exam).
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, esempi di testi d’esame, esercizi o quiz on-line utili ai fini dell’autovalutazione, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi. Tramite un forum specifico del corso vengono pubblicate informazioni generali sul corso, avvisi relativi allo svolgimento del corso e informazioni riguardanti gli esami. Inoltre sono attivi forum dove gli studenti possono porre domande sugli argomenti del corso e sugli esercizi proposti, e rispondere a domande pubblicate da altri studenti.
It is possible to download electronic copy of all slides of the lectures, perform self-assessment on-line tests or exercises, the emulator of the MIC1 architecture, the associated micro-interpreter of IJVM and some programming examples. It is possible to find general information on the course and news about the lectures and the exam organization on the e-learning platform DIR. Specific forums can be used by students to ask questions on course topics or exercises, or to provide answers posted by other students.
Modalità di verifica dell'apprendimento/Assessment methods
L’esame può essere scritto oppure orale (di norma è scritto nella prima sessione d’esame dopo lo svolgimento del corso, orale nelle altre sessioni che coinvolgono pochi studenti). Nel caso il compito sia scritto può essere proposta una integrazione orale (per esempio nel caso di compito quasi sufficiente per raggiungere la sufficienza piena). Possono essere proposte prove in itinere (come supporto al superamento dell’esame finale, che possono anche assumere la forma di esercizi da svolgere in laboratorio). La prova comprende da quattro a sei domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti. Ciascuno dei due moduli ha un suo esame ed è necessario conseguire un esito sufficiente in ciascun modulo per superare l’esame complessivo. Il voto finale è stabilito in modo collegiale dai docenti dei due moduli, tenuto conto dell’esito ottenuto in ciascun modulo.
The final test can be either oral or written (usually it is written in the first exams session, oral in the other sessions involving a few students). When the exam takes the form of a written test, an oral integration may be required (for instance this could be the case when the written test grade is not fully sufficient, and the oral integration may allow to improve the grade and pass the exam). ). Intermediate tests can be organized (as a facilitation to pass the exam early at the end of the course) that may comprise lab exercises. The test includes four to six questions each of which possibly structured into several points. The questions may also take the form of exercises testing the ability to apply the learned concepts to practical examples. Each unit has its own exam, and a sufficient final result is required in each unit in order to pass the exam of the whole course. The final grade is agreed upon by the teachers of the two units, taking into account the final result obtained in each one.
Programma esteso/Content
Questo corso non prevede conoscenze preliminari, quindi nel primo modulo viene tracciata in breve l’evoluzione storica dei calcolatori sottolineando l’impatto della tecnologia nei passaggi da una generazione alla successiva; in seguito viene introdotte la terminologia di base necessaria per poter affrontare più in dettaglio la descrizione dell’organizzazione interna dei moderni calcolatori, ponendo in risalto la struttura stratificata; in particolare vengono descritti ad alto livello il processore (CPU – Central Processing Unit), la memoria centrale e i dispositivi di I/O. Viene definita la codifica binaria di numeri naturali, numeri interi e frazionari, di testi, di immagini e di grandezze analogiche. Vengono poi introdotti i circuiti logici combinatori e sequenziali dopo aver presentato l’algebra di Boole e aver mostrato la corrispondenza tra espressioni booleane e circuiti composti da porte logiche. Vengono illustrati esempi di circuiti comuni e il loro impiego all’interno di un processore. Vengono anche discusse le modalità di interazione tra i componenti di un calcolatore (cenni sui protocolli dei bus). Su queste basi prosegue il secondo modulo che approfondisce la struttura del processore (i cui componenti di base sono stati studiati nel primo modulo) sviluppando un esempio completo di processore microprogrammato mostrando come il suo linguaggio macchina possa essere realizzato tramite un microinterprete a partire da un’architettura relativamente semplice ma realistica. Vengono poi discusse versioni successive del processore di esempio che introducono miglioramenti nelle prestazioni, secondo un percorso evolutivo che riflette l’evoluzione dei moderni processori. Con questo approccio vengono presentate le architetture basate su pipeline, e si accenna a ulteriori evoluzioni (come la predizione dei salti, l’esecuzione speculativa e fuori ordine). Vengono anche affrontate le problematiche della differenza di prestazioni tra CPU e memoria centrale, introducendo la cache (nelle sue diverse declinazioni) e discutendone l’efficacia attraverso i concetti di località spaziale e temporale. Segue una panoramica sulle caratteristiche del “linguaggio macchina” (Instruction Set Architecture) approfondendo i linguaggi CISC, RISC, load/store. Viene, quindi, introdotta la tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie. Il modulo si chiude con la descrizione di alcuni tipi di architetture parallele, ed analisi della problematica della coerenza delle memorie cache nei multiprocessori.
This course doesn’t have specific prerequisites. The first unit starts with a brief review of the historical evolution of computers, highlighting the impact that some technological advances had on the evolution from each generation to the next one. Then the basic terminology needed to dive into the details of the internal layered organization of modern computers is introduced; in particular the CPU (Central Processing Unit), the central memory and the I/O devices are described at an high level. The binary encoding of natural, integer and fractional numbers as well as text, images and analog quantities is defined. The combinatorial and sequential logical circuits are then introduced, after having presented the Boolean algebra, showing the correspondence between any Boolean expression and circuits composed of logical gates. Examples of common circuits are discussed and their use within the processor is explained. The interaction modes among the computer components are also described (including some examples of bus protocols). The second unit builds on the concepts introduced in the first one and develops the details of a microprogrammed processor structure (whose basic components are presented in the first unit) showing how its machine language can be implemented through a microinterpreter based on the elementary operations of a simple but realistic hardware architecture. Possible variations on the theme of this first architecture are then discussed, each one introducing new performance improvements, following a path that resembles the evolution of modern processors. This step-by-step approach allows to introduce the pipeline-based architectures (complemented with hints on further improvements through techniques as branch prediction, speculative and out-of-order execution). The performance gap between the speed of CPU and central memory is also discussed, leading to the introduction of the cache memory (with its variants) and studying its effectiveness based on the concepts of temporal and spatial locality. Next an overview on the features of machine languages (the so called Instruction Set Architecture - ISA) is proposed, including the classification in CISC, RISC or Load/Store ISA. The virtual memory technique is also introduced, in the framework of the memory hierarchy. Finally some examples of parallel architectures are presented, discussing the problem of cache coherence in multiprocessors.
Risultati di apprendimento attesi/Intended learning objectives
Modulo 1: Saper descrivere l’evoluzione storica dei calcolatori indicando i principali fattori tecnologici abilitanti. Saper definire la notazione posizionale di numeri interi e frazionari in base r qualsiasi. Descrivere e saper applicare gli algoritmi di trasformazione di numeri interi e frazionari tra basi. Saper distinguere e saper ricavare le diverse codifiche binarie dei numeri interi con segno. Conoscere e saper ricavare la rappresentazione dei numeri frazionari in virgola mobile secondo lo standard IEEE 754. Enunciare e spiegare le principali leggi dell’algebra di Boole. Saper rappresentare una funzione booleana nelle forme normali SP e PS e semplificare tali forme tramite operazioni algebriche o con le mappe di Karnaugh. Saper definire la tavola di verità delle principali porte logiche. Saper ricavare un circuito combinatorio corrispondente ad una data espressione booleana. Saper descrivere quale funzione booleana realizza un dato circuito. Saper riconoscere alcuni circuiti logici combinatori e sequenziali di base e descrivere la funzione che realizzano. Descrivere i principali componenti di un sistema di calcolo e in particolare della CPU, indicarne le caratteristiche salienti, i meccanismi di funzionamento e le modalità di interazione. In particolare descrivere le componenti della CPU e il ciclo fetch-decode-execute, la differenza tra architetture CISC e RISC e l’idea alla base delle architetture a pipeline. Descrivere l’architettura e il linguaggio delle microistruzioni del processore MIC1, realizzare alcune semplici sequenze di microistruzioni e spiegare quale cambiamento di stato causano. Modulo 2: Sapere descrivere come è eseguita un’istruzione su MIC1 e sapere analizzare le diverse tecniche per l’aumento delle prestazioni. Essere in grado di scrivere brevi programmi in linguaggio macchina (IJVM) e di estendere il micro-interprete. Conoscere le caratteristiche generali dei linguaggi macchina (es. tipi di istruzioni, modalità d’indirizzamento), nelle architetture CISC, RISC e load/store. Sapere descrivere l’uso della gerarchia delle memorie, comprendendo l’importanza del principio della località spaziale e temporale. Essere in grado di spiegare ed applicare le tecniche di funzionamento della cache (tra CPU e memoria centrale) e della memoria virtuale (tra memoria centrale e memoria secondaria). Comprendere la differenza fra indirizzi virtuali e indirizzi fisici e le tecniche per la traduzione dai primi ai secondi. Acquisire la capacità di aggiornarsi sulle principali soluzioni di architetture parallele.
Unit 1: Describe the historical evolution of computers highlighting the impact of technology on their organization. Know the the positional representation of numbers in any base r (both integer and fractional numbers). Describe and apply the procedures for transforming an integer or a fractional number from decimal to base 2, 8 or 16 and viceversa. Be able to distinguish and derive the different encodings of signed integer numbers. Know and acquire the ability to apply the procedure to transform a fractional number into the floating point representation according to standard IEEE 754. Enunciate and explain the main Boolean algebra laws. Know how to represent a Boolean function in the two classical normal forms (sum of products or product of sums) and be able to apply simplification procedures (e.g. through the Karnaugh maps). Know the truth table of the main logical gates. Know how to derive a logic circuit implementing a given Boolean function. Be able to derive the Boolean function corresponding to a given circuit. Recognize a few common combinatorial and sequential circuits and describe the function(s) they implement. Describe the main components of a computer system and of the CPU, explain which are their characteristics, the operational behavior and the interaction modes. In particular describe the CPU and the fetch-decode-execute cycle, the difference between CISC and RISC architectures end the idea behand the pipeline based architectures. Describe the MIC1 architecture and the microinstructions language and explain which state change is caused by executing each microistruction. Unit 2: Describe how an instruction is executed in MIC1 and analyze the techniques allowing to improve performance. Acquire the ability to develop short programs in machine language (IJVM) and to extend the micro-interpreter with the introduction of new instructions. Know the main characteristics of a machine language (e.g., instruction types, instruction formats, addressing modes). Understand the characteristics and the differences of the ISA in the CISC, RICS and load/store architectures. Know the basic concepts behind the memory hierarchy, and understand the relevance of spatial locality and temporal locality principles in this context. Acquire the ability to explain and apply the operational techniques of the cache between CPU and central memory and of the virtual memory between central memory and secondary memory. Understand the difference between (virtual) address space and (physical) memory location and the related mapping techniques. Achieve the capability to orienteering and autonomously learning the new trends about parallel architectures.
Modules
Course ID Course SSD Teachers Agenda web
S1364ARCHITETTURA 1 INF/01 - INFORMATICA Franceschinis Giuliana Annamaria
S1365ARCHITETTURA 2 INF/01 - INFORMATICA Moiso Corrado
Show parent course details
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1
Course ID
S1364
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FRANCESCHINIS Giuliana Annamaria
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione, delle sue principali componenti hardware e della sua interfaccia verso i livelli software eseguiti su tale hardware.
The architecture of modern computers is introduced emphasizing its layered structure. The main hardware components are presented and their interface towards the upper software layers is explained.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi/Mission
Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi alcuni semplici codici ridondanti per la rilevazione e la correzione di errori. Conoscere e comprendere le definizioni di base dell’algebra di Boole, le sue leggi e la relazione tra espressioni di tale algebra e i circuiti logici. Conoscere i principali componenti di un sistema di calcolo, comprendere i principi di base del loro funzionamento e delle interazioni. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Comprendere l’impatto che l’evoluzione tecnologica ha avuto sull’evoluzione dell’organizzazione dei sistemi di calcolo. Saper applicare le procedure di codifica e decodifica dell’informazione, della rilevazione e correzione degli errori. Saper esprimere funzioni logiche tramite espressioni booleane e trasformare queste ultime in circuiti. Saper indicare quale funzione logica realizza un dato circuito combinatorio. Sviluppare l’abilità di confrontare le caratteristiche di diverse organizzazioni di sistemi di calcolo (o di componenti di un sistema di calcolo) e valutarne le differenze in termini di costo e prestazioni. Comprendere la sintassi e la semantica operazionale di un semplice linguaggio macchina e la relazione tra i linguaggi macchina e i linguaggi di programmazione di più alto livello. Saper realizzare alcuni semplici programmi in linguaggio macchina e simularne l’esecuzione. Acquisire la capacità di aggiornarsi su aspetti specifici e temi più avanzati dell’architettura dei sistemi di calcolo, in particolare facendo ricorso a risorse disponibili on-line.
Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including some simple redundant codes for errors detection and correction. Know and understand the basic definitions and laws of Boolean algebra, and the relation between Boolean algebra expressions and logic circuits.Know the main components of a computer, understand the basic operational principles and the interactions between such components. Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Understand the impact of technological evolution on the evolution of computer organization. Apply the procedures for encoding and decoding information, and to detect and correct errors. Know how to express logical functions through Boolean algebra expressions and how to transform such expressions into logic circuits. Be able to describe the logical function implemented by a logic circuit. Develop the ability to compare the characteristics of different computer architecture organizations (or of different computer component organizations) and to evaluate the difference in cost and performance. Understand the syntax and operational semantics of a simple machine language end the relation between machine languages and high level programming languages. Be able to implement simple machine language programs and to simulate their execution. Acquire the skills for autonomous learning specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation on-line).
Prerequisiti/Required background knowledge
Nessuno
None
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio (allo scopo di osservare la rappresentazione in memoria di diversi tipi di dato, di disegnare e simulare circuiti logici combinatori e sequenziali, di sperimentare l’esecuzione di semplici programmi in linguaggio macchina tramite un emulatore).
The topics of the course are mainly presented through class lectures that may be integrated with lab sessions (to experiment the internal representation of various data types, to design and simulate combinatorial and sequential , to experiment the execution of simple machine language programs through an emulator).
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, esempi di testi d’esame, quiz di autovalutazione, informazioni generali sul corso e avvisi relativi allo svolgimento del corso e sugli esami.
It is possible to download electronic copy of all slides of the lectures, perform self-assessment tests, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR .
Modalità di verifica dell'apprendimento/Assessment methods
L’esame può essere scritto oppure orale (di norma è scritto nella prima sessione d’esame dopo lo svolgimento del corso, orale nelle altre sessioni). Nel caso il compito sia scritto può essere richiesta una integrazione orale (per esempio nel caso di compito quasi sufficiente per raggiungere la sufficienza piena). Possono essere proposte prove in itinere (come supporto al superamento dell’esame finale, che possono anche assumere la forma di esercizi da svolgere in laboratorio). La prova comprende da quattro a sei domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti.
The examination can be either oral or a written test (usually it is written in the first exams session, oral in the other sessions). When the exam takes the form of a written test, it is possible to ask for an oral integration (for instance this could be the case when the written test grade is not fully sufficient, it is possible to ask for an oral integration to improve the grade to pass the exam). The test includes four to six questions each of which possibly structured into several points. The questions may also take the form of an exercise testing the ability to apply the learned concepts to practical examples.
Programma esteso/Content
Breve panoramica sulla evoluzione storica dei sistemi di calcolo (dalla Macchina Analitica di Charles Babbage ai giorni nostri). Codifica dell’informazione: codifica binaria dei numeri interi con e senza segno. Trasformazione dalla rappresentazione binaria alla rappresentazione ottale ed esadecimale e viceversa. Operazioni aritmetiche con numeri binari. Codifica dei numeri frazionari: virgola fissa e virgola mobile (standard IEEE 754). Operazioni aritmetiche con numeri in virgola mobie. Codifica del testo (ASCII, UNICODE, UTF-8). Codici ridondanti per rilevazione e correzione di errori. Codifica delle immagini (mappa di bit, profondità e risoluzione). Algebra di Boole. Porte logiche AND, OR, NOT, NAND e NOR. Dalle funzioni logiche ai circuiti combinatori (tavole di verità, espressioni in forma normale Somma di Prodotti e Prodotto di Somme, semplificazione applicando le leggi dell’algebra o tramite mappe di Karnaugh). Esempi di circuiti: Decoder, Multiplexer, Half Adder, Full Adder, ALU, ecc. Circuiti sequenziali: Latch, Flip-Flop, registri e memorie.Principali componenti di un calcolatore (CPU, Memoria RAM, Dischi magnetici, RAID, Dischi ottici, BUS, e varie periferiche. Cenni sui principi di funzionamento.CPU: ciclo di fetch-decode-execute. Processori CISC e RISC. CPU con struttura a pipeline (cenni). Introduzione all’architettura MIC1 (si veda il libro di testo).
Brief review of the historical evolution of computers (from Charles Babbage’s Analytical Engine up to current computers).Information encoding: binary encoding of integer numbers, both unsigned and signed. Transformation from binary to octal and hexadecimal representation and viceversa. Arithmetic operations with binary numbers. Encoding of the fractional numbers: fixed point and floating point (according to IEEE 754 standard). Text encoding (ASCII, Unicode, UTF-8). Redundant codes for error detection and correction. Images encoding (bitmap, image resolution and depth).Boolean algebra, AND, OR, NOT, NAND, NOR gates. From logical functions to combinatorial circuits (truth tables, sum of products and product of sums normal form expressions, simplification by means of algebra laws, or through Karnaugh’s maps).Examples of circuits: Decoder, Multiplexer, Half Adder, Full Adder, ALU, etc. Sequential circuits: Latch, Flip-flop, registers and memories.Main components of a computer (CPU, RAM memory, Magnetic disks, RAID, Optical disks, BUS, various peripherals) and their basic operating principles.Central Processing Unit: fetch-decode-execute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction the MIC1 architecture (see textbook).
Risultati di apprendimento attesi/Intended learning objectives
Descrivere l’evoluzione storica dei sistemi di calcolo sottolineando il legame tra evoluzione tecnologica ed evoluzione dell’organizzazione di tali sistemi. Spiegare la rappresentazione posizionale in base r di un numero (intero o frazionario).Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario senza segno da base 10 a base 2, 8 o 16 e viceversa, e il procedimento per ottenere la codifica binaria in modulo e segno o in complemento a due di un numero intero con segno. Saper eseguire operazioni aritmetiche con numeri binari. Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario nella sua rappresentazione in virgola mobile secondo lo standard IEEE 754. Descrivere e applicare i metodi per la rilevazione e per la correzione di errori. Enunciare e spiegare le principali leggi dell’algebra di Boole. Saper rappresentare una funzione booleana in varie forme (forme normali SP e PS e semplificate tramite operazioni algebriche o con le mappe di Karnaugh). Saper ricavare un circuito combinatorio corrispondente ad una data espressione booleana. Saper descrivere quale funzione booleana realizza un dato circuito. Saper riconoscere alcuni circuiti logici combinatori e sequenziali di base e descrivere la funzione che realizzano. Descrivere i principali componenti di un sistema di calcolo, indicarne le caratteristiche salienti, i meccanismi di funzionamento e le modalità di interazione. In particolare descrivere le componenti della CPU e il ciclo fetch-decode-execute, la differenza tra architetture CISC e RISC e l’idea alla base delle architetture a pipeline. Descrivere il linguaggio delle microistruzioni del processore MIC1 (istruzioni sia in forma mnemonica che in forma binaria) realizzare alcuni semplici microprogrammi e simularne l’esecuzione.
Describe the historical evolution of computers highlighting the impact of technology on their organization. Explain the positional representation of numbers in any base r (both integer and fractional numbers). Describe and apply the procedures for transforming a fractional number from decimal to base 2, 8 or 16 and viceversa. Describe and apply the procedure to obtain the binary encoding of signed integers in the two representation: sign and modulus or two’s complement. Execute arithmetic operation with binary numbers.Describe and apply the procedure to transform a fractional number into the floating point representation according to standard IEEE 754.Describe and apply the method to detect and correct single errors using a parity bit or Hamming’s error correcting code. Enunciate and explain the main Boolean algebra laws. Represent a Boolean function in different form (SP and PS normal forms, and simplified either applying algebraic rules or through Karnaugh maps). Derive a logical circuit for a given Boolean algebra expression. Given a circuit, state which Boolean function it implements. Recognize the basic combinatorial and sequential circuits and describe the function they implement. Describe the main components of a computer, list the main characteristics, how they work and how they interact. In particular describe the CPU main components and the fetch-decode-execute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the microinstructions language of MIC1 (both in binary and mnemonic representation), implement some simple microprograms using such language and simulate their execution.
Show parent course details
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2
Course ID
S1365
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FRANCESCHINIS Giuliana Annamaria
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
1
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
English
Contenuti/Content Summary
Proseguimento dello studio iniziato nel modulo I dell'architettura di un moderno sistema di elaborazione, strutturato come un insieme di macchine virtuali sovrapposte. In particolare, in questo modulo si approfondisce la struttura del processore micro-programmato (non reale ma verosimile, introdotto nel modulo I) MIC1, analizzando come realizzare un micro-interprete per il linguaggio macchina IJVM, una semplificazione del byte-code della Java Virtual Machine. Saranno, quindi, illustrate diverse versioni della microarchitettura con prestazioni via via migliori, tramite l’introduzione di varie tecniche di ottimizzazione delle prestazioni dei processori (pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache). Segue una panoramica generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina, con un approfondimento sull’ISA dei processori di tipo load/store. Inoltre, il modulo introduce il concetto di memoria virtuale (proprio del livello del sistema operativo) inquadrandolo nel discorso generale della gerarchia delle memorie e sottolineando similitudini e differenze rispetto ai principi e meccanismi di funzionamento della cache. Infine, presenta una panoramica sulle architetture parallele, con un approfondimento degli argomenti relative alla coerenza delle memorie cache nei multiprocessori.
Continuation of the investigation of the computing architectures, organized as a layered set of virtual machines. This module details the structure of MIC1, a microprogrammed processor (not real but plausible, introduced in module I) through the analysis of a micro-interpreter of IJVM machine language, derived from the Java bytecode Virtual machine. Different versions of the microarchitecture are illustrated with progressively better performances. In addition, various process optimization techniques are illustrated (pipelines, jump prediction mechanisms, out of order execution, cache memories). The following is a general overview of the Set Architecture (ISA) instruction level, with the analysis of the main characteristics of machine languages and the description of the load/store processors. In addition, the module introduces operating system layer and the concept of virtual memory in the context of the hierarchy of memories in a computing architecture: in particular, the analogies and the differences with the cache are addressed. Finally, an overview of parallel architectures is presented, with some details on the issues related to the coherence of cache memories in multi-processor architectures.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T.Austin: "Computer Architecture: a structural approach", VI Edizione, Pearson Education Italia, 2013.
Obiettivi formativi/Mission
Conoscere l’architettura interna di un processore, le tecniche di ottimizzazione (quali pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache), comprendendo le differenze delle architetture micro-programmate rispetto a quelle che eseguono direttamente in hardware il linguaggio macchina. Saper descrivere le caratteristiche generali di un linguaggio macchina (tra cui tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e saper analizzare motivazioni, vantaggi e svantaggi delle diverse scelte. Comprendere la tecnica della memoria virtuale collocandola nel quadro della gerarchia delle memorie e studiando la sua realizzazione con la tecnica della paginazione Sapere descrivere le principali tipologie di architetture parallele, comprendendo le problematiche relative alla gestione della memoria e gli impatti sulla programmazione.
Know the internal organization of a processor and some architectural variants (e.g., pipeline, jump prediction, out-of-order execution, cache memories) can significantly change the speed of execution; understand how to distinguish between microprogrammed architectures and architectures that execute machine language instructions directly in hardware. Know how to describe the general characteristics of a machine language (types of instructions, instruction format, addressing modes) and discuss motivations, advantages and disadvantages of different choices. Understand the virtual memory technique by placing it within the hierarchy of memories and by analyzing its implementation according to the paging technique. Know how to describe the main types of parallel architectures and understand the main impact on the memory management and issues on programming.
Prerequisiti/Required background knowledge
Conoscenza dei concetti studiati nel primo modulo del corso.
Knowledge of topics studied in module 1
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali. Alcune tematiche (es. le caratteristiche e la programmazione IJVM, il funzionamento del micro-interprete IJVM su MIC1) sono esemplificate per mezzo di esercitazioni utilizzando un emulatore dell’architettura MIC1 e del relativo micro-interprete di IJVM. Durante il corso sono proposti esercizi che gli studenti dovranno sviluppare in autonomia per verificare il loro livello di apprendimento e per stimolare lo spirito critico, tramite l’elaborazione di soluzioni originale e/o alternative. Il corso è integrato da un tutoraggio in cui saranno sviluppate alcune esercitazioni di gruppo.
The topics covered in the course are mainly exposed through lectures Some topics (e.g., IJVM characteristics and programming, the behavior of MIC1 micro-interpreter for IJVM) are exemplified by means of experimentation through an emulator of the MIC1 architecture and of the associated IJVM micro-interpreter. During the course, some exercises are submitted to be developed autonomously by students to verify their level of learning and stimulate a critical spirit, through the development of original and/or alternative solutions. The course is complemented by a tutoring class in which some exercises will be proposed and developed in group.
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, una selezione dei testi d’esame, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi, informazioni generali sul corso ed avvisi relativi allo svolgimento del corso e sugli esami.
On the DIR platform are available: the electronic copy of the slides used in the lectures, a selection of examples of exam texts, the emulator of the MIC1 architecture the associated micro-interpreter of IJVM and some programming examples, general information on the course and notices related to the course and exams.
Modalità di verifica dell'apprendimento/Assessment methods
La verifica dell’apprendimento è svolta in forma scritta; è possibile richiedere una integrazione orale, ad esempio nel caso in cui il voto sia quasi sufficiente. Il compito include da quattro a sei domande ciascuna delle quali può essere strutturata in più punti. Le domande possono anche assumere la forma di esercizi per valutare la capacità di applicare ad esempi pratici i concetti teorici appresi nel corso. Ad ogni domanda è assegnato un voto massimo (in genere da 5 a 7). La valutazione tiene conto della correttezza della risposta e del livello di completezza. La sufficienza si ottiene se lo studente dimostra di avere appreso e di sapere applicare gli elementi chiave indirizzati dalla domanda. Il voto complessivo per la valutazione dell’apprendimento degli argomenti di questo modulo è la somma dei voti ottenuti in ogni domanda.
The assessment of learning is carried out in written form. It is possible to request an oral supplement, for example if the vote is almost sufficient. The test includes four to six questions, each of which is, in general, structured in multiple points. The questions can also take the form of exercises to evaluate the ability to apply the theoretical concepts learned in the course to practical examples. Each question is assigned a maximum grade (generally from 5 to 7). The evaluation considers the correctness of the answer and the level of completeness. A sufficient score is obtained if the student demonstrates that he has learned and knows how to apply the key elements addressed by the question. The final grade for the learning assessment of contents addressed by this module is the sum of the marks obtained in each question.
Programma esteso/Content
Approfondimento della architettura a livelli introdotta nel modulo I: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione Assembler. Studio di un esempio di architettura micro-programmata che realizza IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1 introdotta nel primo modulo, mediante lo sviluppo di un micro-interprete implementato nel linguaggio MAL. Esercitazioni di sviluppo ed esecuzione di programmi in IJVM con un emulatore di MIC1. Studio delle tecniche per migliorare le prestazioni degli elaboratori, mediante l’introduzione di una unità di prelievo e della pipeline: analisi della loro introduzione nelle architetture MIC2, MIC3 e MIC4. Tecniche di ottimizzazione delle prestazioni degli elaboratori: memorie cache, predizione dei salti, esecuzione fuori ordine. Analisi delle caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento, la gestione delle chiamate a procedura. Caratteristiche dell’ISA dei processori di tipo load/store. Studio delle tecniche per l’interazione tra il processore ed i dispositivi di Input/Output. Analisi e comparazione di architetture e linguaggi macchina di processori reali. Introduzione della tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie: confronto con la cache ed approfondimento della tecnica di paginazione. Descrizione di alcuni tipi di architetture parallele, ed analisi della problematica della coerenza delle memorie cache nei multiprocessori.
Refinement of the description of the layered architecture introduced in module I: hardware level, micro-architecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. Investigation of an example of microprogrammed architecture that executes IJVM, derived from the Java bytecode Virtual machine, on MIC1 architecture introduced in module I, by means of a micro-interpreter implemented in MAL. Exercises on IJVM programming and executions by means of a MIC-1 emulator equipped with a IJVM compiler and micro-interpreter. Investigation of techniques to improve performance, by means of the introduction of a fetch unit and pipeline: analysis of their adoption in MIC2, MIC3 and MIC4 architectures. Optimization techniques to improve performance: jump prediction, out-of-order execution, cache memories. Characteristics of machine languages ​​(Instruction Set Architecture): data types, types of instructions, instruction format, addressing mode, handling of procedure calls. Characteristics of load/store machine ISA. Analysis of solutions for interaction among CPU and Input / Output devices. Analysis and comparison of architectures and machine languages ​​of real processors. Introduction to virtual memory, in the context of memory hierarchy: comparison with the cache, and in-depth analysis on virtual memory based on paging technique. Description of some types of parallel architectures, and analysis of issues related to coherence of cache memories in multi-processor architectures.
Risultati di apprendimento attesi/Intended learning objectives
Sapere spiegare l’organizzazione di un microprocessore e le sue principali unità funzionali. Sapere descrivere come è eseguita un’istruzione in questo tipo di macchina e sapere analizzare le diverse tecniche per l’aumento delle prestazioni. Essere in grado di realizzare la conversione dalla rappresentazione simbolica di istruzioni di linguaggio macchina a livello simbolico, orientato al programmatore, al formato binario interno alla macchina. Essere in grado di scrivere brevi programmi in linguaggio macchina (IJVM) e di estendere il micro-interprete introducendo nuove istruzioni Conoscere le caratteristiche generali di un linguaggio macchina (tra cui tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento). Comprendere le caratteristiche e le differenze degli ISA nelle architetture CISC, RISC e load/sore. Acquisire le competenze necessarie per analizzare e confrontare i linguaggi macchina esistenti. Sapere descrivere l’uso della gerarchia delle memorie, comprendendo l’importanza del principio della località spaziale e temporale. Essere in grado di applicare le tecniche della cache tra CPU e RAM e della memoria virtuale tra RAM e memoria secondaria. Comprendere la differenza tra spazio degli indirizzi (virtuali) e locazioni di memoria (fisica) e le relative tecniche di corrispondenza. Acquisire la capacità di approfondire ed orientarsi sulle principali soluzioni per la realizzazione di architetture parallele.
Explain the organization of a micro-processor and its main functional units. Describe how it is performed an instruction in this type of machine know analysis the techniques to improve performance. Be able to perform the conversion from the symbolic representation of machine language instructions, oriented to programming, to the binary format inside the machine. Be able to develop short programs in machine language (IJVM) and to extend the micro-interpreter with the introduction of new instructions. Know the main characteristics of a machine language (e.g., instruction types, instruction formats, addressing modes). Understand the characteristics and the differences of the ISA in the CISC, RISC and load/store architectures. Achieve the necessary skills to analyze and compare existing machine languages. Know the use of the memory hierarchy, by understanding the relevance of spatial locality and temporal locality principles. To be able to apply the technique of cache between CPU and RAM and of virtual memory between RAM and secondary memory. To understand the difference between (virtual) address space and (physical) memory location and the related mapping techniques. Achieve the capability to update the knowledge and orienteer among the main solutions for the realization of parallel architectures.
×
Print
Course
MATEMATICA DISCRETA
Course ID
S1366
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FERRARI Pier Luigi
CFU
9
Teaching duration (hours)
72
SSD
MAT/03 - GEOMETRIA, MAT/01 - LOGICA MATEMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Teoria elementare dei numeri e introduzione alla crittografia Alcune nozioni di base dell'algebra lineare. Introduzione alla logica proposizionale ed alla logica dl I ordine.
Elementary theory of numbers and introduction to criptography. Some basic ideas of linear algebra. Introduction to propositional and first order logic
Testi di riferimento/Textbooks
Appunti del docente. Diversi materiali disponibili sulla piattaforma DIR. "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Graw Hill Education (1997)
Instructor's notes. A range of materials available on the platform DIR. "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Graw Hill Education (1997)
Obiettivi formativi/Mission
Capacità di modellizzare semplici situazioni (problemi di crittografia, problemi lineari) con l'aiuto di idee e metodi di base di algebra (teoria elementare dei numeri) e algebra lineare. Introdurre le nozioni elementari di logica delle proposizione e del primo ordine con particolare attenzione alla relazione fra verita’ e derivabilita’ ed alla rappresentabilita’ nel calcolo dei predicati.
Ability at modeling simple situations (cryptography problems, linear problems) by means of some basic ideas and methods of algebra (elementary number theory) and linear algebra. Providing the main notions on propositional and first-order logic, with a particular attention to the relations between truth and derivability and to the use of the predicate calculus for representing natural language statements.
Prerequisiti/Required background knowledge
Lettura e produzione di brevi testi scritti in italiano. Proprietà di base dei numeri interi. Proprietà di base del piano cartesiano. Conoscenze sintattiche di base.
Reading and production of short texts in italian. Basic properties of integers. Basic properties of the cartesian plane. Basic knowledge of syntax.
Metodi didattici/Teaching methods
Lezioni frontali. Tutorato personalizzato ed esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and Computer-aided exercises.
Altre informazioni/Further information
Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti.
Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto con l'ausilio del calcolatore, eventuale discussione dello scritto. La prova scritta, integrata fra i due moduli del corso , consiste in 6 items a risposta chiusa o aperta del formato 'Quiz' della piattaforma DIR e in 3 problemi nel formato 'Componimento'.
Written computer-based test, possibly followed by a discussion of the written test. The written test, where the two modules are integrated, consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'.
Programma esteso/Content
Numeri interi. Divisibilità e numeri primi. Massimo comun divisore. Algoritmo di Euclide. Minimo comune multiplo. Equazioni diofantee. Congruenze e classi di resto. Criteri di divisibilità. Rappresentazione di numeri con base diversa da dieci. Teorema cinese del resto. Condivisione di segreti mediante sistemi di congruenze. Il teorema di Eulero. Il problema del logaritmo discreto. Il protocollo di Diffie-Hellman. Il protocollo RSA. Sistemi lineari. Metodo di Eliminazione di Gauss. Matrici, determinanti, rango, matrice inversa. Spazi vettoriali, basi, dipendenza lineare. Applicazioni lineari, prodotto scalare. Applicazioni ai sistemi lineari. Logica Proposizionale:  - Sintassi.- Semantica:  interpretazione,  definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi, equivalenza semantica,  completezza funzionale e forma normali.- Deduzione naturale:  regole e dimostrazioni, correttezza,  enunciato di completezza.
Logica dei Predicati: - Sintassi: variabili libere e legate, sostituzione.- Semantica: :  interpretazione,  definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi.
Integers. Divisibility and primes. Greatest common divisor. Euclid's algorithm. Least common multiple. Diophantine equations. Congruences and residue classes. Divisibility criteria. Representation of number in basis other than ten. Chinese remainder theorem. Sharing secrets by means of systems of congruences. Euler's theorem. The problem of the discrete logarithm. The Diffie-Hellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems. Propositional logic:- Syntax;- Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results, semantic equivalence, normal forms and functional completeness;- Natural deduction: inference rules and proofs, soundness, statement of the completeness resultPredicate Logic:- Syntax: free and bound variables, substitution,- Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza e comprensione di alcuni concetti basilari della teoria elementare dei numeri e dell'algebra lineare, e capacità di applicarli a semplici problemi. Capacità di valutare l'appropriatezza di un algoritmo che applica tali concetti. Capacità di comunicare in modo semplice e chiaro i procedimenti adottati. Conoscenza di alcuni concetti e procedimenti fondamentali della Logica Matematica. Comprensione della distinzione fra sintassi e semantica. Capacità di tener conto delle differenze fra linguaggi simbolici e linguaggio quotidiano.
Knowledge and understanding of some basic concepts of elementary number theory and linear algebra, and ability at applying them to simple problems. Ability at evaluating the appropriateness of an algorithm which applies such concepts. Ability at communicating the procedures adopted in a simple and clear way. Knowledge of some basic concepts and algorithms of Mathematical Logic. Understanding of the distinction between syntax and semantics. Ability at taking into account the differences between everyday language and symbolic ones.
Modules
Course ID Course SSD Teachers Agenda web
S1367ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Ferrari Pier Luigi
S1368LOGICA MAT/01 - LOGICA MATEMATICA Ferrari Pier Luigi
Show parent course details
×
Print
Course
MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA
Course ID
S1367
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FERRARI Pier Luigi
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/03 - GEOMETRIA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Teoria elementare dei numeri e introduzione alla crittografia Alcune nozioni di base dell'algebra lineare.
Elementary theory of numbers and introduction to criptography. Some basic ideas of linear algebra.
Testi di riferimento/Textbooks
Appunti del docente. Diversi materiali disponibili sulla piattaforma DIR.
Instructor's notes. A range of materials available on the platform DIR.
Obiettivi formativi/Mission
Capacità di modellizzare semplici situazioni (problemi di crittografia, problemi lineari) con l'aiuto di idee e metodi di base di algebra (teoria elementare dei numeri) e algebra lineare.
Ability at modeling simple situations (cryptography problems, linear problems) by means of some basic ideas and methods of algebra (elementary number theory) and linear algebra.
Prerequisiti/Required background knowledge
Lettura e produzione di brevi testi scritti in italiano. Proprietà di base dei numeri interi. Proprietà di base del piano cartesiano.
Reading and production of short texts in italian. Basic properties of integers. Basic properties of the cartesian plane.
Metodi didattici/Teaching methods
Lezioni frontali. Tutorato personalizzato ed esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and Computer-aided exercises.
Altre informazioni/Further information
Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti.
Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto con l'ausilio del calcolatore, eventuale discussione dello scritto. La prova scritta, integrata con il modulo di Logica, consiste in 6 items a risposta chiusa o aperta del formato 'Quiz' della piattaforma DIR e in 3 problemi nel formato 'Componimento'.
Written computer-based test, possibly followed by a discussion of the written test. The written test, integrated with the 'Logic' module, consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'.
Programma esteso/Content
Numeri interi. Divisibilità e numeri primi. Massimo comun divisore. Algoritmo di Euclide. Minimo comune multiplo. Equazioni diofantee. Congruenze e classi di resto. Criteri di divisibilità. Rappresentazione di numeri con base diversa da dieci. Teorema cinese del resto. Condivisione di segreti mediante sistemi di congruenze. Il teorema di Eulero. Il problema del logaritmo discreto. Il protocollo di Diffie-Hellman. Il protocollo RSA. Sistemi lineari. Metodo di Eliminazione di Gauss. Matrici, determinanti, rango, matrice inversa. Spazi vettoriali, basi, dipendenza lineare. Applicazioni lineari, prodotto scalare. Applicazioni ai sistemi lineari.
Integers. Divisibility and primes. Greatest common divisor. Euclid's algorithm. Least common multiple. Diophantine equations. Congruences and residue classes. Divisibility criteria. Representation of number in basis other than ten. Chinese remainder theorem. Sharing secrets by means of systems of congruences. Euler's theorem. The problem of the discrete logarithm. The Diffie-Hellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza e comprensione di alcuni concetti basilari della teoria elementare dei numeri e dell'algebra lineare, e capacità di applicarli a semplici problemi. Capacità di valutare l'appropriatezza di un algoritmo che applica tali concetti. Capacità di comunicare in modo semplice e chiaro i procedimenti adottati.
Knowledge and understanding of some basic concepts of elementary number theory and linear algebra, and ability at applying them to simple problems. Ability at evaluating the appropriateness of an algorithm which applies such concepts. Ability at communicating the procedures adopted in a simple and clear way.
Show parent course details
×
Print
Course
MATEMATICA DISCRETA: LOGICA
Course ID
S1368
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FERRARI Pier Luigi
CFU
3
Teaching duration (hours)
24
Individual study time
51
SSD
MAT/01 - LOGICA MATEMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
C
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
Italiano.
Italian.
Contenuti/Content Summary
Introduzione alla logica proposizionale e alla logica dl I ordine.
Introduction to propositional and first order logic
Testi di riferimento/Textbooks
Maschio, S. (2019). Tecniche dimostrative. La logica incontra la matematica. Trieste: Scienza express. Asperti, A. & Ciabattoni, A. (1997). Logica a Informatica. Milano: Mc Graw Hill Education.
Logica: Maschio, S. (2019). Tecniche dimostrative. La logica incontra la matematica. Trieste: Scienza express. Asperti, A. & Ciabattoni, A. (1997). Logica a Informatica. Milano: Mc Graw Hill Education.
Obiettivi formativi/Mission
Introdurre le nozioni elementari di logica delle proposizione e del primo ordine con particolare attenzione alla relazione fra verita’ e derivabilita’ e alla rappresentabilita’ nel calcolo dei predicati. Utilizzare alcune tecniche di ampio uso matematico come l'induzione. Riconoscere, applicare e valutare i principali schemi dimostrativi.
Providing the basic notions of propositional and first-order logic, with a particular care to the relationship between truth and derivability and to the use of the predicate calculus for expressing ordinary language statements. Application of some techniques widely used in mathematics, such as induction. Recognition, application and evaluation of some basic proof schemes.
Prerequisiti/Required background knowledge
Lettura e produzione di brevi testi scritti in italiano. Conoscenze sintattiche di base.
Reading and production of short texts in italian. Basic knowledge of syntax.
Metodi didattici/Teaching methods
Lezioni frontali. Tutorato personalizzato ed esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and computer-aided exercises.
Altre informazioni/Further information
Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti.
Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento/Assessment methods
Esame scritto con l'ausilio del calcolatore, eventuale colloquio orale. La prova scritta, integrata con i moduli di Algebra e Geometria, consiste in 6 items a risposta chiusa o aperta del formato 'Quiz' della piattaforma DIR e in 3 problemi nel formato 'Componimento'.
Written computer-based test, possibly followed by an interview. The written test, integrated with the 'Algebra' and 'Geometry' modules consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'.
Programma esteso/Content
Logica Proposizionale:  - Sintassi.- Semantica:  interpretazione,  definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi, equivalenza semantica,  completezza funzionale e forma normali.- Deduzione naturale:  regole e dimostrazioni, correttezza,  enunciato di completezza.
Logica dei Predicati: - Sintassi: variabili libere e legate, sostituzione.- Semantica: :  interpretazione,  definizioni di soddisfacibile, contraddittorio, tautologia, conseguenza semantica e risultati connessi. Induzione matematica. Schemi dimostrativi: ragionamento per casi e per assurdo.
Propositional logic:- Syntax;- Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results, semantic equivalence, normal forms and functional completeness;- Natural deduction: inference rules and proofs, soundness, statement of the completeness resultPredicate Logic:- Syntax: free and bound variables, substitution,- Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results. Mathematical induction. Proof schemes: reasoning by cases and by negation.
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza di alcuni concetti e procedimenti fondamentali della Logica Matematica. Comprensione della distinzione fra sintassi e semantica. Capacità di tener conto delle differenze fra linguaggi simbolici e linguaggio quotidiano. Padronanza di alcune semplici tecniche dimostrative.
Knowledge of some basic concepts and algorithms of Mathematical Logic. Understanding of the distinction between syntax and semantics. Ability at taking into account the differences between everyday language and symbolic ones. Mastery of some basic proof techniques.
×
Print
Course
PROGRAMMAZIONE 1
Course ID
MF0207
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
CODETTA RAITERI Daniele
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il corso ha la finalità di introdurre i fondamenti della programmazione degli elaboratori elettronici, partendo dal concetto di algoritmo e dalla descrizione dei concetti di base di un programma, per arrivare a concetti avanzati di strutture dati e di controllo dei linguaggi di programmazione. Il corso si propone, inoltre, di presentare i concetti di base del linguaggio di programmazione C impiegato a supporto dell’insegnamento della programmazione, nonché per lo svolgimento di esercitazioni pratiche in laboratorio.
The course has the goal of introducing the fundamentals of computer programming, starting from the concept of algorithm and the basic concepts of a program, and arriving to advanced concepts of data structures and control in the programming language. Moreover the course presents the basic concepts of the C programming language used to support the teaching of programming, and to perform practical exercises in the laboratory.
Testi di riferimento/Textbooks
Kelley, Pohl, “C: didattica e programmazione”, Pearson Italia. P. Deitel, H. Deitel, “Il linguaggio C – Fondamenti e tecniche di programmazione”, Pearson Italia. Kernighan, Ritchie, Linguaggio C, Pearson Italia.
Kelley, Pohl, “A book on C : programming in C", Addison-Wesley. P. Deitel, H. Deitel, “C: How to program”, Prentice Hall. Kernighan, Ritchie, The C Programming Language (2nd edition), Prentice Hall.
Obiettivi formativi/Mission
Al termine del corso, lo studente deve essere in grado, dato un semplice problema di programmazione, di individuarne un algoritmo risolutivo, implementarlo in linguaggio C, eseguirlo al calcolatore e verificarne la correttezza. Conoscenza e comprensione: concetto di algoritmo, concetto di programma, strutture dati fondamentali, costrutti di base della programmazione. Capacità di applicare conoscenza e comprensione: dato un problema, - individuare i dati di input da raccogliere dall'utente e i dati di output da produrre; - individuare le strutture dati necessarie per gestire tali dati; - definire un algoritmo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione; - scrivere al calcolatore il programma sorgente che implementa l'algoritmo, utilizzando un linguaggio di programmazione (C); - generare il programma eseguibile tramite la compilazione del programma sorgente, al calcolatore; - esecuzione e test del programma eseguibile, al calcolatore. Autonomia di giudizio: in modo autonomo lo studente deve riuscire ad identificare le strutture dati necessarie, definire ed implementare l'algoritmo nel linguaggio di programmazione (C), ed infine compilare ed eseguire il programma. Abilità comunicative: lo studente deve riuscire a definire un algoritmo a vari livelli di astrazione, quali il diagramma di flusso, lo pseudo-codice, il programma in linguaggio di programmazione. Inoltre si esige che il programma richieda e presenti i dati all'utente tramite messaggi comprensibili dall'utente. Capacità di apprendimento: lo studente deve essere capace di apprendere come si genera un algoritmo dal problema, come si implementa l'algoritmo in un linguaggio di programmazione, ed infine come si compila e si esegue il programma al calcolatore.
At the end of the course, given a simple programming problem, the student must be able to define the algorithm solving the problem, implement the algorithm in C language, execute the program on the computer, and verify its correctness. Knowledge and comprehension: concepts of algorithm and program, fundamental data structures, basic programming constructs. Capacity to apply knowledge and comprehension: given a problem, - identifying input data to be collected from the user, and output data to be produced; - identifying the data structures necessary to manage such data; - defining an algorithm transforming input data in output data, by following the programming constructs; - writing on the computer the source program implementing the algorithm, using the programming language (C); - generating the executable program by compiling the source program, on the computer; - executing and testing the executable program, on the computer. Judgement autonomy: in an autonomous way the student must be able to identify the necessary data structures, define and implement the algorithm in the programming language (C), and finally compile and execute the program. Communication abilities: the student must be able to define an algorithm at several abstraction levels, such as the flow-chart, the pseudo-code, the program in the programming language. Moreover the program must require and present data to the user by means of message that the user can understand. Learning capacity: the student must be able to learn how to generate an algorithm from the problem, how to implement an algorithm in a programming language, and finally how to compile and execute a program on a computer.
Prerequisiti/Required background knowledge
Nessuno
None
Metodi didattici/Teaching methods
Il corso si articola in lezioni frontali in aula e in esercitazioni al calcolatore in laboratorio. Modalità: durante le lezioni frontali si presentano gli aspetti teorici della programmazione (algoritmi, costrutti, strutture dati, ecc.). Inoltre, tramite un calcolatore collegato ad un proiettore, si mostra come tali aspetti si possono implementare al calcolatore. Per ogni argomento vengono presentati vari esempi di problemi ed i corrispondenti algoritmi e programmi. Durante le lezioni in laboratorio si richiede agli studenti di realizzare gli stessi programmi visti in aula, e di realizzarne altri che risolvono problemi analoghi. Strumenti: per assimilare in modo graduale i concetti di algoritmo e di programma, e i relativi costrutti, all'inizio del corso gli algoritmi vengono definiti tramite vari livelli di astrazione: diagramma di flusso, pseduo-codice, linguaggio di programmazione. Dato che si tratta di un corso di programmazione di base, i programmi vengono scritti al calcolatore tramite un comune editor di testo. Per abituare gli studenti all'uso del terminale (utile per insegnamenti successivi), la compilazione e l'esecuzione dei programmi avviene dalla riga di comando del terminale. Oltre ai comandi di compilazione ed esecuzione, vengono presentati ed applicati i principali comandi da terminale. Durante il corso, l'apprendimento viene verificato tramite lo svolgimento di una serie di esercizi per ogni argomento del corso. Ogni esercizio richiede la definizione di un algoritmo e la scrittura in linguaggio C del programma corrispondente. Durante le lezioni di laboratorio, ogni esercizio viene introdotto, si definisce sommariamente la struttura del programma, si richiede agli studenti di completare in modo autonomo il programma entro un certo periodo di tempo, dopodiché si fornisce la soluzione dell'esercizio per verificare la correttezza. Alla fine del corso vengono svolte alcune simulazioni di esame, al calcolatore, per consentire agli studenti di rendersi conto di quanto richiesto effettivamente all'esame. Oltre alle ore di laboratorio, il corso prevede delle ore di tutorato in cui gli studenti possono continuare gli esercizi, chiarire eventuali dubbi, o richiedere che un argomento venga spiegato una seconda volta. Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete), che contiene le slide del corso, i programmi presentati in aula, i programmi preparati in laboratorio, i programmi preparati durante il tutorato, le prove d'esame del passato, ecc.
The course consists of frontal lectures and laboratory lectures. Modality: during the frontal lectures the theoretical aspects about programming (algorithms, constructs, data structure, etc) are presented. Moreover, by means of a computer connected to a projector, the way to implement such aspects on a computer, is shown. For each topic, several examples of problems are presented, together with the corresponding algorithms and programs. During the laboratory lectures, the students are asked to implement the same programs presented in the frontal lectures, and to implement other programs solving similar problems. Tools: in order to gradually learn the concepts of algorithm, program, and their constructs, at the begin of the course, the algorithms are defined through several abstraction levels: flow-chart, pseudo-code, programming language. Since it is a course on basic programming, the programs are written on the computer by means of an ordinary text editor. In order to make the students familiar with the terminal (useful for the following courses), program compiling and execution is performed through the command line of the terminal. Besides the compiling and execution commands, the main terminal commands are presented and applied. During the course, learning is verified through a series of exercises for each topic of the course. Each exercise requires to define an algorithm and write the corresponding program in C language. During the laboratory lectures, each exercise is introduced, the general program structure is defined, and the students are asked to complete the program in an autonomous way, within a certain amount of time. Then, the solution of the exercise is provided in order to verify the correctness. At the end of the course, several exam simulation are performed, on the computer, to allow the students to be aware of what is actually required at the exam. Besides the laboratory lectures, tutoring lectures are available for the students, in order to continue the exercises, clarify doubts, and require to explain a topic for the second time. The course has its own page in the platform DIR (Didattica in Rete), which contains the slides, the programs shown during the frontal lectures, the programs prepared during the laboratory and tutoring lectures, the exams of the past, etc.
Altre informazioni/Further information
Sono previste delle prove in itinere durante il corso per verificare anticipatamente il livello di preparazione degli studenti e per consentire a questi di rendersi conto della difficoltà dell'esame. Le prove sono previste a metà corso e a fine corso. Se superate, le prove in itinere esonerano dall'esame generale agli appelli.
Partial exams are planned during the course, in order to early check the knowledge level of the students, and allow them to be aware of the exam difficulty. If partial exams are passed, they replace the general exam after the course.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame consiste in un esercizio pratico al calcolatore, in cui lo studente, dato un determinato problema, deve: definire l'algoritmo che lo risolve, implementare l'algoritmo in linguaggio C strutturando opportunamente il codice, compilare con successo il programma, verificare il funzionamento corretto del programma. Il programma deve essere strutturato in varie funzioni. Tipicamente si richiede l'implementazione di 5 funzioni, inclusa la funzione main. Le funzioni richieste all'esame sono analoghe a quelle presentate durante il corso, in aula o in laboratorio. Ad ogni funzione viene assegnato un punteggio dipendente dalla complessità della funzione (mediamente 6 punti). E' prevista una parte facoltativa che vale 2 punti, utile per conseguire la lode. La prova dura 2 ore e riguarda tutti gli argomenti del corso. Gli studenti potranno trovare dettagli ed esempi di prove d'esame sulla piattaforma DIR. Durante l'esame non è consentita la consultazione del materiale del corso o di manuali. Inoltre si usano i calcolatori del laboratorio informatico; è vietato l'uso di dispositivi mobili o computer portatili.
The exam consists of a practical exercise on the computer, where the students, given a specific problem, must: define the solving algorithm, implement the algorithm in C language, properly structuring the code, successfully compile the program, verify the correct functioning of the program. The program must be structured into several functions. Typically, 5 functions are required to be implemented, including the main function. The functions required at the exam are similar to those presented in the course, during the frontal or laboratory lectures. A score depending on the complexity, is associated with each function (6 points on average). An extra requirement counting 2 points is foreseen to reach an honorable score. The exam has a 2 hours duration and is about all the topics of the course. The students can find details and examples of exams on the DIR platform. During the exam, consulting the course material or manuals is not allowed. The computers in the laboratory are used; the use of mobile devices or portable computers is forbidden.
Programma esteso/Content
- introduzione alla programmazione ed al linguaggio C; - algoritmi e loro rappresentazione; - variabili, costanti, tipi di dato e operatori aritmetici; - operatori di input e output in C; - primi programmi C con il solo uso di sequenze di comandi; - costrutto di selezione (if...else) con condizioni booleane semplici e composte; - iterazione e costrutti while, for e do-while; - array (vettori, stringhe, matrici); - funzioni e passaggio dei parametri per valore; - concetto di puntatore e passaggio dei parametri per riferimento; - aritmetica dei puntatori; - parametri da riga di comando; - algoritmi di ordinamento di array; - input/output su file; - uso del terminale.
- introduction to programming and C language; - algorithms and their representation; - variables, constants, data types, arithmetic operators; - input/output operators in C; - first programs in C, with the only use of command sequences; - selection (if...else) with simple and composed Boolean conditions; - loops (while, for, do-while); - arrays; - functions with arguments by value; - pointers and function arguments by reference; - pointer arithmetic; - arguments from command line; - array sorting algorithms; - input/output to file; - use of terminal.
Risultati di apprendimento attesi/Intended learning objectives
Dato un problema di media complessità, lo studente deve essere in grado di individuare i possibili dati di input, i possibili dati di output e l'algoritmo che risolve il problema. Inoltre lo studente deve essere in grado di scrivere un programma in linguaggio C corrispondente all'algoritmo, di compilarlo ed eseguirlo. Lo studente deve conoscere i costrutti di base della programmazione, le strutture dati di base (variabili, costanti, array) e l'organizzazione del programma in più funzioni.
Given a problem of average complexity, the student must be able to deduce the possible input data, the possible output data, and the algorithm solving the problem. Moreover the student must be able to write a programme in C language, corresponding to the algorithm, compile it, and execute it. The student must know the basic programming constructs, the basic data structures (variables, constants, arrays), and the organization of a program into functions.
×
Print
Course
PROGRAMMAZIONE 2
Course ID
MF0208
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
PENNISI MARZIO ALFIO
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Secondo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Gestione di stutture dati dinamiche. Iterazione. Ricorsione. Algoritmi classici di ordinamento
Management of dynamic data structures. Iteration. Recursion. Classical sorting algorithms
Testi di riferimento/Textbooks
Paul Deitel, Harvey Deitel “Il linguaggio C. Fondamenti e tecniche di programmazione”. Pearson Italia, 2013 Brian W. Kernighan, Dennis M. Ritchie "Il linguaggio C. Principi di programmazione e manuale di riferimento" Pearson Italia
Paul Deitel, Harvey Deitel “Il linguaggio C. Fondamenti e tecniche di programmazione”. Pearson Italia, 2013 Brian W. Kernighan, Dennis M. Ritchie "Il linguaggio C. Principi di programmazione e manuale di riferimento" Pearson Italia
Obiettivi formativi/Mission
Al termine del corso, lo studente deve essere in grado, dato un problema di programmazione (per gestire la struttua dinamica lista), di individuarne un algoritmo risolutivo sia iterazione sia in ricorsione, implementarlo in linguaggio C, eseguirlo al calcolatore. Conoscenza e comprensione: programmazione in iterazione, programmazione in ricorsione, la struttura dinamica lista. Capacità di applicare conoscenza e comprensione: dato un problema inerente alla struttura dinamica lista, - definire un algoritmo iterativo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione; - definire un algoritmo ricorsivo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione; - scrivere al calcolatore il programma sorgente che implementa l'algoritmo, utilizzando un linguaggio di programmazione (C); - compilare, eseguire e testare tale programma al calcolatore. Autonomia di giudizio: in modo autonomo lo studente deve riuscire definire ed implementare un'algoritmo per risolvere un problema inerenti alla gestione di strutture dinamiche nel linguaggio di programmazione (C), a valutarne la complessità, e compilare ed eseguire il programma. Abilità comunicative: lo studente deve riuscire a definire un algoritmo sia in iterazione sia in ricorsione, e deve sapere presentare il suo costo espresso come complessità in tempo e spazio. Capacità di apprendimento: lo studente deve essere capace di apprendere come si definiscae un algoritmo a partire dal problema sia in iterazione sia in ricorsione, valutarne i costi (complessità in tempo e spazio) e come si implementa tale algoritmo in C.
At the end of the course, students must be able, given a programming problem (to manage the dynamic list structure), to identify a solution algorithm both iteration and recursion, implement it in C language, execute it on the computer. Knowledge and understanding: iteration programming, recursion programming, dynamic list structure. Ability to apply knowledge and understanding: given a problem inherent in the dynamic list structure, - define an iterative algorithm that transforms the input data into the output data, following the programming constructs; - define a recursive algorithm that transforms the input data into the output data, following the programming constructs; - write to the computer the source program that implements the algorithm, using a programming language (C); - compile, run and test this program on the computer. Autonomy of judgment: the student must be able to define and implement an algorithm independently to solve a problem inherent in the management of dynamic structures in the programming language (C), to evaluate their complexity, and to compile and execute the program. Communication skills: the student must be able to define an algorithm both in iteration and in recursion, and must know how to present its cost expressed as complexity in time and space. Learning skills: the student must be able to learn how to define an algorithm starting from the problem both in iteration and in recursion, evaluate its costs (complexity in time and space) and how to implement this algorithm in C.
Prerequisiti/Required background knowledge
Lo studente deve aver superato Programmazione 1
The student must have passed Programming 1
Metodi didattici/Teaching methods
Lezioni frontali, esercitazioni in aula e in laboratorio
Lectures, classroom and laboratory exercises
Altre informazioni/Further information
L'attività in laboratorio richiede una partecipazione attiva e individuale degli studenti, che in tal modo sviluppano abilità pratiche (le capacità di realizzare un programma). La partecipazione attiva permette una verifica del modo in cui gli argomenti vengono recepiti.
The activity in the laboratory requires an active and individual participation of the students, who thus develop practical skills (the ability to carry out a program). Active participation allows a verification of the way in which the arguments are received.
Modalità di verifica dell'apprendimento/Assessment methods
- Esame scritto (orale facoltativo): Esercizi orientati a testare le capacità e le conoscenze inerenti alla programmazione iterativa e ricorsiva; - esame in laboratorio: sviluppo in laboratorio di funzioni iterative e ricorsive in linguaggio C
- Written exam (oral optional): Exercises aimed at testing the skills and knowledge inherent in iterative and recursive programming; - laboratory examination: laboratory development of iterative and recursive functions in C language
Programma esteso/Content
- puntatori in C e loro uso per la realizzazione di liste - funzioni interattive sulla liste: - gestione di una singola lista - gestione di più liste - ricorsione: - definizione e concetti di base - simulazione di funzione ricorsive mediante record di attivazione - un esempio complesso: le torri di Hanoi - funzioni ricorsive su liste: - gestione di una singola lista - gestione di più liste - funzioni ricorsive di ordinamento: - QuickSort - MergeSort
- pointers in C and their use for the realization of lists - interactive functions on the lists: - management of a single list - management of multiple lists - recursion: - definition and basic concepts - simulation of recursive function by means of activation records - a complex example: the towers of Hanoi - recursive functions on lists: - management of a single list - management of multiple lists - recursive sorting functions: - QuickSort - MergeSort
Risultati di apprendimento attesi/Intended learning objectives
Lo studente deve sapere gestire le liste implementate tramite puntatori, sviluppare programmi per la loro gestione sia in ricorsione sia in iterazione
Students must know how to manage the lists implemented through pointers, develop programs for their management both in recursion and in iteration
×
Print
Course
PROGRAMMAZIONE 2
Course ID
MF0164
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MANCINI SIMONA
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Secondo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Il corso tratta argomenti avanzati di programmazione e illustra metodologie per sviluppare programmi che gestiscano procedure complesse e si interfaccino con l'utente
The course covers advanced programming topics and illustrates methodologies for developing programs that handle complex procedures and interface with the user
Testi di riferimento/Textbooks
Paul Deitel, Harvey Deitel “Il linguaggio C. Fondamenti e tecniche di programmazione”. Pearson Italia T. Facchinetti, C. Larizza, A. Rubini "Programmare in C: Concetti di base e tecniche avanzate", Apogeo C. Grana, M. Manfredi "Esercizi di Programmazione in linguaggio C", Amazon Italia Logistica
Paul Deitel, Harvey Deitel “Il linguaggio C. Fondamenti e tecniche di programmazione”. Pearson Italia T. Facchinetti, C. Larizza, A. Rubini "Programmare in C: Concetti di base e tecniche avanzate", Apogeo C. Grana, M. Manfredi "Esercizi di Programmazione in linguaggio C", Amazon Italia Logistica
Obiettivi formativi/Mission
Conoscenza e comprensione degli strumenti avanzati del linguaggio di programmazione C. Capacità di descrivere una procedura tramite uno pseudocodice Capacità di trasformare lo pseudocodice in un programma eseguibile Fluidità e autonomia nella produzione del codice Elevata comprensione del codice Capacità di produrre programmi in grado di interfacciarsi con l'utente Capacità di sviluppo di algoritmi e procedure dipendenti dall'input ricevuto dall'utente Capacità di sviluppo di algoritmi e procedure basati su funzioni randomiche Conoscenza della programmazione matematica Capacità dell'utilizzo dell'interfaccia Xpress-IVE Capacità di modellare e risolvere semplici problemi decisionali
Knowledge and understanding of the advanced tools of the C programming language. Ability to describe a procedure using pseudocode Ability to transform pseudocode into an executable program Fluidity and autonomy in code production High level of code understanding Ability to produce programs capable of interfacing with the user Ability to develop algorithms and procedures dependent on user input Ability to develop algorithms and procedures based on random functions Knowledge of mathematical programming Ability to use the Xpress-IVE interface
Prerequisiti/Required background knowledge
Lo studente deve aver superato l'esame di Programmazione 1.
The student must have successfully completed the Programming 1 exam.
Metodi didattici/Teaching methods
Il corso è insegnato in aula e in laboratorio. Nelle lezioni in aula vengono esposte le nozioni fondamentali sempre corredate da programmi di esempio svolti sul momento dal docente con il coinvolgimento degli studenti. Vengono anche discussi pregi e difetti delle eventuali alternative per la soluzione di un determinato problema. Sulla piattaforma DIR vengono forniti tutti gli esempi sviluppati in aula oltre a esercizi aggiuntivi per gli studenti che così vengono messi alla prova e possono autovalutare il proprio grado di comprensione dell'argomento. Nelle esercitazioni in laboratorio lo studente viene guidato nella soluzione di esercizi di programmazione nei quali deve utilizzare gli stessi strumenti visti a lezione ma in un contesto diverso. Sulla piattaforma DIR sono disponibili, per ogni esercitazione, i testi degli esercizi assegnati con a volte suggerimenti per la risoluzione. Su DIR sono disponibili esempi di domande dello stesso tipo di quelle dell'esame oltre a numerosi testi di prove d'esame di programmazione, che forniscono un ulteriore strumento di autovalutazione per lo studente che potrà quindi rivolgersi per tempo al docente per chiarimenti.
The course is taught in the classroom and in the computer lab. In the classroom lectures the main concepts are exaplined with the help of example programs written on the spot by the teacher with the help of the students. Pros and cons of alternative solutions to the same problem are also discussed. After the lecture all examples developed during the lecture are made available on the DIR platform, together with some additional exercises so that students can test their degree of understanding of the lecture topic. In the lectures in the computer lab students have to solve programming exercises where they have to use tools already seen in classes but in a different context. The exercises are made available on te DIr platform so also students not attending can access the material. On the DIR platform there are also examples of questions similar to the ones in the final exams as well as many past exam assignments which allows students to spot concpts not completely clear that they can discuss with the teacher before the final exam.
Altre informazioni/Further information
L'attività in laboratorio richiede una partecipazione attiva degli studenti, che in tal modo sviluppano la capacità di scrivere programmi completi che è fondamentale per il superamento dell'esame. L'attività in laboratorio a contatto con gli altri studenti e il docente fornisce inoltre un importante controllo dell'apprendimento in itinere.
The activities in the computer lab require the students active participation; students develop the capacity of writing complete programs which is a fundamental skill for passing the exam. Activities in the computer lab with the teacher and other students provide an important means for monitoring the learning process.
Modalità di verifica dell'apprendimento/Assessment methods
Esame nel laboratorio informatico consistente in domande scritte sulla comprensione del codice e sulla produzione del codice, seguite da una prova pratica in cui lo studente dovrà produrre un codice funzionante in grado di eseguire delle richieste specifiche. Sono previste prove in itinere.
Examination in the computer lab consisting of written questions on code comprehension and code production, followed by a practice test in which the student must produce working code capable of performing specific tasks. Partial exams are planned
Programma esteso/Content
- Funzioni, strutture e puntatori - Generatori di numeri casuali - Ricorsione - Interfaccia con l'utente - Inizializzazione di un sistema - Variazione condizionale dello stato del sistema basato sull'input ricevuto dall'utente - Variazione condizionale dello stato del sistema basato su eventi deterministici - Variazione condizionale dello stato del sistema basato su eventi casuali - Condizioni per la terminazione del processo - Visualizzazione dello stato del sistema - Programmazione Matematica - Vincoli logici - Sintassi del linguaggio Xpress - Produzione di codice nell'interfaccia Xpress-IVE - Estrapolazione informazioni sul processo di ottimizzazione - Output e visualizzazione grafica
- Functions, Structures and Pointers - Random number generators - Recursion - Interface with the user - Initialization of a system - Conditional variation of the state of the system based on the input received from the customer - Conditional change of the state of the system based on deterministic events - Conditional variation of the state of the system based on random events - Conditions for process termination - Visualization of the state of the system - Mathematical Programming - Logical Constraints - Xpress Language Syntax - Generation of code in the Xpress-IVE interface - Extrapolation of information about the optimization process - Output and graphical visualization
Risultati di apprendimento attesi/Intended learning objectives
Conoscenza e comprensione degli strumenti avanzati del linguaggio di programmazione C. Capacità di descrivere una procedura tramite uno pseudocodice Capacità di trasformare lo pseudocodice in un programma eseguibile Fluidità e autonomia nella produzione del codice Elevata comprensione del codice Capacità di produrre programmi in grado di interfacciarsi con l'utente Capacità di sviluppo di algoritmi e procedure dipendenti dall'input ricevuto dall'utente Capacità di sviluppo di algoritmi e procedure basati su funzioni randomiche Conoscenza della programmazione matematica Capacità dell'utilizzo dell'interfaccia Xpress-IVE Capacità di modellare e risolvere semplici problemi decisionali
Knowledge and understanding of the advanced tools of the C programming language. Ability to describe a procedure using pseudocode Ability to transform pseudocode into an executable program Fluidity and autonomy in code production High level of code understanding Ability to produce programs capable of interfacing with the user Ability to develop algorithms and procedures dependent on user input Ability to develop algorithms and procedures based on random functions Knowledge of mathematical programming Ability to use the Xpress-IVE interface
×
Print
Course
PROGRAMMAZIONE 1
Course ID
MF0163
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
TERENZIANI Paolo
CFU
9
Teaching duration (hours)
72
Individual study time
153
SSD
INF/01 - INFORMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Il corso ha la finalità di introdurre i fondamenti della programmazione degli elaboratori elettronici, partendo dal concetto di algoritmo e dalla descrizione dei concetti di base di un programma, per arrivare a concetti avanzati di strutture dati e di controllo dei linguaggi di programmazione. Il corso si propone, inoltre, di presentare i concetti di base del linguaggio di programmazione C impiegato a supporto dell’insegnamento della programmazione, nonché per lo svolgimento di esercitazioni pratiche in laboratorio.
The course has the goal of introducing the fundamentals of computer programming, starting from the concept of algorithm and the basic concepts of a program, and arriving to advanced concepts of data structures and control in the programming language. Moreover the course presents the basic concepts of the C programming language used to support the teaching of programming, and to perform practical exercises in the laboratory.
Testi di riferimento/Textbooks
P. Deitel, H. Deitel Il linguaggio C. Fondamenti e tecniche di programmazione, Pearson.Materiale integrativo fornito dai docenti su DIR
P. Deitel, H. Deitel Il linguaggio C. Fondamenti e tecniche di programmazione, Pearson. Additional materials on DIR.
Obiettivi formativi/Mission
Al termine del corso, lo studente deve essere in grado, dato un semplice problema di programmazione, di individuarne un algoritmo risolutivo, implementarlo in linguaggio C, eseguirlo al calcolatore. Conoscenza e comprensione: concetto di algoritmo, concetto di programma, strutture dati fondamentali (tipi scalari, vettori, puntatori, file), costrutti di base della programmazione (if-then-else, while, for, funzioni e parametri). Capacità di applicare conoscenza e comprensione: dato un problema, - individuare i dati di input da raccogliere dall'utente e i dati di output da produrre; - individuare le strutture dati necessarie per gestire tali dati; - definire un algoritmo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione; - scrivere al calcolatore il programma sorgente che implementa l'algoritmo, utilizzando un linguaggio di programmazione (C); - generare il programma eseguibile tramite la compilazione del programma sorgente, al calcolatore; - esecuzione e test del programma eseguibile, al calcolatore. Autonomia di giudizio: in modo autonomo lo studente deve riuscire ad identificare le strutture dati necessarie, definire ed implementare l'algoritmo nel linguaggio di programmazione (C), ed infine compilare ed eseguire il programma. Abilità comunicative: lo studente deve riuscire a definire un algoritmo a vari livelli di astrazione, quali il diagramma di flusso, lo pseudo-codice, il programma in linguaggio di programmazione. Inoltre si esige che il programma richieda e presenti i dati all'utente tramite messaggi comprensibili dall'utente. Capacità di apprendimento: lo studente deve essere capace di apprendere come si genera un algoritmo a partire dal problema, come si implementa l'algoritmo in C, ed infine come si compila e si esegue il programma al calcolatore.
At the end of the course, given a simple programming problem, the student must be able to define the algorithm solving the problem, implement the algorithm in C language, execute the program on the computer. Knowledge and comprehension: concepts of algorithm and program, fundamental data structures (scalar types, vector, pointers and files), basic programming constructs (if-then-else, while, for, functions and parameters ). Capacity to apply knowledge and comprehension: given a problem, - identifying input data to be collected from the user, and output data to be produced; - identifying the data structures necessary to manage such data; - defining an algorithm transforming input data in output data, by following the programming constructs; - writing on the computer the source program implementing the algorithm, using the programming language (C); - generating the executable program by compiling the source program, on the computer; - executing and testing the executable program, on the computer. Judgement autonomy: in an autonomous way the student must be able to identify the necessary data structures, define and implement the algorithm in the programming language (C), and finally compile and execute the program. Communication abilities: the student must be able to define an algorithm at several abstraction levels, such as the flow-chart, the pseudo-code, the program in the programming language. Moreover the program must require and present data to the user by means of message that the user can understand. Learning capacity: the student must be able to learn how to generate an algorithm from the problem, how to implement an algorithm in C, and finally how to compile and execute a program on a computer.
Prerequisiti/Required background knowledge
Nessuno
None
Metodi didattici/Teaching methods
Lezioni tradizionali e esercitazioni nel laboratorio informatico.
Standard lectures and programming sessions in the computer lab.
Altre informazioni/Further information
Controllo dell'apprendimento in itinere: durante il corso vengono svolte delle esercitazioni in laboratorio sotto la supervisione di un docente.
Monitoring the learning process: during the course the students will complete assigments in the computer lab under the supervision of a teacher.
Modalità di verifica dell'apprendimento/Assessment methods
L’esame e’ svolto seguendo due modalita’: con e senza l’uso del calcolatore. La prova con il calcolatore (prova di laboratorio) prevede lo sviluppo e la verifica di un programma in linguaggio C. La verifica senza calcolatore consiste in un esame scritto (obbligatorio) ed un orale (opzionale). L’esame scritto, a discrezione dello studente, puo’ essere sostenuto o tramite due prove in itinere, o con un’unica prova finale. Le prove scritte prevedono l’analisi di problemi di programmazione e lo sviluppo di diagrammi di flusso e programmi C atti a risolverli. La valutazione finale verra’ ottenuta tramite una media pesata dei risultati ottenuti nelle singole prove.
The exam follows two different modalities: with and without computer. The computer-based exam (laboratory test) requires the development and testing of a program in C. The part of exam without computer consists of a written examination (compulsory) and an oral one (optional). The written examination may be carried on as a single exam or through two intermediate written exams. The written examinations consist in the analysis of simple programming problems, and in the development of flow charts and C programs solving them. The final score is obtained through a weighted average of the scores achieved in each single exam.
Programma esteso/Content
- introduzione alla programmazione strutturata- metodologia top-down nell’analisi dei problemi e nello sviluppo dei diagrammi di flusso (e dei programmi) - concetti di base della programmazione (espressi mediante il linguaggio C): - variabili, tipi di dato; - input e output ; - primi programmi C con il solo uso di sequenze; - costrutto di selezione (if..else) e condizioni booleane; - iterazione e costrutto while; cicli for e do-while; invarianti di ciclo (informali) - funzioni e passaggio dei parametri; passaggio dei parametri per valore e per riferimento; - array e algoritmi su array; - il tipo stringa- gestione dei files; - analisi di complessità di un algoritmo.- Introduzione al sistema operativo Linux e principali comandi per la gestione dei file e dei processi, e per la compilazione ed esecuzione di programmi.
- Introduction to structured programming- Top-down methodology in the problem analysis and in the development of flow charts (and programs)- Basic programming concepts (expressed in the “C” language):- variables, data types- input and output;- esay C programs using only sequences- if-then-else and Boolean Conditions- iteration (while, for, do-while); loop invariants (not formal);- functions and parameter passing (by value and by reference)- arrays and array algorithms;- the string data type- file management- complexity analysis- Introduction to Linux. Main commands to manage files, to compile and execute programs.
Risultati di apprendimento attesi/Intended learning objectives
Deve essere capace di usare la metodologia top-down nell’analisi dei problemi. In particolare, deve aver acquisito la capacita di determinare input e output; sviluppare diagrammi di flusso; sviluppare programmi nel linguaggio C utilizzando le nozioni di: - variabili, tipi di dato; - costrutto di selezione (if..else) e condizioni booleane; - iterazione e costrutto while; cicli for e do-while; - funzioni e passaggio dei parametri; passaggio dei parametri per valore e per riferimento; - array e algoritmi su array; - il tipo stringa- gestione dei files; Deve inoltre aver acquisito la capacità di analizzare la complessità di un algoritmo, compilare, verificare ed eseguire programmi.
The students must acquire the capability of applying the top-down methodology in the problem analysis. They must be able to identify input and output, to develop flow diagrams, and C programs, using the basic notions of: - variables and data types; - if-then-else and boolean conditions - iteration (while, for, do-while); - functions and parameters (by value and by reference) - arrays, strings, files Additionally they must acquire the capability of analyzing the algorithm complexity, and of compiling, verifying and executing C programs.
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI
Course ID
MF0199
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
VALENZA Fulvio
CFU
12
Teaching duration (hours)
96
SSD
INF/01 - INFORMATICA
Course type
Attività formativa integrata
Course mandatoriety
OBB
Year
1
Period
Annuale
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
ITALIAN
Contenuti/Content Summary
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione, delle sue principali componenti hardware e della sua interfaccia verso i livelli software eseguiti su tale hardware. Il corso si articola in due moduli: il primo pone le basi introducendo la rappresentazione binaria di tutti i tipi di dati (numeri, testo, immagini, grandezze analogiche); i componenti base dell’hardware di un calcolatore e in particolare la struttura interna del processore; l’interazione tra il processore e la memoria centrale e i principali dispositivi di input/output. Il secondo analizza più dettagliatamente la struttura interna di uno specifico processore, semplice ma realistico, il suo linguaggio macchina e la relativa implementazione tramite microinterprete; vengono discusse possibili varianti di tale processore, via via più efficienti; viene inoltre presentato il meccanismo di funzionamento della memoria cache e in generale tutta la gerarchia delle memorie di un sistema di calcolo; infine segue un’analisi generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina e dei modi alternativi di realizzare l’interazione tra il processore e i dispositivi di I/O.
The layered architecture of modern computers is introduced. The main hardware components are presented and their interface towards the upper software layers is explained. The course comprises two units: the first one introduces the basic concepts, in particular the binary representation of data (numbers, text, images, analog quantities); the basic hardware components of a computer, in particular the processor architecture; the interaction between the processor, the memory and the main I/O devices. The second unit analyzes in detail a processor architecture, which is relatively simple but realistic, including its Instruction Set Architecture which is implemented through a microinterpreter; alternative internal organizations of the processor are discussed and their efficiency is compared; the basic principles about the cache memory and in general about the memory hierarchy of a computer system are introduced; finally the Instruction Set Architecture (ISA) level is introduced, with the analysis of the main characteristics of machine languages and the possible interaction modes between the processor and the I/O devices.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi/Mission
Conoscere i principali componenti di un sistema di calcolo, comprendere i principi di base del loro funzionamento e delle loro interazioni e la codifica binaria di tutti i tipi di dato elaborati e memorizzati dai calcolatori. Comprendere i vantaggi di un’architettura stratificata che permette di realizzare funzioni complesse componendo funzioni più semplici, realizzate tramite hardware o tramite software. Comprendere l’impatto che l’evoluzione tecnologica ha avuto sull’evoluzione dell’organizzazione dei sistemi di calcolo, sviluppare l’abilità di confrontare le caratteristiche di diverse organizzazioni di sistemi di calcolo (o di singoli componenti) e valutarne le differenze in termini di costo e prestazioni. Conoscere l’architettura interna di un processore, le tecniche di ottimizzazione, le principali caratteristiche dei linguaggi macchina, ed il funzionamento della gerarchia delle memorie. Conoscere le principali tipologie di architetture parallele, comprendendo le problematiche relative alla gestione della memoria e l’impatto sulla programmazione.
Know the main components of a computer, understand the basic operational principles and the interactions among such components, as well as the binary encoding of any data type stored and processed by computers. Understand the advantages of a layered architecture, allowing to implement complex functions by composing simpler functions which can be implemented in hardware or in software. Understand the impact of technological evolution on the computer organization evolution, develop the ability to compare the characteristics of different computer architecture (or computer component) organizations and to evaluate the difference in cost and performance. Know the internal architecture of a processor, the optimization techniques, the main features of the machine languages, and how the memory hierarchy works. Know the main types of parallel architectures, and understand the problems related with the memory management and the impact on the programming style. Acquire the skills for autonomous learning of specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation on-line).
Prerequisiti/Required background knowledge
Il corso è introduttivo, quindi non ci sono specifici requisiti. I contenuti del primo modulo sono propedeutici a quelli del secondo, quindi è necessario studiare i due moduli in sequenza.
The course is introductory, so there are no specific requirements. The first unit should be studied before proceeding to the second one.
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti tramite lezioni frontali ed integrate con esercitazioni pratiche basate sull’uso di vari strumenti software allo scopo di far osservare tramite esempi concreti quanto esposto a lezione. Per ogni argomento trattato vengono proposti esercizi o quiz formativi. Vengono inoltre proposti incontri a piccoli gruppi alla presenza di un tutor, per svolgere e discutere esercizi (simili a quelli proposti nelle prove scritte).
The topics of the course are mainly presented through class lectures that may be integrated with practical exercises based on various software tools with the aim of allowing to observe through examples the concepts presented in the lectures. After presenting each topic the students are challenged with exercises and formative quizzes. Tutored meetings in small groups are proposed, to develop and discuss exercises (similar to those included in the written exam).
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, esempi di testi d’esame, esercizi o quiz on-line utili ai fini dell’autovalutazione, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi. Tramite un forum specifico del corso vengono pubblicate informazioni generali sul corso, avvisi relativi allo svolgimento del corso e informazioni riguardanti gli esami. Inoltre sono attivi forum dove gli studenti possono porre domande sugli argomenti del corso e sugli esercizi proposti, e rispondere a domande pubblicate da altri studenti.
It is possible to download electronic copy of all slides of the lectures, perform self-assessment on-line tests or exercises, the emulator of the MIC1 architecture, the associated micro-interpreter of IJVM and some programming examples. It is possible to find general information on the course and news about the lectures and the exam organization on the e-learning platform DIR. Specific forums can be used by students to ask questions on course topics or exercises, or to provide answers posted by other students.
Modalità di verifica dell'apprendimento/Assessment methods
L’esame può essere scritto oppure orale (di norma è scritto nella prima sessione d’esame dopo lo svolgimento del corso, orale nelle altre sessioni che coinvolgono pochi studenti). Nel caso il compito sia scritto può essere proposta una integrazione orale (per esempio nel caso di compito quasi sufficiente per raggiungere la sufficienza piena). Possono essere proposte prove in itinere (come supporto al superamento dell’esame finale, che possono anche assumere la forma di esercizi da svolgere in laboratorio). La prova comprende da quattro a sei domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti. Ciascuno dei due moduli ha un suo esame ed è necessario conseguire un esito sufficiente in ciascun modulo per superare l’esame complessivo. Il voto finale è stabilito in modo collegiale dai docenti dei due moduli, tenuto conto dell’esito ottenuto in ciascun modulo.
The final test can be either oral or written (usually it is written in the first exams session, oral in the other sessions involving a few students). When the exam takes the form of a written test, an oral integration may be required (for instance this could be the case when the written test grade is not fully sufficient, and the oral integration may allow to improve the grade and pass the exam). ). Intermediate tests can be organized (as a facilitation to pass the exam early at the end of the course) that may comprise lab exercises. The test includes four to six questions each of which possibly structured into several points. The questions may also take the form of exercises testing the ability to apply the learned concepts to practical examples. Each unit has its own exam, and a sufficient final result is required in each unit in order to pass the exam of the whole course. The final grade is agreed upon by the teachers of the two units, taking into account the final result obtained in each one.
Programma esteso/Content
Questo corso non prevede conoscenze preliminari, quindi nel primo modulo viene tracciata in breve l’evoluzione storica dei calcolatori sottolineando l’impatto della tecnologia nei passaggi da una generazione alla successiva; in seguito viene introdotte la terminologia di base necessaria per poter affrontare più in dettaglio la descrizione dell’organizzazione interna dei moderni calcolatori, ponendo in risalto la struttura stratificata; in particolare vengono descritti ad alto livello il processore (CPU – Central Processing Unit), la memoria centrale e i dispositivi di I/O. Viene definita la codifica binaria di numeri naturali, numeri interi e frazionari, di testi, di immagini e di grandezze analogiche. Vengono poi introdotti i circuiti logici combinatori e sequenziali dopo aver presentato l’algebra di Boole e aver mostrato la corrispondenza tra espressioni booleane e circuiti composti da porte logiche. Vengono illustrati esempi di circuiti comuni e il loro impiego all’interno di un processore. Vengono anche discusse le modalità di interazione tra i componenti di un calcolatore (cenni sui protocolli dei bus). Su queste basi prosegue il secondo modulo che approfondisce la struttura del processore (i cui componenti di base sono stati studiati nel primo modulo) sviluppando un esempio completo di processore microprogrammato mostrando come il suo linguaggio macchina possa essere realizzato tramite un microinterprete a partire da un’architettura relativamente semplice ma realistica. Vengono poi discusse versioni successive del processore di esempio che introducono miglioramenti nelle prestazioni, secondo un percorso evolutivo che riflette l’evoluzione dei moderni processori. Con questo approccio vengono presentate le architetture basate su pipeline, e si accenna a ulteriori evoluzioni (come la predizione dei salti, l’esecuzione speculativa e fuori ordine). Vengono anche affrontate le problematiche della differenza di prestazioni tra CPU e memoria centrale, introducendo la cache (nelle sue diverse declinazioni) e discutendone l’efficacia attraverso i concetti di località spaziale e temporale. Segue una panoramica sulle caratteristiche del “linguaggio macchina” (Instruction Set Architecture) approfondendo i linguaggi CISC, RISC, load/store. Viene, quindi, introdotta la tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie. Il modulo si chiude con la descrizione di alcuni tipi di architetture parallele, ed analisi della problematica della coerenza delle memorie cache nei multiprocessori.
This course doesn’t have specific prerequisites. The first unit starts with a brief review of the historical evolution of computers, highlighting the impact that some technological advances had on the evolution from each generation to the next one. Then the basic terminology needed to dive into the details of the internal layered organization of modern computers is introduced; in particular the CPU (Central Processing Unit), the central memory and the I/O devices are described at an high level. The binary encoding of natural, integer and fractional numbers as well as text, images and analog quantities is defined. The combinatorial and sequential logical circuits are then introduced, after having presented the Boolean algebra, showing the correspondence between any Boolean expression and circuits composed of logical gates. Examples of common circuits are discussed and their use within the processor is explained. The interaction modes among the computer components are also described (including some examples of bus protocols). The second unit builds on the concepts introduced in the first one and develops the details of a microprogrammed processor structure (whose basic components are presented in the first unit) showing how its machine language can be implemented through a microinterpreter based on the elementary operations of a simple but realistic hardware architecture. Possible variations on the theme of this first architecture are then discussed, each one introducing new performance improvements, following a path that resembles the evolution of modern processors. This step-by-step approach allows to introduce the pipeline-based architectures (complemented with hints on further improvements through techniques as branch prediction, speculative and out-of-order execution). The performance gap between the speed of CPU and central memory is also discussed, leading to the introduction of the cache memory (with its variants) and studying its effectiveness based on the concepts of temporal and spatial locality. Next an overview on the features of machine languages (the so called Instruction Set Architecture - ISA) is proposed, including the classification in CISC, RISC or Load/Store ISA. The virtual memory technique is also introduced, in the framework of the memory hierarchy. Finally some examples of parallel architectures are presented, discussing the problem of cache coherence in multiprocessors.
Risultati di apprendimento attesi/Intended learning objectives
Modulo 1: Saper ottenere le codifiche binarie dei numeri interi con segno, dei numeri frazionari in virgola mobile secondo lo standard IEEE 754. Enunciare e spiegare le principali leggi dell’algebra di Boole. Saper rappresentare una funzione booleana in varie forme normali SP e PS e semplificare tali forme tramite operazioni algebriche o con le mappe di Karnaugh. Saper definire la tavola di verità delle principali porte logiche. Saper ricavare un circuito combinatorio e sequenziale corrispondente ad una data espressione booleana. Saper descrivere quale funzione booleana realizza un dato circuito. Saper riconoscere alcuni circuiti logici combinatori e sequenziali di base e descrivere la funzione che realizzano. Descrivere i principali componenti di un sistema di calcolo, indicarne le caratteristiche salienti, i meccanismi di funzionamento e le modalità di interazione. Modulo 2: Sapere descrivere come è eseguita un’istruzione su MIC1 e sapere analizzare le diverse tecniche per l’aumento delle prestazioni. Essere in grado di scrivere brevi programmi in linguaggio macchina (IJVM) e di estendere il micro-interprete. Conoscere le caratteristiche generali dei linguaggi macchina (es. tipi di istruzioni, modalità d’indirizzamento), nelle architetture CISC, RISC e load/store. Sapere descrivere l’uso della gerarchia delle memorie, comprendendo l’importanza del principio della località spaziale e temporale. Essere in grado di spiegare ed applicare le tecniche di funzionamento della cache e della memoria virtuale tra memoria centrale e memoria secondaria. Comprendere la differenza fra indirizzi virtuali e indirizzi fisici e le tecniche per la traduzione dai primi ai secondi. Acquisire la capacità di aggiornarsi sulle principali soluzioni di architetture parallele.
Module 1: Knowing how to obtain the binary encodings of signed integers, and fractional floating-point numbers according to the IEEE 754 standard. State and explain the main laws of Boolean algebra. Knowing how to represent a Boolean function in various normal forms SP and PS and simplify these forms through algebraic operations or with Karnaugh maps. Knowing how to define the truth table of the main logic gates. Knowing how to derive a combinatorial and sequential circuit corresponding to a given Boolean expression. Knowing how to describe which Boolean function makes a given circuit. Knowing how to recognize some basic combinational and sequential logic circuits and describe the function they perform. Describe the main components of a computing system, and indicate the salient characteristics, the operating mechanisms, and the methods of interaction. Unit 2: Describe how an instruction is executed in MIC1 and analyze the techniques allowing to improve performance. Acquire the ability to develop short programs in machine language (IJVM) and to extend the micro-interpreter with the introduction of new instructions. Know the main characteristics of a machine language (e.g., instruction types, instruction formats, addressing modes). Understand the characteristics and the differences of the ISA in the CISC, RICS and load/store architectures. Know the basic concepts behind the memory hierarchy, and understand the relevance of spatial locality and temporal locality principles in this context. Acquire the ability to explain and apply the operational techniques of the cache between CPU and central memory and of the virtual memory between central memory and secondary memory. Understand the difference between (virtual) address space and (physical) memory location and the related mapping techniques. Achieve the capability to orienteering and autonomously learning the new trends about parallel architectures.
Modules
Course ID Course SSD Teachers Agenda web
MF0200ARCHITETTURA 1 INF/01 - INFORMATICA Valenza Fulvio
MF0201ARCHITETTURA 2 INF/01 - INFORMATICA Moiso Corrado
Show parent course details
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1
Course ID
MF0200
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
VALENZA Fulvio
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
Italiano
Italian
Contenuti/Content Summary
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione, delle sue principali componenti hardware e della sua interfaccia verso i livelli software eseguiti su tale hardware.
The architecture of modern computers is introduced emphasizing its layered structure. The main hardware components are presented and their interface towards the upper software layers is explained.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi/Mission
Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi alcuni semplici codici ridondanti per la rilevazione e la correzione di errori. Conoscere e comprendere le definizioni di base dell’algebra di Boole, le sue leggi e la relazione tra espressioni di tale algebra e i circuiti logici. Conoscere i principali componenti di un sistema di calcolo, comprendere i principi di base del loro funzionamento e delle interazioni. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Comprendere l’impatto che l’evoluzione tecnologica ha avuto sull’evoluzione dell’organizzazione dei sistemi di calcolo. Saper applicare le procedure di codifica e decodifica dell’informazione, della rilevazione e correzione degli errori. Saper esprimere funzioni logiche tramite espressioni booleane e trasformare queste ultime in circuiti. Saper indicare quale funzione logica realizza un dato circuito combinatorio. Sviluppare l’abilità di confrontare le caratteristiche di diverse organizzazioni di sistemi di calcolo (o di componenti di un sistema di calcolo) e valutarne le differenze in termini di costo e prestazioni. Comprendere la sintassi e la semantica operazionale di un semplice linguaggio macchina e la relazione tra i linguaggi macchina e i linguaggi di programmazione di più alto livello. Saper realizzare alcuni semplici programmi in linguaggio macchina e simularne l’esecuzione. Acquisire la capacità di aggiornarsi su aspetti specifici e temi più avanzati dell’architettura dei sistemi di calcolo, in particolare facendo ricorso a risorse disponibili on-line.
Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including some simple redundant codes for errors detection and correction. Know and understand the basic definitions and laws of Boolean algebra, and the relation between Boolean algebra expressions and logic circuits.Know the main components of a computer, understand the basic operational principles and the interactions between such components. Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Understand the impact of technological evolution on the evolution of computer organization. Apply the procedures for encoding and decoding information, and to detect and correct errors. Know how to express logical functions through Boolean algebra expressions and how to transform such expressions into logic circuits. Be able to describe the logical function implemented by a logic circuit. Develop the ability to compare the characteristics of different computer architecture organizations (or of different computer component organizations) and to evaluate the difference in cost and performance. Understand the syntax and operational semantics of a simple machine language end the relation between machine languages and high level programming lenguages. Be able to implement simple machine language programs and to simulate their execution. Acquire the skills for autonomous learning specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation on-line).
Prerequisiti/Required background knowledge
Nessuno
None
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio (allo scopo di osservare la rappresentazione in memoria di diversi tipi di dato, di disegnare e simulare circuiti logici combinatori e sequenziali, di sperimentare l’esecuzione di semplici programmi in linguaggio macchina tramite un emulatore).
The topics of the course are mainly presented through class lectures that may be integrated with lab sessions (to experiment the internal representation of various data types, to design and simulate combinatorial and sequential , to experiment the execution of simple machine language programs through an emulator).
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, esempi di testi d’esame, informazioni generali sul corso e avvisi relativi allo svolgimento del corso e sugli esami.
It is possible to download electronic copy of all slides of the lectures, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR .
Modalità di verifica dell'apprendimento/Assessment methods
L’esame può essere scritto oppure orale (di norma è scritto nella prima sessione d’esame dopo lo svolgimento del corso, orale nelle altre sessioni). Nel caso il compito sia scritto può essere richiesta una integrazione orale (per esempio nel caso di compito quasi sufficiente per raggiungere la sufficienza piena). Possono essere proposte prove in itinere (sostitutive di parte dell’esame finale che possono anche assumere la forma di esercizi da svolgere in laboratorio). La prova comprende domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti.
The examination can be either oral or a written test (usually it is written in the first exams session, oral in the other sessions). When the exam takes the form of a written test, it is possible to ask for an oral integration (for instance this could be the case when the written test grade is not fully sufficient, it is possible to ask for an oral integration to improve the grade to pass the exam). The test includes questions each of which possibly structured into several points. The questions may also take the form of an exercise testing the ability to apply the learned concepts to practical examples.
Programma esteso/Content
Breve panoramica sulla evoluzione storica dei sistemi di calcolo (dalla Macchina Analitica di Charles Babbage ai giorni nostri).Codifica dell’informazione: codifica binaria dei numeri interi con e senza segno. Trasformazione dalla rappresentazione binaria alla rappresentazione ottale ed esadecimale e viceversa. Operazioni aritmetiche con numeri binari. Codifica dei numeri frazionari: virgola fissa e virgola mobile (standard IEEE 754). Operazioni aritmetiche con numeri in virgola mobie. Codifica del testo (ASCII, UNICODE, UTF-8). Codici ridondanti: bit di parità, codice di Hamming. Codifica delle immagini (mappa di bit, profondità e risoluzione).Algebra di Boole. Porte logiche AND, OR, NOT, NAND e NOR. Dalle funzioni logiche ai circuiti combinatori (tavole di verità, espressioni in forma normale Somma di Prodotti e Prodotto di Somme, semplificazione applicando le leggi dell’algebra o tramite mappe di Karnaugh). Esempi di circuiti: Decoder, Multiplexer, Half Adder, Full Adder, ALU, ecc. Circuiti sequenziali: Latch, Flip-Flop, registri e memorie.Principali componenti di un calcolatore (CPU, Memoria RAM, Dischi magnetici, RAID, Dischi ottici, BUS, e varie periferiche. Cenni sui principi di funzionamento.CPU: ciclo di fetch-decode-execute. Processori CISC e RISC. CPU con struttura a pipeline (cenni). Introduzione al linguaggio macchina (IJVM) dell’architettura MIC1.
Brief review of the historical evolution of computers (from Charles Babbage’s Analytical Engine up to current computers).Information encoding: binary encoding of integer numbers, both unsigned and signed. Transformation from binary to octal and hexadecimal representation and viceversa. Arithmetic operations with binary numbers. Encoding of the fractional numbers: fixed point and floating point (according to IEEE 754 standard). Text encoding (ASCII, Unicode, UTF-8). Redundant codes: parity bit, Hamming (single) error correcting code. Images encoding (bitmap, image resolution and depth).Boolean algebra, AND, OR, NOT, NAND, NOR gates. From logical functions to combinatorial circuits (truth tables, sum of products and product of sums normal form expressions, simplification by means of algebra laws, or through Karnaugh’s maps).Examples of circuits: Decoder, Multiplexer, Half Adder, Full Adder, ALU, etc. Sequential circuits: Latch, Flip-flop, registers and memories.Main components of a computer (CPU, RAM memory, Magnetic disks, RAID, Optical disks, BUS, various peripherals) and their basic operating principles.Central Processing Unit: fetch-decode-execute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction to the machine language (IJVM) of the MIC1 architecture.
Risultati di apprendimento attesi/Intended learning objectives
Descrivere l’evoluzione storica dei sistemi di calcolo sottolineando il legame tra evoluzione tecnologica ed evoluzione dell’organizzazione di tali sistemi.Spiegare la rappresentazione posizionale in base r di un numero (intero o frazionario).Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario senza segno da base 10 a base 2, 8 o 16 e viceversa, e il procedimento per ottenere la codifica binaria in modulo e segno o in complemento a due di un numero intero con segno. Saper eseguire operazioni aritmetiche con numeri binari.Descrivere e saper applicare il procedimento per la trasformazione di un numero frazionario nella sua rappresentazione in virgola mobile secondo lo standard IEEE 754. Descrivere e applicare i metodi per la rilevazione e per la correzione di errori singoli utilizzando bit di parità o codici di Hamming.Enunciare e spiegare le principali leggi dell’algebra di Boole. Saper rappresentare una funzione booleana in varie forme (forme normali SP e PS e semplificate). Saper ricavare un circuito combinatorio corrispondente ad una data espressione booleana. Saper descrivere quale funzione booleana realizza un dato circuito. Saper riconoscere alcuni circuiti logici combinatori e sequenziali di base e descrivere la funzione che realizzano. Descrivere i principali componenti di un sistema di calcolo, indicarne le caratteristiche salienti, i meccanismi di funzionamento e le modalità di interazione. In particolare descrivere le componenti della CPU e il ciclo fetch-decode-execute, la differenza tra architetture CISC e RISC e l’idea alla base delle architetture a pipeline. Descrivere il set d’istruzioni del linguaggio IJVM, il linguaggio macchina di MIC1, realizzare alcuni semplici programmi in tale linguaggio e simularne l’esecuzione.
Describe the historical evolution of computers highlighting the impact of technology on their organization. Explain the positional representation of numbers in any base r (both integer and fractional numbers). Describe and apply the procedures for transforming a fractional number from decimal to base 2, 8 or 16 and viceversa. Describe and apply the procedure to obtain the binary encoding of signed integers in the two representation: sign and modulus or two’s complement. Execute arithmetic operation with binary numbers.Describe and apply the procedure to transform a fractional number into the floating point representation according to standard IEEE 754.Describe and apply the method to detect and correct single errors using a parity bit or Hamming’s error correcting code.Enunciate and explain the main Boolean algebra laws. Represent a Boolean function in different form (SP and PS normal forms, and simplified). Derive a logical circuit for a given Boolean algebra expression. Given a circuit, state which Boolean function it implements. Recognize the basic combinatorial and sequential circuits and describe the function they implement. Describe the main components of a computer, list the main characteristics, how they work and how they interact. In particular describe the CPU main components and the fetch-decode-execute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the instruction set of IJVM, the machine language of MIC1, implement some simple programs using such language and simulate their execution.
Show parent course details
×
Print
Course
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2
Course ID
MF0201
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
MOISO CORRADO
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
INF/01 - INFORMATICA
Course type
Modulo di sola Frequenza
Course mandatoriety
OBB
Course category
B
Year
1
Period
Secondo Semestre
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
ITALIANO
English
Contenuti/Content Summary
Proseguimento dello studio iniziato nel modulo I dell'architettura di un moderno sistema di elaborazione, strutturato come un insieme di macchine virtuali sovrapposte. In particolare, in questo modulo si descrive come usare le componenti hardware studiate nel modulo I per progettare il processore micro-programmato (non reale, ma verosimile) MIC1 e del suo linguaggio MAL. Inoltre, si analizza come realizzare il linguaggio macchina IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1, utilizzando un micro-interprete scritto in MAL. Sono, quindi, illustrate diverse versioni della architettura MIC1/IJVM con prestazioni via via migliori, tramite l’introduzione di varie tecniche di ottimizzazione delle prestazioni dei processori (pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache). Segue una panoramica generale sul livello della Instruction Set Architecture (ISA), con lo studio delle caratteristiche dei linguaggi macchina, con un approfondimento sull’ISA dei processori di tipo load/store. Inoltre, il modulo introduce anche il concetto di memoria virtuale (proprio del livello del sistema operativo) inquadrandolo nel discorso generale della gerarchia delle memorie e sottolineando similitudini e differenze rispetto ai principi e meccanismi di funzionamento della cache.
Continuation of the investigation of the computing architectures, organized as a layered set of virtual machines. This module describes how to use the hardware components addressed in Module I to design MIC1, a microprogrammed processor (not real but plausible) with its language MAL. Moreover, it analyses how to implement the IJVM machine language, derived from the Java bytecode Virtual machine, on the MIC1 architecture, by means of a micro-interpreter written in MAL. Different versions of MIC1/IJVM architecture are illustrated with progressively better performances. In addition, various process optimization techniques are illustrated (pipelines, jump prediction mechanisms, out of order execution, cache memories). The following is a general overview of the Set Architecture (ISA) instruction level, with the analysis of the main characteristics of machine languages and the description of the load/store processors. In addition, the module introduces operating system layer and the concept of virtual memory in the context of the hierarchy of memories in a computing architecture: in particular, the analogies and the differences with the cache are addressed.
Testi di riferimento/Textbooks
A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
A.S. Tanenbaum, T.Austin: "Computer Architecture: a structural approach", VI Edizione, Pearson Education Italia, 2013.
Obiettivi formativi/Mission
Conoscere l’architettura interna di un processore, le tecniche di ottimizzazione (quali pipeline, meccanismi di predizione salti, esecuzione fuori ordine, memorie cache), comprendendo le differenze delle architetture micro-programmate rispetto a quelle che eseguono direttamente in hardware il linguaggio macchina. Saper descrivere le caratteristiche generali di un linguaggio macchina (tra cui tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e saper analizzare motivazioni, vantaggi e svantaggi delle diverse scelte. Comprendere la tecnica della memoria virtuale collocandola nel quadro della gerarchia delle memorie e studiando la sua realizzazione con la tecnica della paginazione
Know the internal organization of a processor and some architectural variants (e.g., pipeline, jump prediction, out-of-order execution, cache memories) can significantly change the speed of execution; understand how to distinguish between microprogrammed architectures and architectures that execute machine language instructions directly in hardware. Knowing how to describe the general characteristics of a machine language (types of instructions, instruction format, addressing methods) and discuss motivations, advantages, and disadvantages of different choices. Understand the virtual memory technique by placing it within the hierarchy of memories and by analyzing its implementation according to the paging technique.
Prerequisiti/Required background knowledge
Conoscenza dei concetti studiati nel primo modulo del corso.
Knowledge of topics studied in module 1
Metodi didattici/Teaching methods
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali. Alcune tematiche (es. le caratteristiche e la programmazione MAL, le caratteristiche e la programmazione IJVM, il funzionamento del micro-interprete IJVM su MIC1) sono esemplificate per mezzo di esercitazioni utilizzando un emulatore dell’architettura MIC1 e del relativo micro-interprete di IJVM. Durante il corso sono proposti esercizi che gli studenti dovranno sviluppare in autonomia per verificare il loro livello di apprendimento e per stimolare lo spirito critico, tramite l’elaborazione di soluzioni originale e/o alternative. Il corso è completato da un tutoraggio in cui saranno sviluppate alcune esercitazioni di gruppo.
The topics covered in the course are mainly exposed through lectures Some topics (e.g., MAL characteristics and programming, IJVM characteristics and programming, the behavior of MIC1 micro-interpreter for IJVM) are exemplified by means of experimentation through an emulator of the MIC1 architecture and of the associated IJVM micro-interpreter. During the course, some exercises are submitted to be developed autonomously by students to verify their level of learning and stimulate a critical spirit, through the development of original and/or alternative solutions. The course is complemented by a tutoring class in which some exercises will be proposed and developed in group.
Altre informazioni/Further information
Sulla piattaforma DIR sono disponibili: la copia elettronica delle slide utilizzate a lezione, una selezione dei testi d’esame, l’emulatore dell’architettura MIC1, con il relativo micro-interprete di IJVM ed esempi di programmi in MAL e IJVM, informazioni generali sul corso ed avvisi relativi allo svolgimento del corso e sugli esami.
On the DIR platform are available: the electronic copy of the slides used in the lectures, a selection of examples of exam texts, the emulator of the MIC1 architecture the associated micro-interpreter of IJVM and some MAL and IJVM programming examples, general information on the course and notices related to the course and exams.
Modalità di verifica dell'apprendimento/Assessment methods
La verifica dell’apprendimento è svolta in forma scritta; è possibile richiedere una integrazione orale, ad esempio nel caso in cui il voto sia quasi sufficiente. Il compito include da quattro a sei domande ciascuna delle quali può essere strutturata in più punti. Le domande possono anche assumere la forma di esercizi per valutare la capacità di applicare ad esempi pratici i concetti teorici appresi nel corso. Ad ogni domanda è assegnato un voto massimo (in genere da 5 a 7). La valutazione tiene conto della correttezza della risposta e del livello di completezza. La sufficienza si ottiene se lo studente dimostra di avere appreso e di sapere applicare gli elementi chiave indirizzati dalla domanda. Il voto complessivo per la valutazione dell’apprendimento degli argomenti di questo modulo è la somma dei voti ottenuti in ogni domanda.
The assessment of learning is carried out in written form. It is possible to request an oral supplement, for example if the vote is almost sufficient. The test includes four to six questions, each of which can be structured in multiple points. The questions can also take the form of exercises to evaluate the ability to apply the theoretical concepts learned in the course to practical examples. Each question is assigned a maximum grade (generally from 5 to 7). The evaluation considers the correctness of the answer and the level of completeness. A sufficient score is obtained if the student demonstrates that he has learned and knows how to apply the key elements addressed by the question. The final grade for the learning assessment of contents addressed by this module is the sum of the marks obtained in each question.
Programma esteso/Content
Approfondimento della architettura a livelli introdotta nel modulo I: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione Assembler. Analisi di MIC1 e del suo linguaggio di programmazione MAL, visto come un esempio di architettura micro-programmata Descrizione della realizzazione di IJVM, una semplificazione del byte-code della Java Virtual Machine, sull’architettura MIC1, mediante lo sviluppo di un micro-interprete implementato nel linguaggio MAL. Esercitazioni di sviluppo ed esecuzione di programmi in MAL ed in IJVM con un emulatore di MIC1. Studio delle tecniche per migliorare le prestazioni degli elaboratori, mediante l’introduzione di una unità di prelievo e della pipeline: analisi della loro introduzione nelle architetture MIC2, MIC3 e MIC4. Tecniche di ottimizzazione delle prestazioni degli elaboratori: memorie cache, predizione dei salti, esecuzione fuori ordine. Analisi delle caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento, la gestione delle chiamate a procedura. Caratteristiche dell’ISA dei processori di tipo load/store. Studio delle tecniche per l’interazione tra il processore ed i dispositivi di Input/Output. Analisi e comparazione di architetture e linguaggi macchina di processori reali. Introduzione della tecnica della memoria virtuale, collocandola nel quadro della gerarchia delle memorie: confronto con la cache ed approfondimento della tecnica di paginazione.
Refinement of the description of the layered architecture introduced in module I: hardware level, micro-architecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. Analysis of MIC1 and of MAL, the related programming language, as an example of a microprogrammed architecture. Description of the implementation of IJVM, derived from the Java bytecode Virtual machine, on MIC1 by means of a micro-interpreter implemented in MAL. Exercises on MAL and IJVM programming and execution by means of a MIC-1 emulator equipped with a IJVM compiler and micro-interpreter. Investigation of techniques to improve performance, by means of the introduction of a fetch unit and pipeline: analysis of their adoption in MIC2, MIC3 and MIC4 architectures. Optimization techniques to improve performance: jump prediction, out-of-order execution, cache memories. Characteristics of machine languages ​​(Instruction Set Architecture): data types, types of instructions, instruction format, addressing mode, handling of procedure calls. Characteristics of load/store machine ISA. Analysis of solutions for interaction among CPU and Input / Output devices. Analysis and comparison of architectures and machine languages ​​of real processors. Introduction to virtual memory, in the context of memory hierarchy: comparison with the cache, and in-depth analysis on virtual memory based on paging technique.
Risultati di apprendimento attesi/Intended learning objectives
Sapere spiegare l’organizzazione di un microprocessore e le sue principali unità funzionali. Sapere descrivere come è eseguita un’istruzione in questo tipo di macchina e sapere analizzare le diverse tecniche per l’aumento delle prestazioni. Essere in grado di realizzare la conversione dalla rappresentazione simbolica di istruzioni di linguaggio macchina a livello simbolico, orientato al programmatore, al formato binario interno alla macchina. Essere in grado di scrivere brevi programmi in linguaggio macchina (MAL and IJVM) e di estendere il micro-interprete introducendo nuove istruzioni Conoscere le caratteristiche generali di un linguaggio macchina (tra cui tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento). Comprendere le caratteristiche e le differenze degli ISA nelle architetture CISC, RISC e load/sore. Acquisire le competenze necessarie per analizzare e confrontare i linguaggi macchina esistenti. Sapere descrivere l’uso della gerarchia delle memorie, comprendendo l’importanza del principio della località spaziale e temporale. Essere in grado di applicare le tecniche della cache tra CPU e RAM e della memoria virtuale tra RAM e memoria secondaria. Comprendere la differenza tra spazio degli indirizzi (virtuali) e locazioni di memoria (fisica) e le relative tecniche di corrispondenza.
Explain the organization of a micro-processor and its main functional units. Describe how it is performed an instruction in this type of machine know analysis the techniques to improve performance. Be able to perform the conversion from the symbolic representation of machine language instructions, oriented to programming, to the binary format inside the machine. Be able to develop short programs in machine language (MAL and IJVM) and to extend the micro-interpreter with the introduction of new instructions. Know the main characteristics of a machine language (e.g., instruction types, instruction formats, addressing modes). Understand the characteristics and the differences of the ISA in the CISC, RISC and load/store architectures. Achieve the necessary skills to analyze and compare existing machine languages. Know the use of the memory hierarchy, by understanding the relevance of spatial locality and temporal locality principles. To be able to apply the technique of cache between CPU and RAM and of virtual memory between RAM and secondary memory. To understand the difference between (virtual) address space and (physical) memory location and the related mapping techniques.
×
Print
Course
EPT ENGLISH PLACEMENT TEST - AL
Course ID
MF0564
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
PELLEGRINI Serena
Teaching duration (hours)
20
SSD
NN -
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
D
Year
1
Period
Annuale
Site
ALESSANDRIA
Grading type
G
Lingua insegnamento/Teaching language
INGLESE
English
Contenuti/Content Summary
Corso di lingua inglese livello B1 (20 ore).
English Course, Level B1 (20 hours).
Testi di riferimento/Textbooks
GRAMMAR AND VOCABULARY FOR THE REAL WORLD OXFORD ISBN 978 0 19 481030 2 Answer Key, Student Book + Answer Book + Ebook. Altro materiale sarà reperibile alla pagina DIR del corso: MF0564 - EPT ENGLISH PLACEMENT TEST - AL 2021/2022
GRAMMAR AND VOCABULARY FOR THE REAL WORLD OXFORD ISBN 978 0 19 481030 2 Answer Key, Student Book + Answer Book + Ebook. Further material can be found on the DIR page of the course: MF0564 - EPT ENGLISH PLACEMENT TEST - AL 2021/2022
Obiettivi formativi/Mission
Il corso mira a sviluppare la conoscenza della lingua inglese per il raggiungimento del livello di competenza linguistica B1. Il corso si pone i seguenti obiettivi: comprendere testi scritti e orali; conoscere e saper usare adeguatamente le regole grammaticali; conoscere e comprendere una discreta varietà di lessico.
The course aims at developing the linguistic competence to achieve a level of knowledge B1. The specific objectives are the following: reading and listening comprehension; suitable knowledge and use of grammar rules; understanding and use of a broader lexis.
Prerequisiti/Required background knowledge
Il corso è dedicato agli studenti che al termine del Placement Test abbiano ricevuto una valutazione inferiore a B1. Livello A1-A2.
The course is for those student who have passed the Placement Test with a A1-A2 level.
Metodi didattici/Teaching methods
Lezioni (in presenza/online), esercitazioni sia su libro sia online.
Classes will take place in class and online by means of tasks online- or book-based.
Modalità di verifica dell'apprendimento/Assessment methods
Esame online reperibile al seguente link: https://esami.dir.uniupo.it/course/view.php?id=52 L’esame si compone di tre parti: Reading, Listening e Use of English. La prova sarà disponibile in 8 giornate: ogni venerdì nei mesi di giugno e luglio 2022 dalle 9 alle 18 (per un totale di 8 appelli).
The online exam can be found at the following link: https://esami.dir.uniupo.it/course/view.php?id=52 It is composed of 3 parts: Reading, Listening and Use of English. The test will be available in 8 days: every Friday of June and July 2022, from 8am to 6pm.
Programma esteso/Content
Use of English: Present simple Present continuous Past simple Past continuous Present perfect simple Past perfect simple Future (simple, continuous and “going to”) Modal verbs Infinitives Gerunds Passive forms (present, past simple, future with will) Conditionals (zero, first and second) Interrogatives Pronouns (personal, reflexive, etc.) Prepositions (location, time, etc.) Adverbs Comparative and superlative forms Quantifiers Simple phrasal verbs Topics: Daily life Education Entertainment and media Environment Food Hobbies and leisure Personal feelings, opinions and experiences Places Social interaction Sport Travel and holidays Work and Jobs Etc
Use of English: Present simple Present continuous Past simple Past continuous Present perfect simple Past perfect simple Future (simple, continuous and “going to”) Modal verbs Infinitives Gerunds Passive forms (present, past simple, future with will) Conditionals (zero, first and second) Interrogatives Pronouns (personal, reflexive, etc.) Prepositions (location, time, etc.) Adverbs Comparative and superlative forms Quantifiers Simple phrasal verbs Topics: Daily life Education Entertainment and media Environment Food Hobbies and leisure Personal feelings, opinions and experiences Places Social interaction Sport Travel and holidays Work and Jobs Etc
×
Print
Course
EPT ENGLISH PLACEMENT TEST VC
Course ID
MF0565
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
KALININA IRINA
Teachers
Teaching duration (hours)
20
SSD
NN -
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
D
Year
1
Period
Annuale
Site
VERCELLI
Grading type
G
Lingua insegnamento/Teaching language
INGLESE
English
Contenuti/Content Summary
v.'programma esteso'
see the 'extended program'
Testi di riferimento/Textbooks
Grammar and Vocabulary for the Real World Premium 2.0 con chiave ISBN: 978-0-19-481030-2 https://elt.oup.com/catalogue/items/local/it/gvrw/97801948103102?cc=it&selLanguage=it&mode=hub Materiali su DIR.
Grammar and Vocabulary for the Real World Premium 2.0 con chiave ISBN: 978-0-19-481030-2 https://elt.oup.com/catalogue/items/local/it/gvrw/97801948103102?cc=it&selLanguage=it&mode=hub Handouts on DIR.
Obiettivi formativi/Mission
L’obiettivo di questo corso è portare gli studenti al livello B1 o soglia, così definito dal Quadro Comune Europeo di Riferimento per le lingue del Consiglio d’Europa. Il corso è destinato a coloro che hanno una conoscenza già acquisita dell’inglese e che quindi possono comprendere situazioni di comunicazione poco complesse. Il corso include attività per il consolidamento e lo sviluppo della comprensione e della produzione orale e scritta.
The aim of this course is to take students to the B1 or threshold level, as defined by the Council of Europe's Common European Framework of Reference for Languages. The course is designed for those who have an already some knowledge of English and can therefore understand communicative situations of low complexity. The course includes activities for the consolidation and development of oral and written comprehension and expression.
Prerequisiti/Required background knowledge
English Placement Test
English Placement Test
Metodi didattici/Teaching methods
Lezioni. Lavoro in coppia o in gruppo. Particolare attenzione sulle capacità di comprensione orale e scritta. Lavoro individuale.
Lectures. Pair and teamwork. Focus on listening and reading comprehension skills. Individual student work.
Altre informazioni/Further information
Modalità di verifica dell'apprendimento/Assessment methods
Test informatizzato sui contenuti del corso
Computer-based test on course content
Programma esteso/Content
1. tempi presenti 2. tempi passati 3. il futuro 4. forma passiva 5. verbi modali 6. domande 7. strutture verbali 8. discorso indiretto 9. periodo ipotetico 10. sostantivi, articoli e pronomi 11. preposizioni, phrasal verbs 12. aggettivi e avverbi 13. costruzione delle frasi 14. vocabulary
1. present tenses 2. past tenses 3. the future 4. passive form 5. modal verbs 6. questions 7. verb structures 8. indirect speech 9. hypothetical sentence 10. nouns, articles and pronouns 11. prepositions, phrasal verbs 12. adjectives and adverbs 13. sentence structure 14. vocabulary
Risultati di apprendimento attesi/Intended learning objectives
Uno studente B1 è in grado di capire i punti essenziali di un discorso, a condizione che venga usata una lingua chiara e standard e in grado di esprimere la sua opinione, su argomenti familiari e inerenti alla sfera dei suoi interessi, in modo semplice e coerente. E’ in grado di riferire un’esperienza o un avvenimento, di descrivere una situazione, un sogno, una speranza o un obiettivo e di fornire ragioni e spiegazioni brevi relative a un’idea o a un progetto.
A B1 student can understand the main points of a speech provided it is in clear standard language and can express his opinion on familiar topics in a simple and coherent way. Can report on an experience or event, describe a situation, a dream, a hope or a goal and give brief reasons and explanations for an idea or project.
×
Print
Course
ANALISI MATEMATICA
Course ID
MF0574
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
FERRERO ALBERTO
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/05 - ANALISI MATEMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
ALESSANDRIA
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Insiemi, funzioni, limite per funzioni reali di una variabile reale, continuità, calcolo differenziale e integrale per funzioni reali di una variabile reale.
Sets, functions, limit for real functions of one real variable, continuity, differential and integral calculus for real functions of one real variable.
Testi di riferimento/Textbooks
Testi consigliati (in ordine alfabetico): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, "Analisi Matematica 1", Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill.
Suggested books (in alphabetic order): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, "Analisi Matematica 1", Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill.
Obiettivi formativi/Mission
Acquisizione delle nozioni di base del calcolo differenziale e integrale per le funzioni reali di una variabile reale.
Acquire the basic notions of differential and integral calculus for real functions of one real variable.
Prerequisiti/Required background knowledge
Nozioni di base dell'algebra e della trigonometria.
Elementary notions of algebra and trigonometry.
Metodi didattici/Teaching methods
Il corso è organizzato con lezioni frontali con parte teorica ed esercizi. Ogni argomento del corso viene introdotto per mezzo di una discussione generale che ha lo scopo di renderla il più possibile comprensibile agli studenti. In un secondo momento vengono introdotte le nozioni di base di ciascun argomento; esse sono successivamente seguite da esempi con lo scopo di chiarirne il significato. Il terzo passo è dedicato agli enunciati dei principali teoremi e alle loro dimostrazioni. L'ultima parte è dedicata agli esercizi.
The course is organized with frontal lessons with theoretical sessions and exercises. Each subject of the course is introduced by mean of a general discussion which has the purpose of making it comprehensible to the students as much as possible. In a second time the basic notions of each subject are introduced; they are successively followed by examples with the purpose of clarifying their meaning. The third step is devoted to the statements of the main theorems and their proofs. The last part is devoted to the exercises.
Altre informazioni/Further information
Oltre ai libri suggeriti per la teoria, ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso. Esso è costituito dalle diapositive utilizzate nelle lezioni a distanza e dalle prove scritte degli anni precedenti.
In addition to the suggested books, further material for the preparation of the exam will be provided during the development of the course. It is made up of the slides used during the course of the last year and of the written exams of the previous years.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame è costituito da una prova scritta e da un successivo colloquio nel caso in cui l'esito della prova scritta sia positivo. La prova scritta di solito è costituita da 4-6 esercizi su diversi argomenti del corso. In ogni prova scritta, la maggior parte degli argomenti contenuti nel corso viene coperta. La presenza di domande sulla parte teorica non è esclusa. L'esame orale è costituito da domande preliminari sulle nozioni di base della matematica e sulle funzioni elementari, da una discussione sugli esercizi contenuti nella prova scritta e da alcune domande finali sugli enunciati e le dimostrazioni dei principali risultati teorici.
The exam consists of a written part and a subsequent oral discussion in case of a positive result of the written part. The written exam usually consists of 4-6 exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam is made of preliminary questions about the basic notions of mathematics and about elementary functions, of a discussion on the exercises contained in the written exams and of some final questions on statements and proofs of the main theoretical results.
Programma esteso/Content
Insiemi, operazioni insiemistiche; funzioni, composizione di funzioni, iniettività, suriettività, biunivocità, invertibilità, cardinalità di un insieme. Limite di una funzione reale di una variabile reale; limiti destro e sinistro; limiti e operazioni algebriche; Teorema dei due carabinieri; Teorema di esistenza del limite per funzioni monotone; Teorema di cambiamento di variabile per i limiti. Continuità per funzioni reali di una variabile reale; continuità e operazioni algebriche; continuità di funzioni composte; Teorema di permanenza del segno; Teorema di Weierstrass; Teorema degli zeri e dei valori intermedi; continuità della funzione inversa. Calcolo differenziale per funzioni reali di una variabile reale; derivate e operazioni algebriche; derivata di una funzione composta; derivabilità della funzione inversa. Massimi e minimi relativi; monotonia di una funzione e segno della derivata prima; Teoremi di de l'Hopital; funzioni convesse e concave, punti di flesso e legame con il segno della derivata seconda. Integrazione secondo Riemann; integrabilità di somme e prodotti di funzioni integrabili; Teorema della media; funzioni integrali; Teorema fondamentale del calcolo integrale; formule di integrazione per sostituzione e per parti.
Sets and operations between sets; definition of function, composition between functions, injectivity, surjectivity, bijectivity, invertibility, cardinality of a set. Limit of a real function of one real variable; right limit and left limit; limits and algebraic operations; Comparison Theorem; existence of the limit of a monotone function; change of variable. Continuity for real functions of one real variable; continuity and algebraic operations; continuity of a composition ; Sign Permanence Theorem; Weierstrass Theorem; Intermediate Values Theorem; continuity of the inverse function. Differential Calculus for real functions of one real variable; derivatives and algebraic operations; derivative of a composition; differentiability of the inverse function. Relative maxima and minima; monotonicity of a function and sign of the first order derivative; de l'Hopital Theorems; convex and concave functions, flex points and sign of the second order derivative. Riemann integral; integrability of sums and products of integrable functions; Mean Value Theorem; integral functions; Fundamental Theorem of Integral Calculus; integration by parts and change of variable formula.
Risultati di apprendimento attesi/Intended learning objectives
Il primo obiettivo è quello di fornire agli studenti una metodologia di studio basata sul rigore delle dimostrazioni che consenta loro di sfruttare tale acquisita capacità anche in ambiti diversi dalla Matematica. Le verifiche a cui vengono sottoposti, in particolare la prova orale, devono essere per gli studenti un buon banco di prova per imparare ad esprimere un concetto complesso in maniera chiara ed esaustiva. Passando ora alla parte più tecnica riguardante i contenuti del corso, si puntualizza il fatto che uno dei principali obiettivi del corso è quello di fornire agli studenti le conoscenze di base sulle principali funzioni elementari, queste ultime di fondamentale importanza nelle applicazioni. Anche le nozioni più avanzate del calcolo differenziale e integrale devono necessariamente entrare a far parte del bagaglio culturale degli studenti per consentire loro di poter affrontare con maggiore facilità alcuni esami applicativi in cui le suddette nozioni trovano un'applicazione diretta come nel caso della Fisica, del Calcolo delle Probabilità e della Statistica.
The first purpose is to provide the students with a method of study based on rigorous proofs which allows them to exploit such an acquired skill also in subjects different from Mathematics. The examinations and in particular the oral one, have to be for the students a good test to learn to express a complex notion in a clear and complete way. Coming now to the more technical part dealing with the contents of the course, we point out the fact that one of the main purposes of the course is to provide the students with the basic notions about the elementary functions which are of fundamental importance in the applications. Also the more advanced notions of differential and integral calculus have to become necessarily part of the knowledge of the students in order to allow them to better face some applicable courses in which such notions find a direct application such as in the case of Physics, Probability Calculus and Statistics.
×
Print
Course
ANALISI MATEMATICA
Course ID
MF0575
Academic Year
2021/2022
Year of rule
2021/2022
Degree
INFORMATICA
Curriculum
CORSO GENERICO
Teaching leader
BUOSO DAVIDE
Teachers
CFU
6
Teaching duration (hours)
48
Individual study time
102
SSD
MAT/05 - ANALISI MATEMATICA
Course type
Attività formativa monodisciplinare
Course mandatoriety
OBB
Course category
A
Year
1
Period
Primo Semestre
Site
VERCELLI
Grading type
V
Lingua insegnamento/Teaching language
ITALIANO
Italian
Contenuti/Content Summary
Insiemi, funzioni, limiti per funzioni reali di una variabile reale, continuità, calcolo differenziale e integrale per funzioni reali di una variabile reale.
Sets, functions, limits for real functions of one real variable, continuity, differential and integral calculus for real functions of one real variable.
Testi di riferimento/Textbooks
Testo consigliato per la teoria: Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. In alternativa: Bramanti, Pagani, Salsa, “Analisi Matematica 1”, Ed. Zanichelli. Testo consigliato per gli esercizi: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Suggested book for the theoretical part: Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. As an alternative: Bramanti, Pagani, Salsa, “Analisi Matematica 1”, Ed. Zanichelli. Suggested book for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Obiettivi formativi/Mission
Acquisizione delle nozioni di base del calcolo differenziale e integrale per le funzioni reali di una variabile reale.
Acquisition of the basic notions of differential and integral calculus for real functions of one real variable.
Prerequisiti/Required background knowledge
Nozioni di base dell'algebra e della trigonometria.
Basic notions of algebra and trigonometry.
Metodi didattici/Teaching methods
Lezioni frontali in aula.
Classroom lectures.
Altre informazioni/Further information
Oltre ai libri suggeriti per la teoria e gli esercizi, ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso.
In addition to the suggested books for the theoretical part and the exercises, further material for the preparation of the exam will be provided during the development of the course.
Modalità di verifica dell'apprendimento/Assessment methods
L'esame si compone di una prova scritta e di una prova orale. La prova scritta consiste di esercizi sul programma svolto durante le lezioni e ha una durata di due ore. La prova orale è a discrezione del docente e consiste in una discussione sulla prova scritta.
The exam consists of a written part and a subsequent oral discussion. The written exam consists of exercises on the program and lasts 2 hours. The oral part is decided by the teacher and consists of a discussion on the written part.
Programma esteso/Content
Insiemi, operazioni insiemistiche; funzioni, composizione di funzioni, iniettività, suriettività, biunivocità, invertibilità, cardinalità di un insieme. Limite di una funzione reale di una variabile reale; limiti destro e sinistro; limiti e operazioni algebriche; Teorema dei due carabinieri; Teorema di esistenza del limite per funzioni monotone; Teorema di cambiamento di variabile per i limiti. Continuità per funzioni reali di una variabile reale; continuità e operazioni algebriche; continuità di funzioni composte; Teorema di permanenza del segno; Teorema di Weierstrass; Teorema degli zeri e dei valori intermedi; continuità della funzione inversa. Calcolo differenziale per funzioni reali di una variabile reale; derivate e operazioni algebriche; derivata di una funzione composta; derivabilità della funzione inversa. Massimi e minimi relativi; monotonia di una funzione e segno della derivata prima; Teoremi di de l'Hopital; funzioni convesse e concave, punti di flesso e legame con il segno della derivata seconda. Integrazione secondo Riemann; integrabilità di somme e prodotti di funzioni integrabili; Teorema della media; funzioni integrali; Teorema fondamentale del calcolo integrale; formule di integrazione per sostituzione e per parti.
Sets and operations between sets; definition of function, composition between functions, injectivity, surjectivity, bijectivity, invertibility, cardinality of a set. Limit of a real function of one real variable; right limit and left limit; limits and algebraic operations; Comparison Theorem; existence of the limit for a monotone function; change of variable. Continuity for real functions of one real variable; continuity and algebraic operations; continuity of a composition; Sign Permanence Theorem; Weierstrass Theorem; Intermediate Values Theorem; continuity of the inverse function. Differential Calculus for real functions of one real variable; derivatives and algebraic operations; derivative of a composition; differentiability of the inverse function. Relative maxima and minima; monotonicity of a function and sign of the first order derivative; de l'Hopital Theorems; convex and concave functions, flex points and sign of the second order derivative. Riemann integral; integrability of sums and products of integrable functions; Mean Value Theorem; integral functions; Fundamental Theorem of Integral Calculus; integration by parts and change of variable formula.
Risultati di apprendimento attesi/Intended learning objectives
Capacità di usare gli strumenti appresi, con un'analisi critica degli stessi.
Ability of using the methodologies learnt in class, with a critical analysis in their regard.
Print guide
Print
Year Course ID Course Teachers SSD Curriculum Site CFU
1 MF0199 COMPUTER ARCHITECTURE Valenza Fulvio, Moiso Corrado INF/01 All VERCELLI 12
1 S1363 COMPUTER ARCHITECTURE Franceschinis Giuliana Annamaria, Moiso Corrado INF/01 All ALESSANDRIA 12
1 S1366 DISCRETE MATHEMATICS Ferrari Pier Luigi MAT/03, MAT/01 All ALESSANDRIA 9
1 MF0204 DISCRETE MATHEMATICS Laguzzi Giorgio MAT/03, MAT/01 All VERCELLI 9
1 MF0564 EPT ENGLISH PLACEMENT TEST Pellegrini Serena NN All ALESSANDRIA 0
1 MF0565 EPT ENGLISH PLACEMENT TEST VC Kalinina Irina NN All VERCELLI 0
1 MF0435 Initial Knowledge Martignone Francesca NN All ALESSANDRIA 0
1 MF0575 MATHEMATICAL ANALYSIS Buoso Davide MAT/05 All VERCELLI 6
1 MF0574 MATHEMATICAL ANALYSIS Ferrero Alberto MAT/05 All ALESSANDRIA 6
1 MF0202 PHYSICS Sitta Mario FIS/01 All ALESSANDRIA 6
1 MF0203 PHYSICS Sitta Mario, Barone Vincenzo FIS/01 All VERCELLI 6
1 MF0207 PROGRAMMING 1 Codetta Raiteri Daniele, Nai Roberto INF/01 All VERCELLI 9
1 MF0163 PROGRAMMING 1 Terenziani Paolo, Bottrighi Alessio INF/01 All ALESSANDRIA 9
1 MF0208 PROGRAMMING 2 Nai Roberto, Pennisi Marzio Alfio INF/01 All VERCELLI 9
1 MF0164 PROGRAMMING 2 Nai Roberto, Mancini Simona INF/01 All ALESSANDRIA 9
1 MF0396 Techniques of communication and writing Demartini Silvia L-FIL-LET/12 All VERCELLI 3
1 MF0395 Techniques of communication and writing Bussolino Claudia L-FIL-LET/12 All ALESSANDRIA 3
2 MF0034 ALGORITHMS 1 Montani Stefania, Leonardi Giorgio INF/01 All ALESSANDRIA 9
2 MF0209 ALGORITHMS 1 Montani Stefania, Guazzone Marco INF/01 All VERCELLI 9
2 MF0054 ALGORITHMS 2 Egidi Lavinia INF/01 All ALESSANDRIA 6
2 MF0210 ALGORITHMS 2 Piovesan Luca INF/01 All VERCELLI 6
2 MF0216 COMPUTER NETWORKS 1 Munafo' Maurizio Matteo INF/01 All VERCELLI 6
2 S1609 Computer Networks 1 Canonico Massimo INF/01 All ALESSANDRIA 6
2 MF0158 DATABASES AND INFORMATION SYSTEMS Giordano Laura, Striani Manuel INF/01 All ALESSANDRIA 9
2 MF0211 DATABASES AND INFORMATION SYSTEMS Giordano Laura, Striani Manuel INF/01 All VERCELLI 9
2 MF0368 Operating systems Cerotti Davide, Guazzone Marco INF/01 All VERCELLI 12
2 MF0365 Operating systems Theseider Dupre' Daniele, Anglano Cosimo Filomeno INF/01 All ALESSANDRIA 12
2 MF0358 Probability and statistics Grassi Pietro MAT/06 All VERCELLI 6
2 MF0357 Probability and statistics Ferrero Alberto MAT/06 All ALESSANDRIA 6
2 MF0364 Programming paradigms Piovesan Luca, Monge Roffarello Alberto INF/01 All VERCELLI 9
2 MF0363 Programming paradigms Giannini Paola INF/01 All ALESSANDRIA 9
2 MF0438 WEB PROGRAMMING METODOLOGIES Morra Lia, Cannavo' Alberto INF/01 All VERCELLI 6
2 MF0437 WEB PROGRAMMING METODOLOGIES Bottrighi Alessio INF/01 All ALESSANDRIA 6
3 MF0467 Business Intelligence Terenziani Paolo, Montani Stefania INF/01 All VERCELLI 3
3 MF0059 Business intelligence 1: data warehousing Terenziani Paolo, Montani Stefania INF/01 All ALESSANDRIA 3
3 S1736 Computational Logic Giordano Laura, Theseider Dupre' Daniele INF/01 All ALESSANDRIA 3
3 MF0371 Cyber security 1 Egidi Lavinia INF/01 All ALESSANDRIA 6
3 MF0372 Cyber security 1 Valenza Fulvio, Bringhenti Daniele INF/01 All VERCELLI 6
3 MF0243 Design and implementation of networked software systems Giordana Attilio INF/01 All ALESSANDRIA 9
3 MF0244 Design and implementation of networked software systems Franceschinis Giuliana Annamaria, Cerotti Davide INF/01 All VERCELLI 9
3 MF0309 Digital electronics Ramello Luciano FIS/01 All VERCELLI 3
3 MF0360 FOUNDATIONS, LANGUAGES AND TRASLATORS Giannini Paola, Bottrighi Alessio INF/01 All VERCELLI 9
3 MF0359 FOUNDATIONS, LANGUAGES AND TRASLATORS Terenziani Paolo, Theseider Dupre' Daniele INF/01 All ALESSANDRIA 9
3 S0403 Internship NN All 10
3 MF0128 Mobile applications Ardito Luca, Canonico Massimo INF/01 All ALESSANDRIA 6
3 S1730 SOFTWARE ENGINEERING Pennisi Marzio Alfio INF/01 All ALESSANDRIA 6
3 MF0221 SOFTWARE ENGINEERING Codetta Raiteri Daniele INF/01 All VERCELLI 6
3 MF0224 Web applications: architectures and languages Mantovani Daniele INF/01 All VERCELLI 6
Data synched: 16/07/2023, 01:05