Laurea in Informatica

Didattica erogata

×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 1
Codice
S1725
Anno Accademico
2017/2018
Anno regolamento
2013/2014
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
TERENZIANI Paolo
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 2
Codice
S1726
Anno Accademico
2017/2018
Anno regolamento
2013/2014
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Secondo Semestre
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
×
Stampa
Insegnamento
RETI 2
Codice
S1727
Anno Accademico
2017/2018
Anno regolamento
2013/2014
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
9
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
3
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
S1728FONDAMENTI INF/01 - INFORMATICA
S1729SPERIMENTAZIONI INF/01 - INFORMATICA
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
RETI 2: FONDAMENTI
Codice
S1728
Anno Accademico
2017/2018
Anno regolamento
2013/2014
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
RETI 2: SPERIMENTAZIONI
Codice
S1729
Anno Accademico
2017/2018
Anno regolamento
2013/2014
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
3
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
×
Stampa
Insegnamento
METODOLOGIE DI PROGRAMMAZIONE PER IL WEB
Codice
MF0162
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Annuale
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
Sedi e/o partizioni Agenda web
ALESSANDRIA
VERCELLI
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
METODOLOGIE DI PROGRAMMAZIONE PER IL WEB
Codice
MF0162
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
PORTINALE Luigi
Docenti
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
ITALIANO
Italian
Contenuti
Scopo del corso è acquisire le capacità di base per realizzare siti ed applicazioni sul World Wide Web costituiti, da testi, immagini e programmi secondo un'architettura 3-tier (client/application/data). Verranno illustrati i concetti di base sull'utilizzo di markup languages come XHTML, HTML e CSS, le nozioni piu' importanti per la programmazione Web lato client. (Javascript) e lato server (CGI, PHP, Java/JSP), nonche'le modalita' di interaziuone con DBMS di tipo client/server
Goal of the course is to show how to build sites and web applications on the WWW, by following a 3-tier architecture (client/application/data). Concepts related to markup languages like XHTML and HTML5 will be introduced, together with concepts related to style notations like CCS and the basic notions of client side programming (Javascript) and server-side programming (PHP and Java/JSP), as well as methods for interacting with client/side RDBMS.
Testi di riferimento
Deitel et al. Internet and WWW: How to program (5th ed.), Prentice Hall. R. Connolly, R. Hoar. Fundamentals of Web Development, Pearson. R. Sebesta. Programming the WWW, Pearson.
Deitel et al. Internet and WWW: How to program (5th ed.), Prentice Hall. R. Connolly, R. Hoar. Fundamentals of Web Development, Pearson. R. Sebesta. Programming the WWW, Pearson.
Obiettivi formativi
Acquisire le capacità di base per realizzare siti ed applicazioni sul World Wide Web costituiti, da testi, immagini e programmi secondo un'architettura 3-tier (client/application/data)
Being able to build sites and web applications on the WWW, by following a 3-tier architecture (client/application/data).
Prerequisiti
Programmazione ad oggetti. Basi di Dati
Object-oriented Programming. Database systems.
Metodi didattici
Lezioni frontali
Lectures
Modalità di verifica dell'apprendimento
Discussione di un progetto pratico
Discussion concerning an assigned project
Programma esteso
Linguaggio XHTML e HTML5 Cascading Style Sheets Programmazione Client Side: Javascript e Dynamic HTML Richiami di Progettazione RDBMS Client/Server Programmazione Server Side: Web Servers e Archiotettura 3-tier, Linguaggio PHP, Java Servlets, Java Server Pages (JSP) Interfacciamento con Basi di dati
XHTML and HTML5 languages Cascading Style Sheets Client Side Programming: Javascript and Dynamic HTML Client/Server RDBMS design Server Side Programming: Web Servers and 3-tier architectures, PHP language, Java Servlets, Java Server Pages (JSP) RDBMS interaction
Risultati di apprendimento attesi
Acquisire le capacità di base per realizzare siti ed applicazioni sul World Wide Web costituiti, da testi, immagini e programmi secondo un'architettura 3-tier (client/application/data)
Being able to build sites and web applications on the WWW, by following a 3-tier architecture (client/application/data).
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
METODOLOGIE DI PROGRAMMAZIONE PER IL WEB
Codice
MF0162
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
SULIS EMILIO
Docenti
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Annuale
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
ITALIANO
Italian
Contenuti
Progettazione e organizzazione dei siti Web Tecnologie client-side: HTML5, CSS3 Contenuti dinamici: DOM, Javascript, JQuery Introduzione alle tecnologie server side: PhP e database MySql Tecnologie emergenti: versioning con github, bootstrap, angular
Basic design and implementation of websites Client-side technologies: HTML5, CSS3 Dynamic web: DOM, JavaScript, JQuery Introduction to server-side technologies: PhP and MySql Emerging technologies
Testi di riferimento
Slide e altro materiale fornito a lezione Facoltativi: Programming the world wide web / Robert W. Sebesta. - 8. ed. - Boston [etc.] : Pearson, 2015 Internet & World Wide Web : how to program / Paul Deitel, Harvey Deitel, Abbey Deitel, 5. ed. - Boston [etc.] : Pearson, 2012
Slides and material provided at lesson Optional: Programming the world wide web / Robert W. Sebesta. - 8. ed. - Boston [etc.] : Pearson, 2015 Internet & World Wide Web : how to program / Paul Deitel, Harvey Deitel, Abbey Deitel, 5. ed. - Boston [etc.] : Pearson, 2012
Obiettivi formativi
Acquisire le capacità di base per realizzare siti e applicazioni Web secondo un'architettura 3-tier (client/application/data)
Architectures and languages for the development of web-based applications. Practical examples of notions concerning the part of Methodogies for web programming: fundamentals
Prerequisiti
Programmazione ad oggetti. Basi di Dati
Basic notions on object-oriented programming and data bases.
Metodi didattici
Lezioni frontali ed esercitazioni in laboratorio
Traditional lectures and exercises
Modalità di verifica dell'apprendimento
Discussione di un progetto pratico con analisi dei requisiti
Discussion of a practical case
Programma esteso
Progettazione e architetture 3-tier; Linguaggi di markup, HTML5, Cascading Style Sheet; Programmazione lato client: Document Object Model, Javascript, JQuery; Introduzione alla programmazione lato side: PHP e interfacciamento con RDBMS. Esempi ed esercizi di programmi web in Javascript, PHP e MySql.
Introduction to programming web site, 3-tier Architectures; Markup languages: HTML5, Cascading Style Sheets. Client side programming: Javascript, JQuery. Server side programming: PHP and RDBMS interfaces. Examples and exercises concerning web programs in Javascript, PHP and Mysql.
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 2
Codice
S1726
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Secondo Semestre
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
Sedi e/o partizioni Agenda web
ALESSANDRIA
VERCELLI
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 2
Codice
S1726
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
THESEIDER DUPRE' Daniele
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Traduzione guidata dalla sintassi e suo utilizzo per la traduzione dei linguaggi imperativi di programmazione.
Syntax-directed translation and its use for the translation of imperative programming languages.
Testi di riferimento
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
A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986, or A. V. Aho, M.S. Lam, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", 2nd ed., Addison-Wesley, 2006
Obiettivi formativi
Conoscere e saper applicare diversi metodi per la traduzione diretta dalla sintassi, comprendendo le condizioni sotto le quali possono essere applicati e sapendo spiegare perché possono o meno essere applicati in un caso specifico. Saperli applicare in particolare per la traduzione dei tipici costrutti dei linguaggi di programmazione
Knowing and being able to apply different methods for syntax-directed translation, understanding the conditions under which they can be used and being able to explain why they can or cannot be used in a specific case. Being able to apply them to the translation of the most typical structures of programming languages.
Prerequisiti
Programmazione 1 e 2; Fondamenti, Linguaggi e Traduttori 1.
Programming 1 and 2; Foundations, Languages and Translators 1.
Metodi didattici
Lezioni frontali, esercitazioni. Le lezioni, oltre a descrivere i metodi, ne discutono le potenzialità e le limitazioni. Le esercitazioni permettono di conoscere almeno uno strumento software per utilizzare uno dei metodi.
Lectures and exercises. Lectures describe the different methods and discuss their power as well as their limitations. Practical activity allows students to know a software tool for using one of the methods.
Modalità di verifica dell'apprendimento
Esercizi e domande (da parte del docente o degli studenti) durante il corso, alle quali gli studenti sono invitati a rispondere. Esame orale oppure scritto. 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.
Exercises and Q/A sessions (questions from the lecturer or from the students) during the course. Oral or written exam. 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 the different questions.
Programma esteso
Concetti base sui compilatori. Traduzione guidata dalla sintassi: grammatiche ad attributi e schemi di traduzione. Analisi semantica, controllo dei tipi. Ambienti di esecuzione dei linguaggi, in particolare di linguaggi di tipo imperativo. Linguaggi intermedi. Generazione del codice intermedio.
Basic concepts about compilers. Syntax-directed translation: attribute grammars, translation schemes. Semantic analysis, type checking. Run-time environments for imperative languages. Intermediate languages. Intermediate code generation.
Risultati di apprendimento attesi
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi
The achievement, up to a degree measured by grades, of the learning goals
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 2
Codice
S1726
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GIANNINI Paola
Docenti
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Traduzione guidata dalla sintassi e tecniche di compilazione dei linguaggi ad oggetti.
Syntax-directed translation and compilation techniques for object oriented languages.
Testi di riferimento
Charles N. Fischer, Ron K. Cytron, Richard J. Le Blanch Jr., "Crafting a compiler", Addison-Wesley. (Per consultazione) A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986
Charles N. Fischer, Ron K. Cytron, Richard J. Le Blanch Jr., "Crafting a compiler", Addison-Wesley. (For reference) A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986
Obiettivi formativi
Conoscenza e capacità di comprensione: lo studente deve acquisire le nozioni di base per lo sviluppo di traduttori per linguaggi artificiali e la conoscenza degli strumenti per la costruzione dei compilatori per i linguaggi di programmazione ad oggetti con particolare enfasi per l’analisi di tipo. Inoltre deve conoscere le funzionalità degli strumenti per la generazione automatica di scanner e parser. 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 autonomamente le strutture dati necessarie. Inoltre deve saper usare appropriatamente gli strumenti di generazione automatica di parser e scanner. 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 in forma scritta le proprie scelte.
Knowledge and understanding: the student must acquire the basics for the development of artificial language translators and the knowledge for the implementation of compilers for object programming languages with particular emphasis on type analysis. It also should acquire the knowledge of the capabilities of tools for automatically generating scanners and parsers. Applying knowledge and understanding: the student must be able to design and implement a syntax direct translation of a simple programming language, and being able to independently design the necessary data structures. It must also be able to use the tools for automatically generating parsers and scanners. 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. Learning skills: the student must be able to learn how to structure the syntax directed translation of new constructs by classifying them in relation to those presented during the course.
Prerequisiti
Programmazione 1 e 2; Fondamenti, Linguaggi e Traduttori 1.
Programming 1 and 2; Foundations, Languages and Translators 2.
Metodi didattici
Lezioni frontali, esercitazioni e lezioni in laboratorio in cui lo studente sviluppa un compilatore per un semplice linguaggio ed inoltre usa alcuni strumenti di generazione di analizzatori lessicali e sintattici.
Lectures, exercise sessions and laboratory sessions in which the student will implement a compiler for a simple language and would use some lexer and parser generators.
Altre informazioni
Metà delle lezioni vengono svolte in laboratorio. Durante queste lezioni vengono sviluppate parti della progettazione ed implementazione di un compilatore che è parte dell’esame finale. 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.
Half of the lessons are done in the lab. During lab sessions, are developed parts of the design and implementation of the compiler which is part of the final exam. Students are invited to submit weekly the parts developed (partly in the lab and partly on their own). Students' works are commented in the classroom.
Modalità di verifica dell'apprendimento
Esame scritto, presentazione di un progetto ed esercizi di laboratorio (principalmente svolti durante sessioni di laboratorio) e discussione orale della prova scritta e del progetto ed esercizi presentati. La prova scritta conterra' alcuni esercizi e domande che coprono i contenuti svolti durante il corso. La valutazione complessiva terra' conto della media fr la prova scritta e la votazione riportata nel progetto ed esercizi di laboratorio.
Written examination, presentation of a project and laboratory exercises (done mainly during laboratory sessions) and finally oral discussion of the written test and of the project and exercises presented. The written test will contain some exercises and questions that cover the contents of the course. The final grade will be the average score of the written test and the score obtained in the project and laboratory exercises.
Programma esteso
Tecniche di implementazione dei linguaggi: traduttori, compilatori e interpreti, struttura di un compilatore. Analisi lessicale (scanning): implementazione di scanner. Analisi sintattica (parsing) : parsing top-down (LL), parsing bottom-Up (LR). Albero astratto e pattern Visitor. Implementazione tabella dei simboli. Analisi semantica: definizione attributi, valutazione attributi, controllo di tipo per linguaggi ad oggetti.
Language implementation techniques: translators, compilers, and interpreters, compiler structure. Scanning: scanner implementation. Parsing: parsing top-down (LL), parsing bottom-up (LR). Abstract syntax tree and pattern Visitor. Symbol table implementation. Semantic analysis: attribute definition, attribute evaluation, type checking for object oriented languages.
Risultati di apprendimento attesi
Abilità di progettare ed implementare in modo diretto dalla sintassi parti di linguaggi con particolare enfasi alla fase di analisi sintattica e controllo di tipi. Capacità di strutturare un sistema complesso, quale un compilatore, in fasi successive individuando le strutture dati che costituiscono le interfacce fra le varie fasi.
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.
×
Stampa
Insegnamento
INGEGNERIA DEL SOFTWARE
Codice
S1730
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CODETTA RAITERI Daniele
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
Sedi e/o partizioni Agenda web
ALESSANDRIA
VERCELLI
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
INGEGNERIA DEL SOFTWARE
Codice
S1730
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CODETTA RAITERI Daniele
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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 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.
Testi di riferimento
- 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
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
Conoscenze acquisite nei corsi di programmazione e basi di dati.
Knowledge acquired in the programming and database courses.
Metodi didattici
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 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. 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 a different domain with respect to the case study, but it 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, respectively. 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
Nessuna.
None.
Modalità di verifica dell'apprendimento
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 consists of a written test concerning the theoretical section, and an oral test where the project in UML language realized during the laboratory lectures, is defended. The participation to the written test is free; the oral test instead, requires the project delivery one week before the exam. 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. During the defense of the project, two aspects are verified: the quality of the realized UML diagrams, in terms of precision, coherence, and completeness; the knowledge of the formal aspects of UML. The questions about the delivered diagrams are oriented to clarify the faults detected in the project. The quantity of such questions depends on the number of faults. The questions about the formal aspects of the UML language are about 4. 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 and the oral test.
Programma esteso
- 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
- Introduction to the Software Engineering - Software product and software process - System requirements specification - Specification using UML - System design - Design using UML - System verification and validation - System maintenance - Project management - Software process models
Risultati di apprendimento attesi
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.
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.
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
INGEGNERIA DEL SOFTWARE
Codice
S1730
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CAMILLI MATTEO
Docenti
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
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 nella sperimentazione di metodologie e tecniche per la progettazione orientata agli oggetti e l’implementazione di software Java illustrate all'interno della parte teorica.
The classes provide an overview of the entire software development lifecycle: specification, design, development, verification, and maintenance. An introduction to UML language and Design Patterns are also provided. During the laboratory lectures, the students apply the notion acquired during the theoretical part, in practice. In particular they are requested to design software architecture through the UML language and also to implement Java software using IDEs and other specific supporting software tools.
Testi di riferimento
- Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli, "Ingegneria del software. Fondamenti e principi”, Pearson (collana Accademica) - M. Fowler, "UML distilled", Pearson Education Italia - Eric Freeman, Elisabeth Freeman, Kathy Sierra and Bert Bates, "Head First Design Patterns”, O'Reilly Media
- Carlo Ghezzi, Mehdi Jazayeri, Dino Mandrioli, “Fundamentals of Software Engineering", Second Edition, Prentice Hall - M. Fowler, “UML Distilled: A Brief Guide to the Standard Object Modeling Language”, 3rd Edition, Addison-Wesley Professional - Eric Freeman, Elisabeth Freeman, Kathy Sierra and Bert Bates, "Head First Design Patterns”, O'Reilly Media
Obiettivi formativi
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 è 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, inoltre introduce i principi della programmazione orientata agli oggetti e dei Design pattern usando il linguaggio di programmazione Java. L'attività in laboratorio consiste nella preparazione di diagrammi UML relativi a sistemi software, attraverso l'uso di un editor UML, inoltre gli studenti sperimentano le nozioni acquisite durante la parte teorica attraverso l’implementazione di programmi software Java. Questo permette di prendere confidenza e approfondire la conoscenza di specifiche metodologie per la progettazione e lo sviluppo del software. 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 sistemi 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’architetture software atte a realizzare specifici 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; - progettare per il cambiamento. Autonomia di giudizio: studio e definizione in modo autonomo del dominio applicativo, dei requisiti, dell'architettura e del comportamento del sistema. Sviluppo software: - implementazione software usando il paradigma di programmazione orientato agli oggetti partendo dalla specifica dei requisiti - riconoscere contesti in cui è possibile applicare opportuni design pattern e riconoscerne i vantaggi/svantaggi - uso di strumenti software per il supporto allo sviluppo e al testing (Eclipse IDE, Junit) Abilità comunicative: - comunicazione e coordinazione all'interno del gruppo di lavoro; - esprimere i requisiti del sistema con diversi gradi di dettaglio (astrazione); - 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.
A theoretical part (frontal lectures) and a practical part (laboratory lectures) compose the classes. The theoretical part provides an overview of the entire software development lifecycle: specification, design, development, verification, and maintenance. The practical part introduces the UML modeling language, the object orientation paradigm, and the design patterns, through the design and the implementation of Java software systems. During the laboratory lectures, the students apply the notion acquired during the theoretical part, in practice. In particular they are requested to design software architecture through the UML language and also to implement Java software using IDEs and other specific supporting software tools such as the JUnit plugin. Knowledge and comprehension: the phases of the software development lifecycle, formal aspects of different UML diagram types, design patterns, verification and validation principles Application of knowledge and comprehension: application of the software development lifecycle to software systems, in particular, - study of the application domain; - requirements elicitation; - software architecture modeling using specific UML diagrams; - software architecture modeling from system requirements; - software components interaction modeling from system requirements; - design for change. Software development: - software development using the object orientation paradigm, starting from requirements; - recognize specific contexts where design patterns are applicable also recognizing pros and cons; - implement Java software using the Eclipse IDE and other specific supporting software tools such as JUnit. Communication: - communication and coordination among teammate; - requirements elicitation with different abstraction levels; - use different UML diagram types to specify different aspects of software systems and to communicate among teammates. Learning ability: acquire the correct software engineering terminology, organize the software development following the entire lifecycle, model different aspects of design and behavior using pseudo-formal languages such as UML.
Prerequisiti
- conoscenza dei principi della programmazione, in particolare programmazione orientata agli oggetti (linguaggio Java) - esperienza pratica di sviluppo di programmi software - conoscenza di base di ambienti di sviluppo (Eclipse)
- basic programming principles, in particular the object orientation paradigm (and the Java programming language) - practical experience in development of software programs - basic knowledge of Integrated Development Environment (Eclipse)
Metodi didattici
Il corso prevede lezioni frontali in aula e lezione pratiche in laboratorio. Modalità: le lezioni frontali si occupano di spiegare le fasi principali del processo di sviluppo del software e come queste si possono applicare nella pratica allo sviluppo di sistemi software. Inoltre si presenta il linguaggio UML, i principi della programmazione orientata agli oggetti, i design pattern, e alcuni cenni alla verifica e convalida. Strumenti: Diversi casi di studio sono utilizzati durante le lezioni frontali per mostrare come progettare il sistema a partire dalla deduzione dei requisiti dal dominio applicativo. Lo scopo è fornire alcuni esempi concreti di applicazione delle procedure viste nel corso. Gli studenti sviluppano propri progetti di architettura in linguaggio UML e progetti software in linguaggio Java durante le ore di laboratorio. Lo scopo del laboratorio è 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 i casi di studio. Eclipse viene adottato come IDE di riferimento per lo sviluppo e il testing del software tramite plug-in JUnit. Inoltre vengono presentati i principi alla base dei sistemi di versioning che gli studenti sperimentano in laboratorio tramite l’uso di git e bitbucket. Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete) che contiene le slide del corso, i tutorial su UML, le istruzioni per l'editor UML, git e bitbucket, alcune prove scritte del passato, ecc.
The classes are both frontal and practical. Mode: The frontal lectures introduce the overall development lifecycle process and its own practical application. The UML modeling language, the object orientation paradigm, the design patterns are also presented along with an introduction to verification and validation. Tools: Different case studies are used to show the application of theoretical aspects from requirements elicitation. The students develop their own architecture projects using the UML modeling language, and software projects using the Java programming language. The Visual Paradigm graphical editor is employed during both frontal and laboratory lectures, to model the architecture and the behavior of different software systems. The Eclipse software tool is adopted as the IDE of choice to develop and test Java applications using the JUnit plug-in. Software Versioning systems are also presented and experimented using git and bitbucket. The course has its own webpage in the DIR (Didattica in Rete) platform, which contains the slides, UML tutorials, the Visual Paradigm, git and bitbucket instructions, and other supporting materials.
Altre informazioni
Sono previste tre prove pratiche in itinere per consentire agli studenti di superare la parte pratica in modo graduale.
Three practical progress test are expected. These tests allow the students to gradually verify the learning process of the practical part.
Modalità di verifica dell'apprendimento
L'esame prevede una prova scritta riguardante la parte di teoria, ed una prova pratica in cui si progetta e realizza un sistema software come appreso durante le ore di laboratorio. La partecipazione alla prova scritta è libera; invece la prova di laboratorio richiede di aver superato con successo la parte scritta. 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. Durante l’esame pratico si verificano i seguenti aspetti: la capacità di estrarre i requisiti di sistema da un testo steso dal committente, la capacità di progettare l’architettura software tramite diagrammi UML, gli attributi di qualità del software sviluppato che implementa le specifiche richieste, la capacità di utilizzare strumenti di versioning per tracciare l’evoluzione del progetto sviluppato. Durante la prova pratica è consentita la consultazione del materiale del corso o di manuali. Ogni aspetto da luogo ad un punteggio dipendente dalla complessità e dalla correttezza. I punteggi vanno a comporre la valutazione della parte pratica. Il voto finale è dato dalla somma tra il voti dell'esame scritto e il punteggio relativo alla valutazione della parte pratica.
The examination is composed of a written test to asses the knowledge on the theoretical aspects of the course, and a practical test where the students design and implement a software system using the methods and tools introduced during the laboratory lectures. To access the practical test, the students have to pass the written test. The written test do not have access requirements. The written test is an assessment intended to measure the knowledge on different phases of the software lifecycle process, the correct terminology, and the application of specific methods and principles. Around 10 questions on theoretical aspects, and around 3 brief exercises are expected. Each question and each exercise has its own score depending on the relevance and complexity. During the written test the use of books or technical manuals is not allowed. The practical test aim at assessing the following aspects: requirements elicitation from plain text, the ability of designing the software architecture using UML diagrams, the quality attributes of the developed software implementing the requirements, the ability of using version control systems to track the evolution of the project. During the practical test, the students may use books or technical manuals. Each aspects has its own score that compose the evaluation of the practical test. The final evaluation is the sum of the written test score and the practical test score.
Programma esteso
Processi - qualità del software, cicli di vita del software - unified process, valutazione dei processi (CMMI) - metodologie agili, extreme programming - open source, versioning, bug tracking Progettazione - Object orientation, intro a UML (class diagram) - Polimorfismo, collegamento dinamico, relazioni tra oggetti, identificazione delle classi - Design patterns - UML (use cases, sequence, state) - UML (activity diagram, package, component) Verifica e convalida: - introduzione al testing, criteri di copertura strutturali, analisi statica dataflow - analisi mutazionale, test funzionale - debugging, mocking
Software Development Process - software quality, software development lifecycle - unified process, process evaluation (CMMI) - agile, extreme programming - open source, versioning, bug tracking Design - Object orientation, UML (class diagram) - Polymorphism, dynamic binding, object relationships - Design patterns - UML (use cases, sequence, state) - UML (activity diagram, package, component) Verification: - testing, structural coverage, static analysis dataflow - mutational analysis, functional testing - debugging, mocking
Risultati di apprendimento attesi
Descrivere le qualità del software e del processo di produzione identificando come esse si relazionano tra loro. Descrivere le principali attività del processo di produzione del software. Descrivere i maggiori modelli del processo di produzione del software, individuando vantaggi/svantaggi in funzione del contesto applicativo. Descrivere e applicare la valutazione della maturità del processo di produzione e dei singoli individui. Usare strumenti di condivisione del codice sorgente (SCM: source code management), quali git, per la coordinazione dello sviluppo di software in ambiente distribuito. Descrivere e applicare nella pratica il concetto di progettazione modulare. Enunciare la definizione di relazione tra moduli, gerarchia e livello di astrazione. Descrivere e applicare i principi della progettazione/programmazione orientata agli oggetti. Descrivere lo scopo, caratteristiche e componenti dei principali diagrammi UML usati per la progettazione del software. Applicare la conoscenza del linguaggio di specifica UML nella pratica allo scopo di progettare vari aspetti di un sistema software. Descrivere i principali Design-pattern delle varie categorie (comportamentali, creazionali, strutturali) individuando vantaggi/svantaggi, soluzioni alternative, anti-pattern. Applicare nella pratica i Design-pattern durante la progettazione/sviluppo del software. Descrivere le principali attività di verifica e convalida usate all'interno del processo di produzione. Enunciare la definizione di test, caso di test, successo del test, criterio di selezione (valido, affidabile). Applicare i criteri di selezione del test nella pratica su semplici esempi di codice. Descrivere le principali strategie di test di modulo (strutturale, funzionale). Descrivere e applicare nella pratica i criteri di adeguatezza del test strutturale. Descrivere e applicare nella pratica il partizionamento in classi di equivalenza nel contesto del test funzionale. Descrivere e applicare l'analisi statica su semplici esempi di codice. Descrivere e applicare nella pratica il concetto di test di integrazione. Descrivere le tecniche di test double per il test di modulo in isolamento. Usare ambienti di sviluppo (IDE: integrated development environment), quali Eclipse, per lo sviluppo, il test e il debugging di programmi software orientati agli oggetti (Java).
Describe the qualities associated with both the software product and the software development process. Describe the main activities of the software development process. Describe the main software development process models, with particular focus on advantages/disadvantages depending on the application context. Describe and identify simple examples of the Capability Maturity Model Integration. Use source code management (SCM) tools (e.g., git) in practice to achieve teamwork coordination. Describe and apply in practice the principles of modular design. Formally define the concepts of: binary relation between modules, hierarchy, abstraction level. Describe and apply in practice the principles of the object orientation both in design and programming. Describe the aim, the characteristics, and the components of the main UML diagrams. Use the UML language to describe different aspects of a software system. Describe the main Design-patterns of each category (behavioral, creational, structural) also identifying advantages/disadvantages, alternative architectural solutions, and anti-patterns. Apply the Design-patterns in practice during both design and development of software systems. Describe the main verification and validation (V&V) activities usually performed during the software development lifecycle. Formally define the concepts of: test, test case, success, selection criterion (reliable, valid). Apply the test selection criterion on simple examples. Describe the main module testing strategies (structural, functional). Describe and apply in practice test adequacy criteria for structural test. Describe and apply in practice the equivalence class partitioning (ECP). Describe and apply the static analysis on simple examples. Describe and apply in practice integration testing activity. Describe the test double technique to achieve module test in isolation. Use integrated development environment (IDE), such as Eclipse, to develop, test, debug object-oriented software systems (Java programs).
×
Stampa
Insegnamento
RETI 2
Codice
MF0165
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CEROTTI DAVIDE
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
3
Periodo
Annuale
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
Sedi e/o partizioni Agenda web
ALESSANDRIA
VERCELLI
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
RETI 2
Codice
MF0165
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GIORDANA Attilio
CFU
9
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
3
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Il corso consiste di due moduli fondamentali. Il primo modulo, riferito nel seguito come Fondamenti, tratta i fondamenti delle reti di calcolatori ed è la naturale prosecuzione dello studio delle reti di calcolatori iniziato con il corso Reti I secondo l'approccio "top-down". Il secondo modulo, riferito nel seguito come Sperimentazioni, consiste nella progettazione e nella implementazione di una applicazione di rete in cui gli studenti applicano le conoscenze metodologiche acquisite nel modulo di Fondamenti e nel precedente corso di Reti I.
The course is structured in two modules: Fundaments and Programming.Fundaments module deals with the fundamental notions underlying the computer networks, and is the natural continuation of the previous course “Computer Network I”, according the “top-down” approach. The programming module is a “lab” in which the students design and implement a network application based on the concepts acquired in the Fundaments module and in the Computer Architecture I course.
Testi di riferimento
Fondamenti: James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Quarta Edizione, Addison Wesley (2008), ISBN 978-88-7192-455-7. Sperimentazioni: S. Cheshire and D.H.Steinberg: Zero Configuration Networking, O'Reilly Media, December 2005 Matt Richardson: "Getting Started with Beaglebone", Maker media Inc., October 2013 Derek Molloy, "Exploring BeagleBone: Tools and Techniques for Building with embedded Linux. Wiley editor. February 2015.
Fundaments: James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Quarta Edizione, Addison Wesley (2008), ISBN 978-88-7192-455-7. Programming: S. Cheshire and D.H.Steinberg: Zero Configuration Networking, O'Reilly Media, December 2005 Matt Richardson: "Getting Started with Beaglebone", Maker media Inc., October 2013 Derek Molloy, "Exploring BeagleBone: Tools and Techniques for Building with embedded Linux. Wiley editor. February 2015.
Obiettivi formativi
L’obiettivo generale del corso è quello di fornire agli gli studenti le conoscenze necessarie per poter sviluppare una applicazione di rete progettata secondo i paradigmi che sottostanno all’IoT (Internet of Things), Cloud Computing e Fog Computing. In particolare, nel modulo di Fondamenti si affrontano quattro tematiche principali. La prima, è sostanzialmente il completamento dello studio delle architetture di rete, iniziato nel corso di Reti I, e concerne l’architettura del livello dati e fisico delle reti cablate e delle reti wireless. La seconda concerne le tecniche di trasmissione dati nelle applicazioni multimediali. La terza concerne la problematica della sicurezza nelle reti ed introduce le tecniche fondamentali per l’autenticazione e la crittografia. Infine, la quarta affronta le problematiche della comunicazione tra agenti, distribuiti in reti private, tramite servizi localizzati in Cloud e dell’autoconfigurazione degli host nelle reti locali.Sperimentazioni: affronta le problematica dello sviluppo di un’applicazione distribuita su più reti private.
General goal of the course is to teach the basic notions necessary in order to develop a network application designed according to the current paradigms underlying IoT, Cloud Computing and Fog Computing. More specifically, in the Fundaments module four major topics are addressed. In the first one, the study of network architectures , initiated in “Computer Network I”, is completed by investigating the structure of Data Link and Physical layers. In the second topic, the problem of data transmission in multimedia applications is approached. In the third topic the principles of network security are introduced, with particular emphasis on cryptography and authentication techniques. Finally, the fourth topic focuses on the architecture of applications distributed in different private network, with special emphasis on self-configuration methods and on inter-process communication.The programming module focuses on the architecture of applications distributed across different private networks and interconnected trhough cloud services.
Prerequisiti
Aver sostenuto con esito positivo gli esami di Reti I, Programmazione I e II.
Having passed the examination of "Computer Networks", Programming I and II courses.
Metodi didattici
Fondamenti: lezioni frontali in aula, esercitazioni tramite piattaforma Moodle. Sperimentazioni: lezioni frontali e lavoro di progettazione e implementazione in laboratorio, assistito dal docente.
Fundaments: Lessons in class, exercises given through the platform Moodle. Programming: Lectures and laboratory sessions assisted by the teacher.
Altre informazioni
Fondamenti: Durante il corso vengono fatte esercitazioni volte a valutare l’acquisizione degli strumenti presentati e dei concetti introdotti. Sperimentazioni: L'attività in laboratorio permette di seguire il progresso degli studenti durante il corso.
Fundaments: All along the course self-evaluation exercises are proposed to assess understanding of concepts and technical aspects. Programming: The hands-on activity in the lab allows to follow closely the students' progresses.
Modalità di verifica dell'apprendimento
Fondamenti: Esame orale. Sperimentazioni: La verifica dell'apprendimento verrà effettuata chiedendo allo studente di implementare una semplice applicazione di rete che implichi la comunicazione tra due o più oggetti. Lo studente dovrà dimostrare la funzionalità di quanto sviluppato e giustificare le soluzioni adottate in un colloquio col docente.
Fundaments: oral exam. Programming:In order to assess the skill he has achieved, the student is required to develop a simple network application involving the communication between at least two hosts. The grade will be assigned on the basis of a demonstration of the application prototype and of a discussion of the code.
Programma esteso
Fondamenti: _ Interfacciamento tra il livello rete e il livello dati: protocolli ARP, RARP _ Livello dati: protocolli per l'accesso al mezzo (Ethernet), tecniche per il rilevamento e la correzione degli errori di trasmissione. _ Componenti utilizzati a livello dati: bridge, switch. _ Reti WIRELESS: reti WI-FI e Reti Cellulari _ Reti per IoT: Bluetooth, KNX, ZigBee. _ Comunicazione multimediale: architetture e protocolli di streaming _ Comunicazione interattiva su reti IP: IP-PHONE, Video-conferenza su IP, protocolli RTP, SIP. _ Tecniche di Forward Error Correction. _ Sicurezza: le problematiche fondamentali, tecniche crittografiche a chiave simmetrica, tecniche crittografiche a chiave pubblica, firma digitale, SSL. _ Comunicazione tra agenti localizzati in reti private: tecniche basate sulla collaborazione dei router, tecniche basate su un broker localizzato in un cloud, comunicazione tramite il paradigm “publish-subscribe”. Le lezioni teoriche vengono integrate da alcune lezioni pratiche anche lezioni pratiche in cui vengono assegnati esercizi da svolgere in aula o a casa. Sperimentazioni: _ Utilizzazione dei socket (versione bsd) per l'implementazione della comunicazione di tra processi su rete IP. _ Utilizzazione di meccanismi auto-configuranti per implementare una rete di agenti comunicanti. _ agenti comunicanti tramite broker basato su MQTT. _ Implementazione di un agente personalizzato che sa in grado di offrire un servizio specifico nel quadro di una applicazione "Internet of Things". - porting dell'agente sviluppato su una architettura embedded basata su Linux.
Fundaments: _ Interface between the network and datalink levels: protocols ARP, RARP _ Datalink level: protocols for accessing the transmission media (Ethernet), techniques for detection and correction of transmission errors. _ Datalink level devices: bridge, switch. _ WIRELESS networks: WI-FI networks, cellular networks._IoT oriented networks: Bluetooth, KNX, ZigBee. _ Multimedia communication: streaming architectures and protocols. _ Interactive communication on IP networks: IP-PHONE, Video-conferencing on IP, RTP, SIP protocols. _Forward Error Correction techniques. _Security: symmetric key and public key cryptography, digital signature, SSL. _ Inter-process communication for agents located in private networks: methods based on router cooperation, methods based on brokers located in a cloud, publish-subscribe paradigm. The course also includes practical lessons where the students are required to solve exercises. Programming: - Development of a simple interprocess communication library based on bsd Unix sockets. - Experimentation with a software package designed for developing an agent based distributed application in the IOT domain. - Development of a customized agent providing a specific network service. - Porting of the agent on a Linux based embedded board like beaglebone or Raspberry-PI.
Risultati di apprendimento attesi
Al termine del corso lo studente dovrebbe avere acquisito la capacità di progettare e realizzare in modo autonomo una applicazione di rete nel dominio dell’IoT.
The expectation is that, at the end of the course, a student be able to design and implement a distributed application in the IoT domain.
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
RETI 2
Codice
MF0165
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CEROTTI DAVIDE
CFU
9
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
3
Periodo
Annuale
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Seguendo l'approccio top down iniziato nel corso di Reti 1, si prosegue l’analisi della pila di protocolli OSI con lo studio del livello di collegamento e, in parte, del livello fisico. Vengono analizzati i protocolli specifici per le comunicazioni wireless e mobili e si analizzano le tecniche adottate per lo sviluppo di applicazioni multimediali di rete (streaming, VoIP).
Following the top-down approach introduced in the Computer Networks 1 course, the analysis of the OSI protocol stack proceeds with the link layer and, partially, the physical one. Moreover, the wireless and mobile communication protocols and the techniques used for multimedia network applications (e.g. streaming, VoIP) are analyzed.
Testi di riferimento
James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Settima Edizione, Addison Wesley (2017)
James F. Kurose, Keith W. Ross, Reti di Calcolatori e Internet - Un approccio top-down , Settima Edizione, Addison Wesley (2017)
Obiettivi formativi
Conoscenza e capacità di comprensione: comprendere i principi generali delle tecniche usate nei protocolli di collegamento e per le comunicazioni mobili e wireless. Conoscere i diversi tipi di applicazioni multimediali ed il ruolo che i protocolli di rete hanno nel supporto di queste applicazioni.Capacità di applicare conoscenza e comprensione: applicare i principi acquisiti per sviluppare un’applicazione di rete.Autonomia di giudizio: valutare autonomamente i pregi e gli svantaggi delle diverse tecniche apprese durante il corso e saper giudicare quali sono preferibili in base ai differenti condizioni operative Abilità comunicative: Capacità di apprendere:
Knowledge and understanding: understand the general principles of the techniques used in the link layer protocol and in the wireless and mobile communications. Knowing the different types of multimedia application and the role of the network protocols in supporting such applications. Applying knowledge and understanding: apply the acquired principles to develop a network application. Making judgments: autonomously evaluate the pro and cons of the techniques acquired during the course and be able to decide the best one according to the different operating conditions.Communication skills: Learning skills
Prerequisiti
Gli argomenti del corso di Reti 1.
The topics in the Computer Networks 1 course.
Metodi didattici
Lezioni in classe ed in laboratorio.
Lessons in class and in computer lab, use of the Moodle platform.
Altre informazioni
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
Esame scritto o orale con alcune (da 4 a 6) domande sui diversi argomenti trattati nel corso e discussione del progetto assegnato in laboratorio. Il voto finale terrà conto della valutazione ottenuta sulle singole domande e sul progetto di laboratorio.
Written or oral exam consisting in 4-6 questions on different course topics and discussion on the programming project assigned in computer lab. The final grade will be based on the score obtained on the single questions and project.
Programma esteso
Livello di collegamento e livello fisico. Le reti wireless e le reti mobili. Le applicazioni multimediali nelle reti. La sicurezza nelle reti informatiche. La gestione delle infrastrutture di rete.
The link and physical layers. Wireless and mobile networks. Multimedia networking applications. Security in computer networks. Management of computer network infrastructures.
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 1
Codice
S1725
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
TERENZIANI Paolo
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI,ALESSANDRIA
Tipo di valutazione
V
Sedi e/o partizioni Agenda web
ALESSANDRIA
VERCELLI
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 1
Codice
S1725
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
TERENZIANI Paolo
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Linguaggi formali, grammatiche context free, automi riconoscitori, parsing LR.
Formal languages, context free grammars, automata, LR parsing.
Testi di riferimento
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione Volume 1: Metodi Sintattici”,  CLUP.
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione Volume 1: Metodi Sintattici”,  CLUP.
Obiettivi formativi
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) 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.
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) and SLR(1) parsers 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.
Prerequisiti
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
Lezioni frontali in aula, esercitazioni.
Teacher lessons in classroom, exercises.
Modalità di verifica dell'apprendimento
Esame scritto (orale facoltativo). Contiene sia esercizi pratici che domande teoriche.
Written examination (oral examination is  optional). It contains both practical excercises and theoretica questions.
Programma esteso
-        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)).
-        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))
Risultati di apprendimento attesi
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
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
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
FONDAMENTI, LINGUAGGI E TRADUTTORI 1
Codice
S1725
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
BOTTRIGHI Alessio
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Sede
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Linguaggi formali, grammatiche context free, automi riconoscitori, parsing LR.
Formal languages, context free grammars, automata, LR parsing.
Testi di riferimento
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione”,  Esculapio.
Stefano Crespi Reghizzi “Sintassi, semantica e tecniche di compilazione”,  Esculapio.
Obiettivi formativi
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) 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.
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) and SLR(1) parsers 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.
Prerequisiti
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
Lezioni frontali in aula, esercitazioni.
Teacher lessons in classroom, exercises.
Modalità di verifica dell'apprendimento
Esame scritto (orale facoltativo):7-8 domande, che posso essere sia esercizi pratici sia domande teoriche
Written examination (oral examination is  optional): 7-8 questions, that can be both applied exercise and theoretical question.
Programma esteso
-        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)).
-        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))
Risultati di apprendimento attesi
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
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
×
Stampa
Insegnamento
Applicazioni mobili
Codice
MF0128
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MANZINI Giovanni
CFU
6
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OPZ
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Introduzione alla programmazione di dispositivi mobili
Introduction to mobile programming
Testi di riferimento
Android Recipes A Problem-Solution Approach. Apress. ISBN 978-1-4302-4615-2
Android Recipes A Problem-Solution Approach. Apress. ISBN 978-1-4302-4615-2
Obiettivi formativi
Conoscenza e capacità di comprensione: Comprendere i principi generali della programmazione di dispositivi mobili. Capacità di applicare conoscenza e comprensione: Applicare i principi generali per la realizzazione di semplici app. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto al migliore uso delle tecniche e strumenti di programmazione mobile. Gli studenti dovranno essere in grado di comunicare e spiegare l'uso delle tecniche di programmazione mobile appropriate per un dato problema. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per utilizzare anche tecniche e strumenti di programmazione mobile non svolti a lezione.
Knowledge and understanding: Understanding the role and the main principles of mobile programming. Applying knowledge and understanding: Applying the general principles to create simple apps. Making judgements: students will be able to autonomously evaluate the best tools and techniques for mobile programming. Communication skills: students will learn to communicate and justify the basic the use of the appropriate mobile programming techniques for the solution of a given problem. Learning skills: students will be able to autonomously learn to use system techiques and tools for mobile programming not studied during the course.
Prerequisiti
Aver superato il corso di Programmazione ad oggetti.
Having passed the examination of "Objects programming" course
Metodi didattici
Lezioni frontali e sperimentazione in laboratorio. 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 ed i testi di eventuali esercizi assegnati.
Lectures and laboratory sessions. On the DIR platform students can find the suggested textbooks and additional material. After each lecture, the subject of the lecture is reported together with any assignment carried out during the lecture.
Altre informazioni
Controllo apprendimento in itinere: Durante il corso vengono svolti esercizi che riguardano l'implementazione di semplici app.
Monitoring the learning process: During the course, students will implement simple mobile apps under the supervision of a teacher.
Modalità di verifica dell'apprendimento
Esame orale consistente nella discussione di da 4 a 6 esercizi assegnati durante l'anno e di un eventuale progetto.
Oral exam consisting in the discussion of from 4 to 6 simple app developed by the student during the course and of an optional larger project
Programma esteso
Concetti base di programmazione mobile. Piattaforma Android. Emulatore Android. XML-based Layout. Widget e container. Input Framework. Messaggi Pop-up. Gestione dei Thread. Ciclo di vita di una app. Creazione di Intent filter. Gestione di formati di schermo diversi Uso di Git. Frammenti. Menu e Preferenze. Accesso ai file. ListViews e Adapters. Task e servizi. Servizi di localizzazione e geofence. Sensori. Mappe e StreetView. Uso di Firebase come backend
Basic concepts of mobile programming. Android platform and emulator. XML-based Layout. Widget & Containers. Input Framework. Pop-up messages. Threads. Lifecicle of an app. Intent filters. Managing different screen formats. Git. Fragments. Menus & Preferences. Accessing Files. ListViews & Adapters. Tasks and services. Location services & Geofences. 2D graphics. Sensors. Maps & Street View. Use of Firebase as a backend.
Risultati di apprendimento attesi
Saper realizzare delle applicazioni mobili complete che utilizzano tutti i concetti e gli strumenti della piattaforma Android visti a lezione.
Students are expected to develop complete mobile apps using all the concepts and tools of the Android platform studied in the course.
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
MF0123Applicazioni mobili: sviluppo di applicazioni mobili 1 INF/01 - INFORMATICA Canonico Massimo
MF0124Applicazioni mobili: sviluppo di applicazioni mobili 2 INF/01 - INFORMATICA Manzini Giovanni
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
Applicazioni mobili: sviluppo di applicazioni mobili 1
Codice
MF0123
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CANONICO Massimo
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano.
Italian.
Contenuti
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
Beginning Android 4, G. Allen, ApressISBN13: 978-1-4302-3984-0
Beginning Android 4, G. Allen, ApressISBN13: 978-1-4302-3984-0
Obiettivi formativi
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 concerningthe development of mobile applications.
Prerequisiti
Aver superato il corso di programmazione ad oggetti.
Having passed the examination of "Objects programming" course
Metodi didattici
Lezioni frontali e sperimentazione in laboratorio.
Lectures and laboratory sessions.
Altre informazioni
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
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
0- Informazioni generali sul corso 1- Concetti base 2- Piattaforma Android 3- Emulatore Android 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
0- About the course 1- How to get started 2- Android platform 3- Android emulator 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
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
Applicazioni mobili: sviluppo di applicazioni mobili 2
Codice
MF0124
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MANZINI Giovanni
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
×
Stampa
Insegnamento
APPLICAZIONI WEB: LINGUAGGI E ARCHITETTURE
Codice
MF0224
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MANTOVANI DANIELE
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Programmazione web server-side.
Server-side web programming.
Testi di riferimento
Suggeriti ma non obbligatori: http://csharpindepth.com/ http://www.albahari.com/nutshell/
http://csharpindepth.com/ http://www.albahari.com/nutshell/
Obiettivi formativi
Apprendimento dei fondamenti del linguaggio C#. Apprendimento delle basi di ASP.Net MVC e capacità di applicarlo nella realizzazione di applicazioni web 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.
Prerequisiti
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 MySQL 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 MySQL Basic understanding of Windows.
Metodi didattici
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
Durante il corso verranno assegnati degli esercizi.
Exercises assigned during the course.
Modalità di verifica dell'apprendimento
Progetto di laboratorio e esame orale.
Lab project and oral discussion.
Programma esteso
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) e l'utilizzo di tool di sviluppo complessi (Visual Studio).
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) and the use of complex development tools (Visual Studio).
×
Stampa
Insegnamento
ELETTRONICA DIGITALE
Codice
MF0309
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
RAMELLO Luciano
Docenti
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
FIS/01 - FISICA SPERIMENTALE
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
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
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
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
Corsi di Fisica, Architettura 1.
Courses of Physics, Computer architecture 1.
Metodi didattici
Lezioni frontali. Dimostrazioni del funzionamento di componenti discreti e circuiti integrati.
Lectures. Practical demonstrations of discrete electronic components and integrated circuits.
Altre informazioni
Controllo dell'apprendimento: verra' fatto mediante domande durante le lezioni frontali ed eventualmente quiz proposti sulla piattaforma D.I.R. Risultati di apprendimento attesi: 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.
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. Expected learning outcomes: 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.
Modalità di verifica dell'apprendimento
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
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.
×
Stampa
Insegnamento
Apprendimento ed estrazione di conoscenza
Codice
MF0058
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
SAITTA Lorenza
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Apprendimento Automatico: Modelli grafici: rappresentazione e inferenza Estrazione della Conoscenza: Metodi di apprendimento di modelli grafici.
Machine Learning: Graphical models: representation and inference Knowledge Extraction: Learning graphical models
Testi di riferimento
Documentazione reperibile sul sito del corso.
Documentation and tools are provided by the teacher (on the web site of the course).
Obiettivi formativi
Apprendimento Automatico: Fornire allo studente le conoscenze necessarie per usare modelli grafici nelle applicazioni Estrazione della Conoscenza: Approfondire le conoscenze relative all’apprendimento ed estrazione di conoscenza, con particolare attenzione all’apprendimento automatico di modelli grafici.
Machine Learning: To provide detailed knowledge of the inference on and of use of graphical models. Knowledge Extraction: To provide the means to learn graphical models for applications.
Prerequisiti
Conoscenze acquisite nei corsi di algoritmi e programmazione della laurea triennale.
Knowledge acquired in the undergraduate courses in algorithms and programming.
Metodi didattici
Lezioni frontali in aula ed esercitazioni
Frontal lessons and application of the theory to case studies
Altre informazioni
Apprendimento Automatico: Durante il corso vengono fatte esercitazioni. Estrazione della Conoscenza: Durante il corso possono essere forniti agli studenti degli esercizi da svolgere.
Machine Learning: During the courses practical sessions will be offered to the students Knowledge Extraction: During the course exercises might be provided to the students.
Modalità di verifica dell'apprendimento
Progetto ed Esame orale.
Project and Oral Exam.
Programma esteso
Apprendimento Automatico: 1. Reti Bayesiane: Modello generativo, Variabili discrete, Modelli lineari Gaussiani 2. Indipendenza condizionale: D-separazione 3. Markov Random Fields (Reti di Markov): Indipendenza condizionale, Fattorizzazione, Relazione con le Reti Bayesiane 4. Inferenza nei modelli grafici: Inferenza su catene, alberi e factor graphs, L’algoritmo somma-prodotto, L’algoritmo max-sum, Inferenza esatta in grafi generici, Propagazione ciclica di belief, Apprendimento della struttura del grafo 5. Modelli misti e Algoritmo EM: Algoritmo K-Means, Miscela di Gaussian, EM per miscele di Gaussiane, Una visione alternativa dell’EM, Algoritmo EM generico 6. Modelli di Markov e Modelli di Markov nascosti (HMM): Massima verosimiglianza nei Modelli di Markov, Algoritmo forward-backward, Algoritmo somma-prodotto per gli HMM, Algoritmo di Viterbi, Estensione degli HMM 7. Modelli dinamici lineari (LDS): Inferenza negli LDS, Apprendimento negli LDS, Estensione degli LDS Estrazione della Conoscenza: 1. Linguaggi logici e inferenza: Nozioni di base sulla Logica dei Predicati, Sussunzione 2. Reti di Markov come distribuzioni di probabilità. Reti di Markov logiche. 3. Inferenza approssimata: Markov chain Monte Carlo, Rejection sampling, Gibbs sampling 4. Apprendimento di modelli relazionali probabilistici: Definizione del problema, Apprendimento della struttura, Apprendimento dei parametri. 5. Apprendimento di Reti di Markov: Operazioni per l’apprendimento di modelli grafici 6. Apprendimento di programmi logici Bayesiani: Apprendimento della struttura, Apprendimento dei parametri, Metodo dei test di indipendenza. Apprendimento di Reti di Markov Logiche.
Machine Learning: 1. Bayesian Networks: Generative models, Discrete variables, Linear-Gaussian models 2. Conditional Independence: Three example graphs, D-separation. 3. Markov Random Fields: Conditional independence properties, Factorization properties, Relation to Bayesian Networks. 4. Inference in Graphical Models: Inference on a chain, Trees, Factor graphs, The sum-product algorithm, The max-sum algorithm, Exact inference in general graphs, Loopy belief propagation, Learning the graph structure. 5. Mixture Models and EM: K-means Clustering, Mixtures of Gaussians ,EM for Gaussian mixtures, An Alternative View of EM, he EM Algorithm in general. 6. Markov Models and Hidden Markov Models: Maximum likelihood for the HMM, The forward-backward algorithm, The sum-product algorithm for the HMM, The Viterbi algorithm, Extensions of the hidden Markov model. 7. Linear Dynamical Systems: Inference in LDS, Learning in LDS, Extensions of LDS. Knowledge Extraction: 1. Basic notion of Predicate Logics 2. Markov networks as probability distributions. Logical Markov Networks. 3. Approximate inference: Markov Chain Monte Carlo, Rejection sampling, Gibbs sampling. 4. Learning probabilistic relational model: Problem position, Structure learning, Parameter learning. 5. Learning Markov networks: Operations for Learning with Graphical Models 6. Principles of learning Bayesian logic programs: Learning the structure and the parameters Learning based on independence tests. Learning Logical Markov Networks.
Risultati di apprendimento attesi
Lo studente deve raggiungere un livello di conoscenza sufficiente per poter sviluppare un’applicazione basata sulla metodologia dei modelli grafici.
The student should gain the capability of developing a real application according to the graphical model approach
×
Stampa
Insegnamento
Business intelligence: gestione dei dati
Codice
MF0059
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
TERENZIANI Paolo
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano/Inglese
Italian/English
Contenuti
Il corso sarà articolato nelle seguenti parti: A) Datawarehousing 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.
The course will be organized into the following parts: A) Datawarehousing 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
Testi di riferimento
A) M. Golfarelli, S. Rizzi: “Data Warehose”, McGraw-Hill, Milano.
A) M. Golfarelli, S. Rizzi: “Data Warehose”, McGraw-Hill, Milano.
Obiettivi formativi
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
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
Prerequisiti
Nozioni di base delle basi di dati relazionali, algebra relazionale, SQL
Basic notions about relational databases, relational algebra, SQL
Metodi didattici
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
A) Orale
A) Oral examination
Programma esteso
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)
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)
Risultati di apprendimento attesi
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)
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)
×
Stampa
Insegnamento
INFORMATICA FORENSE
Codice
I0496
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
ANGLANO Cosimo Filomeno
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Il tema del corso è lo studio di metodologie, tecniche e strumenti per l’analisi dei sistemi informatici al fine di reperire tracce informatiche con valore probatorio, ovvero che siano utilizzabili in procedimenti giudiziari sia di tipo civile che di tipo penale.
The course focuses on methodologies, techniques and tools for the forensic analysis of computer systems, that aim at the identification, preservation, interpretation and analysis of digital evidence.
Testi di riferimento
1) J. Sammons. The basics of Digital Forensics, Syngress, 2014, cod ASIN B011 DAI9YY 2) R. Messier. Operating Systems Forensics. Syngress, 2015. ISBN 978-0128019498 3) D. Elrick. Forensic Examination of Windows-Supported File Systems, 2014. ISBN 978-1497358355 4) L. Reiber. Mobile Forensic Investigations. McGraw-Hill Education, 2015. ASIN: B01BEL9WUW5) 5) S. Davidoff, J. Ham. Network Forensics: Tracking Hackers Through Cyberspace. Prentice Hall, 2012. ISBN 978-0132564717
1) J. Sammons. The basics of Digital Forensics, Syngress, 2014, cod ASIN B011 DAI9YY 2) R. Messier. Operating Systems Forensics. Syngress, 2015. ISBN 978-0128019498 3) D. Elrick. Forensic Examination of Windows-Supported File Systems, 2014. ISBN 978-1497358355 4) L. Reiber. Mobile Forensic Investigations. McGraw-Hill Education, 2015. ASIN: B01BEL9WUW5) 5) S. Davidoff, J. Ham. Network Forensics: Tracking Hackers Through Cyberspace. Prentice Hall, 2012. ISBN 978-0132564717
Obiettivi formativi
Conoscenza e capacità di comprensione: comprendere i principi generali delle metodologie, delle tecniche e degli strumenti che permettono di 1) acquisire le evidenze digitali senza alterare o modificare il sistema informatico su cui si trovano 2) garantire che le prove acquisite su altro supporto siano identiche a quelle originali 3) analizzare i dati senza alterarli 4) correlare tra di loro evidenze di tipo diverso Conoscenza e capacitá di comprensione applicate: gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per applicare in casi reali le metodologie, le tecniche e gli strumenti propri dell'Informatica Forense. Autonomia di giudizio: gli studenti dovranno essere in grado di valutare quali delle metodologie, tecniche e strumenti dell'Informatica Forense appresi a lezione 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 dell'Informatica Forense. Capacitá di apprendere: gli studenti dovranno apprendere le conoscenze metodologiche necessarie per utilizzare anche metodologie, tecniche e strumenti non trattati nel corso, e che saranno frutto dei progressi nel campo dell'Informatica Forense.
Learn the methodologies, techniques and tools for: The acquisition of digital evidence in such a way that their integrity is preserved; The analysis of digital evidence; The documentation of the various steps performer during the analysis in order to ensure repeatability; correlation of different types of digital evidence
Prerequisiti
Sistemi Operativi 1, Sistemi Operativi 2, Architetture degli Elaboratori 1, Architetture degli Elaboratori 2
Operating Systems I and II, Computer Architecture I and II
Metodi didattici
Lezioni frontali. Esercitazioni pratiche svolte in aula e in laboratorio.
Class lectures. Practical application, both in class and in the lab, of taught methodologies to case studies.
Altre informazioni
Le competenze verificate in sede d'esame, necessarie per il superamento del corso, consistono nella dimostrazione di aver appreso i concetti di base relativi all'acquisizione ed alla gestione dell'evidenza digitale, le metodologie di analisi di file system, sistemi operativi, applicazioni utente, traffico di rete, e dispositivi digitali mobili.
Competence check: the exam will check if the student has achieved the learning objectives mentioned before.
Modalità di verifica dell'apprendimento
Esame pratico (obbligatorio) e orale (facoltativo). L'esame pratico si svolgerá in laboratorio, e consisterá nello svolgimento di alcuni esercizi in cui sará chiesto di applicare le metodologie, le tecniche e gli strumenti trattati a lezioni a dei casi concreti. L'esame orale verterá invece sugli aspetti metodologici trattati nel corso.
Practical examination(mandatory), and oral examination (optional). The practical examination will be carried out in the lab, and it will consist in the solution to some exercises in which the student will be asked to apply to concrete cases the methodologies, techniques, and tools that have been illustrated during the course. The oral examination will be instead focused on the methodologies illustrated during the course.
Programma esteso
1) Evidenza digitale e computer forensics 2) Acquisizione dati da supporti di memoria 3) Tecniche di codifica e decodifica dei dati: informazione testuale (ASCII/Extended ASCII, Unicode UTF8/UTF16) 4) Analisi forense dei file system: concetti generali su implementazione e funzionamento dei file system, tecniche di recupero dei file cancellati basate su metadati, analisi delle informazioni temporali associate ai file 5) Analisi forense dei sistemi operativi: cenni generali 6) analisi forense delle applicazioni: concetto di “firme (signatures)”, file carving, metadati applicativi, cronologia di navigazione su Internet 7) Computer Forensics: tecniche di acquisizione con boot CD e live , analisi forense dei file system FAT 32 e NTFS, analisi forense dei sistemi operativi della famiglia Windows 8) Mobile forensics 9) Network forensics (cenni) 10) Anti-Forensics (cenni)
1) Digital evidence and computer forensics 2) Data acquisition techniques 3) Data encoding and decoding techniques: textual information (ASCII/Extended ASCII, Unicode UTF8/UTF16), numerical information, time information 4) File system forensic analysis: file system implementation, deleted file recovery, temporal analysis, informazioni temporali associate ai file 5) Operating System forensics 6) Application forensic analysis: signatures, file carving, application metadata, Internet browsing analysis 7) Computer Forensics: boot CD and live acquisition, forensic analysis of FAT32 and NTFS file systems, forensic analysis of Windows-based systems 8) Mobile forensics 9) Network forensics 10) Anti-Forensics
Risultati di apprendimento attesi
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
Achievement of the training objectives, as measured by the grade obtained by the student.
×
Stampa
Insegnamento
Intelligenza Artificiale
Codice
MF0057
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
PORTINALE Luigi
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
ITALIANO
Italian
Contenuti
Il corso completo di INTELLIGENZA ARTIFICIALE E SUPPORTO ALLE DECISIONI si compone di due moduli: Intelligenza Artificiale (6 CFU) e Sistemi Intelligenti di Supporto alle Decisioni (3 CFU). Nel seguito le informazioni relative ai singoli moduli vengono riportate separatamente (considerare solo quelle del modulo a cui si e' interessati) INTELLIGENZA ARTIFICIALE: Algoritmi di ricerca nello spazio degli stati; Sistemi di ragionamento basato su casi; Rapresentazione di conoscenza incerta: probabilita' e Reti Bayesiane, Teoria delle decisioni e Diagrammi di Influenza. SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Richiami di teoria delle decisioni; Utilita’ multi-attributo; Diagrammi di influenza; Decisioni one-shot e sequenziali; Decision-theoretic planning (Markov Decision Processes).
The course is composed by two modules: Artificial Intelligence (6 CFU) and Intelligent Decision Support Systems (3 CFU). Please consider only the information of the module you are interested in. ARTIFICIAL INTELLIGENCE State space search; Case-Based Reasoning; Uncertain knowledge representation: probability theory and Bayesian Networks; Introduction to Decision Theory. INTELLIGENT DECISION SUPPORT SYSTEMS Decision Theory, Multi-attribute utility, Influence diagrams, One-shot and sequential decisions, Decision-theoretic planning (Markov Decision Processes)
Testi di riferimento
S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3a edizione), Prentice-Hall. Traduzione italiana pubblicata da Pearson Education.
S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3rd edition), Prentice-Hall.
Obiettivi formativi
INTELLIGENZA ARTIFICIALE: Introdurre le nozioni fondamentali dell’Intelligenza artificiale. SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Modellare processi decisionali one-shot e sequenziali
ARTIFICIAL INTELLIGENCE: To introduce the fundamentals notions of AI systems INTELLIGENT DECISION SUPPORT SYSTEMS: Modeling one-shot and sequential decision processes
Prerequisiti
INTELLIGENZA ARTIFICIALE: ASD-I e ASD-II (consigliati), Calcolo delle Probabilita’ (consigliato). SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Intelligenza artifciale Calcolo delle probabilita'
ARTIFICIAL INTELLIGENCE: Suggested: Algorithms I and II, Probability and Statistics. INTELLIGENT DECISION SUPPORT SYSTEMS: Artificial Intelligence, Probability
Metodi didattici
Lezioni frontali in aula, esercitazioni tramite piattaforma Moodle, uso di strumenti software.
Lectures and exercises using Moodle and software tools.
Modalità di verifica dell'apprendimento
INTELLIGENZA ARTIFICIALE: Esame scritto integrato da eventuale esame orale. SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Discussione di un progetto individuale
ARTIFICIAL INTELLIGENCE: Written and oral (not mandatory) exam INTELLIGENT DECISION SUPPORT SYSTEMS: Oral discussion of a project
Programma esteso
INTELLIGENZA ARTIFICIALE: Introduzione e cenni storici sull'AI. Ricerca nello spazio degli stati: ricerca path-based cieca ed euristica. L'algoritmo A*. Algoritmi di miglioramento iterativo: hill-climbing e simulated annealing; Cenni su problemi CSP. Algoritmi per giochi a 2 concorrenti: minimax e alfa/beta pruning. Rappresentazione della conoscenza: cenni su formalismi logici e a regole. Sistemi di Case-Based Reasoning; Conoscenza Incerta: richiami di calcolo delle probabilità. Bayesian Belief Networks (proprietà ed algoritmi) e uso di tool per il loro sviluppo (Genie, Hugin, ecc...). Introduzione alla Teoria delle decisioni. SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Richiami di teoria delle decisioni. Utilita’ multi-attributo. Diagrammi di influenza Decisioni one-shot e sequenziali Decision-theoretic planning (Markov decision processes).
ARTIFICIAL INTELLIGENCE: Introduction and history of AI State space search: path-based blind and heuristic search. A* algorithm. Iterative improvement algorithms: hillclimbing and simulated annealing CSP problems Two players games: minimax and alpha/beta pruning Knowledge representations: hints on logical formalism. Case-Based Reasoning systems; the CBR-Works tool. Uncertain knowledge: probability theory, Bayesian Networks (properties and algorithms); BN tools (Genie, Hugin, etc...). Fundamentals of Decision theory. INTELLIGENT DECISION SUPPORT SYSTEMS: Decision Theory Multi-attribute utility Influence diagrams One-sot and sequential decisions Decision-theoretic planning (Markov Decision Processes)
Risultati di apprendimento attesi
INTELLIGENZA ARTIFICIALE: conoscere gli algoritmi di ricerca principali usati nell' IA, saper rappresentare conoscenza in sistemi intelligenti, conoscere gli algoritmi di inferenza tipici dei sistemi intelligenti moderni. SISTEMI INTELLIGENTI DI SUPPORTO ALLE DECISIONI: Saper modellare ed analizzare processi decisionali one-shot e sequenziali tramite modelli grafico-probabilistici
ARTIFICIAL INTELLIGENCE: to know main AI search algorithms, to be able to represent knowledge in intelligent systems, to know the main inference algorithms adopted in intelligent systems. INTELLIGENT DECISION SUPPORT SYSTEMS: being able to model ad analyze one-shot and sequential decision processes, using probabilistic graphical models.
×
Stampa
Insegnamento
LOGICA COMPUTAZIONALE
Codice
S1736
Anno Accademico
2017/2018
Anno regolamento
2015/2016
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
THESEIDER DUPRE' Daniele
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OPZ
Categoria insegnamento
D
Anno
3
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Ragionamento automatico. Rappresentazione della conoscenza e ragionamento con logiche descrittive. Rappresentazione della conoscenza e ragionamento mediante regole logiche: regole e logiche descrittive; la programmazione logica a vincoli; l'Answer Set Programming. Problem solving dichiarativo mediante strumenti di programmazione logica e ASP.
Automated reasoning. Knowledge representation and reasoning in description logics. Knowledge representation and reasoning with rules: rules and description logics; constraint logic programming; Answer Set Programming. Declarative problem solving using logic programming and ASP tools.
Testi di riferimento
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
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
Logica Matematica.
Mathematical logic.
Metodi didattici
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
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
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
Ragionamento automatico nella logica proposizionale, e cenni al caso del calcolo dei predicati del primo ordine. Rappresentazione della conoscenza e ragionamento con logiche descrittive, alla base della definizione di ontologie nel Semantic Web. Rappresentazione della conoscenza e ragionamento mediante regole logiche: regole e logiche descrittive; la programmazione logica a vincoli; l'Answer Set Programming. Problem solving dichiarativo mediante strumenti di programmazione logica e ASP.
Automated reasoning in propositional logic, and in first-order logic. Knowledge representation and reasoning in description logics, which is the basis for the use of ontologies in the Semantic Web. Knowledge representation and reasoning with rules: rules and description logics; constraint logic programming; Answer Set Programming. Declarative problem solving using logic programming and ASP tools.
Risultati di apprendimento attesi
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Stampa
Insegnamento
SISTEMI OPERATIVI 1
Codice
MF0166
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
THESEIDER DUPRE' Daniele
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
A. S. Tanenbaum, H. Bos. Modern Operating Systems, 4th edition
Obiettivi formativi
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
Architettura degli Elaboratori. Programmazione 1 e 2.
Computer Architecture. Programming I & II
Metodi didattici
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 algoritmi 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. Inoltre dopo ogni lezione, vengono indicati sul DIR gli argomenti trattati ed i testi di eventuali esercizi assegnati.
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 algorithms making use of processes and threads. On the DIR platform students can find the suggested textbooks and additional material. After each lecture, the subject of the lecture is reported together with any assignment carried out during the lecture.
Altre informazioni
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
Esame pratico con da 1 a 3 esercizi di programmazione riguardanti argomenti diversi affrontati nel corso. Esame scritto consistente in da 4 a 10 domande oppure esame orale consistente in da 2 a 4 domande su argomenti diversi del corso. Il voto finale terrà conto della valutazione ottenuta sulle singole domande e esercizi.
Practical exam with 1-3 programming assignments on different course topics. Written exam consisting in 4-10 questions or oral exam consisting in 2-4 questions on different course topics. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso
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
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Stampa
Insegnamento
SISTEMI OPERATIVI 2
Codice
MF0218
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GUAZZONE Marco
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Eduction, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Andrew S. Tanenbaum & Herbert Bos, "Modern Operating Systems: Global Edition, 4/E", Pearson Eduction, 2015. ISBN-10: 1292061421, ISBN-13: 9781292061429
Obiettivi formativi
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 dipositivi 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 secondari, 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
Superamento dell'esame di Sistemi Operativi 1.
Having passed the examination of Operating Systems 1.
Metodi didattici
Lezioni frontali
Lectures
Modalità di verifica dell'apprendimento
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
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
Il raggiungimento degli obiettivi formativi, nel modo misurato dal voto d'esame.
The expected learning results are the achievement of the educational goals, in the way quantified by the examination grade.
×
Stampa
Insegnamento
Algoritmi 2
Codice
MF0054
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
EGIDI Lavinia
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Tecniche algoritmiche, nozione di grafo e algoritmi su grafi
Algorithmic techniques, notion of graph and algorithms on graphs
Testi di riferimento
P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson oppure Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduzione agli algoritmi e strutture dati,, terza edizione, McGraw-Hill, 2010 oppure C. Demetrescu, I.Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, Seconda Edizione, McGraw-Hill oppure
P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson or Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010 or C. Demetrescu, I.Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, Seconda Edizione, McGraw-Hill or
Obiettivi formativi
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
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
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. Sono previste, durante le ore di attività in laboratorio, delle prove in itinere di esonero dalla prova scritta che hanno il duplice scopo di alleggerire l'esame finale per chi segue attivamente il corso (e quindi anche di incoraggiare ad una frequenza regolare e partecipe) e di offrire agli studenti una simulazione d'esame per agevolarli nella preparazione. Le prove in itinere sono a sorpresa. 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.
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. During lab hours, the students have the possibility of taking partial tests in substitution to the final written exam, whose aim is both to facilitate the final exam to those who actively attend the course (and therefore also to encourage regular and participating attendance) and to offer to the students a simulation of the final exam to help them prepare for it. The partial tests are not scheduled in advance.On DIR 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.
Altre informazioni
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
Esame scritto seguito da discussione orale (con prove in itinere di esonero dallo scritto, a sorpresa durante il corso) L'esame è uno scritto che si svolge in laboratorio, completato da una discussione orale. La prova in laboratorio è costituita da: -tre domande di teoria (quiz a risposta aperta) per verificare la comprensione dello studente della teoria alla base degli algoritmi insegnati nel corso, -tre esercizi (quiz a risposta a aperta) per verificare che lo studente abbia capito il funzionamento degli algoritmi classici presentati a lezione, e sia in grado di utilizzarli su semplici istanze, -un semplice problema da risolvere con l'implementazione di uno degli algoritmi visti a lezione. Per ciascuna delle tre domande di teoria lo studente ha una seconda scelta, una domanda "di emergenza": se non sa rispondere alla prima domanda può rispondere alla seconda, scelta che influirà negativamente sulla valutazione. La prova scritta sarà valutata nel suo complesso; lo studente deve dimostrare di aver raggiunto gli obiettivi formativi prefissati. Se sufficiente, lo studente sarà ammesso alla discussione orale. La discussione orale è solo un completamento della prova scritta prevista per ovviare alla mancanza di tempo e spazio che limita l'esposizione della parte di teoria allo scritto e per valutare che lo studente abbia acquisito e sappia utilizzare correttamente la terminologia formale. Pertanto si svolge entro un paio di giorni dalla prova in laboratorio e verte solo sui tre argomenti di teoria che sono stati proposti allo studente nel corso dello scritto (argomenti definiti dalla prima domanda, anche se lo studente ha risposto alla domanda di emergenza). 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à della prova scritta. La valutazione complessiva tiene conto della qualità dello scritto e della discussione orale. Ma poiché la discussione orale verte solo su tre argomenti che lo studente conosce con un paio di giorni di anticipo e su cui ha quindi modo di riflettere approfonditamente prima di presentarsi, una discussione orale largamente insufficiente può precludere il superamento dell'esame. L'esame scritto può essere sostituito, a discrezione dello studente, dal superamento di prove in itinere, che saranno seguite dalla discussone orale. Le prove di esonero si svolgono rigorosamente durante le ore di lezione in laboratorio e nel loro complesso la loro struttura è identica a quella della prova d'esame in laboratorio. Non sono preannunciate, per evitare che gli studenti si concentrino su questo corso abbandonando la frequenza di altri. Le prove di esonero coprono gli argomenti presentati a lezione fino ad almeno una settimana prima della prova e non ci sono sovrapposizioni tra gli argomenti esaminati nelle domande e negli esercizi di differenti prove parziali. Se le prove sono sufficienti nel loro complesso, lo studente è chiamato ad una discussione orale in un preappello che segue immediatamente la fine del corso oppure, a scelta dello studente, nel primo appello d'esame dopo il termine del corso. I criteri di valutazione sono identici a quelli della prova d'esame.
Written exam followed by oral interview (with optional surprise partial tests during the course, that replace the final written test) The exam is a written test in lab, which is completed by an interview. The test consists of -three theoretical questions (open answer questions) to verify that the student has understood the theory underlying the algorithms that are taught in the course, -three exercises (open answer questions) to verify that the student has understood the classical algorithms presented in class and can apply them to simple instances, -a simple problem that requires implementation of one of the classical algorithms presented in class. For each theoretical question an "emergency" question is proposed: if the student can't answer the main question, he/she can choose to answer the second one. This choice will impact negatively on the evaluation. The test will be evaluated as a whole: the student must prove that he/she has attained the formative goals of the course. If so, the student is admitted to an interview. The interview is only a complement to the written test: time and space constraints in the written test make it difficult for a student to fully express the capabilities acquired in terms of understanding, analysis and formality of exposition. Therefore, questions during the interview will only be about the theory questions that were proposed to the student during the written test (the arguments are always defined by the main questions and not by the emergency questions, regardless of the student's choices) and takes place two or three days after the latter. The aim of the discussion is to verify that the student have 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 written test, since the final aim is to ascertain that the formative objectives have been reached. The final evaluation takes into account both the written test and the interview. But since the interview touches only three subjects which the student knows two/three days in advance (having thus time to review them in depth), if the student's proficiency during the interview is significantly unsatisfactory, he/she might not pass the exam. The written part of the exam can be substituted, at the student's choice, by the partial tests offered during the course. The partial tests are held during lab hours and their scheduling is not communicated to the students, in order to avoid that students concentrate on this course and abandon attendance to others. The partial tests as a whole consist of three theory questions, three exercises and one problem as the test in lab; each partial test can cover subjects presented in class until no later than a week before the test, and subjects covered in the questions and exercises of different partial tests do not overlap. The partial tests are evaluated as a whole, and if they are sufficient, the student is admitted to an interview which can take place (at the student's choice) either in a date that immediately follows the end of the course, or at the first exam date after the end of the course. The evaluation criteria are analogous to those for the final written exam.
Programma esteso
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 practival 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
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.
×
Stampa
Insegnamento
Calcolo delle probabilità e statistica
Codice
MF0048
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
RAPALLO Fabio
CFU
9
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italiano.
Contenuti
I contenuti modulo di Calcolo delle Probabilità sono quelli di un tipico corso istituzionale. Vengono innanzi tutto presentate le leggi fondamentali della probabilità, incluse la nozione di probabilità condizionata e le sue applicazioni. Vengono quindi introdotte le variabili aleatorie, sia univariate che multivariate, e i corrispondenti indici (media, varianza, covarianza), con una panoramica sulle principali distribuzioni di probabilità che si riscontrano nelle applicazioni: binomiale, Poisson, uniforme, esponenziale, normale. Vengono infine introdotte le statistiche campionarie e il teorema limite centrale. I contenuti del modulo di Statistica forniscono gli elementi di base della Statistica, illustrandone le due branche principali: la statistica descrittiva e quella inferenziale. In particolare, nell'ambito dell'inferenza statistica si introducono gli stimatori puntuali, gli intervalli di confidenza e i test d'ipotesi.
The course aims at presenting the classical topics of an introductory course in Probability theory. First, the basic definitions and rules of probability are introduced, including the notion of conditional probability and its applications. Then, the notion of random variable is introduced, both in the uni- and multivariate setting, and expected value, variance, covariance are studied. A survey of the main probability distributions (binomial, Poisson, uniform, exponential, Gaussian) completes the overview on random variables. Finally, the sample statistics are defined together with their properties and the orresponding asymptotics (central limit theorem). The course aims at presenting the classical topics of an introductory course in Statistics, with an illustration of the main techniques of exploratory and inferential statistics. In particular, concerning the inferential statistics, the course covers point estimation, confidence intervals, and hypothesis testing.
Testi di riferimento
Sheldon M. Ross: Probabilità e Statistica per l'Ingegneria e le Scienze, Apogeo Education – Seconda Edizione 2008 (o edizione più recente).
Sheldon M. Ross: Probabilità e Statistica per l'Ingegneria e le Scienze, Apogeo Education – Seconda Edizione 2008 (or more recent edition). This textbook has an English version.
Obiettivi formativi
Capacità di analizzare semplici esperimenti aleatori, tramite conteggi o tramite l'uso di variabili aleatorie. Capacità di utilizzare le principali distribuzioni di probabilità per modellizzare semplici fenomeni, anche ricorrendo ad approssimazioni asintotiche. Capacità di rappresentare e descrivere in modo sintetico i dati. Abilità a risolvere semplici problemi di inferenza statistica mediante il calcolo delle stime puntuali e degli intervalli di confidenza. Capacità di effettuare correttamente i principali test d'ipotesi.
The student must be able to analyze simple random experiments, both through counting and through the use of random variables. The student must be able to use correctly the main probability distributions in modelling simple phenomena, also by means of asymptotic approximations. The student must be able to describe and represent the data. The student must be able to solve simple problems in statistical inference through the use of point estimation and confidence intervals. The student must be able to perform correctly the main tests of hypotheses.
Prerequisiti
Analisi e matematica discreta.
Calculus and discrete mathematics.
Metodi didattici
Lezioni in aula ed esercitazioni.
Lectures and tutorials.
Altre informazioni
Il controllo dell'apprendimento è effettuato tramite svolgimento di esercizi in classe con la collaborazione attiva degli studenti. Attraverso le lezioni, la discussione di esercizi specifici e lo studio individuale dello studente, ci si attende che lo studente familiarizzi con gli strumenti di base della probabilità e della statistica, raggiunga una buona padronanza degli strumenti presentati, e sia in grado di applicarli in semplici contesti.
Learning monitoring: there will be sessions of exercises with the active collaboration of the students. Through the lectures, the discussions of specific exercises and the individual learning, we espect the student to be familiar with the basic tools of Probability and Statistics, to be able to use and explain the main techniques presented in the lectures, to be able to apply such techniques in simple contexts.
Modalità di verifica dell'apprendimento
L'esame è integrato con entrambi i moduli e forma una unica prova. L'esame integrato è una prova scritta della durata di 120 minuti. L'esame consiste nella soluzione di tre esercizi (due riferiti al modulo di Calcolo delle Probabilità e uno riferito al modulo di Statistica) e una domanda più teorica riferita all'intero programma dei due moduli. Il punteggio assegnato a ciascun quesito ai fini della determinazione del voto finale è indicato nel testo d'esame. Gli esercizi proposti hanno di norma carattere trasversale e ciascuno di essi è quindi volto a verificare la preparazione dello studente su diverse parti del programma. Durante la prova scritta è ammesso l'utilizzo di un formulario e delle tavole delle distribuzioni disponibili sulla pagina DIR del corso.
The final exam is integrated. There is a unique written exam (120 mins). The exam consists of three exercises (two exercises pertaining the module "Probability" and one exercise pertaining the module "Statistics"), plus a more theoretical question on a topic of the whole program of the two modules. The weight of each exercise in the determination of the final grade is written in the text. Each exercise aims at verify the preparation of the student in different parts of the program. During the exam, the students can use a list of formualae and the tables of the probability distributions available in the DIR webpage of the course.
Programma esteso
CALCOLO DELLE PROBABILITA' 1. Elementi di Probabilità. Spazio degli esiti ed eventi. L'algebra degli eventi e i diagrammi di Venn. Assiomi della probabilità. Spazi di esiti equiprobabili. Probabilità condizionata. Fattorizzazione di un evento e teorema di Bayes. Eventi indipendenti. 2. Variabili aleatorie e valore atteso. Variabili aleatorie discrete e continue. Coppie e vettori di variabili aleatorie. Valore atteso e sue proprietà. Varianza e covarianza. La legge debole dei grandi numeri. 3. Modelli di variabili aleatorie. Variabili di Bernoulli e binomiali. Variabili aleatorie di Poisson, Variabili aleatorie uniformi. Variabili aleatorie normali. Variabili aleatorie esponenziali. Distribuzioni che derivano da quella normale. 4. La distribuzione delle statistiche campionarie. La media campionaria e la varianza campionaria. Il teorema limite centrale. La distribuzione delle statistiche di popolazioni normali. STATISTICA: 1. Elementi di statistica descrittiva: organizzazione e descrizione dei dati, le grandezze che sintetizzano i dati, la disuguaglianza di Chebishev, insiemi bivariati. 2. Stima parametrica: stimatori di massima verosimiglianza, intervalli di confidenza per la media e la varianza di una distribuzione normale e per la media di una distribuzione di Bernoulli. 3. Verifica di ipotesi: generalità sui test statistici, test sulla media e sulla varianza di normali e test sulla media di una distribuzione di Bernoulli.
PROBABILITY: 1. Basic probability theory. Sample space and events. The algebra of events and the Venn diagrams. The axioms of probability. Space with equally likely outcomes. Conditional probability. Factorization of an event and the Bayes' formula. Independent events. 2. Random variables and expectation. Discrete and continuous random variables. Pairs and vectors of random variables. Expected value and its properties. Variance and covariance. The weak law of large numbers. 3. Special random variables. Bernoulli and binomial random variables. The Poisson distribution. Uniform random variables. Gaussian random variables. Exponential random variables. Distributions derived by the Gaussian distribution. 4. The distributions of the sample statistics. Sample mean and sample variance. Central limit theorem. The distribution of the sample statistics for Gaussian populations. STATISTICS: 1. Exploratory statistics: organization and description of the data, the main indices to summarize the data, the Chebishev's inequality, bivariate data. 2. Parameter estimation: maximum likelihood estimators, confdence intervals for the mean and variance of a Gaussian distribution, and for the mean of a Bernoulli distribution. 3. Hypothesis testing: introduction to the theory of statistical tests, test for the mean and variance of a Gaussian distribution, and for the mean of a Bernoulli distribution.
Risultati di apprendimento attesi
Acquisizione di conoscenze di base sulle principali nozioni di calcolo delle probabilità e statistica, conoscenza delle applicazioni di tali nozioni a semplici problemi. Capacità di analisi critica di semplici modelli aleatori, con particolare attenzione ai modelli di frequente utilizzo nell'ambito informatico. Capacità di applicare le tecniche statistiche presentate (sia descrittive che inferenziali) in sempici contesti. Lo studente dovrà inoltre essere in grado di discutere e argomentare in modo chiaro e conciso la soluzione dei problemi.
Acquisition of basic knowledge on the main notions of probability and statistics, knowledge of the applications of these concepts to simple problems. Ability to critically analyze simple random models, with particular attention to the models frequently used in the computer science field. Ability to apply the presented statistical techniques (both descriptive and inferential) in simple contexts. The student must also be able to discuss and explain the solutions of the problems in a clear and concise manner.
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
MF0049Calcolo delle probabilità MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA Rapallo Fabio
MF0050Statistica MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA Chinosi Claudia
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
Calcolo delle probabilità e statistica: Calcolo delle probabilità
Codice
MF0049
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
RAPALLO Fabio
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
Calcolo delle probabilità e statistica: Statistica
Codice
MF0050
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CHINOSI Claudia
Docenti
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
×
Stampa
Insegnamento
PROGRAMMAZIONE AD OGGETTI
Codice
S1724
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GIANNINI Paola
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Introduzione della programmazione ad oggetti in Java ed alla metodologia di sviluppo di programmi basata su Test.
The course introduces object-oriented programming in Java and the Test driven methodology of program development.
Testi di riferimento
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO, e materiale fornito dal docente.
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO, e material supplied by the teacher.
Obiettivi formativi
Conoscenza e capacità di comprensione: familiarità con i principi della programmazione ad oggetti, con il linguaggio Java e le architetture modello/vista/controllore. Capacità di applicare conoscenza e comprensione: abilità di strutturare e realizzare un progetto usando gli strumenti della programmazione ad oggetti e derivando il codice dai test. Autonomia di giudizio: abilità di riconoscere buone e cattive pratiche di programmazione e di valutare la qualità architetturale di un progetto. Abilità comunicative: padronanza della terminologia della programmazione ad oggetti 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.
Knowledge and understanding: familiarity with the principles of object programming, with the specific Java language and the model/view/controller architecture. 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 good and bad programming practices and to evaluate the architectural quality of a project. Communication Skills: mastering the terminology of object programming and improving teamwork skills. Learning Skills: ability to learn autonomously the use of other languages and other object oriented structured libraries.
Prerequisiti
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
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
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
L'esame consiste di due 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. Il voto è determinato dalla media della prova in laboratorio e della votazione del progetto.
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 score is determined by the average of the test in the lab and the score of the project.
Programma esteso
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  Sviluppo guidato dai Test  Pattern di programmazione Model-View-Controller 
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 Test-Driven Development Pattern Programming Model-View-Controller
Risultati di apprendimento attesi
Essere in grado di modellare un applicativo tramite gerarchie di oggetti, saperlo implementare in Java e realizzarne test con JUnit. Avere padronanza del Collections framework di Java. Saper riconoscere e gestire i casi non standard tramite eccezioni e conoscere i fondamenti teorici della programmazione a oggetti.
Being able to model an application using object hierarchies, know how to implement it in Java and perform tests with JUnit. Understanding the Java Collection framework. Being able to recognize and handle non standard behaviour by means of exceptions and knowledge of the theoretical foundations of object programming.
×
Stampa
Insegnamento
RETI 1
Codice
S1609
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CANONICO Massimo
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
Approfondire le tematiche relative alle reti informatiche.
In depth learning of computer networks.
Prerequisiti
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
Lezioni frontali in aula ed in laboratorio, uso della piattaforma Moodle.
Lessons in class and in computer lab, use of the Moodle platform.
Altre informazioni
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
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
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.
×
Stampa
Insegnamento
SISTEMI OPERATIVI 2
Codice
S1613
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
ANGLANO Cosimo Filomeno
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
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
A.S. Tanembaum. Modern Operating Systems, 4th Edition. Pearson, 2014. ISBN-13: 978-1292061429
A.S. Tanembaum. Modern Operating Systems, 4th Edition. Pearson, 2014. ISBN-13: 978-1292061429
Obiettivi formativi
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
Architetture degli Elaboratori 1 e 2, Sistemi Operativi 1
Computer Architetture 1 and 2, Operating Systems 1
Metodi didattici
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
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
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
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
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
Achievement of the training objectives, as measured by the grade obtained by the student.
×
Stampa
Insegnamento
BASI DI DATI E SISTEMI INFORMATIVI
Codice
MF0158
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GIORDANO Laura
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati: modelli e linguaggi di interrogazione, McGraw-Hill Italia, Seconda edizione, 2006
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati: modelli e linguaggi di interrogazione, McGraw-Hill Italia, Seconda edizione, 2006
Obiettivi formativi
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. The 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
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
Lezioni frontali in aula e esercitazioni in aula e in laboratorio informatico.
Lectures and exercises in the classroom and computer lab.
Altre informazioni
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
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 circa 10-20 query SQL assegnate dal docente su un database indicato dal docente. 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) about 10-20 SQL queries assigned by the teacher on an existing database also assigned by the teacher. 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
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.
Fondamenti: 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: 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.
×
Stampa
Insegnamento
ALGORITMI 1
Codice
MF0209
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MONTANI Stefania
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
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
Aver superato l’esame di Programmazione 1 e 2.
Having passed the Programming 1 and 2 exams.
Metodi didattici
Lezioni in aula 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 integrativo, che ricalca fedelmente gli argomenti trattati a lezione, risultando di aiuto anche per chi non fosse stato presaente. 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 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 additional 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
Teoria: Esame scritto. 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. 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. 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. 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
- 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. - 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. - 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
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.
×
Stampa
Insegnamento
ALGORITMI 2
Codice
MF0210
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
PIOVESAN LUCA
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Tecniche algoritmiche, nozione di grafo e algoritmi su grafi
Algorithmic techniques, notion of graph and algorithms on graphs
Testi di riferimento
- 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) - P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson
- 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 - P. Crescenzi, G. Gambosi, R. Grossi, G. Rossi Strutture di dati e algoritmi, Seconda edizione, Pearson
Obiettivi formativi
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
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
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
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
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
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
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.
×
Stampa
Insegnamento
BASI DI DATI E SISTEMI INFORMATIVI
Codice
MF0211
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GIORDANO Laura
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati: modelli e linguaggi di interrogazione, McGraw-Hill Italia, Seconda edizione, 2006
P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone, Basi di dati: modelli e linguaggi di interrogazione, McGraw-Hill Italia, Seconda edizione, 2006
Obiettivi formativi
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
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
Lezioni frontali in aula e esercitazioni in aula e in laboratorio informatico.
Lectures and exercises in the classroom and computer lab.
Altre informazioni
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
Fondamenti: un esame scritto e 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 circa 10-20 query SQL assegnate dal docente su un database indicato dal docente. 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) about 10-20 SQL queries assigned by the teacher on an existing database also assigned by the teacher. 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
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.
×
Stampa
Insegnamento
CALCOLO DELLE PROBABILITA' E STATISTICA
Codice
MF0212
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GRASSI PIETRO
Docenti
CFU
9
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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. 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
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
Avviare lo studente agli elementi base della teoria e della pratica del calcolo delle probabilità e della statistica. Introdurre le principali distribuzioni di probabilità e il loro utilizzo.
Introduce the student to the basic elements of theory and application of probability and statistics. Introduce the most important probability distributions with applications.
Prerequisiti
Analisi e matematiche discrete.
Calculus and discrete mathematics.
Metodi didattici
Lezioni frontali ed esercitazioni.
Class lectures with exercises.
Altre informazioni
L'esame è integrato e forma una unica prova, consistente in un test scritto.
The exam is an integrated test of the two modules "Probability" and "Statistics", consisting of a written examination.
Modalità di verifica dell'apprendimento
Esame scritto. L'esame consiste in due esercizi, uno centrato sulla teoria delle probabilita' e uno sulla statistica. Ogni esercizio consta di 5 domande distinti 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 tests. 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
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
Conoscenza della teoria della probabilita' e della statistica elementare. Saper applicare gli apprendimenti a problematiche della scienza informatica. Gestione delle informazioni sulla base dei dati.
Knowledge of elementary probability theory and of statistics. Know how for applications to computer science and managing of data.
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
MF0213CALCOLO DELLE PROBABILITA' MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA Grassi Pietro
MF0214STATISTICA MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA Grassi Pietro
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
CALCOLO DELLE PROBABILITA' E STATISTICA: CALCOLO DELLE PROBABILITA'
Codice
MF0213
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GRASSI PIETRO
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
G
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
CALCOLO DELLE PROBABILITA' E STATISTICA: STATISTICA
Codice
MF0214
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
GRASSI PIETRO
Docenti
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
MAT/06 - PROBABILITÀ E STATISTICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
G
×
Stampa
Insegnamento
PROGRAMMAZIONE AD OGGETTI
Codice
MF0215
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
Audrito Giorgio
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Introduzione alla programmazione ad oggetti in Java ed alla metodologia di sviluppo di programmi basata su test.
The course introduces object-oriented programming in Java and the test-driven methodology of program development.
Testi di riferimento
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, APOGEO, e materiale fornito dal docente.
Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, APOGEO, and material supplied by the teacher.
Obiettivi formativi
Conoscenza e capacità di comprensione: familiarità con i principi della programmazione ad oggetti, con il linguaggio Java e le architetture modello/vista/controllore. Capacità di applicare conoscenza e comprensione: abilità di strutturare e realizzare un progetto in Java con JUnit e Swing. Autonomia di giudizio: abilità di riconoscere buone e cattive pratiche di programmazione e di valutare la qualità di una struttura di progetto. Abilità comunicative: padronanza della terminologia della programmazione ad oggetti e miglioramento nell’abilità di lavoro in gruppo. Capacità di apprendere: maggior facilità ad apprendere autonomamente l’utilizzo di altre librerie strutturate ad oggetti.
Knowledge and understanding: acquaintance with object-oriented programming principles, with the Java language and Model/View/Controller architectures. Applying knowledge and understanding: ability to structure and realize a Java project with JUnit and Swing. Making judgements: distinguishing good and bad programming practices and evaluating a project structure. Communication skills: acquaintance with the object-oriented programming terminology and improvement in team work attitudes. Learning skills: ability of individually learning how to use other object-oriented libraries.
Prerequisiti
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: acquaintance with imperative programming principles.
Metodi didattici
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.
Lectures and lab sessions. Lectures present theoretical informations through slideshows, with examples and few questions. During lab sessions the students are assisted in realizing small projects with the aim of applying the theoretical information just received.
Altre informazioni
Gli esercizi che vengono proposti settimanalmente durante le sessioni in laboratorio possono essere completati a casa e consegnati (facoltativamente) tramite DIR, ricevendo tramite di esso una relativa valutazione. Questi esercizi non contribuiscono in alcun modo al risultato dell’esame finale.
The exercises that are weekly presented to the students can be finished at home and (optionally) submitted through DIR for receiving a feedback. Those exercises do not contribute in any way to the result of the final exam.
Modalità di verifica dell'apprendimento
L'esame consiste di due parti. La prima è una prova in laboratorio con domande di teoria ed esercizi al calcolatore volti ad accertare la padronanza degli strumenti di programmazione introdotti (uso IDE, sviluppo di test). La seconda richiede di svolgere un progetto (personalmente o in gruppo) volto ad accertare sia la capacita' 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.
The exam consists in two parts. The first part consists of a lab written test with theory questions and computer exercises designed to test the knowledge of the tools introduced. The second part requires to develop a project (individually or in groups) evaluating the skills in structuring a problem in an object oriented way through the Java libraries. The project is then discussed in an oral exam.
Programma esteso
- Introduzione a Java tramite grammatiche EBNF. - Oggetti, classi, e metodi. - Tipi fondamentali, strutture sintattiche per controllo di flusso, array. - Tipi involucro (per tipi primitivi) e auto-boxing/unboxing. - Interfacce, polimorfismo, ereditarietà. - Programmazione parametrica e Java generics. - Gestione di eccezioni. - Panoramica delle librerie di base. - Sviluppo guidato da test in JUnit. - Pattern di programmazione modello/vista/controllore.
- Introduction to Java with EBNF grammars. - 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. - Test-Driven Development in JUnit. - Model/View/Controller programming pattern.
Risultati di apprendimento attesi
Modellare un applicativo tramite gerarchie di oggetti, saper programmare fluentemente in Java e realizzare test con JUnit. Padronanza della libreria Swing e del Java Collections Framework. Gestione di casi limite tramite eccezioni conoscenza delle fondamenta teoriche della programmazione ad oggetti.
Modeling a software application through object hierarchies, programming fluently in Java and realising tests with JUnit. Acquaintance with the Swing library and the Java Collections Framework. Handling corner cases through exceptions and knowledge of the theoretical foundations of object-oriented programming.
×
Stampa
Insegnamento
RETI 1
Codice
MF0216
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MUNAFO' MAURIZIO MATTEO
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
2
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
Approfondire le tematiche relative alle reti informatiche.
In depth learning of computer networks.
Prerequisiti
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
Lezioni frontali in aula ed in laboratorio, uso della piattaforma Moodle.
Lessons in class and in computer lab, use of the Moodle platform.
Altre informazioni
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
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
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
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
×
Stampa
Insegnamento
SISTEMI OPERATIVI 1
Codice
MF0217
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CEROTTI DAVIDE
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Introduzione ai sistemi operativi, gestione dei processi, sincronizzazione dei processi e programmazione concorrente, gestione della memoria. Gestione e sincronizzazione di processi in Unix.
Introduction to operating system, process management, process synchronization and concurrent programming, memory management. Process management and synchronization in Unix.
Testi di riferimento
A. S. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione.
A. S. Tanenbaum, H. Bos. Modern Operating Systems, 4th edition
Obiettivi formativi
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
I contenuti di un primo corso sull'architettura degli elaboratori e sulla programmazione.
The contents of a first course in computer architecture and in programming.
Metodi didattici
Lezioni frontali. Esercitazioni in laboratorio.
Standard lectures and programming sessions in the computer lab.
Altre informazioni
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 assigments in the computer lab under the supervision of a teacher.
Modalità di verifica dell'apprendimento
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
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
I risultati di apprendimento attesi sono il raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The expected learning results are the achievement, measured by the exam degree, of the course goals.
×
Stampa
Insegnamento
Algoritmi I
Codice
MF0034
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MONTANI Stefania
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
2
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
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
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
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
Aver superato l’esame di Programmazione 1 e 2.
Having passed the Programming 1 and 2 exams.
Metodi didattici
Lezioni in aula 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 integrativo, che ricalca fedelmente gli argomenti trattati a lezione, risultando di aiuto anche per chi non fosse stato presaente. 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 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 additional 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
Teoria: Esame scritto. 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. 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. 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. 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
- 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. - 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.  - 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
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.
×
Stampa
Insegnamento
ANALISI MATEMATICA I
Codice
MF0198
Anno Accademico
2017/2018
Anno regolamento
2016/2017
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRERO ALBERTO
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/05 - ANALISI MATEMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian.
Contenuti
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
Testi consigliati per la teoria (in ordine alfabetico): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill. Testi consigliati per gli esercizi: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Suggested books for the theoretical part (in alphabetic order): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill. Suggested books for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Obiettivi formativi
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
Nozioni di base dell'algebra e della trigonometria.
Elementary notions of algebra and trigonometry.
Metodi didattici
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
Oltre ai libri suggeriti per la teoria e gli esercizi, ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso. Consiste essenzialmente nelle prove scritte degli anni precedenti e in alcune dispense sulle funzioni elementari.
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. It essentially consists of the written exams of the previous years and of some lecture notes on the elementary functions.
Modalità di verifica dell'apprendimento
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
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
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.
×
Stampa
Insegnamento
ANALISI MATEMATICA I
Codice
S0357
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRERO ALBERTO
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/05 - ANALISI MATEMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian.
Contenuti
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
Testi consigliati per la teoria (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. Testi consigliati per gli esercizi: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Suggested books for the theoretical part (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. Suggested books for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Obiettivi formativi
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
Nozioni di base dell'algebra e della trigonometria.
Elementary notions of algebra and trigonometry. 
Metodi didattici
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
Oltre ai libri suggeriti per la teoria e gli esercizi, ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso. Consiste essenzialmente nelle prove scritte degli anni precedenti e in alcune dispense sulle funzioni elementari.
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. It essentially consists of the written exams of the previous years and of some lecture notes on the elementary functions.
Modalità di verifica dell'apprendimento
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
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
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.
×
Stampa
Insegnamento
ANALISI MATEMATICA I
Codice
MF0198
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRERO ALBERTO
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/05 - ANALISI MATEMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian.
Contenuti
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
Testi consigliati per la teoria (in ordine alfabetico): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill. Testi consigliati per gli esercizi: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Suggested books for the theoretical part (in alphabetic order): Conti, Ferrario, Terracini, Verzini, "Analisi Matematica" Volume 1, Ed. Apogeo. Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. C. Trapani: “Analisi Matematica, funzioni di una variabile reale”, Ed. McGraw-Hill. Suggested books for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli.
Obiettivi formativi
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
Nozioni di base dell'algebra e della trigonometria.
Elementary notions of algebra and trigonometry.
Metodi didattici
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
Oltre ai libri suggeriti per la teoria e gli esercizi, ulteriore materiale per la preparazione dell'esame verrà fornito durante lo svolgimento del corso. Consiste essenzialmente nelle prove scritte degli anni precedenti e in alcune dispense sulle funzioni elementari.
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. It essentially consists of the written exams of the previous years and of some lecture notes on the elementary functions.
Modalità di verifica dell'apprendimento
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
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
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.
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI
Codice
S1363
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FRANCESCHINIS Giuliana Annamaria
CFU
12
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
1
Periodo
Annuale
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Architettura 1: 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. Architettura 2: Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione: in questo modulo sarà in particolare dettagliata la struttura di un processore microprogrammato (non reale ma verosimile) dotato di un linguaggio macchina derivato dal bytecode della Java Virtual Machine, e di un microinterprete. Vengono illustrate diverse versioni della microarchitettura con prestazioni via via migliori. Vengono inoltre illustrate 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), ovvero sulle caratteristiche dei linguaggi macchina.
Architecture 1: 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. Architecture 2: Description of the layered architecture of modern computers: in particular in this module a (not real but realistic) microprogrammed processor is described in details. The processor’s machine level language derives from the Java Virtual Machine bytecode which is implemented through a microinterpreter. Several microarchitecture versions are presented, with increasing performance. Several processor optimization techniques are also presented (pipeline, branch prediction mechanisms, out of order execution, cache memories). Follows a general discussion about the Instruction Set Architecture (ISA) level, that is the machine language level.
Testi di riferimento
Architettura 1: A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013. Architettura 2: A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
Architecture 1: A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013. Architecture 2: A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi
Architettura 1: Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi i 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. 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 logici (dopo averle semplificate). 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. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Apprendere il linguaggio formale dell’Algebra di Boole per esprimere funzioni logiche e quello grafico di rappresentazione dei circuiti logici. 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. Architettura 2: Conoscere e comprendere l’organizzazione interna di un processore, i suoi principali componenti e il meccanismo generale di funzionamento. Saper distinguere tra architetture microprogrammate e architetture che eseguono in hardware le istruzioni del linguaggio macchina.Saper descrivere un esempio di microarchitettura (in particolare quella proposta nel libro di testo) ad un livello di dettaglio abbastanza approfondito. Saper spiegare come alcune varianti architetturali possono modificare in maniera significativa la velocità di esecuzione. Sviluppare l’abilità di confrontare diverse soluzioni architetturali in termini di costi e di prestazioni.Conoscere la semantica operazionale di un linguaggio macchina ed applicare tale conoscenza per simulare l’esecuzione di un frammento di codice in linguaggio macchina. Spiegare come tale semantica si possa realizzare attraverso un microinterprete (con particolare riferimento all’esempio proposto nel libro di testo).Conoscere e saper descrivere la struttura e il principio di funzionamento delle memorie cache e le differenze tra i diversi tipi di organizzazione delle stesse. Conoscere i parametri per misurare l’efficacia di una memoria cache. Saper descrivere le caratteristiche generali di un linguaggio macchina (tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e discutere motivazioni, vantaggi e svantaggi di diverse scelte; fornire esempi concreti.Descrivere le modalità di interazione tra CPU e dispositivi di I/O (istruzioni specifiche per l’I/O vs. I/O mappato in memoria; I/O programmato con attesa attiva oppure I/O basato su interrupt o ancora Direct Memory Access – DMA).Acquisire la capacità di approfondire ed aggiornarsi su aspetti specifici e temi più avanzati delle architetture dei processori, in particolare facendo ricorso a risorse disponibili on-line.
Architecture 1: Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including 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. 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 (after their simplification). 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.Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Learn the Boolean algebra formal language to express logical functions and the graphical language to express combinatorial logic circuits.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). Architecture 2: Know and understand the internal organization of processors, its main components an the general functional mechanisms. Know the difference between microprogrammed architectures and those that execute directly in hardware the machine language instructions. Describe an example of microarchitecture (in particular that presented in the textbook) at a quite detailed level. Explain how architectural variants impact on the execution speed.Develop the ability to compare different architectural solutions from the point of view of cost and performance.Know the operational semantics of a core set of machine language instructions and apply it in the simulation of short machine language instruction sequences. Explain how the instruction semantics may be implemented through a microinterpreter (in particular referring to the example architecture and machine language presented in the textbook).Know and describe the structure and the operational principles of cache memories and the differences among the alternative cache organization schemes. Know the parameters used to measure the effectiveness of cache memories.Describe the general characteristics of a machine language (instruction types, instruction format, addressing modes) and discuss motivation, advantages and disadvantages of different choices; provide practical examples.Describe how Input/Output can be performed (I/O instructions vs. memory mapped I/O, programmed I/O with busy waiting or interrupt driven I/O, Direct Memory Access - DMA)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
Architettura 1: Nessuno Architettura 2: Conoscenza dei concetti studiati nel primo modulo del corso.
Architecture 1: None Architecture 2: Knowledge of the concepts studied in the first module of the course.
Metodi didattici
Architettura 1: 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 e di disegnare e simulare circuiti logici combinatori e sequenziali utilizzando un pacchetto software libero). Architettura 2: Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio per la sperimentazione attraverso un emulatore dell’esecuzione di programmi in linguaggio macchina dell’architettura MIC1 e del microinterprete che implementa tale linguaggio.
Architecture 1: 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 and to design and simulate combinatorial and sequential circuits through a free software tool). Architecture 2: The topics of the course are mainly presented through class lectures that may be integrated with lab sessions to experiment the execution of machine language programs (for the MIC1 architecture) and of the microinterpreter that implements such language.
Altre informazioni
Architettura 1: Sulla piattaforma DIR sono disponibili: l'elenco degli argomenti svolti in ogni singola lezione, esempi di testi d’esame degli anni precedenti, informazioni generali sul corso e avvisi relativi allo svolgimento del corso e sugli esami. Architettura 2: 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.
Architecture 1: It is possible to download electronic copy of previous years examination test, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR . Architecture 2: 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
Architettura 1: Di norma esame scritto, eventualmente sostituito da un colloquio orale nel caso si iscrivano poche persone all'appello Architettura 2: L’esame comprende due parti, una riguarda gli aspetti teorici mentre la seconda riguarda gli esperimenti di laboratorio.La parte sperimentale dell’esame si svolge in laboratorio utilizzando l’emulatore di MIC1.L’esame sulla parte teorica può essere orale o scritto (di solito è scritto nelle prime sessioni d’esame dopo il corso, orale nelle successive sessioni). Quando l’esame viene svolto in forma scritta è possibile chiedere una integrazione orale (per esempio nel caso in cui il voto dello scritto sia quasi sufficiente). Il test 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.L’esame può essere superato anche tramite prove di esonero intermedie da svolgere durante il corso.
Architecture 1: Usually written examination, except when few students are present, in which case the examination might be oral. Architecture 2: The exam comprises two parts, one concerns the theoretical concepts presented in the course, the other concerns the lab experiments.The experimental part of the exam is performed in the lab using the MIC1 emulator.The exam on the theoretical part can be either oral or a written test (usually it is written in the first exams session after the course, 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.The exam can be passed also through intermediate tests proposed along the course.
Programma esteso
Architettura 1: Breve panoramica sulla evoluzione storica dei sistemi di calcolo (dalla Macchina di Von Neumann 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 mobile. 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, BUS, e varie periferiche). Cenni sui principi di funzionamento.CPU: ciclo di fetch-decode-execute. Processori CISC e RISC. CPU con struttura a pipeline e/o multicore (cenni). Architettura 2: Architettura a livelli: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione AssemblerUn esempio di architettura microprogrammata e di linguaggio macchina: il MIC-1 e il linguaggio IJVM.Esercitazioni in laboratorio con un emulatore di MIC-1 dotato di compilatore per microprogrammi e per programmi IJVM.Miglioramento delle prestazioni. Introduzione di una unità di prelievo e della pipeline: le architetture MIC-2, MIC-3 e MIC-4. Le memorie cache: colmare il divario tra la velocità della memoria e del processore. La predizione dei salti. L’esecuzione fuori ordine.Caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento. Interazione con i dispositivi di Input/Output.Esempi di architetture e linguaggi macchina di processori reali.
Architecture 1: Brief review of the historical evolution of computers (from Von Neumann machine 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 and/or multicore architecture (brief introduction). Architecture 2: Structured computer architecture: the hardware layer, the microarchitecture layer, the Instruction Set Architecture layer, the Operating System layer, the Assembler language layer.An example of microprogrammed architecture and of machine language: MIC-1 and the IJVM language. Lab experiments with a software emulator of the MIC-1 architecture, featuring a microprogramming language and IJVM compiler.Performance issues: introducing an instruction fetch unit and a pipeline architecture: MIC-2, MIC-3 and MIC-4. The cache memory: filling the gap between memory and processor speed. Branch prediction. Out-of-order execution (instruction issuing and retiring order).Instruction Set Architecture: main characteristics and trade-offs. Data type, instruction types, instruction format, addressing modes. Interaction with Input/Output devices.Examples of architectures and machine languages of real processors.
Risultati di apprendimento attesi
Architettura 1: 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 e multicore. Architettura 2: Spiegare l’organizzazione di una macchina di von Neumann e le sue principali unità funzionali. Descrivere come viene eseguita un’istruzione in questo tipo di macchina.Mostrare la rappresentazione di istruzioni di linguaggio macchina a livello simbolico (rappresentazione mnemonica a livello assembler, per il programmatore) e in binario (rappresentazione interna alla macchina).Mostrare come un compilatore può trasformare elementi di linguaggi di alto livello in linguaggio assembler/macchina. Scrivere brevi programmi in linguaggio assembler (IJVM).Spiegare diversi formati di istruzioni con diverso numero di indirizzi per istruzione e lunghezza fissa o variabile.Elencare e descrivere diverse modalità di indirizzamento. Discutere l’impatto delle diverse modalità d’indirizzamento sul formato dell’istruzione. Discutere l’utilità di alcune modalità d’indirizzamento nella traduzione da linguaggi di alto livello in linguaggio assembler.Descrivere un esempio di implementazione di un processore completo di datapath e controllo. Confrontare implementazioni alternative. Discutere i vantaggi di effettuare il prefetching.Spiegare come si può sfruttare il parallelismo interno alle istruzioni tipico delle architetture a pipeline e i conflitti che possono verificarsi a causa di dipendenze tra istruzioni. Spiegare il concetto di predizione dei salti e discutere la sua utilità in una architettura a pipeline.Descrivere come l’uso della gerarchia delle memorie, e in particolare della cache tra CPU e RAM, permette di ridurre la latenza della memoria. Discutere importanza della località spaziale e temporale per il buon funzionamento della gerarchia delle memorie. Descrivere l’organizzazione delle memorie cache (mapping degli indirizzi, dimensione dei blocchi, politica di rimpiazzamento e di gestione delle scritture), con esempi pratici.Spiegare come si può realizzare il controllo di dispositivi di I/O e il trasferimento di dati tra questi e la CPU (e viceversa) nell’implementazione dell’I/O programmato con attesa attiva e nell’implementazione dell’I/O basato su interrupt, o DMA (portare esempi di scambio di dati con tastiera/display, stampanti o dischi magnetici)
Architecture 1: 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 and multicore architectures. Architecture 2: Explain the organization of the classical von Neumann machine and its major functional units. Describe how an instruction is executed in a classical von Neumann machine.Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.Demonstrate how to map between high-level language patterns into assembly/machine language notations. Write simple assembly language program segments (IJVM).Explain different instruction formats with different number of addresses per instruction and variable length vs. fixed length.List and describe various addressing modes. Discuss their impact on the instruction format. Discuss the usefulness of some addressing modes from the point of view of high-level language compilers.Describe an example implementation of a complete processor, including datapath and control. Compare alternative implementation of datapaths. Discuss the advantages of prefetching.Explain basic instruction level parallelism using pipelining and the major hazards that may occur. Explain the concept of branch prediction and its utility in a pipeline architecture.Describe how the use of memory hierarchy (and in particular the introduction of caches between CPU and RAM) may reduce the effective memory latency. Discuss the importance of temporal and spatial locality. Describe operation of cache memories (address mapping, block size, replacement and store policy), with practical examples.Explain how programmed I/O with busy waiting or interrupts or DMA can be used to implement I/O control and data transfers (provide examples of control and data exchange with keyboard/display, printer, magnetic disk).
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
S1364ARCHITETTURA 1 INF/01 - INFORMATICA Chiola Giovanni
S1365ARCHITETTURA 2 INF/01 - INFORMATICA Franceschinis Giuliana Annamaria
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1
Codice
S1364
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CHIOLA GIOVANNI
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi i 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. 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 logici (dopo averle semplificate). 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. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Apprendere il linguaggio formale dell’Algebra di Boole per esprimere funzioni logiche e quello grafico di rappresentazione dei circuiti logici. 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 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. 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 (after their simplification). 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.Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Learn the Boolean algebra formal language to express logical functions and the graphical language to express combinatorial logic circuits.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
Nessuno
None
Metodi didattici
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 e di disegnare e simulare circuiti logici combinatori e sequenziali utilizzando un pacchetto software libero).
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 and to design and simulate combinatorial and sequential circuits through a free software tool).
Altre informazioni
Sulla piattaforma DIR sono disponibili: l'elenco degli argomenti svolti in ogni singola lezione, esempi di testi d’esame degli anni precedenti, informazioni generali sul corso e avvisi relativi allo svolgimento del corso e sugli esami.
It is possible to download electronic copy of previous years examination test, 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
Di norma esame scritto, eventualmente sostituito da un colloquio orale nel caso si iscrivano poche persone all'appello
Usually written examination, except when few students are present, in which case the examination might be oral.
Programma esteso
Breve panoramica sulla evoluzione storica dei sistemi di calcolo (dalla Macchina di Von Neumann 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 mobile. 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, BUS, e varie periferiche). Cenni sui principi di funzionamento.CPU: ciclo di fetch-decode-execute. Processori CISC e RISC. CPU con struttura a pipeline e/o multicore (cenni).
Brief review of the historical evolution of computers (from Von Neumann machine 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 and/or multicore architecture (brief introduction).
Risultati di apprendimento attesi
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 e multicore.
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 and multicore architectures.
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2
Codice
S1365
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FRANCESCHINIS Giuliana Annamaria
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
1
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano
Italian
Contenuti
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione: in questo modulo sarà in particolare dettagliata la struttura di un processore microprogrammato (non reale ma verosimile) dotato di un linguaggio macchina derivato dal bytecode della Java Virtual Machine, e di un microinterprete. Vengono illustrate diverse versioni della microarchitettura con prestazioni via via migliori. Vengono inoltre illustrate 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), ovvero sulle caratteristiche dei linguaggi macchina.
Description of the layered architecture of modern computers: in particular in this module a (not real but realistic) microprogrammed processor is described in details. The processor’s machine level language derives from the Java Virtual Machine bytecode which is implemented through a microinterpreter. Several microarchitecture versions are presented, with increasing performance. Several processor optimization techniques are also presented (pipeline, branch prediction mechanisms, out of order execution, cache memories). Follows a general discussion about the Instruction Set Architecture (ISA) level, that is the machine language level.
Testi di riferimento
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
Conoscere e comprendere l’organizzazione interna di un processore, i suoi principali componenti e il meccanismo generale di funzionamento. Saper distinguere tra architetture microprogrammate e architetture che eseguono in hardware le istruzioni del linguaggio macchina.Saper descrivere un esempio di microarchitettura (in particolare quella proposta nel libro di testo) ad un livello di dettaglio abbastanza approfondito. Saper spiegare come alcune varianti architetturali possono modificare in maniera significativa la velocità di esecuzione. Sviluppare l’abilità di confrontare diverse soluzioni architetturali in termini di costi e di prestazioni.Conoscere la semantica operazionale di un linguaggio macchina ed applicare tale conoscenza per simulare l’esecuzione di un frammento di codice in linguaggio macchina. Spiegare come tale semantica si possa realizzare attraverso un microinterprete (con particolare riferimento all’esempio proposto nel libro di testo).Conoscere e saper descrivere la struttura e il principio di funzionamento delle memorie cache e le differenze tra i diversi tipi di organizzazione delle stesse. Conoscere i parametri per misurare l’efficacia di una memoria cache. Saper descrivere le caratteristiche generali di un linguaggio macchina (tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e discutere motivazioni, vantaggi e svantaggi di diverse scelte; fornire esempi concreti.Descrivere le modalità di interazione tra CPU e dispositivi di I/O (istruzioni specifiche per l’I/O vs. I/O mappato in memoria; I/O programmato con attesa attiva oppure I/O basato su interrupt o ancora Direct Memory Access – DMA).Acquisire la capacità di approfondire ed aggiornarsi su aspetti specifici e temi più avanzati delle architetture dei processori, in particolare facendo ricorso a risorse disponibili on-line.
Know and understand the internal organization of processors, its main components an the general functional mechanisms. Know the difference between microprogrammed architectures and those that execute directly in hardware the machine language instructions. Describe an example of microarchitecture (in particular that presented in the textbook) at a quite detailed level. Explain how architectural variants impact on the execution speed.Develop the ability to compare different architectural solutions from the point of view of cost and performance.Know the operational semantics of a core set of machine language instructions and apply it in the simulation of short machine language instruction sequences. Explain how the instruction semantics may be implemented through a microinterpreter (in particular referring to the example architecture and machine language presented in the textbook).Know and describe the structure and the operational principles of cache memories and the differences among the alternative cache organization schemes. Know the parameters used to measure the effectiveness of cache memories.Describe the general characteristics of a machine language (instruction types, instruction format, addressing modes) and discuss motivation, advantages and disadvantages of different choices; provide practical examples.Describe how Input/Output can be performed (I/O instructions vs. memory mapped I/O, programmed I/O with busy waiting or interrupt driven I/O, Direct Memory Access - DMA)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
Conoscenza dei concetti studiati nel primo modulo del corso.
Knowledge of the concepts studied in the first module of the course.
Metodi didattici
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio per la sperimentazione attraverso un emulatore dell’esecuzione di programmi in linguaggio macchina dell’architettura MIC1 e del microinterprete che implementa tale linguaggio.
The topics of the course are mainly presented through class lectures that may be integrated with lab sessions to experiment the execution of machine language programs (for the MIC1 architecture) and of the microinterpreter that implements such language.
Altre informazioni
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
L’esame comprende due parti, una riguarda gli aspetti teorici mentre la seconda riguarda gli esperimenti di laboratorio.La parte sperimentale dell’esame si svolge in laboratorio utilizzando l’emulatore di MIC1.L’esame sulla parte teorica può essere orale o scritto (di solito è scritto nelle prime sessioni d’esame dopo il corso, orale nelle successive sessioni). Quando l’esame viene svolto in forma scritta è possibile chiedere una integrazione orale (per esempio nel caso in cui il voto dello scritto sia quasi sufficiente). Il test 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.L’esame può essere superato anche tramite prove di esonero intermedie da svolgere durante il corso.
The exam comprises two parts, one concerns the theoretical concepts presented in the course, the other concerns the lab experiments.The experimental part of the exam is performed in the lab using the MIC1 emulator.The exam on the theoretical part can be either oral or a written test (usually it is written in the first exams session after the course, 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.The exam can be passed also through intermediate tests proposed along the course.
Programma esteso
Architettura a livelli: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione AssemblerUn esempio di architettura microprogrammata e di linguaggio macchina: il MIC-1 e il linguaggio IJVM.Esercitazioni in laboratorio con un emulatore di MIC-1 dotato di compilatore per microprogrammi e per programmi IJVM.Miglioramento delle prestazioni. Introduzione di una unità di prelievo e della pipeline: le architetture MIC-2, MIC-3 e MIC-4. Le memorie cache: colmare il divario tra la velocità della memoria e del processore. La predizione dei salti. L’esecuzione fuori ordine.Caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento. Interazione con i dispositivi di Input/Output.Esempi di architetture e linguaggi macchina di processori reali.
Structured computer architecture: the hardware layer, the microarchitecture layer, the Instruction Set Architecture layer, the Operating System layer, the Assembler language layer.An example of microprogrammed architecture and of machine language: MIC-1 and the IJVM language. Lab experiments with a software emulator of the MIC-1 architecture, featuring a microprogramming language and IJVM compiler.Performance issues: introducing an instruction fetch unit and a pipeline architecture: MIC-2, MIC-3 and MIC-4. The cache memory: filling the gap between memory and processor speed. Branch prediction. Out-of-order execution (instruction issuing and retiring order).Instruction Set Architecture: main characteristics and trade-offs. Data type, instruction types, instruction format, addressing modes. Interaction with Input/Output devices.Examples of architectures and machine languages of real processors.
Risultati di apprendimento attesi
Spiegare l’organizzazione di una macchina di von Neumann e le sue principali unità funzionali. Descrivere come viene eseguita un’istruzione in questo tipo di macchina.Mostrare la rappresentazione di istruzioni di linguaggio macchina a livello simbolico (rappresentazione mnemonica a livello assembler, per il programmatore) e in binario (rappresentazione interna alla macchina).Mostrare come un compilatore può trasformare elementi di linguaggi di alto livello in linguaggio assembler/macchina. Scrivere brevi programmi in linguaggio assembler (IJVM).Spiegare diversi formati di istruzioni con diverso numero di indirizzi per istruzione e lunghezza fissa o variabile.Elencare e descrivere diverse modalità di indirizzamento. Discutere l’impatto delle diverse modalità d’indirizzamento sul formato dell’istruzione. Discutere l’utilità di alcune modalità d’indirizzamento nella traduzione da linguaggi di alto livello in linguaggio assembler.Descrivere un esempio di implementazione di un processore completo di datapath e controllo. Confrontare implementazioni alternative. Discutere i vantaggi di effettuare il prefetching.Spiegare come si può sfruttare il parallelismo interno alle istruzioni tipico delle architetture a pipeline e i conflitti che possono verificarsi a causa di dipendenze tra istruzioni. Spiegare il concetto di predizione dei salti e discutere la sua utilità in una architettura a pipeline.Descrivere come l’uso della gerarchia delle memorie, e in particolare della cache tra CPU e RAM, permette di ridurre la latenza della memoria. Discutere importanza della località spaziale e temporale per il buon funzionamento della gerarchia delle memorie. Descrivere l’organizzazione delle memorie cache (mapping degli indirizzi, dimensione dei blocchi, politica di rimpiazzamento e di gestione delle scritture), con esempi pratici.Spiegare come si può realizzare il controllo di dispositivi di I/O e il trasferimento di dati tra questi e la CPU (e viceversa) nell’implementazione dell’I/O programmato con attesa attiva e nell’implementazione dell’I/O basato su interrupt, o DMA (portare esempi di scambio di dati con tastiera/display, stampanti o dischi magnetici)
Explain the organization of the classical von Neumann machine and its major functional units. Describe how an instruction is executed in a classical von Neumann machine.Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.Demonstrate how to map between high-level language patterns into assembly/machine language notations. Write simple assembly language program segments (IJVM).Explain different instruction formats with different number of addresses per instruction and variable length vs. fixed length.List and describe various addressing modes. Discuss their impact on the instruction format. Discuss the usefulness of some addressing modes from the point of view of high-level language compilers.Describe an example implementation of a complete processor, including datapath and control. Compare alternative implementation of datapaths. Discuss the advantages of prefetching.Explain basic instruction level parallelism using pipelining and the major hazards that may occur. Explain the concept of branch prediction and its utility in a pipeline architecture.Describe how the use of memory hierarchy (and in particular the introduction of caches between CPU and RAM) may reduce the effective memory latency. Discuss the importance of temporal and spatial locality. Describe operation of cache memories (address mapping, block size, replacement and store policy), with practical examples.Explain how programmed I/O with busy waiting or interrupts or DMA can be used to implement I/O control and data transfers (provide examples of control and data exchange with keyboard/display, printer, magnetic disk).
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI
Codice
MF0199
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FRANCESCHINIS Giuliana Annamaria
CFU
12
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
1
Periodo
Annuale
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Architettura 1: 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. Architettura 2: Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione: in questo modulo sarà in particolare dettagliata la struttura di un processore microprogrammato (non reale ma verosimile) dotato di un linguaggio macchina derivato dal bytecode della Java Virtual Machine, e di un microinterprete. Vengono illustrate diverse versioni della microarchitettura con prestazioni via via migliori. Vengono inoltre illustrate 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), ovvero sulle caratteristiche dei linguaggi macchina.
Architecture 1: 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. Architecture 2: Description of the layered architecture of modern computers: in particular in this module a (not real but realistic) microprogrammed processor is described in details. The processor’s machine level language derives from the Java Virtual Machine bytecode which is implemented through a microinterpreter. Several microarchitecture versions are presented, with increasing performance. Several processor optimization techniques are also presented (pipeline, branch prediction mechanisms, out of order execution, cache memories). Follows a general discussion about the Instruction Set Architecture (ISA) level, that is the machine language level.
Testi di riferimento
Architettura 1: A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013. Architettura 2: A.S. Tanenbaum, T.Austin: "Architettura dei Calcolatori: un approccio strutturale", VI Edizione, Pearson Education Italia, 2013.
Architecture 1: A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013. Architecture 2: A.S. Tanenbaum, T. Austin: "Structured Computer Organization", VI Ed., Pearson Education, 2013.
Obiettivi formativi
Architettura 1: Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi i 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. 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 logici (dopo averle semplificate). 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. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Apprendere il linguaggio formale dell’Algebra di Boole per esprimere funzioni logiche e quello grafico di rappresentazione dei circuiti logici. 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. Architettura 2: Conoscere e comprendere l’organizzazione interna di un processore, i suoi principali componenti e il meccanismo generale di funzionamento. Saper distinguere tra architetture microprogrammate e architetture che eseguono in hardware le istruzioni del linguaggio macchina.Saper descrivere un esempio di microarchitettura (in particolare quella proposta nel libro di testo) ad un livello di dettaglio abbastanza approfondito. Saper spiegare come alcune varianti architetturali possono modificare in maniera significativa la velocità di esecuzione. Sviluppare l’abilità di confrontare diverse soluzioni architetturali in termini di costi e di prestazioni.Conoscere la semantica operazionale di un linguaggio macchina ed applicare tale conoscenza per simulare l’esecuzione di un frammento di codice in linguaggio macchina. Spiegare come tale semantica si possa realizzare attraverso un microinterprete (con particolare riferimento all’esempio proposto nel libro di testo).Conoscere e saper descrivere la struttura e il principio di funzionamento delle memorie cache e le differenze tra i diversi tipi di organizzazione delle stesse. Conoscere i parametri per misurare l’efficacia di una memoria cache. Saper descrivere le caratteristiche generali di un linguaggio macchina (tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e discutere motivazioni, vantaggi e svantaggi di diverse scelte; fornire esempi concreti.Descrivere le modalità di interazione tra CPU e dispositivi di I/O (istruzioni specifiche per l’I/O vs. I/O mappato in memoria; I/O programmato con attesa attiva oppure I/O basato su interrupt o ancora Direct Memory Access – DMA).Acquisire la capacità di approfondire ed aggiornarsi su aspetti specifici e temi più avanzati delle architetture dei processori, in particolare facendo ricorso a risorse disponibili on-line.
Architecture 1: Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including 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. 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 (after their simplification). 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.Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Learn the Boolean algebra formal language to express logical functions and the graphical language to express combinatorial logic circuits.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). Architecture 2: Know and understand the internal organization of processors, its main components an the general functional mechanisms. Know the difference between microprogrammed architectures and those that execute directly in hardware the machine language instructions. Describe an example of microarchitecture (in particular that presented in the textbook) at a quite detailed level. Explain how architectural variants impact on the execution speed.Develop the ability to compare different architectural solutions from the point of view of cost and performance.Know the operational semantics of a core set of machine language instructions and apply it in the simulation of short machine language instruction sequences. Explain how the instruction semantics may be implemented through a microinterpreter (in particular referring to the example architecture and machine language presented in the textbook).Know and describe the structure and the operational principles of cache memories and the differences among the alternative cache organization schemes. Know the parameters used to measure the effectiveness of cache memories.Describe the general characteristics of a machine language (instruction types, instruction format, addressing modes) and discuss motivation, advantages and disadvantages of different choices; provide practical examples.Describe how Input/Output can be performed (I/O instructions vs. memory mapped I/O, programmed I/O with busy waiting or interrupt driven I/O, Direct Memory Access - DMA)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
Architettura 1: Nessuno Architettura 2: Conoscenza dei concetti studiati nel primo modulo del corso.
Architecture 1: None Architecture 2: Knowledge of the concepts studied in the first module of the course.
Metodi didattici
Architettura 1: 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 e di disegnare e simulare circuiti logici combinatori e sequenziali utilizzando un pacchetto software libero). Architettura 2: Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio per la sperimentazione attraverso un emulatore dell’esecuzione di programmi in linguaggio macchina dell’architettura MIC1 e del microinterprete che implementa tale linguaggio.
Architecture 1: 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 and to design and simulate combinatorial and sequential circuits through a free software tool). Architecture 2: The topics of the course are mainly presented through class lectures that may be integrated with lab sessions to experiment the execution of machine language programs (for the MIC1 architecture) and of the microinterpreter that implements such language.
Altre informazioni
Architettura 1: 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. Architettura 2: 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.
Architecture 1: 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 . Architecture 2: 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
Architettura 1: 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 da quattro a sei domande che possono essere articolate in sottopunti e comprendono anche esercizi di applicazione delle nozioni apprese ad esempi concreti. Architettura 2: La verifica dell’apprendimento avviene tramite una prova in forma scritta. La prova è composta da 8 a 11 quesiti ciascuno dei quali può essere strutturato in più punti. Un quesito può: essere una domanda a risposta multipla; avere forma di esercizio al fine di valutare la capacità di applicare ad esempi pratici i concetti teorici appresi; richiedere una risposta aperta riguardante gli aspetti a carattere teorico dell’insegnamento. È possibile chiedere una integrazione orale.
Architecture 1: 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. Architecture 2: Testing is done through a written test. The test consists of 8 to 11 questions each of which can be structured in multiple points. A question can: be a multiple-choice question; have a form of exercise to evaluate the ability to apply the learned concepts to practical examples; require an open response to the theoretical aspects of teaching. It is possible to ask for an oral integration.
Programma esteso
Architettura 1: 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). Architettura 2: Architettura a livelli: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione AssemblerUn esempio di architettura microprogrammata e di linguaggio macchina: il MIC-1 e il linguaggio IJVM.Esercitazioni in laboratorio con un emulatore di MIC-1 dotato di compilatore per microprogrammi e per programmi IJVM.Miglioramento delle prestazioni. Introduzione di una unità di prelievo e della pipeline: le architetture MIC-2, MIC-3 e MIC-4. Le memorie cache: colmare il divario tra la velocità della memoria e del processore. La predizione dei salti. L’esecuzione fuori ordine.Caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento. Interazione con i dispositivi di Input/Output.Esempi di architetture e linguaggi macchina di processori reali.
Architecture 1: 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. Architecture 2: Structured computer architecture: the hardware layer, the microarchitecture layer, the Instruction Set Architecture layer, the Operating System layer, the Assembler language layer.An example of microprogrammed architecture and of machine language: MIC-1 and the IJVM language. Lab experiments with a software emulator of the MIC-1 architecture, featuring a microprogramming language and IJVM compiler.Performance issues: introducing an instruction fetch unit and a pipeline architecture: MIC-2, MIC-3 and MIC-4. The cache memory: filling the gap between memory and processor speed. Branch prediction. Out-of-order execution (instruction issuing and retiring order).Instruction Set Architecture: main characteristics and trade-offs. Data type, instruction types, instruction format, addressing modes. Interaction with Input/Output devices.Examples of architectures and machine languages of real processors.
Risultati di apprendimento attesi
Architettura 1: 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. Architettura 2: Spiegare l’organizzazione di una macchina di von Neumann e le sue principali unità funzionali. Descrivere come viene eseguita un’istruzione in questo tipo di macchina.Mostrare la rappresentazione di istruzioni di linguaggio macchina a livello simbolico (rappresentazione mnemonica a livello assembler, per il programmatore) e in binario (rappresentazione interna alla macchina).Mostrare come un compilatore può trasformare elementi di linguaggi di alto livello in linguaggio assembler/macchina. Scrivere brevi programmi in linguaggio assembler (IJVM).Spiegare diversi formati di istruzioni con diverso numero di indirizzi per istruzione e lunghezza fissa o variabile.Elencare e descrivere diverse modalità di indirizzamento. Discutere l’impatto delle diverse modalità d’indirizzamento sul formato dell’istruzione. Discutere l’utilità di alcune modalità d’indirizzamento nella traduzione da linguaggi di alto livello in linguaggio assembler.Descrivere un esempio di implementazione di un processore completo di datapath e controllo. Confrontare implementazioni alternative. Discutere i vantaggi di effettuare il prefetching.Spiegare come si può sfruttare il parallelismo interno alle istruzioni tipico delle architetture a pipeline e i conflitti che possono verificarsi a causa di dipendenze tra istruzioni. Spiegare il concetto di predizione dei salti e discutere la sua utilità in una architettura a pipeline.Descrivere come l’uso della gerarchia delle memorie, e in particolare della cache tra CPU e RAM, permette di ridurre la latenza della memoria. Discutere importanza della località spaziale e temporale per il buon funzionamento della gerarchia delle memorie. Descrivere l’organizzazione delle memorie cache (mapping degli indirizzi, dimensione dei blocchi, politica di rimpiazzamento e di gestione delle scritture), con esempi pratici.Spiegare come si può realizzare il controllo di dispositivi di I/O e il trasferimento di dati tra questi e la CPU (e viceversa) nell’implementazione dell’I/O programmato con attesa attiva e nell’implementazione dell’I/O basato su interrupt, o DMA (portare esempi di scambio di dati con tastiera/display, stampanti o dischi magnetici)
Architecture 1: 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. Architecture 2: Explain the organization of the classical von Neumann machine and its major functional units. Describe how an instruction is executed in a classical von Neumann machine.Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.Demonstrate how to map between high-level language patterns into assembly/machine language notations. Write simple assembly language program segments (IJVM).Explain different instruction formats with different number of addresses per instruction and variable length vs. fixed length.List and describe various addressing modes. Discuss their impact on the instruction format. Discuss the usefulness of some addressing modes from the point of view of high-level language compilers.Describe an example implementation of a complete processor, including datapath and control. Compare alternative implementation of datapaths. Discuss the advantages of prefetching.Explain basic instruction level parallelism using pipelining and the major hazards that may occur. Explain the concept of branch prediction and its utility in a pipeline architecture.Describe how the use of memory hierarchy (and in particular the introduction of caches between CPU and RAM) may reduce the effective memory latency. Discuss the importance of temporal and spatial locality. Describe operation of cache memories (address mapping, block size, replacement and store policy), with practical examples.Explain how programmed I/O with busy waiting or interrupts or DMA can be used to implement I/O control and data transfers (provide examples of control and data exchange with keyboard/display, printer, magnetic disk).
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
MF0200ARCHITETTURA 1 INF/01 - INFORMATICA Franceschinis Giuliana Annamaria
MF0201ARCHITETTURA 2 INF/01 - INFORMATICA De Pierro Massimiliano
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1
Codice
MF0200
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FRANCESCHINIS Giuliana Annamaria
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
G
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
Conoscere e comprendere le basi della codifica binaria dell’informazione numerica, testuale e delle immagini, inclusi i 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. 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 logici (dopo averle semplificate). 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. Acquisire la terminologia corretta per descrivere i principi di funzionamento dei sistemi di calcolo e le tecniche di codifica e dell’informazione. Apprendere il linguaggio formale dell’Algebra di Boole per esprimere funzioni logiche e quello grafico di rappresentazione dei circuiti logici. 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 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. 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 (after their simplification). 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.Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Learn the Boolean algebra formal language to express logical functions and the graphical language to express combinatorial logic circuits.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
Nessuno
None
Metodi didattici
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 e di disegnare e simulare circuiti logici combinatori e sequenziali utilizzando un pacchetto software libero).
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 and to design and simulate combinatorial and sequential circuits through a free software tool).
Altre informazioni
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
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 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
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).
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.
Risultati di apprendimento attesi
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.
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.
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2
Codice
MF0201
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
DE PIERRO Massimiliano
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
B
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
G
Lingua insegnamento
Italiano
Italian
Contenuti
Descrizione dell'architettura, strutturata a livelli, di un moderno sistema di elaborazione: in questo modulo sarà in particolare dettagliata la struttura di un processore microprogrammato (non reale ma verosimile) dotato di un linguaggio macchina derivato dal bytecode della Java Virtual Machine, e di un microinterprete. Vengono illustrate diverse versioni della microarchitettura con prestazioni via via migliori. Vengono inoltre illustrate 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), ovvero sulle caratteristiche dei linguaggi macchina.
Description of the layered architecture of modern computers: in particular in this module a (not real but realistic) microprogrammed processor is described in details. The processor’s machine level language derives from the Java Virtual Machine bytecode which is implemented through a microinterpreter. Several microarchitecture versions are presented, with increasing performance. Several processor optimization techniques are also presented (pipeline, branch prediction mechanisms, out of order execution, cache memories). Follows a general discussion about the Instruction Set Architecture (ISA) level, that is the machine language level.
Testi di riferimento
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
Conoscere e comprendere l’organizzazione interna di un processore, i suoi principali componenti e il meccanismo generale di funzionamento. Saper distinguere tra architetture microprogrammate e architetture che eseguono in hardware le istruzioni del linguaggio macchina.Saper descrivere un esempio di microarchitettura (in particolare quella proposta nel libro di testo) ad un livello di dettaglio abbastanza approfondito. Saper spiegare come alcune varianti architetturali possono modificare in maniera significativa la velocità di esecuzione. Sviluppare l’abilità di confrontare diverse soluzioni architetturali in termini di costi e di prestazioni.Conoscere la semantica operazionale di un linguaggio macchina ed applicare tale conoscenza per simulare l’esecuzione di un frammento di codice in linguaggio macchina. Spiegare come tale semantica si possa realizzare attraverso un microinterprete (con particolare riferimento all’esempio proposto nel libro di testo).Conoscere e saper descrivere la struttura e il principio di funzionamento delle memorie cache e le differenze tra i diversi tipi di organizzazione delle stesse. Conoscere i parametri per misurare l’efficacia di una memoria cache. Saper descrivere le caratteristiche generali di un linguaggio macchina (tipi di istruzioni, formato delle istruzioni, modalità d’indirizzamento) e discutere motivazioni, vantaggi e svantaggi di diverse scelte; fornire esempi concreti.Descrivere le modalità di interazione tra CPU e dispositivi di I/O (istruzioni specifiche per l’I/O vs. I/O mappato in memoria; I/O programmato con attesa attiva oppure I/O basato su interrupt o ancora Direct Memory Access – DMA).Acquisire la capacità di approfondire ed aggiornarsi su aspetti specifici e temi più avanzati delle architetture dei processori, in particolare facendo ricorso a risorse disponibili on-line.
Know and understand the internal organization of processors, its main components an the general functional mechanisms. Know the difference between microprogrammed architectures and those that execute directly in hardware the machine language instructions. Describe an example of microarchitecture (in particular that presented in the textbook) at a quite detailed level. Explain how architectural variants impact on the execution speed.Develop the ability to compare different architectural solutions from the point of view of cost and performance.Know the operational semantics of a core set of machine language instructions and apply it in the simulation of short machine language instruction sequences. Explain how the instruction semantics may be implemented through a microinterpreter (in particular referring to the example architecture and machine language presented in the textbook).Know and describe the structure and the operational principles of cache memories and the differences among the alternative cache organization schemes. Know the parameters used to measure the effectiveness of cache memories.Describe the general characteristics of a machine language (instruction types, instruction format, addressing modes) and discuss motivation, advantages and disadvantages of different choices; provide practical examples.Describe how Input/Output can be performed (I/O instructions vs. memory mapped I/O, programmed I/O with busy waiting or interrupt driven I/O, Direct Memory Access - DMA)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
Conoscenza dei concetti studiati nel primo modulo del corso.
Knowledge of the concepts studied in the first module of the course.
Metodi didattici
Gli argomenti trattati nel corso sono esposti prevalentemente tramite lezioni frontali che potranno essere integrate con alcune esercitazioni in laboratorio per la sperimentazione attraverso un emulatore dell’esecuzione di programmi in linguaggio macchina dell’architettura MIC1 e del microinterprete che implementa tale linguaggio.
The topics of the course are mainly presented through class lectures that may be integrated with lab sessions to experiment the execution of machine language programs (for the MIC1 architecture) and of the microinterpreter that implements such language.
Altre informazioni
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
La verifica dell’apprendimento avviene tramite una prova in forma scritta. La prova è composta da 8 a 11 quesiti ciascuno dei quali può essere strutturato in più punti. Un quesito può: essere una domanda a risposta multipla; avere forma di esercizio al fine di valutare la capacità di applicare ad esempi pratici i concetti teorici appresi; richiedere una risposta aperta riguardante gli aspetti a carattere teorico dell’insegnamento. È possibile chiedere una integrazione orale.
Testing is done through a written test. The test consists of 8 to 11 questions each of which can be structured in multiple points. A question can: be a multiple-choice question; have a form of exercise to evaluate the ability to apply the learned concepts to practical examples; require an open response to the theoretical aspects of teaching. It is possible to ask for an oral integration.
Programma esteso
Architettura a livelli: il livello hardware, il livello della microarchitettura, il livello della Instruction Set Architecture, il livello del Sistema Operativo, il livello della programmazione AssemblerUn esempio di architettura microprogrammata e di linguaggio macchina: il MIC-1 e il linguaggio IJVM.Esercitazioni in laboratorio con un emulatore di MIC-1 dotato di compilatore per microprogrammi e per programmi IJVM.Miglioramento delle prestazioni. Introduzione di una unità di prelievo e della pipeline: le architetture MIC-2, MIC-3 e MIC-4. Le memorie cache: colmare il divario tra la velocità della memoria e del processore. La predizione dei salti. L’esecuzione fuori ordine.Caratteristiche dei linguaggi macchina (Instruction Set Architecture): tipi di dato, tipi di istruzioni, formato delle istruzioni, modalità di indirizzamento. Interazione con i dispositivi di Input/Output.Esempi di architetture e linguaggi macchina di processori reali.
Structured computer architecture: the hardware layer, the microarchitecture layer, the Instruction Set Architecture layer, the Operating System layer, the Assembler language layer.An example of microprogrammed architecture and of machine language: MIC-1 and the IJVM language. Lab experiments with a software emulator of the MIC-1 architecture, featuring a microprogramming language and IJVM compiler.Performance issues: introducing an instruction fetch unit and a pipeline architecture: MIC-2, MIC-3 and MIC-4. The cache memory: filling the gap between memory and processor speed. Branch prediction. Out-of-order execution (instruction issuing and retiring order).Instruction Set Architecture: main characteristics and trade-offs. Data type, instruction types, instruction format, addressing modes. Interaction with Input/Output devices.Examples of architectures and machine languages of real processors.
Risultati di apprendimento attesi
Spiegare l’organizzazione di una macchina di von Neumann e le sue principali unità funzionali. Descrivere come viene eseguita un’istruzione in questo tipo di macchina.Mostrare la rappresentazione di istruzioni di linguaggio macchina a livello simbolico (rappresentazione mnemonica a livello assembler, per il programmatore) e in binario (rappresentazione interna alla macchina).Mostrare come un compilatore può trasformare elementi di linguaggi di alto livello in linguaggio assembler/macchina. Scrivere brevi programmi in linguaggio assembler (IJVM).Spiegare diversi formati di istruzioni con diverso numero di indirizzi per istruzione e lunghezza fissa o variabile.Elencare e descrivere diverse modalità di indirizzamento. Discutere l’impatto delle diverse modalità d’indirizzamento sul formato dell’istruzione. Discutere l’utilità di alcune modalità d’indirizzamento nella traduzione da linguaggi di alto livello in linguaggio assembler.Descrivere un esempio di implementazione di un processore completo di datapath e controllo. Confrontare implementazioni alternative. Discutere i vantaggi di effettuare il prefetching.Spiegare come si può sfruttare il parallelismo interno alle istruzioni tipico delle architetture a pipeline e i conflitti che possono verificarsi a causa di dipendenze tra istruzioni. Spiegare il concetto di predizione dei salti e discutere la sua utilità in una architettura a pipeline.Descrivere come l’uso della gerarchia delle memorie, e in particolare della cache tra CPU e RAM, permette di ridurre la latenza della memoria. Discutere importanza della località spaziale e temporale per il buon funzionamento della gerarchia delle memorie. Descrivere l’organizzazione delle memorie cache (mapping degli indirizzi, dimensione dei blocchi, politica di rimpiazzamento e di gestione delle scritture), con esempi pratici.Spiegare come si può realizzare il controllo di dispositivi di I/O e il trasferimento di dati tra questi e la CPU (e viceversa) nell’implementazione dell’I/O programmato con attesa attiva e nell’implementazione dell’I/O basato su interrupt, o DMA (portare esempi di scambio di dati con tastiera/display, stampanti o dischi magnetici)
Explain the organization of the classical von Neumann machine and its major functional units. Describe how an instruction is executed in a classical von Neumann machine.Summarize how instructions are represented at both the machine level and in the context of a symbolic assembler.Demonstrate how to map between high-level language patterns into assembly/machine language notations. Write simple assembly language program segments (IJVM).Explain different instruction formats with different number of addresses per instruction and variable length vs. fixed length.List and describe various addressing modes. Discuss their impact on the instruction format. Discuss the usefulness of some addressing modes from the point of view of high-level language compilers.Describe an example implementation of a complete processor, including datapath and control. Compare alternative implementation of datapaths. Discuss the advantages of prefetching.Explain basic instruction level parallelism using pipelining and the major hazards that may occur. Explain the concept of branch prediction and its utility in a pipeline architecture.Describe how the use of memory hierarchy (and in particular the introduction of caches between CPU and RAM) may reduce the effective memory latency. Discuss the importance of temporal and spatial locality. Describe operation of cache memories (address mapping, block size, replacement and store policy), with practical examples.Explain how programmed I/O with busy waiting or interrupts or DMA can be used to implement I/O control and data transfers (provide examples of control and data exchange with keyboard/display, printer, magnetic disk).
×
Stampa
Insegnamento
FISICA
Codice
MF0202
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
SITTA Mario
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
FIS/01 - FISICA SPERIMENTALE
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
1
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
Fornire agli Studenti una conoscenza del metodo di indagine in Fisica e dei fondamenti della Fisica Classica.
To give the Students a knowledge of the research methods in Physics and of the fundamental concepts in Classical Physics.
Prerequisiti
Analisi Matematica 1
Calculus 1
Metodi didattici
Lezioni frontali sulla parte teorica ed esercizi numerici.
Frontal lectures on the theoretical part and numerical exercises.
Altre informazioni
Esame scritto con domande a risposta aperta e chiusa. Gli Studenti devono dimostrare di aver appreso le basi della Fisica classica,.
Written exam with open and closed questions. Students must prove they learnt the basics of classical Physics.
Modalità di verifica dell'apprendimento
Esame scritto con un numero variabile di quiz a risposta multipla e domande aperte sulla parte teorica del Corso. A richiesta, eventuale orale integrativo.
Written exam with a variable number of multiple choice test and open questions on the theoretical part of the Course. On demand, possible supplementary oral exam.
Programma esteso
Richiami di matematica di base. Grandezze fisiche. 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. Corrente elettrica. Campo magnetico. Elementi di meccanica delle onde.
Recall of basic Mathematics. Physical quantities. 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 current. The magnetic field. Elements of Mechanics of waves.
×
Stampa
Insegnamento
FISICA
Codice
MF0203
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
BARONE Vincenzo
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
FIS/01 - FISICA SPERIMENTALE
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
×
Stampa
Insegnamento
MATEMATICA DISCRETA
Codice
S1366
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRARI Pier Luigi
CFU
9
Settore Scientifico Disciplinare (SSD)
MAT/03 - GEOMETRIA, MAT/01 - LOGICA MATEMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Algebra e Geometria: Teoria elementare dei numeri e introduzione alla crittografia Alcune nozioni di base dell'algebra lineare. Logica: Introduzione alla logica proposizionale ed alla logica dl I ordine.
Algebra and Geometry: Elementary theory of numbers and introduction to criptography. Some basic ideas of linear algebra. Logic: Introduction to propositional and first order logic
Testi di riferimento
Algebra e geometria: Appunti del docente. Appunti reperibili in rete. Logica: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997)
Algebra and geomtry: Instructor's notes. Notes which can be found on the web. Logic: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997)
Obiettivi formativi
Algebra e geometria: Capacità di modellizzare semplici situazioni (problemi di crittografia, problemi lineari) con l'aiuto di idee e metodi di base di algebra e algebra lineare. Logica: Obiettivo del corso è  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.
Algebra and geometry: Ability at modeling simple situations (cryptography problems, linear problems) by means of some basic ideas and methods of algebra and linear algebra. Logic: Providing the main notions on propositional and first-order logic, with a particular attention to the relations between validity and derivability and to the use of the predicate calculus for representing natural language statements
Prerequisiti
Lettura e produzione di brevi testi scritti descrittivi e argomentativi in italiano. Proprietà di base dei numeri interi. Proprietà di base del piano cartesiano.
Reading and production of short descriptive and argumentative texts in italian. Basic properties of integers. Basic properties of the cartesian plane.
Metodi didattici
Lezioni frontali. Tutorato personalizzato e (per la parte di algebra e geometria) esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and (for the algebra and geometry module) computer-aided exercises.
Altre informazioni
Algebra e geometria: Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti. 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.
Algebra and geometry: Optional exercises on the platform DIR. Simulations of written examinations. Final written computer-aided examination, possibly followed by an interview. Logic: The requirement for passing the exams is the acquirement of the basic notions of prtopositional logic (both on the semantics and on proof methods) and of predicate logic.
Modalità di verifica dell'apprendimento
Algebra e geometria: Esame scritto con l'ausilio del calcolatore, eventuale colloquio orale. La prova scritta consiste in 5-6 items a risposta chiusa o aperta nel formato 'Quiz' della piattaforma DIR e in 2 problemi nel formato 'Compito'. Logica: La verifica finale consiste in una prova scritta della durata di due ore e in una prova orale facoltativa.
Algebra and geometry: Written computer-aided examination, possibly followed by an optional interview. The written test consists in 5-6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 2 problems in the format 'Task'. Logic:A written 2h examination and an optional discussion
Programma esteso
Algebra e Geometria: 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. Radici quadrate modulo n e lancio di una moneta al telefono. Test di primalità di Miller-Rabin. Polinomi: somma, prodotto, divisione euclidea, teorema di Ruffini, teorema fondamentale dell'algebra. Matrici e sistemi lineari. Metodo di Eliminazione di Gauss. Logic: 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.
Algebra and Geometry: 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. Square roots modulo n and toss of a coin on the phone. Miller-Rabin's primality test. Polynomials: sums, products, euclidean division, Ruffini's theorem, Fundamental theorem of algebra. Matrices and linear systems. Gauss' elimination method. Logic: 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
Algebra e Geometria: 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. Logica: 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.
Algebra and Geometry: 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. Logic: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.
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
S1367ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Ferrari Pier Luigi
S1368LOGICA MAT/01 - LOGICA MATEMATICA Ferrari Pier Luigi
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA
Codice
S1367
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRARI Pier Luigi
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/03 - GEOMETRIA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano.
Italian.
Contenuti
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
Appunti del docente. Diversi materiali disponibili sulla piattaforma DIR.
Instructor's notes. A range of materials available on the platform DIR.
Obiettivi formativi
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
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
Lezioni frontali. Tutorato personalizzato ed esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and Computer-aided exercises.
Altre informazioni
Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti.
Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento
Esame scritto con l'ausilio del calcolatore, eventuale colloquio orale. La prova scritta consiste in 6 items a risposta chiusa o aperta del formato 'Quiz' della piattaforma DIR e in 2 problemi nel formato 'Compito'.
Written computer-based test, possibly followed by an interview. The written test consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 2 problems in the format 'Task'.
Programma esteso
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. Radici quadrate modulo n e lancio di una moneta al telefono. Test di primalità di Miller-Rabin. Polinomi: somma, prodotto, divisione euclidea, teorema di Ruffini, teorema fondamentale dell'algebra. Matrici e sistemi lineari. Metodo di Eliminazione di Gauss.
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. Square roots modulo n and toss of a coin on the phone. Miller-Rabin's primality test. Polynomials: sums, products, euclidean division, Ruffini's theorem, Fundamental theorem of algebra. Matrices and linear systems. Gauss' elimination method.
Risultati di apprendimento attesi
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.
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
MATEMATICA DISCRETA: LOGICA
Codice
S1368
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
FERRARI Pier Luigi
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
MAT/01 - LOGICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano.
Italian.
Contenuti
Introduzione alla logica proposizionale ed alla logica dl I ordine.
Introduction to propositional and first order logic
Testi di riferimento
"Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Graw Hill Education (1997)
"Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Graw Hill Education (1997)
Obiettivi formativi
Obiettivo del corso è  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.
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
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
Lezioni frontali. Tutorato personalizzato ed esercitazioni al calcolatore.
Face-to-face lectures. Personalized tutoring and computer-aided exercises.
Altre informazioni
Esercitazioni facoltative sulla piattaforma DIR. Simulazioni di esami scritti.
Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento
Esame scritto con l'ausilio del calcolatore, eventuale colloquio orale. La prova scritta consiste in 3-4 items a risposta chiusa o aperta del formato 'Quiz' della piattaforma DIR e in 1 problema nel formato 'Compito'. L'esame è integrato con quello del modulo 'Algebra e Geometria'.
Written computer-based test, possibly followed by an interview. The written test consists in 3-4 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 1 problem in the format 'Task'. The exam is integrated with that of 'Algebra e Geometria'.
Programma esteso
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, 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
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 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.
×
Stampa
Insegnamento
MATEMATICA DISCRETA
Codice
MF0204
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CHINOSI Claudia
CFU
9
Settore Scientifico Disciplinare (SSD)
MAT/03 - GEOMETRIA, MAT/01 - LOGICA MATEMATICA
Tipo di insegnamento
Attività formativa integrata
Fruizione insegnamento
OBB
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano.
Italian.
Contenuti
Algebra e Geometria: Teoria elementare dei numeri e introduzione alla crittografia Alcune nozioni di base dell'algebra lineare. Logica: Introduzione alla logica proposizionale ed alla logica dl I ordine.
Algebra and Geometry: Elementary theory of numbers and introduction to criptography. Some basic ideas of linear algebra. Logic: Introduction to propositional and first order logic
Testi di riferimento
Algebra e geometria: Appunti reperibili in rete. M. Bramanti, C.D. Pagani, S. Salsa, Analisi Matematica 1. Con elementi di geometria e algebra lineare. Zanichelli, Bologna Logica: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997)
Algebra and geomtry: Notes which can be found on the web. Logic: "Logica a Informatica" di A. Asperti e A. Ciabattoni, Mc Grow Hill Education (1997)
Obiettivi formativi
Algebra e geometria: Capacità di modellizzare semplici situazioni (problemi di crittografia, problemi lineari) con l'aiuto di idee e metodi di base di algebra e algebra lineare. Logica: Obiettivo del corso è  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.
Algebra and geometry: Ability at modeling simple situations (cryptography problems, linear problems) by means of some basic ideas and methods of algebra and linear algebra. Logic: Providing the main notions on propositional and first-order logic, with a particular attention to the relations between validity and derivability and to the use of the predicate calculus for representing natural language statements
Prerequisiti
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
Lezioni frontali. Tutorato personalizzato ed esercitazioni guidate per la parte di algebra e geometria.
Face-to-face lectures. Personalized tutoring for the algebra and geometry section.
Altre informazioni
Per la parte di algebra e geometria il controllo dell'apprendimento è effettuato tramite lo svolgimento di esercizi in classe volti a verificare la capacità di comprendere e assimilare la teoria.
Algebra and geometry: classroom exercises to verify the ability to understand the theory.
Modalità di verifica dell'apprendimento
Algebra e geometria: La prova, della durata di due ore, è composta da due parti: una riguardante argomenti di algebra lineare e una seconda parte riguardante argomenti di algebra. Logica: La verifica finale consiste in una prova scritta della durata di due ore e in una prova orale facoltativa.
Algebra and geomtry: Written examination. Logic:A written examination and optional discussion
Programma esteso
Algebra e Gemetria: "Algebra lineare": Vettori nel piano e nello spazio. Vettori n-dimensionali. Matrici e determinanti. Sistemi lineari. Metodo di eliminazione di Gauss. "Algebra": 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. Radici quadrate modulo n e lancio di una moneta al telefono. Test di primalità di Miller-Rabin. Polinomi: somma, prodotto, divisione euclidea, teorema di Ruffini, teorema fondamentale dell'algebra. Logica: 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.
Algebra and Geometry: 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. Square roots modulo n and toss of a coin on the phone. Miller-Rabin's primality test. Polynomials: sums, products, euclidean division, Ruffini's theorem, Fundamental theorem of algebra. Matrices and linear systems. Gauss' elimination method. Logic: 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
Ci si attende che lo studente familiarizzi con gli elementi di algebra lineare per arrivare a discutere e risolvere i sistemi lineari. Per la parte di algebra ci si attende che lo studente assimili gli elementi di base dell'algebra al fine di utilizzarli per risolvere elementari problemi di crittografia. 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.
It is expected that the student will familiarize with linear algebra elements to discuss and solve linear systems. For the algebra part it is expected that the student will assimilate the basic elements of the algebra in order to solve elementary cryptographic problems. Logic: The requirement for passing the exams is the acquirement of the basic notions of propositional logic (both on the semantics and on proof methods) and of predicate logic.
Moduli
Codice Insegnamento Settore Scientifico Disciplinare (SSD) Docenti Agenda web
MF0205ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Chinosi Claudia
MF0206LOGICA MAT/01 - LOGICA MATEMATICA Bardelle Cristina
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA
Codice
MF0205
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CHINOSI Claudia
Docenti
CFU
6
Ore di lezione
48
Ore di studio individuale
102
Settore Scientifico Disciplinare (SSD)
MAT/03 - GEOMETRIA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
G
Mostra scheda insegnamento padre
×
Stampa
Insegnamento
MATEMATICA DISCRETA: LOGICA
Codice
MF0206
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
BARDELLE CRISTINA
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
MAT/01 - LOGICA MATEMATICA
Tipo di insegnamento
Modulo di sola Frequenza
Fruizione insegnamento
OBB
Categoria insegnamento
C
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
G
×
Stampa
Insegnamento
PROGRAMMAZIONE 1
Codice
MF0163
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
TERENZIANI Paolo
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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
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
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
Nessuno
None
Metodi didattici
Lezioni tradizionali e esercitazioni nel laboratorio informatico.
Standard lectures and programming sessions in the computer lab.
Altre informazioni
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
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
- 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
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.
×
Stampa
Insegnamento
PROGRAMMAZIONE 1
Codice
MF0207
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CODETTA RAITERI Daniele
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
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. Infine, il corso si propone di illustrare sommariamente la dimostrazione formale della correttezza di un programma e l’analisi di complessità di un algoritmo.
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. Finally the course explains in a general way the formal proof of program correctness and the complexity analysis of an algorithm.
Testi di riferimento
Slides del docente. 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.
Slides by the lecturer. 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
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
Nessuno
None
Metodi didattici
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 define 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
Nessuna
None
Modalità di verifica dell'apprendimento
L'esame del corso prevede due prove parziali. La prima prova riguarda sia gli studenti di Informatica sia gli studenti di Scienza dei Materiali. 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 pratica dura 2 ore e riguarda i primi 6 crediti (CFU) del corso. La seconda prova parziale riguarda solo gli studenti di Informatica e consiste in una prova scritta sugli argomenti presentati negli altri 3 crediti (CFU) del corso. Anche in questo caso si richiede la definizione di strutture dati ed algoritmi in linguaggio di programmazione. La prova scritta è tipicamente composta da 3 o 4 domande in cui si chiede allo studente di risolvere semplici problemi di programmazione scrivendo il codice sorgente in linguaggio C di una o più funzioni. Le domande riguardano tipicamente il passaggio dei parametri per valore e riferimento, la definizione e l'uso delle strutture (struct), problemi su stringhe e array. A ogni domanda è associato un punteggio che dipende dalla difficoltà del problema proposto e varia da 4 a 12 punti. Il punteggio totale della prova scritta è dato dalla somma dei punteggi dei singoli esercizi ed è di 32 punti, dove un punteggio superiore a 30 è utile per conseguire la lode. La prova scritta dura 2 ore e riguarda gli ultimi 3 crediti (CFU) del corso. Gli studenti potranno trovare dettagli e esempi di prove d'esame sulla piattaforma DIR. Durante le prove parziali non è consentita la consultazione del materiale del corso o di manuali. Per la prova pratica si usano i calcolatori del laboratorio informatico; è vietato l'uso di dispositivi mobili o computer portatili. Per gli studenti di Informatica, il voto finale è dato dalla media pesata dei voti delle due prove parziali: la prova pratica pesa per 2/3, la prova scritta per 1/3. Per gli studenti di Scienza dei Materiali il voto finale è lo stesso della prova pratica.
The exam consists of two partial tests. The first test concerns both the students of Computer Science and the students of Materials Science. It 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 practical exam has a 2 hours duration and is about the first 6 credits of the course. The second partial test concerns only the students of Computer Science and consists of a written exam about the topics presented in the other 3 credits of the course. Also in this case, the definition of algorithms and data structures in C language, is required. The written exam is typically composed by 3 or 4 questions where the student is asked to solve simple programming problems by writing the source code in C language of one ore more functions. The questions are typically about the parameters passing by value or reference, the definition and the use of structures (struct), problems about strings and arrays. A score is associated with each question, depends on the difficulty of the proposed problem, and varies between 4 and 12 points. The total score of the written test is given by the sum of the scores of the single exercises, and is equal to 32 points, where a score greater than 30 is useful for an honorable mention. The written exam has a 2 hours duration and is about the last 3 credits of the course. The students can find details and examples of exams on the DIR platform. During the partial tests, consulting the course material or manuals is not allowed. For the practical exam the computers in the laboratory are used; the use of mobile devices or portable computers is forbidden. For the Computer Science students, the final score is given by the weighted mean between the scores of the partial tests: the practical test has a 2/3 weight, the written test has a 1/3 weight. For the Materials Science students the final score is given by the score of the practical test.
Programma esteso
- introduzione alla programmazione ed al linguaggio C; - compilazione vs interpretazione vs soluzione mista (alla Java); - concetti di base della programmazione: variabili, tipi di dato; - input e output in C; - 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 ed equivalenza fra i costrutti iterativi; - funzioni e passaggio dei parametri; passaggio dei parametri per valore; concetto di puntatore e passaggio dei parametri per riferimento; passaggio dei parametri per valore vs passaggio dei parametri per riferimento; - array e algoritmi su array; - dimostrazione formale di correttezza di un algoritmo; analisi di complessità di un algoritmo.
Programming language concepts: data abstraction and the use of types, control structures for the execution of a sequence of statements, top-down design with functions, parameter passing among functions, local and global variables. Flowchart: graphic representation of an algorithm. Interpretation versus compilation. C language: - Types, Operators and Expressions: variable names, data types, constants, declarations, arithmetic operators, relational and logical operators, increment and decrement operators, assignment operators and expressions. - Input and Output: formatted output (printf), formatted input (scanf). - Control Flow: statements and blocks, if-else, loops (while, for, do-while). - Miscellaneous Functions: mathematical functions, random number generation. - Pointers and Arrays: pointers and addresses, pointers and arrays, character arrays. - Functions: pointers and function arguments, call by value, call by reference. Algorithm Correctness and Analysis of Algorithm Complexity.
Risultati di apprendimento attesi
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.
×
Stampa
Insegnamento
PROGRAMMAZIONE 2
Codice
MF0164
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
MANZINI Giovanni
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Argomenti avanzati del linguaggio C. Ricorsione.
Advanced topics in C programming. Recursion.
Testi di riferimento
Paul Deitel, Harvey Deitel “Il linguaggio C. Fondamenti e tecniche di programmazione”. Pearson Italia
Paul Deitel, Harvey Deitel “C How to Program". Prentice Hall.
Obiettivi formativi
Conoscenza e comprensione dei concetti avanzati della programmazione. Capacità di applicare la conoscenza e comprensione dei concetti avanzati della programmazione alla risoluzione di problemi algoritmici. Gli studenti dovranno raggiungere l'autonomia di giudizio rispetto alle tecniche da usare per la risoluzione dei problemi algoritmici. Gli studenti dovranno essere in grado di comunicare e spiegare l'uso delle tecniche di programmazione appropriate. Gli studenti dovranno acquisire quelle conoscenze metodologiche necessarie per raffinare le tecniche di programmazione e integrare il proprio codice con funzioni di libreria anche complesse.
Knowledge and understanding: advanced concepts of computer programming. Applying knowledge and understanding: students will be able to apply advanced concepts of computer programming for the solution of algorithmic problems. Making judgements: students will be able to autonomously evaluate the best techniques to solve a given algorithmic problem. Communication skills: students will learn to communicate and justify the use of the appropriate programming techniques for a given problem. Learning skills: students will be able to autonomously learn how to refine basic techniques and how to integrate their code with the appropriate library functions.
Prerequisiti
Lo studente deve aver superato Programmazione 1
The student must have successfully completed Programming 1
Metodi didattici
Lezioni frontali in aula, esercitazioni in aula e in laboratorio. 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 ed i testi di eventuali esercizi assegnati.
Standard lectures in classroom, exercises in classroom and in lab. On the DIR platform students can find the suggested textbooks and additional material. After each lecture, the subject of the lecture is reported together with any assignment carried out during the lecture.
Altre informazioni
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 assignments in the computer lab under the supervision of a teacher.
Modalità di verifica dell'apprendimento
Esame scritto consistente in da 2 a 4 esercizi di programmazione riguardanti argomenti diversi affrontati nel corso. Esame orale facoltativo consistente in 3 domande su argomenti diversi del corso.
Written exam consisting in from 2 to 4 programming assignments on different course topics. Optional oral exam consisting of 3 questions on different course topics. T
Programma esteso
- Argomenti avanzati del linguaggio C: operazioni sui bit, struct, puntatori e file. - Gestione dinamica della memoria: array dinamici e liste. - Ricorsione: definizione e concetti di base, record di attivazione - Algoritmo quicksort e puntatori a fuzione. - Esercizi su algoritmi e strutture dati ricorsive.
- Advanced topics in C programming: bit operations, struct, pointers, files. - Dynamic memory managment: dynamic arrays and lists. - Recursion: sefinition and basic concepts, activation record - Quicksort algorithm and pointers to functions. - Exercises on recursive algorithms and data structures.
Risultati di apprendimento attesi
Raggiungimento, in grado misurato dal voto, degli obiettivi formativi.
The achievement, up to a degree measured by grades, of the learning goals.
×
Stampa
Insegnamento
PROGRAMMAZIONE 2
Codice
MF0208
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
BOTTRIGHI Alessio
CFU
9
Ore di lezione
72
Ore di studio individuale
153
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
A
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
V
Lingua insegnamento
Italiano
Italian
Contenuti
Gestione di stutture dati dinamiche. Iterazione. Ricorsione. Algoritmi classici di ordinamento
Management of the dynamic data strucutres. Iteration. Recursion. Classics algorithms of sorting sorting
Testi di riferimento
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
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.
The student must learn the basic techniques for the management of dynamic memory and the basics of recursive programming Knowledge and understanding: iteration programming, recursion programming, dynamic list structure. Ability to apply knowledge and understanding: given a problem inherent to the dynamic list structure, - define an iterative algorithm that converts input data into output data, following the programming constructs; - define a recursive algorithm that converts input data into output data, following the programming constructs; - write to the calculator the source program that implements the algorithm using a programming language (C); - compile, execute and test this program on the computer. Judging autonomy: the student must be able to define and implement an algorithm to solve a problem inherent in the management of dynamic structures in programming language (C), to evaluate the complexity, and compile and execute the program. Communication Skills: Students must be able to define an algorithm both in iteration and recursion, and must be able to present their expressed cost as complexity in time and space. Learning Ability: The student must be able to learn how to define an algorithm starting from the problem both in iteration and recursion, to evaluate
Prerequisiti
Lo studente deve aver superato Programmazione 1
The student must have successfully completed Programming 1
Metodi didattici
Lezioni frontali in aula, esercitazioni in aula e in laboratorio
Teacher lessons in classroom, exercises in classroom and in lab
Altre informazioni
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.
Modalità di verifica dell'apprendimento
Esame scritto (orale facoltativo): quattro esercizi orientati a testare le capacite e le conoscenze inerenti alla programmzaione iterativa e ricorsiva; e esame in laboratorio: sviluppo in laboratorio di funzioni iterative e ricorsive in linguaggio C
Written examination (orala is optional): four exercise focused to test the skill and the knowledge about iterative and recursive programming; and lab examination: developing iterative and recursive function in C language in lab.
Programma esteso
- 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 construction of lists - Interactive functions on lists: - Management of a single list - Management of multiple lists - Recursion: - Definition and basic concepts - Recursive function simulation via activation record - A complex example: the Towers of Hanoi - Recursive functions on lists: - Management of a single list - Management of multiple lists - Recursive sort functions: - QuickSort - MergeSort
Risultati di apprendimento attesi
Lo studente deve sapere gestire le liste implementate tramite puntatori, sviluppare programmi per la loro gestione sia in ricorsione sia in iterazione
The student must be able to manage the list implemented through pointers, to develop programs for their management both in recursion and in iteration
×
Stampa
Insegnamento
TECNICHE DI COMUNICAZIONE E SCRITTURA
Codice
MF0088
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
CANOBBIO ANDREA TULLIO
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
L-FIL-LET/12 - LINGUISTICA ITALIANA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
F
Anno
1
Periodo
Secondo Semestre
Sede
ALESSANDRIA
Tipo di valutazione
G
Lingua insegnamento
Italiano.
Italian.
Contenuti
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 ed e’ elaborata una teoria dei paragrafi. Il corso include anche una descrizione delle più importanti caratteristiche della lingua italiana e dei più ricorrenti errori di scrittura.
The course aims at developing a good knowledge of the main communication and writing techniques. For this, the main communication models are examined, including the principles of communicating. Moreover, the key writing phases are specified and a theory for treating paragraphs is pointed out. The course includes also a description of the leading features of Italian language and of the most common writing mistakes.
Testi di riferimento
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,Roma, Carocci, 2014.   Un buon dizionario e una buona grammatica della lingua italiana sono anche consigliati.
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,Roma, Carocci, 2014.   A good dictionary and a good Italian language grammar book are also suggested.
Obiettivi formativi
Il corso punta a formare: -        una buona competenza nell’uso analitico dei modelli della comunicazione -        una buona competenza nell’uso delle massime del comunicare -        una buona competenza di scrittura verificata in tutte le sue componenti (documentazione, pianificazione, stesura, revisione, editing, pubblicazione) -        una buona competenza della lingua italiana scritta -        una buona competenza nella progettazione di testi scritti -        una buona competenza nella realizzazione scritta di testi scientifici.
The course aims at developing: -       a good competence of the analytic use in communication models -       a good competence in the use of communication principles -       A good competence in writing, tested in all its parts (documentary research, planning, draft, revision, editing, publication) -       a good competence in the written Italian language -       a good competence in planning written texts -       a good competence in written creation of scientific texts
Prerequisiti
È richiesta la conoscenza della lingua italiana, almeno a livello standard.
The knowledge of Italian language is requested, at least at the standard level.
Metodi didattici
Sono presentate lezioni frontali discendenti con l’ausilio di slides (ppt).
Lectures with slides (ppt) are presented.
Altre informazioni
Durante il corso gli studenti si impegnano in esercitazioni scritte che sono valutate collettivamente.
During the course, students are involved in written exercises, which are evaluated together.
Modalità di verifica dell'apprendimento
In sede d’esame allo studente è richiesto di comporre per iscritto un testo consistente in una relazione d’esame su quanto imparato nel corso (tempo: tre ore)
During the exam, the student is required to compose a written text in the form of an examination report about what learnt throughout the course (time: three hours)
Programma esteso
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 – 20. Sintesi del corso.
The course treats the following topics: 1. Communication and language – 2 Communication models – 3 The text – 4 Professional writing – 5. The writing process – 6. Documentary research – 7. Planning – 8. The paragraph – 9. The draft – 10. Indentation and language use – 11. Rules – 12. Style and revision – 13. Meaning and lexicon – 14. Syntax and text – 15. Exam report – 16. Professional text – 17. Italian language and its features – 18. Italian language and the most common writing mistakes – 19. The scientific text – 20. Summary of the course
×
Stampa
Insegnamento
TECNICHE DI COMUNICAZIONE E SCRITTURA
Codice
MF0225
Anno Accademico
2017/2018
Anno regolamento
2017/2018
Corso di studio
INFORMATICA
Curriculum
CORSO GENERICO
Responsabile didattico
DEMARTINI SILVIA
CFU
3
Ore di lezione
24
Ore di studio individuale
51
Settore Scientifico Disciplinare (SSD)
L-FIL-LET/12 - LINGUISTICA ITALIANA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB
Categoria insegnamento
F
Anno
1
Periodo
Secondo Semestre
Sede
VERCELLI
Tipo di valutazione
G
Lingua insegnamento
ITALIANO
ITALIAN
Contenuti
Conoscenza e comprensione: 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 storica e sincronica delle principali caratteristiche della lingua italiana (nei suoi diversi registri e varietà), 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. Capacità di applicare conoscenza e comprensione: 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.
Knowledge and comprehension: This course aims to offer a good knowledge of the principal techniques for communicating and writing, taking into particular account students’ scientific education, and focusing on the kinds of text that they have most frequently to write for academic and professional purposes. For this reason, one of the aim of this course is to illustrate the principal models of communication, and also the principles and maxims of communicating. In addition to this, the course will explore the steps of the writing process and the text structure (chapters, paragraphs.). It will also offer a historical and synchronic description of the main features of the Italian language (registers and varieties), and an examination of the most common grammar and textual errors; these will be detected and monitored through various ways during the meetings, in order to promote a conscious and autonomous correction from the students. Skill of Applying Knowledge and Comprehension: At the end of this course, participants are expected to grasp the importance of proper, clear and effective communication as an essential part of their scientific education ant their professional future. Then, they will be able to write a text according with the indication given and practiced during the course, suitably composed respecting the different textual types (specifically the scientific essay). Lastly, they’ll have to fill their gaps in basic Italian grammar, and be more sensitive and conscious about their linguistic and communicative difficulties.
Testi di riferimento
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. - Durante le lezioni e sulla pagina del corso, di questi e di altri testi saranno indicati i capitoli da leggere (in riferimento agli argomenti trattati), e caricate alcune pagine scansionate. - Un dizionario e una grammatica della lingua italiana sono consigliati per la consultazione e per il recupero delle conoscenze di base.
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. - During the classes and on the course web page, the teacher will suggest chapters and paragraphs to read, and other texts will be given (on specific topics); some pages will be uploaded on the web page. - A dictionary and an Italian grammar book are recommended for consultation and for reviewing basic knowledge.
Obiettivi formativi
Conoscenza e comprensione. Il corso mira all’acquisizione dei seguenti aspetti in termini di conoscenza e comprensione: - principali tecniche di comunicazione e di scrittura, soprattutto quelle legate alla formazione, alla ricerca e alla professione scientifica; - fasi e modi del processo di scrittura (dal progetto alla revisione); - caratteristiche di un testo ben costruito; - caratteristiche storico-descrittive dell’italiano e dei suoi registri/varietà; - recupero della grammatica di base a partire dagli errori più comuni; - avvicinamento ai tratti stilistico-formali più avanzati, tipici dei testi accademici; - sensibilizzazione all’importanza di una comunicazione chiara in campo scientifico (in particolare informatico). Capacità di applicare conoscenza e comprensione. L’acquisizione delle conoscenze di base è necessaria per formare e a rafforzare le seguenti abilità e competenze: - una competenza attiva nell’uso di modelli comunicativi adeguati; - una padronanza consapevole delle massime del comunicare; - la capacità di individuare e replicare le caratteristiche essenziali dei testi più frequentemente scritti all’università e nel mondo del lavoro; - una migliore e più matura abilità di scrittura verificata in tutte le sue fasi (documentazione, pianificazione, stesura, revisione, editing, pubblicazione), applicabile a diversi tipi e generi di testo; - una buona competenza della lingua italiana scritta, orientata specialmente alla progettazione e alla realizzazione di testi scientifici e funzionali.
Knowledge and comprehension. The main aim of the course is the acquisition of the following contents in terms of knowledge and comprehension: - main communication and writing techniques, especially those related to training, research and scientific profession; - steps and ways of the writing process (from planning to review); - recognizing and reproducing the right features of an effective text; - historical and descriptive characteristics of Italian language and of its registers / varieties; - refreshing basic grammar, starting from the most common mistakes; - approaching the most advanced stylistic-formal features, typical of academic texts; - becoming aware of the importance of clear communication in science (especially in computer science). Skill of Applying Knowledge and Comprehension. After the acquisition of some necessary, basic knowledge, by the end of this course students will be able to: - use proper comminicative strategies; - have a deep competence in the maxims of communicating; - identify and reproduce the essential characteristics of the most frequently written texts at university and in future workplaces; - activate better and more mature writing skills during the whole writing process (documentation, planning, drafting, revision, editing, publishing), applicable to different types of text and genres; - have a stronger competence on the written Italian language, especially oriented to the design and the composition of scientific and functional texts.
Prerequisiti
È richiesta la conoscenza della lingua italiana (C1-C2). Si possono ammettere eccezioni.
Italian language (minimum C1-C2).
Metodi didattici
Lezioni frontali con l’ausilio di ppt, intervallate da momenti di interazione con l’uditorio (anche in modalità flipped); lettura e comprensione di testi; esercitazioni individuali e di gruppo sui temi trattati (correzione collettiva e individuale); lavoro a gruppi; sperimentazione di modalità di esercitazione interattiva (con strumenti online come Kahoot!) e di flipped classroom (“classe capovolta”, in cui chi impara si attiva in prima persona sui contenuti didattici).
Classes supported by PowerPoint presentations, interaction with the audience (flipped classroom); text reading and comprehension; individual and group exercises (individual and in-group correction); work in groups; interactive exercises (i. e. using also online tools like Kahoot!) and trials of flipped classroom model (predominant in-class active learning activity).
Altre informazioni
Il corso è in parte laboratoriale (per esigenze specifiche di frequenza o altro, contattare la docente).
The course is partially organized as a workshop (for specific organizational needs, please, keep in touch with the teacher!).
Modalità di verifica dell'apprendimento
Per frequentanti e non frequentanti, le esercitazioni corrette in gruppo e/o visionate dalla docente offrono un monitoraggio graduale della situazione. La partecipazione attiva al corso è un aspetto rilevante anche ai fini della valutazione (i non frequentanti possono essere partecipi attraverso varie modalità). Modalità d’esame: esame scritto. Allo studente è richiesto di comporre un testo consistente in una relazione d’esame su quanto imparato nel corso (tempo: tre ore; mezzo: pc in “modalità esame”, programma di videoscrittura).
Both for students who attend classes and for the ones who don’t, exercises corrected in group or by the teacher will offer a step-by-step supervision. Students’ active involvement is an important aspect for evaluation (students who can’t attend the lessons can partecipate in different ways). Method of examination: written test. Students are expected to write a report about the course content, in form of an essay (exam time: 3 h; pc + writing software like Word).
Programma esteso
Il corso propone 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 e il saggio – 16. Il testo scientifico – 16. Le tipologie e i generi testuali, con particolare attenzione al testo professionale e ad altri testi funzionali di largo uso (mail, CV) – 17. La lingua italiana: storia e caratteristiche – 18. La lingua italiana e i principali errori nella scrittura. 19- Scritto e parlato/CNV.
Course Content in Detail: 1. Communication and Language – 2. Models of communication – 3. Text general Features – 4. Professional Writing – 5. The Writing Process – 6. Documentation – 7. Planning – 8. What is a Paragraph? – 9. Drafting/Writing– 10. Paragraph and Uses of Language – 11. Rules – 12. Style and Revising – 13. Words and Meaning – 14. Syntax and Text – 15. Exam report and Essay – 16. How to Write a Scientific Paper – 16. Types and textual genres, with a focus on professional text and other functional texts of wide use (mail, CV) – 17. Italian Language: History and Features – 18. Italian Language and Common Mistakes in Writing. - 19. Writing VS Speaking/NVC.
Risultati di apprendimento attesi
Acquisizione donoscenze di base nel campo della teoria della comunicazione e della scrittura funzionali allo sviluppo della competenza di scrittura; consolidamento delle conoscenze linguistiche e metalinguistiche di base; miglioramento della capacità di scrivere un testo accademico-professionale; conoscenze di base sul parlato in pubblico.
Basic knowledge on communication and writing theory, useful to improve writing competence; reinforcement of basic linguistic and metalinguistic knowledge; improving writing skills (academic-professional texts); basic knowledge on public speaking.
Stampa guida
Stampa
Anno Codice Insegnamento Docenti Settore Scientifico Disciplinare (SSD) Curriculum Sede CFU
1 MF0198 ANALISI MATEMATICA I Ferrero Alberto MAT/05 Tutti VERCELLI 6
1 MF0198 ANALISI MATEMATICA I Ferrero Alberto MAT/05 Tutti VERCELLI 6
1 S0357 ANALISI MATEMATICA I Ferrero Alberto MAT/05 Tutti ALESSANDRIA 6
1 MF0199 ARCHITETTURA DEGLI ELABORATORI Franceschinis Giuliana Annamaria, De Pierro Massimiliano INF/01 Tutti VERCELLI 12
1 S1363 ARCHITETTURA DEGLI ELABORATORI Chiola Giovanni, Franceschinis Giuliana Annamaria INF/01 Tutti ALESSANDRIA 12
1 MF0202 FISICA Sitta Mario FIS/01 Tutti ALESSANDRIA 6
1 MF0203 FISICA Barone Vincenzo FIS/01 Tutti VERCELLI 6
1 MF0204 MATEMATICA DISCRETA Chinosi Claudia, Bardelle Cristina MAT/03, MAT/01 Tutti VERCELLI 9
1 S1366 MATEMATICA DISCRETA Ferrari Pier Luigi MAT/03, MAT/01 Tutti ALESSANDRIA 9
1 MF0163 PROGRAMMAZIONE 1 Terenziani Paolo, Bottrighi Alessio INF/01 Tutti ALESSANDRIA 9
1 MF0207 PROGRAMMAZIONE 1 Codetta Raiteri Daniele, Anselma Luca INF/01 Tutti VERCELLI 9
1 MF0208 PROGRAMMAZIONE 2 Bottrighi Alessio, Nai Roberto INF/01 Tutti VERCELLI 9
1 MF0164 PROGRAMMAZIONE 2 Manzini Giovanni INF/01 Tutti ALESSANDRIA 9
1 MF0225 TECNICHE DI COMUNICAZIONE E SCRITTURA Demartini Silvia L-FIL-LET/12 Tutti VERCELLI 3
1 MF0088 TECNICHE DI COMUNICAZIONE E SCRITTURA Canobbio Andrea Tullio L-FIL-LET/12 Tutti ALESSANDRIA 3
2 MF0209 ALGORITMI 1 Montani Stefania, Guazzone Marco INF/01 Tutti VERCELLI 9
2 MF0210 ALGORITMI 2 Piovesan Luca INF/01 Tutti VERCELLI 6
2 MF0054 Algoritmi 2 Egidi Lavinia INF/01 Tutti ALESSANDRIA 6
2 MF0034 Algoritmi I Montani Stefania, Leonardi Giorgio INF/01 Tutti ALESSANDRIA 9
2 MF0211 BASI DI DATI E SISTEMI INFORMATIVI Giordano Laura, Anselma Luca INF/01 Tutti VERCELLI 9
2 MF0158 BASI DI DATI E SISTEMI INFORMATIVI Giordano Laura, Piovesan Luca INF/01 Tutti ALESSANDRIA 9
2 MF0212 CALCOLO DELLE PROBABILITA' E STATISTICA Grassi Pietro MAT/06 Tutti VERCELLI 9
2 MF0048 Calcolo delle probabilità e statistica Rapallo Fabio, Chinosi Claudia MAT/06 Tutti ALESSANDRIA 9
2 MF0215 PROGRAMMAZIONE AD OGGETTI Audrito Giorgio INF/01 Tutti VERCELLI 6
2 S1724 PROGRAMMAZIONE AD OGGETTI Giannini Paola INF/01 Tutti ALESSANDRIA 6
2 S1609 RETI 1 Canonico Massimo INF/01 Tutti ALESSANDRIA 6
2 MF0216 RETI 1 Munafo' Maurizio Matteo INF/01 Tutti VERCELLI 6
2 MF0217 SISTEMI OPERATIVI 1 Cerotti Davide, Amparore Elvio Gilberto INF/01 Tutti VERCELLI 9
2 MF0166 SISTEMI OPERATIVI 1 Theseider Dupre' Daniele, Manzini Giovanni INF/01 Tutti ALESSANDRIA 9
2 MF0218 SISTEMI OPERATIVI 2 Guazzone Marco INF/01 Tutti VERCELLI 6
2 S1613 SISTEMI OPERATIVI 2 Anglano Cosimo Filomeno INF/01 Tutti ALESSANDRIA 6
3 MF0224 APPLICAZIONI WEB: LINGUAGGI E ARCHITETTURE Mantovani Daniele INF/01 Tutti VERCELLI 6
3 MF0128 Applicazioni mobili Canonico Massimo, Manzini Giovanni INF/01 Tutti ALESSANDRIA 6
3 MF0058 Apprendimento ed estrazione di conoscenza Giordana Attilio, Saitta Lorenza INF/01 Tutti ALESSANDRIA 3
3 MF0059 Business intelligence: gestione dei dati Terenziani Paolo, Portinale Luigi, Montani Stefania INF/01 Tutti ALESSANDRIA 3
3 MF0309 ELETTRONICA DIGITALE Ramello Luciano FIS/01 Tutti VERCELLI 3
3 S1725 FONDAMENTI, LINGUAGGI E TRADUTTORI 1 Terenziani Paolo, Bottrighi Alessio INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 S1725 FONDAMENTI, LINGUAGGI E TRADUTTORI 1 Terenziani Paolo, Bottrighi Alessio INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 S1726 FONDAMENTI, LINGUAGGI E TRADUTTORI 2 Theseider Dupre' Daniele, Giannini Paola INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 S1726 FONDAMENTI, LINGUAGGI E TRADUTTORI 2 Theseider Dupre' Daniele, Giannini Paola INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 I0496 INFORMATICA FORENSE Anglano Cosimo Filomeno INF/01 Tutti ALESSANDRIA 6
3 S1730 INGEGNERIA DEL SOFTWARE Codetta Raiteri Daniele, Camilli Matteo INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 MF0057 Intelligenza Artificiale Portinale Luigi INF/01 Tutti ALESSANDRIA 6
3 S1736 LOGICA COMPUTAZIONALE Giordano Laura, Theseider Dupre' Daniele INF/01 Tutti ALESSANDRIA 3
3 MF0162 METODOLOGIE DI PROGRAMMAZIONE PER IL WEB Portinale Luigi, Sulis Emilio INF/01 Tutti VERCELLI, ALESSANDRIA 6
3 S1727 RETI 2 INF/01 Tutti ALESSANDRIA 9
3 MF0165 RETI 2 Giordana Attilio, Cerotti Davide, De Russis Luigi INF/01 Tutti VERCELLI, ALESSANDRIA 9
Dati aggiornati al: 15/07/2020, 12:32