Laurea in Informatica
Academic program
Print
Course  PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE 

Course ID  MF0243 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GIORDANA Attilio 
Teachers  Giordana Attilio 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Annuale 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  We expect that the student will acquire the capability of designing and implementing a distributed architecture following the stet of the art paradigms. 
Contenuti   Local Area Network architectures  Architecture and Design of EventDriven Applications  Fogcomputing, Internet of Things  Design and implementation of a network application based on an EventDriven architecture 
Testi di riferimento   Kurose & Ross  ComputerNetworking: a TopDown Approach. 
Obiettivi formativi  To develop the capability of designing a network application based on the concept of distribuited microservices. 
Prerequisiti  The course assumes that the student have the fundamental notions in software engineering and in computer networks, thought in the courses of software engineering, object programming, Web Programming and Computer networkI 
Metodi didattici  The course includes: Lectures (36 hours) Activity assisted by the teacher (36 hours) Individual activity selforganized by the student 
Altre informazioni  
Modalità di verifica dell'apprendimento  The assessment of the notions acquired by the student includes three steps: An oral discussion concerning the methodological fundamentals. A demonstration of the working prototype developed by the student. The evaluation of a technical report written by the student 
Programma esteso  The course is subdivided into two modules: 1. Computer Network Technologies (24 hours): a) The datalink layer:  Service and functionality characterization.  Network to datalink interface: ARP (IPv4), ND (IPv6).  Medium Access Control principles: CSMA, CSMA/CD, CSMA/CA, CDMA.  Ethernet, Ethernet switches.  WiFi, Accesspoint, 802.11 protocol suite.  Bluetooth (basic notions). Application to Internet of Things.  ZigBee (basic notions). Application to Internet of Things. b) Multimedia communication on IP networks:  Requirement characterization.  Audiovideo streaming.  Protocols supporting audiovido streaming: RTSP, RTP, RTCP. c) Computer Network Security:  Basic principles.  Shared key chryptography.  Public key chryptography.  User authentication, digital signature  Secure socket layer: SSL, HTTPS d) Network Application Architectures:  Cloud, Private Networks and IoT.  EventDriven rchitectures versus ClientServer architectures.  Interconnecting agents in private networks: portforwarding, DynamicDNS.  Relay in public networks, message brokers  Selfconfiguring hosts in local networks: ZeroConf, UPnP. 2. Lab Module (48 hours: 12 lectures +36 assisted activity): Development of a Network Application. a) Environment:  Local Area Network provided with hosts oriented to IoT applications: Beaglebone Black, RaspberryPI, Arduino uno.  Communication protocol: MQTT + HTTP  University Cloud service provided with Mosquitto, RabbitMQ, KAFKA. b) Assignment: the student is required to develop a project applying the methods learned in the courses of software engineering, object oriented programming, computer networks, and WEB programming. The computer language for the software implementation can be coosed among: Java, C++. Javascript, Python. c) Preliminary activity:  Familiarization with the methodological aspects of the project: messagebroker based architectures with focus on popular opensource platforms: KAFKA, RabbitMQ, Mosquitto.  Experimentation with the message queue and the publicsubscribe paradigms.  Experimentation with multithread and multiprocess architecture for handling realtime events. d) Project development: the student will have assigned an application in the IoT domain, which will be developend following the typical software engineering approach:  Requirement analysis and general software specification.  Architecture design, module and class specification.  Discussion with the teacher of the developed design.  Implementation  Validation and analysis of the permances  Final report 
Agenda web  Lessons schedule 
Print
Course  PROGETTAZIONE E IMPLEMENTAZIONE DI SISTEMI SOFTWARE IN RETE 

Course ID  MF0244 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CEROTTI DAVIDE 
Teachers  Franceschinis Giuliana Annamaria, Cerotti Davide, Callegari Elia 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowledge and understanding: students will learn the main architectures and features of local and wifi computer networks; the services provided by the data link layer and their interactions with the network layer; the characteristics and requirements of multimedia data transmission; the principles and techniques used in computer networks security and the characteristics of distributed eventdriven applications. Applying knowledge and understanding: students will be able to apply the acquired knowledge to develop an eventdriven application capable to interface with IoT devices connected to a LAN. During the application design the students will be able to use the techniques/methodologies acquired in the software engineering course. Making judgments: students will be able to autonomously analyze different architectural and implementation solutions, identify their pros and cons and choose the most suitable solutions. Communication skills: students will learn to synthetically explain the features of their application and the architectural or implementation choices and reasoning about their effectiveness. Learning skills: students will be capable to interact with different devices and platforms, developed according to the general principles acquired in the courses, but with different specific interfaces. Thus students will be able to autonomously learn the specific characteristics of provided services in order to develop an application capable to interact with them. 
Contenuti   Local Area Network architectures  Architecture and Design of EventDriven Applications  Fogcomputing, Internet of Things  Design and implementation of a network application based on an Event Driven architecture 
Testi di riferimento  James F. Kurose, Keith W. Ross, Computer networking  A topdown approach , 7th Edition, Addison Wesley (2017) 
Obiettivi formativi  To develop the capability of designing a network application based on the concept of distributed microservices. 
Prerequisiti  The course assumes that the student have the fundamental notions in software engineering and in computer networks, thought in the courses of Software Engineering, Object Oriented Programming, Web Programming Metodologies and Computer networksI 
Metodi didattici  The course includes: Lectures (32 hours) Activity assisted by the teacher (40 hours) Individual activity selforganized by the student 
Modalità di verifica dell'apprendimento  The assessment of the notions acquired by the student includes three steps: An oral discussion concerning the methodological fundamentals. A demonstration of the working prototype developed by the student. The evaluation of a technical report written by the student 
Programma esteso  The course is subdivided into two modules: 1. Computer Network Technologies (24 hours): a) The datalink layer:  Service and functionality characterization.  Network to datalink interface: ARP (IPv4), ND (IPv6).  Medium Access Control principles: CSMA, CSMA/CD, CSMA/CA, CDMA.  Ethernet, Ethernet switches.  WiFi, Accesspoint, 802.11 protocol suite.  Bluetooth (basic notions). Application to Internet of Things.  ZigBee (basic notions). Application to Internet of Things. b) Multimedia communication on IP networks:  Requirement characterization.  Audiovideo streaming.  Protocols supporting audiovido streaming: RTP. c) Computer Network Security:  Basic principles.  Shared key cryptography.  Public key cryptography.  User authentication, digital signature  Secure socket layer: SSL, HTTPS d) Network Application Architectures:  Cloud, Private Networks and IoT.  EventDriven architectures versus ClientServer architectures.  Interconnecting agents in private networks: portforwarding, Dynamic DNS.  Relay in public networks, message brokers  Selfconfiguring hosts in local networks: ZeroConf. 2. Lab Module (48 hours: 12 lectures +36 assisted activity): Development of a Network Application. a) Environment:  Local Area Network provided with hosts oriented to IoT applications: RaspberryPI.  Communication protocol: MQTT + HTTP  University Cloud service provided with Mosquitto, RabbitMQ. b) Assignment: the student is required to develop a project applying the methods learned in the courses of software engineering, object oriented programming, computer networks, and WEB programming. The computer language for the software implementation can be choosed among: Java, C++. Javascript, Python. c) Preliminary activity:  Familiarization with the methodological aspects of the project: message broker based architectures with focus on popular opensource platforms: RabbitMQ, Mosquitto.  Experimentation with the message queue and the publicsubscribe paradigms.  Experimentation with multithread and multiprocess architecture for handling realtime events. d) Project development: the student will have assigned an application in the IoT domain, which will be developend following the typical software engineering approach:  Requirement analysis and general software specification.  Architecture design, module and class specification.  Discussion with the teacher of the developed design.  Implementation  Validation and analysis of the performances  Final report 
Agenda web  Lessons schedule 
Print
Course  INGEGNERIA DEL SOFTWARE 

Course ID  S1730 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CODETTA RAITERI Daniele 
Teachers  Codetta Raiteri Daniele 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The student must acquire the following notions:  steps necessary to realize a software system, from the customer's requests, to the delivery, according to the engineering process; the goal is learning a working method applicable in a software house.  terminology of engineering; the goal is the comprehension of the language used by engineers.  ability to model the application domain, the requirements, the architecture, and the behaviour of the system by means of UML diagrams. The goal is providing all the information necessary to implement the system.  writing code by following UML diagrams. 
Contenuti  The course deals with the stages of the development of software systems: specification, design, implementation, validation and verification, maintenance. Moreover, the UML language for the specification and design of systems is introduced. The activity in the laboratory consists of preparing UML diagrams by means of a specific editor, and their translation into code. 
Testi di riferimento   I. Sommerville, "Software Engineering", Addison Wesley  M. Fowler, "UML distilled", Addison Wesley 
Obiettivi formativi  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  Knowledge acquired in the Object programming and Database courses. 
Metodi didattici  The course consists of frontal lectures and laboratory lectures. Modality: the frontal lectures explain the stages of Engineering and how they can be applied to the development of a software system. Moreover the UML language is presented from both the formal point of view and the application point of view, showing how it can be used to model the application domain, the requirements, the system architecture and behaviour, and to support code writing. Tools: A specific case study is used during the frontal lectures to show how to design the system, starting from the elicitation of requirements from the application domain. The case study is gradually developed during the lectures about the practical application of Engineering stages and UML. The goal of the case study is providing a concrete example of application of the procedures presented in the course. The preparation by the students of their own project in UML, is required during the laboratory lectures. Such project must have the same contents in terms of specification and design. The goal of the project is the practical application by the students, of the same procedures presented during the frontal lectures. A specific UML editor (Visual Paradigm) is used in both kinds of lectures, to model the case study and prepare the project. The course has its own page in the platform DIR (Didattica in Rete) which contains the slides, the tutorials about UML, the UML diagrams of the case study, the instructions for the UML editor, several written tests in the past, etc. 
Altre informazioni  During the course, deadlines are planned for the deliveries of the UML diagrams prepared by the students. This is done by means of a file sharing tool (Git) and pernits the periodic control of the students' work. For the theory, no partial tests will take place. 
Modalità di verifica dell'apprendimento  For the students attending the course, the exam consists of two parts: 1) the delivery, at the end of the course, of the project realized during the laboratory lectures; 2) a written test concerning the theory, still at the end of the course. The participation to the written test requires the delivery of the project several days before the test. 1) The knowledge of the Engineering stages, the knowledge of the Engineering terminology, and the application of specific methods, are verified in the written test which is composed by both questions (about 10) about theoretical concepts, and practical exercises (about 3) about the methods. A score is associated with each question and each exercise, and depends on the relevance, complexity and length of the expected answer. During the written test, consulting the course materials or manuals is not allowed. The DIR platform, in the course page, contains examples of written tests in the past. 2) The evaluation of the project is based on the quality of the realized UML diagrams, in terms of precision, coherence, and completeness. A score is associated with each diagram and depends on the complexity of the diagram type and the diagram correctness. The final score is given by the average of the scores of the written test and of the delivered project. The final score can be improved by an oral exam. For the students not attending the course, the exam is oral and concerns all the topics of the course (theory and UML). The oral exam consists of the discussion of a couple of topics from theory, one exercise about the methods presented in this part, about 4 questions about the formal aspects of UML, one exercise about a type of UML diagram. 
Programma esteso   Introduction to the Software Engineering  Software product and software process  System requirements specification  Specification using UML  System design  Design using UML  From UML to code  System verification and validation  System maintenance  Project management  Software process models 
Agenda web  Lessons schedule 
Print
Course  FONDAMENTI, LINGUAGGI E TRADUTTORI 2 

Course ID  S1726 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  THESEIDER DUPRE' Daniele 
Teachers  Theseider Dupre' Daniele 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals 
Contenuti  Syntaxdirected 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", AddisonWesley, 1986, or A. V. Aho, M.S. Lam, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", 2nd ed., AddisonWesley, 2006 
Obiettivi formativi  Knowing and being able to apply different methods for syntaxdirected 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  Programming 1 and 2; Foundations, Languages and Translators 1. 
Metodi didattici  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  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  Basic concepts about compilers. Syntaxdirected translation: attribute grammars, translation schemes. Semantic analysis, type checking. Runtime environments for imperative languages. Intermediate languages. Intermediate code generation. 
Agenda web  Lessons schedule 
Print
Course  FONDAMENTI, LINGUAGGI E TRADUTTORI 1 

Course ID  MF0219 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  BOTTRIGHI Alessio 
Teachers  Bottrighi Alessio 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  3 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  The students must have achieved the following capabilities: modeling regular languages through regular expressions recognize regular languages vs contextfree 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 contextfree rules needed to generate them modeling languages through contextfree grammars, developed using the "divide et impera" methodology know deterministic and nondeterministic finite automata and their relationships with regular languages know deterministic and nondeterministic pushdown automata and their relationships with contextfree languages developing nondeterministic pushdown automata on the basis of contextfree grammars developing deterministic pushdown automata to recognize contextfree (deterministic) languages know the basic notions of topdown and bottomup parsing know LR(0) and SLR(1) parsing developing LR(0) and SLR(1) parsers staring from a contextfree grammar 
Contenuti  Formal languages, context free grammars, automata, LR parsing. 
Testi di riferimento  Stefano Crespi Reghizzi Linguaggi formali e compilazione, Esculapio. 
Obiettivi formativi  Knowledge and comprehension: the students must know and understand the following basic notions: regular languages and expressions, linear grammars, (deterministic and nondeterministic) finite automata context free languages and grammars, (deterministic and nondeterministic) 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  Basic notions acquired in the programming courses of the first two years. 
Metodi didattici  Teacher lessons in classroom, exercises. 
Modalità di verifica dell'apprendimento  Written examination (oral examination is optional): 78 questions, that can be both applied exercise and theoretical question. 
Programma esteso   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  Finitestate automata and relationships to regular languages  Stack automata (deterministic and nondeterministic) and relationships to context free languages  Basic bottom up parsing theory, focusing on LR parsing (LR(0) e SLR(1)) 
Agenda web  Lessons schedule 
Print
Course  FONDAMENTI, LINGUAGGI E TRADUTTORI 1 

Course ID  S1725 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  TERENZIANI Paolo 
Teachers  Terenziani Paolo 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  3 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  The students must have achieved the following capabilities: modeling regular languages through regular expressions recognize regular languages vs contextfree 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 contextfree rules needed to generate them modeling languages through contextfree grammars, developed using the "divide et impera" methodology know deterministic and nondeterministic finite automata and their relationships with regular languages know deterministic and nondeterministic pushdown automata and their relationships with contextfree languages developing nondeterministic pushdown automata on the basis of contextfree grammars developing deterministic pushdown automata to recognize contextfree (deterministic) languages know the basic notions of topdown and bottomup parsing know LR(0) and SLR(1) parsing developing LR(0) and SLR(1) parsers staring from a contextfree grammar 
Contenuti  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. 
Obiettivi formativi  Knowledge and comprehension: the students must know and understand the following basic notions: regular languages and expressions, linear grammars, (deterministic and nondeterministic) finite automata context free languages and grammars, (deterministic and nondeterministic) 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  Basic notions acquired in the programming courses of the first two years. 
Metodi didattici  Teacher lessons in classroom, exercises. 
Modalità di verifica dell'apprendimento  Written examination (oral examination is optional). It contains both practical excercises and theoretica questions. 
Programma esteso   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  Finitestate automata and relationships to regular languages  Stack automata (deterministic and nondeterministic) and relationships to context free languages  Basic bottom up parsing theory, focusing on LR parsing (LR(0) e SLR(1)) 
Agenda web  Lessons schedule 
Print
Course  FONDAMENTI, LINGUAGGI E TRADUTTORI 2 

Course ID  MF0220 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GIANNINI Paola 
Teachers  Giannini Paola 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  Syntax directed translation guided and techniques of compilation of object languages. 
Testi di riferimento  Charles N. Fischer, Ron K. Cytron, Richard J. Le Blanch Jr., "Crafting a compiler", AddisonWesley. (For reference) A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", AddisonWesley, 1986 
Obiettivi formativi  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  Programming 1 and 2; Foundations, Languages and Translators 2.Programming 1 
Metodi didattici  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  One third 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  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 take into account the score of the written test and the score obtained in the project and laboratory exercises. 
Programma esteso  Language implementation techniques: translators, compilers, and interpreters, compiler structure. Scanning: scanner implementation. Parsing: parsing topdown (LL), parsing bottomup (LR). Abstract syntax tree and pattern Visitor. Symbol table implementation. Semantic analysis: attribute definition, attribute evaluation, type checking for object oriented languages. 
Agenda web  Lessons schedule 
Print
Course  INGEGNERIA DEL SOFTWARE 

Course ID  MF0221 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MUSUMECI Marialessia 
Teachers  Musumeci Marialessia 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  3 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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 Designpatterns of each category (behavioral, creational, structural) also identifying advantages/disadvantages, alternative architectural solutions, and antipatterns. Apply the Designpatterns 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 objectoriented software systems (Java programs). 
Contenuti  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 design software architecture using the UML language and implement Java software using IDEs and other software tools. 
Testi di riferimento   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, AddisonWesley Professional  Eric Freeman, Elisabeth Freeman, Kathy Sierra and Bert Bates, "Head First Design Patterns”, O'Reilly Media 
Obiettivi formativi  The theoretical part (frontal lectures) and the 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 pseudoformal languages such as UML. 
Prerequisiti   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  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 plugin. Software Versioning systems are also presented and experimented using git and GitHub. The course has its own webpage in the DIR (Didattica in Rete) platform, which contains the slides, UML tutorials, the Visual Paradigm, git and GitHub instructions, and other supporting materials. 
Altre informazioni  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  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  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 
Agenda web  Lessons schedule 
Print
Course  APPLICAZIONI WEB: LINGUAGGI E ARCHITETTURE 

Course ID  MF0224 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MANTOVANI DANIELE 
Teachers  Mantovani Daniele 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian. 
Contenuti  Serverside web programming: web applications and services (REST). 
Testi di riferimento  Suggested but not mandatory: http://csharpindepth.com/ https://legacy.gitbook.com/book/nbarbettini/littleaspnetcorebook/details 
Obiettivi formativi  Learning the fundamentals of the C # language. Learning the basics of ASP.Net MVC, and ability to use it in the development of medium complexity web applications and services (REST). 
Prerequisiti  Knowledge of objectoriented programming. Basic understanding of the concepts related to web development : HTTP, HTML, CSS, JavaScript. Basic knowledge of the relational model. Basic understanding of a RDBMS (MySQL, PosgreSQL, ...). Basic understanding of Windows. 
Metodi didattici  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  Exercises assigned during the course. 
Modalità di verifica dell'apprendimento  Lab project and oral discussion. 
Programma esteso  The course is divided into two parts: the first concerns the C# programming language (basic concepts and constructs), the second introduces the use of theASP.Net MVC framework for the development of medium complexity web applications. The course will also introduce to related topics such as access to relational data (Object Relational Mapping), the use of complex development tools (Visual Studio), unit testing. 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC120032  Applicazioni mobili: sviluppo di applicazioni mobili 1 [L. Ardito]  Lessons schedule 
EC120034  Applicazioni mobili: sviluppo di applicazioni mobili 2 [M. Canonico]  Lessons schedule 
Print
Course  Applicazioni mobili  

Course ID  MF0128  
Academic Year  2019/2020  
Year of rule  2017/2018  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  CANONICO Massimo  
Teachers  Ardito Luca, Canonico Massimo  
CFU  6  
SSD  INF/01  INFORMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OPZ  
Year  3  
Period  Primo Semestre  
Site  ALESSANDRIA  
Grading type  V  

Show parent course details
Print
Course  Applicazioni mobili: sviluppo di applicazioni mobili 1 

Course ID  MF0123 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  ARDITO Luca 
Teachers  Ardito Luca 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  Students will learn how to create simple mobile applications by exploiting all basic widgets showed during the lessons. 
Contenuti  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  Professional Android  4th edition  Reto Meier 
Obiettivi formativi  The course focuses on theoretic and practical aspects concerningthe development of mobile applications. 
Prerequisiti  Having passed the examination of "Objects programming" course 
Metodi didattici  Lectures and laboratory sessions. 
Altre informazioni  During the course, the students have to implement simple mobile apps. 
Modalità di verifica dell'apprendimento  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 About the course 1 How to get started 2 Android platform 3 Android emulator 4 Using XMLbased layout 5 Basic widgets 6 Working with containers 7 Input Method Framework 8 Popup messages 9 Dealing with Threads 10 Handling activity lifecycle 11 Creating Intent filter 12 Handling Multiple Screen Sizes 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  Applicazioni mobili: sviluppo di applicazioni mobili 2 

Course ID  MF0124 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CANONICO Massimo 
Teachers  Canonico Massimo 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  Students will learn how to create advanced mobile applications by using device sensors, maps and cloud services for data storage. 
Contenuti  "During the course, the student will learn how to use some advanced layouts and widgets, fragments, menu and preferences, localization service, sensors, and the use of maps. 
Testi di riferimento  Professional Android  quarta edizione  Reto Meier 
Obiettivi formativi  "Enable students to write Android apps that take advantage of the features of modern mobile devices, such as GPS, position sensors, maps. etc. 
Prerequisiti  Having passed the examination of "Objects programming" course 
Metodi didattici  Lectures and laboratory sessions. 
Altre informazioni  During the course, the students have to implement simple mobile apps. 
Modalità di verifica dell'apprendimento  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  "Fragments. Menus & Preferences. Accessing Files. ListViews & Adapters. Location services. GridViews & Gestures. SurfaceViews & Canvas. Sensors. Maps. Street View. 
Agenda web  Lessons schedule 
Print
Course  ELETTRONICA DIGITALE 

Course ID  MF0309 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  RAMELLO Luciano 
Teachers  Ramello Luciano 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  FIS/01  FISICA SPERIMENTALE 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  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. 
Contenuti  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 Materials provided by the instructor 
Obiettivi formativi  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  Courses of Physics, Computer architecture 1. 
Metodi didattici  Lectures. Practical demonstrations of discrete electronic components and integrated circuits. 
Altre informazioni  Monitoring the learning process: this will be achieved by posing questions to students during lectures and possibly through quizzes on the D.I.R. platform. 
Modalità di verifica dell'apprendimento  Oral exam. Usually two questions on two different topics developed during lectures are made. 
Programma esteso  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. Flipflops, registers and counters. Troubleshooting digital circuits. Semiconductor memories: ROM, EPROM, RAM. Flash memories and Solid State Disks. Serial data transmission: RS232 and USB. Digitaltoanalog and analogtodigital conversion. 
Agenda web  Lessons schedule 
Print
Course  Business intelligence: gestione dei dati 

Course ID  MF0059 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  TERENZIANI Paolo 
Teachers  Terenziani Paolo, Montani Stefania 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian/English 
Risultati di apprendimento attesi  Students must acquire the following knowledge, competences, and abilities A)  knowledge about the techniques to retrieve and reconcile operational data sources  general knowledge about OLAP query languages, and ability to formulate OLAP queries  model and techniques for a relational design and implementation of the conceptual multidimensional data model – NoSQL (hints) B)  knowledge and ability to distinguish validity vs transaction time  knowledge and ability to use TSQL2like approaches to cope with time in relational databases  knowledge and ability to use the BCDM model to model the semantics of temporal relational databases  knowledge about the main issues concerning the treatment of time in Artificial Intelligence (hints) C) Having understood notions of: 1. knowledge management 2. prediction 3. optimisation 4. adaptation described in the lessons; being able to apply such notions in answering theoretic questions as well as exercises. 
Contenuti  The course will be organized into the following parts: A) Datawarehousing B) Temporal databases C) Enterprise decision support Contents of the four parts can be summarized as follows: A) Methodologies and techniques to collect, analyse, sinthetize and reorganize operational data, to support strategical decisionmaking B) Methodologies and techniques to deal with validity and transaction time in relational databases C) Methodologies and techniques to realize a modern Business Intelligence system; 
Testi di riferimento  A) M. Golfarelli, S. Rizzi: “Data Warehouse”, McGrawHill, Milano. B) The second part of the course (Temporal Issues) is bases of scientific journal publications provided by the teacher. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer. 
Obiettivi formativi  Knowledge and comprehension: students must acquire a deep knowledge about: A) the methodologies to retrieve, analyse, synthetise, and reorganise operational data; the methodologies to design at the conceptual and at the logical relational level a datawarehouse B) the semantics of temporal databases; the main methodologies to mana valid time and transaction time in temporal relational databases; the main problems when dealing with "time" in knowledge bases C) methodologies and techniques for: knowledge representation and management, prediction, optimization, adaptation. Capacity to apply knowledge and comprehension: A) ability to design (conceptual and logical level) and develop a datawarehouse in the relational context, starting from operational data sources B) capacity to properly use TSQL2like temporal DBMS. C) ability to evaluate and/or apply the techniques studied in the course to design a decision support tool in an enterprise context, where heterogeneous data and knowledge may be available; Judgement autonomy: A) ability to identify facts of interest, granularity, dimensions and the hierarchy of dimensional attributes for a datawarehouse B) capability of recognizing the necessity of general\specific techniques to cope with time in relational DBs; ability to identify temporal problems (in DBs), and the methodologies to solve them C) ability to work in an autonomous way, and deal with complex enterprise situations or with incomplete information Communication abilities: AB) Students must acquire and adopt the rigorous terminology used in datawarehousing and in temporal databases. B) They must also be able to express in a rigourous (formal) way the semantics of temporal databases. C) They must be able to justify their design or implementation choices and clearly communicate them also to a non expert audience. Learning capacity: students must acquire the capability of A) analysing a modeling in a uniform way data coming from heterogeneous sources B) analysing possibly complex temporal problems in temporal databases C) describing and properly choosing the correct techniques to realize an enterprise decision support system 
Prerequisiti  Basic notions about relational databases, relational algebra, SQL 
Metodi didattici  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) Written. Students must answer questions and do small exercises B) Oral examination C) Written test. The test will be composed by three questions at least, focused on different course topics chosen among knowledge management, prediction, optimization, adaptation. The final score will take into account the partial scores of the different questions. Possibly (e.g., on student's request), the same exam type will be executed orally. 
Programma esteso  A (Data Warehousing):  Introduction: goals and architectures for Data Warehousing  techniques to collect and reconcile heterogeneous operational data  languages and techniques for the conceptual design of a multidimensional data model  Advanced query languages for OLAP analysis  model and techniques for a relational implementation of the conceptual multidimensional data model – NoSQL (hints) B (Temporal issues):  Validity vs transaction time  TSQL2: a general approach coping with time in relational databases  The BCDM model for the semantics of temporal relational databases  Properties of temporal relational models  Advanced temporal issues and Artificial Intelligence (hints) C (Enterprise decision support): The subject will be organised in four parts, each one referring to the realization of a specific module in a modern Business Intelligence tool architecture: 1. knowledge management: implicit and explicit knowledge; Rulebased Reasoning and Casebased Reasoning; advanced Casebased Reasoning solutions (time series data, fuzzy CBR, processoriented CBR); 2. prediction: classification, regression, time series; mathematical models, distancebased models, logic models, heuristic models; hybrid methods; 3. optimisation: mathematical methods, evolutionary algorithms, ant systems, hybrid methods; 4. adaptation: techniques to improve the prediction module performances. 
Course borrowed from  INFORMATICA (1983)  MF0288 BUSINESS INTELLIGENCE: DATA WAREHOUSE, ASPETTI TEMPORALI E SUPPORTO ALLE DECISIONI  ALESSANDRIA 
Agenda web  Lessons schedule 
Print
Course  Intelligenza Artificiale 

Course ID  MF0057 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  PORTINALE Luigi 
Teachers  Portinale Luigi 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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 oneshot and sequential decision processes, using probabilistic graphical models. 
Contenuti  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; CaseBased Reasoning; Uncertain knowledge representation: probability theory and Bayesian Networks; Introduction to Decision Theory. INTELLIGENT DECISION SUPPORT SYSTEMS Decision Theory, Multiattribute utility, Influence diagrams, Oneshot and sequential decisions, Decisiontheoretic planning (Markov Decision Processes) 
Testi di riferimento  S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3rd edition), PrenticeHall. 
Obiettivi formativi  ARTIFICIAL INTELLIGENCE: To introduce the fundamentals notions of AI systems INTELLIGENT DECISION SUPPORT SYSTEMS: Modeling oneshot and sequential decision processes 
Prerequisiti  ARTIFICIAL INTELLIGENCE: Suggested: Algorithms I and II, Probability and Statistics. INTELLIGENT DECISION SUPPORT SYSTEMS: Artificial Intelligence, Probability 
Metodi didattici  Lectures and exercises using Moodle and software tools. 
Modalità di verifica dell'apprendimento  ARTIFICIAL INTELLIGENCE: Written and oral (not mandatory) exam INTELLIGENT DECISION SUPPORT SYSTEMS: Oral discussion of a project 
Programma esteso  ARTIFICIAL INTELLIGENCE: Introduction and history of AI State space search: pathbased 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. CaseBased Reasoning systems; the CBRWorks 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 Multiattribute utility Influence diagrams Onesot and sequential decisions Decisiontheoretic planning (Markov Decision Processes) 
Course borrowed from  INFORMATICA (1983)  MF0293 INTELLIGENZA ARTIFICIALE E SUPPORTO INTELLIGENTE ALLE DECISIONI  ALESSANDRIA 
Agenda web  Lessons schedule 
Print
Course  LOGICA COMPUTAZIONALE 

Course ID  S1736 
Academic Year  2019/2020 
Year of rule  2017/2018 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  THESEIDER DUPRE' Daniele 
Teachers  Giordano Laura, Theseider Dupre' Daniele 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OPZ 
Course category  D 
Year  3 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals. 
Contenuti  Knowledge representation and reasoning with 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), PrenticeHall 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  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  Mathematical logic. 
Metodi didattici  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  Lab activity is also used to verify onthefly the degree of knowledge and understanding of the subject. 
Modalità di verifica dell'apprendimento  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  Automated reasoning in propositional logic, and in firstorder 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 and description logics; constraint logic programming; Answer Set Programming. Declarative problem solving using logic programming and ASP tools. 
Course borrowed from  INFORMATICA (1983)  MF0291 FONDAMENTI DI WEB SEMANTICO E PROBLEM SOLVING DICHIARATIVO  ALESSANDRIA 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC98221  SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 [D. Cerotti]  Lessons schedule 
EC98222  SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 [M. Guazzone]  Lessons schedule 
Print
Course  SISTEMI OPERATIVI  

Course ID  MF0368  
Academic Year  2019/2020  
Year of rule  2018/2019  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  CEROTTI DAVIDE  
Teachers  Cerotti Davide, Guazzone Marco  
CFU  12  
SSD  INF/01  INFORMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  2  
Period  Annuale  
Site  VERCELLI  
Grading type  V  
Lingua insegnamento  Italian  
Risultati di apprendimento attesi  The expected learning results are the achievement, measured by the exam degree, of the course goals.  
Contenuti  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. Modern Operating Systems, 4th edition  
Obiettivi formativi  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  The contents of a first course in computer architecture and in programming.  
Metodi didattici  Standard lectures and programming sessions in the computer lab.  
Altre informazioni  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  Written or oral exam consisting in 46 questions and 13 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments.  
Programma esteso  General notions on the architecture of a multiuser 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.  

Show parent course details
Print
Course  SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 

Course ID  MF0369 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CEROTTI DAVIDE 
Teachers  Cerotti Davide 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The expected learning results are the achievement, measured by the exam degree, of the course goals. 
Contenuti  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. Modern Operating Systems, 4th edition 
Obiettivi formativi  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  The contents of a first course in computer architecture and in programming. 
Metodi didattici  Standard lectures and programming sessions in the computer lab. 
Altre informazioni  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  Written or oral exam consisting in 46 questions and 13 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments. 
Programma esteso  General notions on the architecture of a multiuser 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. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 

Course ID  MF0370 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GUAZZONE Marco 
Teachers  Guazzone Marco 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Achievement of the learning targets, as measured by the examination grade. 
Contenuti  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 Education, 2015. ISBN10: 1292061421, ISBN13: 9781292061429 
Obiettivi formativi  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  Computer Architecture, Operating Systems 1 
Metodi didattici  Class lectures 
Altre informazioni  To pass the exam, the student has to prove the knowledge (1) of the concepts underlying the operation of I/O devices, (2) of the mechanisms employed by the operating system to manage the above devices, (3) of the design and implementation methodologies and (4) of the techniques for the virtualization of hardware resources. 
Modalità di verifica dell'apprendimento  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  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. 
Agenda web  Lessons schedule 
Print
Course  CALCOLO DELLE PROBABILITÀ E STATISTICA 

Course ID  MF0357 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GRASSI PIETRO 
Teachers  Grassi Pietro 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/06  PROBABILITÀ E STATISTICA MATEMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowledge of elementary probability theory. Know how for applications to computer science and managing of data. Knowledge of elementary statistics. Know how for applications to computer science and managing of data. 
Contenuti  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: 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  Introduce the student to the basic elements of theory and application of probability. Introduce the most important probability distributions with applications.Introduce the students to the basic elements of statistics, statistical mean, statistical variance. Parameter estimations. Hypothesis verifications. 
Prerequisiti  Calculus and discrete mathematics. Elementary algebra and Linear Algebra. 
Metodi didattici  Class lectures with exercises. 
Altre informazioni  The exam consists of a written examination. 
Modalità di verifica dell'apprendimento  Written test. The exam consists in two exercises, one focused on probability and the other on statistics. Each exercise has 5 questions with increasing level of difficulty. Each exercise has also a theoretical question to value the preparation. 
Programma esteso  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. 
Agenda web  Lessons schedule 
Print
Course  PARADIGMI DI PROGRAMMAZIONE 

Course ID  MF0364 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  PIOVESAN LUCA 
Teachers  Neuss Peter Michael, Piovesan Luca 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Know the theoretical foundations of objectoriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage nonstandard cases through exceptions. 
Contenuti  The course consists of two parts. In the first, objectoriented programming in Java and the Testbased program development methodology are introduced. In the second part, functional programming is introduced using the Python language. 
Testi di riferimento  Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Recommended: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall. Material supplied by the teacher. 
Obiettivi formativi  Knowledge and understanding: familiarity with the principles of object oriented and functional programming, with the specific Java language, the model/view/controller architecture and the language Python. Applying knowledge and understanding: ability to design and implement a project using object programming tools and deriving code from tests. Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is more or less appropriate and 3) and to evaluate the architectural quality of a project. Communication Skills: mastering the specific terminology of object programming and functional programming and improving teamwork skills. Learning Skills: ability to learn autonomously the use of other languages and other object oriented and/or functionally structured libraries. 
Prerequisiti  Formal prerequisites: passing grade in the Programming 1 and 2 courses. Substantial prerequisites: mastering the principles of imperative programming. 
Metodi didattici  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  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 objectoriented programs implemented in Java. 
Modalità di verifica dell'apprendimento  The exam is made of three parts. The first part done in the lab is aimed at testing the mastering of the programming tools (IDE use, test development) exercised during the lab sessions and of the theoretical concepts presented in lesson. For the testing of the tools the student is required to implement 23 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 23 questions about the Javaoriented programming basics. The second part requires to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests. 
Programma esteso  Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and autoboxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries TestDriven Development Pattern Programming ModelViewController Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC98226  SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 [D. Theseider Dupre']  Lessons schedule 
EC98227  SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 [C. Anglano]  Lessons schedule 
Print
Course  SISTEMI OPERATIVI  

Course ID  MF0365  
Academic Year  2019/2020  
Year of rule  2018/2019  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  THESEIDER DUPRE' Daniele  
Teachers  Theseider Dupre' Daniele, Anglano Cosimo Filomeno  
CFU  12  
SSD  INF/01  INFORMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  2  
Period  Annuale  
Site  ALESSANDRIA  
Grading type  V  

Show parent course details
Print
Course  SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 

Course ID  MF0366 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  THESEIDER DUPRE' Daniele 
Teachers  Theseider Dupre' Daniele 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals. 
Contenuti  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. Modern Operating Systems, 4th edition 
Obiettivi formativi  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  Computer Architecture. Programming 1 & 2 
Metodi didattici  Standard lectures and programming sessions in the computer lab. Lectures point out the goals of mechanisms and policies for process and thread management and memory management. In the programming sessions students are followed in the implementation of programs making use of processes and threads. On the DIR platform students can find the suggested textbooks and additional material. 
Modalità di verifica dell'apprendimento  Written exam consisting in 410 questions or oral exam consisting in 24 questions on different course topics, including programming with system calls. The final grade will be based on the score obtained on the single questions and assignments. 
Programma esteso  General notions on the architecture of a multiuser system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix system. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 

Course ID  MF0367 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  ANGLANO Cosimo Filomeno 
Teachers  Anglano Cosimo Filomeno 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Achievement of the training objectives, as measured by the grade obtained by the student. 
Contenuti  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. Tanenbaum, H. Bos, I moderni sistemi operativi, 4a edizione. 
Obiettivi formativi  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  Computer Architetture 1 and 2, Operating Systems 1 
Metodi didattici  Class lectures. Practical exercises in which the concepts illustrated during the lectures are applied in practice. 
Altre informazioni  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  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) 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 
Agenda web  Lessons schedule 
Print
Course  METODOLOGIE DI PROGRAMMAZIONE PER IL WEB 

Course ID  MF0222 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  PARIMBELLI ENEA 
Teachers  Parimbelli Enea 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Autonomy and ability to design and programming for the web 
Contenuti  Design and organization of websites Clientside technologies: HTML5, CSS3 Dynamic content: DOM, Javascript, JQuery Introduction to server side technologies: JSP and MySql database Emerging technologies: versioning with github, bootstrap, angular 
Testi di riferimento  Slide and other materials provided in class optional: Programming the world wide web / Robert W. Sebesta.  8. ed.  Boston [etc.]: Pearson, 2015Internet & World Wide Web: how to program / Paul Deitel, Harvey Deitel, Abbey Deitel, 5. ed.  Boston [etc.]: Pearson, 2012 
Obiettivi formativi  Acquire the basic capabilities to build websites and web applications according to a 3tier architecture (client / application / data) 
Prerequisiti  Object programming. Databases 
Metodi didattici  Lectures and lab exercises 
Modalità di verifica dell'apprendimento  Discussion of a practical project with requirements analysis 
Programma esteso  Design and 3tier architectures; Markup languages, HTML5, Cascading Style Sheet. Clientside programming: Document Object Model, Javascript, JQuery. Introduction to server side programming: PHP and interfacing with RDBMS. Examples and exercises of web programs in Javascript, JSP and MySql. 
Agenda web  Lessons schedule 
Print
Course  BASI DI DATI E SISTEMI INFORMATIVI 

Course ID  MF0158 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GIORDANO Laura 
Teachers  Giordano Laura, Striani Manuel 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals. 
Contenuti  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, McGrawHill Italia, Seconda edizione, 2006 
Obiettivi formativi  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  The courses in programming and computer architectures of the first year. 
Metodi didattici  Lectures and exercises in the classroom and computer lab. 
Altre informazioni  The students should have acquired the base notions of the relational model, of the entityrelation 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: 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 1020 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: 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; EntityRelationship 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. 
Agenda web  Lessons schedule 
Print
Course  RETI 1 

Course ID  MF0216 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MUNAFO' MAURIZIO MATTEO 
Teachers  Munafo' Maurizio Matteo 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Agenda web  Lessons schedule 
Print
Course  METODOLOGIE DI PROGRAMMAZIONE PER IL WEB 

Course ID  MF0162 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  De Russis Luigi 
Teachers  De Russis Luigi 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Being able to build complex, yet usable and accessible, web sites and applications by following a 3tier architecture (client/application/data). 
Contenuti  The goal of the course is to learn how to design and build web sites and applications by following a 3tier architecture (client/application/data). Concepts related to markup languages like HTML5 will be introduced, together with concepts related to style notations like CCS3. The course will also cover clientside programming (JavaScript) and serverside programming (Node.js), as well as methods for interacting with relational DBMS (RDBMS). Accessibility and usability aspects will be considered along the course, to allow web pages and applications to be really usable by everyone. 
Testi di riferimento  Material provided by the teacher on DIR. Optional books: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson 
Obiettivi formativi  Being able to build complex, yet accessible and usable, web sites and applications by following a 3tier architecture (client/application/data). 
Prerequisiti  Objectoriented Programming. Database systems. 
Metodi didattici  Lectures and exercises 
Modalità di verifica dell'apprendimento  The exam will consist in the realization and discussion of an assigned project. 
Programma esteso  Basic notions about programming and designing for the Web The HTML5 language Cascading Style Sheets (CSS3) and responsive web design Create accessible web pages and applications Clientside programming: JavaScript, Dynamic HTML and DOM, AJAX Overview on RDBMS design Serverside programming: web servers and 3tier architectures, node.js and the Express framework Interaction with RDBMS Overview on web services and APIs Development tools for the web, inside and outside the browser 
Agenda web  Lessons schedule 
Print
Course  Algoritmi I 

Course ID  MF0034 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MONTANI Stefania 
Teachers  Montani Stefania, Leonardi Giorgio 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  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. 
Contenuti  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 
Obiettivi formativi  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  Having passed the Programming 1 and 2 exams. 
Metodi didattici  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  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   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, 23 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. 
Agenda web  Lessons schedule 
Print
Course  Algoritmi 2 

Course ID  MF0054 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  EGIDI Lavinia 
Teachers  Egidi Lavinia 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  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. 
Contenuti  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 or C. Demetrescu, I.Finocchi, G.F. Italiano, Algoritmi e Strutture Dati, Seconda Edizione, McGrawHill or Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGrawHill, 2010 
Obiettivi formativi  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  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  The course is taught in class and in lab. In class the fundamental notions are presented, along with examples, also with the help of a software for simulation of algorithms. Proofs are presented as a tool to analyse the problems and design the algorithms, and as a tool to study in depth the algorithmic techniques, leveraging on analogies among algorithms that use the same techniques. The presentation is completed with discussions on the usage of each algorithm in practice to solve specific kinds of problems. On the DIR platform students can find the suggested textbooks and additional material. Moreover, after each lecture, the subject of the lecture is reported on the DIR together with relevant bibliographic references, especially (but not only) for those who couldn't attend the lecture. In lab the student is guided in impementing the algorithms seen in class, realizing for each algorithm a few variants as a propedeutic exercise to problem solving. On DIR the students can find, for each lab lecture, slides that work as reference and guide for those who attended the class and those who didn't. On the DIR course a question and answer forum offers the students a virtual room for discussing and reasoning on course subjects; after each lesson the instructor proposes a few questions to help understand in depth what has just been presented in class. The instructor monitors answers and participates just to offer a minimal guide, leaving the discussion to the students. On the DIR course the students have access to quizzes that serve as practice and selfevaluation for exam exercises. The aim is to offer to the stundents a means to check their own progress and comprehension, so as to discover as early as possible their weaknesses and to be able to ask for explanations to the teacher. Moreover, to the same end, specifications of exam problems proposed in the past are available to the students. 
Altre informazioni  Handson activity requires active participation of the students, who this way develop pracatical skills (ability to implement a program). Moreover, the active involvement leads the students to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this allows a regular monitoring of the way the subject is being understood. 
Modalità di verifica dell'apprendimento  Written exam followed by oral interview 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. 
Programma esteso  Graphs definitions and terminology: undirected and directed graphs, weighted graphs, paths, cycles, connected components and strongly connected components: meaning and usage of each variant to model different situations; representations: adjacency matrices and lists and their impact from the implementation point of view; breadth first and depth first traversals: common characteristics and differences and applications Greedy technique: introduction and examples; single source shortest paths on a weighted graph: Dijkstra's algorithm and applications minimum spanning tree: Prim's and Kruskal's algorithms and their use to solve practival problems; techinques for proofs of correctness and their function in designing greedy algorithms; limits of greedy techniques Dynamic programming technique: introduction to the dynamic programming technique, optimal substructure property; comparison with greedy and divide et impera techniques; implementation aspects and choices: recursive and iterative algorithms, memoization; usage of the optimal substructure theorems to analyze problems and design synamic programming algorithms; analysis of classical problems (maximal independent set, knapsack, longest common subsequence); single source shortest paths on a weighted graph: BellmanFord's algorithm allpairs shortest paths on a weighted graph: FloydWarshall's algorithm Introduction to intractable problems: P, NP complexity classes and NPcompleteness pseudopolinomial algorithms introduction to the techniques to deal with intractable problems. 
Agenda web  Lessons schedule 
Print
Course  CALCOLO DELLE PROBABILITÀ E STATISTICA 

Course ID  MF0358 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GRASSI PIETRO 
Teachers  Grassi Pietro 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/06  PROBABILITÀ E STATISTICA MATEMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowledge of elementary probability theory. Know how for applications to computer science and managing of data. Knowledge of elementary statistics. Know how for applications to computer science and managing of data. 
Contenuti  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: 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  Introduce the student to the basic elements of theory and application of probability. Introduce the most important probability distributions with applications.Introduce the students to the basic elements of statistics, statistical mean, statistical variance. Parameter estimations. Hypothesis verifications. 
Prerequisiti  Calculus and discrete mathematics. Elementary algebra and Linear Algebra. 
Metodi didattici  Class lectures with exercises. 
Altre informazioni  The exam consists of a written examination. 
Modalità di verifica dell'apprendimento  Written test. The exam consists in two exercises, one focused on probability and the other on statistics. Each exercise has 5 questions with increasing level of difficulty. Each exercise has also a theoretical question to value the preparation. 
Programma esteso  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. 
Agenda web  Lessons schedule 
Print
Course  RETI 1 

Course ID  S1609 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CANONICO Massimo 
Teachers  Canonico Massimo 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Contenuti  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, Computer Networking: A TopDown Approach 7th Edition 
Obiettivi formativi  In depth learning of computer networks. 
Prerequisiti  The student should know the topics in the program of the Computer Architecture and Operating Systems courses. 
Metodi didattici  Lessons in class and in computer lab, use of the Moodle platform. 
Altre informazioni  All along the course selfevaluation exercises are proposed to assess understanding of concepts and technical aspects. 
Modalità di verifica dell'apprendimento  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  The course deals with the following: Intuitive introduction to the network describing in a qualitative way its structure and functionalities. Application level: protocols for email, 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. 
Agenda web  Lessons schedule 
Print
Course  ALGORITMI 2 

Course ID  MF0210 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  PIOVESAN LUCA 
Teachers  Piovesan Luca 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  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 MacGrawHill, 2008; ISBN: 978 88 386 64687  Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGrawHill, 2010 
Obiettivi formativi  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 knownrecognize 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  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  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 selfevaluation. 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  Handson 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  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  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: BellmanFord's algorithm (use in routing algorithms) allpairs shortest paths on a weighted graph: FloydWarshall's algorithm Introduction to intractable problems: P, NP complexity classes and NPcompleteness pseudopolinomial algorithms introduction to the techniques to deal with intractable problems. 
Agenda web  Lessons schedule 
Print
Course  ALGORITMI 1 

Course ID  MF0209 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MONTANI Stefania 
Teachers  Montani Stefania, Guazzone Marco 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  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 
Obiettivi formativi  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  Having passed the Programming 1 and 2 exams. 
Metodi didattici  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  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   Introduction to algorithms.  Analysis of algorithms: O, Omega and Theta notations. Master theorem on recurrences.  Abstract data structures: Stack, Queue, Tree.  Sorting algorithms: insertion sort, selection sort, merge sort, quicksort, heap sort., integer sort, radix sort.  Search binary trees. AVL trees, 23 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. 
Agenda web  Lessons schedule 
Print
Course  BASI DI DATI E SISTEMI INFORMATIVI 

Course ID  MF0211 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GIORDANO Laura 
Teachers  Giordano Laura, Striani Manuel 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals. 
Contenuti  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, McGrawHill Italia, Seconda edizione, 2006 
Obiettivi formativi  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  The courses in programming and computer architectures of the first year. 
Metodi didattici  Lectures and exercises in the classroom and computer lab. 
Altre informazioni  The students should have acquired the base notions of the relational model, of the entityrelation 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: 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 1020 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  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; EntityRelationship 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. 
Agenda web  Lessons schedule 
Print
Course  PARADIGMI DI PROGRAMMAZIONE 

Course ID  MF0363 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  GIANNINI Paola 
Teachers  Giannini Paola 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  B 
Year  2 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Know the theoretical foundations of objectoriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage nonstandard cases through exceptions. 
Contenuti  The course consists of two parts. In the first, objectoriented programming in Java and the Testbased program development methodology are introduced. In the second part, functional programming is introduced using the Python language. 
Testi di riferimento  Bruno, Corradini, Gervasi. Programmazione in Java, 2° edizione, AOGEO. Recommended: Reference: Programmare con Python. Guida completa di Marco Buttu, pro Dgital Life Style. Core Python Programming (2nd Edition) di Wesley J Chun, Prentice Hall. Material supplied by the teacher. 
Obiettivi formativi  Knowledge and understanding: familiarity with the principles of object oriented and functional programming, with the specific Java language, the model/view/controller architecture and the language Python. Applying knowledge and understanding: ability to design and implement a project using object programming tools and deriving code from tests. Making judgments: ability to recognize 1) good and bad programming practices, 2) when a programming paradigm is more or less appropriate and 3) and to evaluate the architectural quality of a project. Communication Skills: mastering the specific terminology of object programming and functional programming and improving teamwork skills. Learning Skills: ability to learn autonomously the use of other languages and other object oriented and/or functionally structured libraries. 
Prerequisiti  Formal prerequisites: passing grade in the Programming 1 and 2 courses. Substantial prerequisites: mastering the principles of imperative programming. 
Metodi didattici  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  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 objectoriented programs implemented in Java. 
Modalità di verifica dell'apprendimento  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 23 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 23 questions about the Javaoriented programming basics. The second part require to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests. 
Programma esteso  Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and autoboxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries TestDriven Development Pattern Programming ModelViewController Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction 
Agenda web  Lessons schedule 
Print
Course  METODOLOGIE DI PROGRAMMAZIONE PER IL WEB 

Course ID  MF0437 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  De Russis Luigi 
Teachers  De Russis Luigi 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Being able to build complex, yet usable and accessible, web sites and applications by following a 3tier architecture (client/application/data). 
Contenuti  The goal of the course is to learn how to design and build web sites and applications by following a 3tier architecture (client/application/data). Concepts related to markup languages like HTML5 will be introduced, together with concepts related to style notations like CCS3. The course will also cover clientside programming (JavaScript) and serverside programming (Node.js), as well as methods for interacting with relational DBMS (RDBMS). Accessibility and usability aspects will be considered along the course, to allow web pages and applications to be really usable by everyone. 
Testi di riferimento  Material provided by the teacher on DIR. Optional books: Deitel et al., Internet and World Wide Web: How to program (5th ed.), Prentice Hall R. Connolly, R. Hoar, Fundamentals of Web Development, Pearson R. Sebesta, Programming the World Wide Web, Pearson 
Obiettivi formativi  Being able to build complex, yet accessible and usable, web sites and applications by following a 3tier architecture (client/application/data). 
Prerequisiti  Objectoriented Programming. Database systems. 
Metodi didattici  Lectures and exercises 
Modalità di verifica dell'apprendimento  The exam will consist in the realization and discussion of an assigned project. 
Programma esteso  Basic notions about programming and designing for the Web The HTML5 language Cascading Style Sheets (CSS3) and responsive web design Create accessible web pages and applications Clientside programming: JavaScript, Dynamic HTML and DOM, AJAX Overview on RDBMS design Serverside programming: web servers and 3tier architectures, node.js and the Express framework Interaction with RDBMS Overview on web services and APIs Development tools for the web, inside and outside the browser 
Print
Course  METODOLOGIE DI PROGRAMMAZIONE PER IL WEB 

Course ID  MF0438 
Academic Year  2019/2020 
Year of rule  2018/2019 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  PARIMBELLI ENEA 
Teachers  Parimbelli Enea 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  2 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Autonomy and ability to design and programming for the web 
Contenuti  Design and organization of websites Clientside technologies: HTML5, CSS3 Dynamic content: DOM, Javascript, JQuery Introduction to server side technologies: JSP and MySql database Emerging technologies: versioning with github, bootstrap, angular 
Testi di riferimento  Slide and other materials provided in class optional: Programming the world wide web / Robert W. Sebesta.  8. ed.  Boston [etc.]: Pearson, 2015Internet & World Wide Web: how to program / Paul Deitel, Harvey Deitel, Abbey Deitel, 5. ed.  Boston [etc.]: Pearson, 2012 
Obiettivi formativi  Acquire the basic capabilities to build websites and web applications according to a 3tier architecture (client / application / data) 
Prerequisiti  Object programming. Databases 
Metodi didattici  Lectures and lab exercises 
Modalità di verifica dell'apprendimento  Discussion of a practical project with requirements analysis 
Programma esteso  Design and 3tier architectures; Markup languages, HTML5, Cascading Style Sheet. Clientside programming: Document Object Model, Javascript, JQuery. Introduction to server side programming: PHP and interfacing with RDBMS. Examples and exercises of web programs in Javascript, JSP and MySql. 
Print
Course  TECNICHE DI COMUNICAZIONE E SCRITTURA 

Course ID  MF0396 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  DEMARTINI SILVIA 
Teachers  Demartini Silvia 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  LFILLET/12  LINGUISTICA ITALIANA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC119496  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1 [F. Valenza]  Lessons schedule 
EC119497  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2 [S. POCCIA]  Lessons schedule 
Print
Course  ARCHITETTURA DEGLI ELABORATORI  

Course ID  MF0199  
Academic Year  2019/2020  
Year of rule  2019/2020  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  FRANCESCHINIS Giuliana Annamaria  
Teachers  Valenza Fulvio, Poccia Silvestro, Franceschinis Giuliana Annamaria  
CFU  12  
SSD  INF/01  INFORMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  1  
Period  Annuale  
Site  VERCELLI  
Grading type  V  

Show parent course details
Print
Course  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1 

Course ID  MF0200 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  VALENZA Fulvio 
Teachers  Valenza Fulvio 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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 fetchdecodeexecute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the instruction set of IJVM, the machine language of MIC1, implement some simple programs using such language and simulate their execution. 
Contenuti  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: "Structured Computer Organization", VI Ed., Pearson Education, 2013. 
Obiettivi formativi  Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including some simple redundant codes for errors detection and correction. Know and understand the basic definitions and laws of Boolean algebra, and the relation between Boolean algebra expressions and logic circuits.Know the main components of a computer, understand the basic operational principles and the interactions between such components. Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Understand the impact of technological evolution on the evolution of computer organization. Apply the procedures for encoding and decoding information, and to detect and correct errors. Know how to express logical functions through Boolean algebra expressions and how to transform such expressions into logic circuits. Be able to describe the logical function implemented by a logic circuit. Develop the ability to compare the characteristics of different computer architecture organizations (or of different computer component organizations) and to evaluate the difference in cost and performance. Understand the syntax and operational semantics of a simple machine language end the relation between machine languages and high level programming lenguages. Be able to implement simple machine language programs and to simulate their execution. Acquire the skills for autonomous learning specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation online). 
Prerequisiti  None 
Metodi didattici  The topics of the course are mainly presented through class lectures that may be integrated with lab sessions (to experiment the internal representation of various data types, to design and simulate combinatorial and sequential , to experiment the execution of simple machine language programs through an emulator). 
Altre informazioni  It is possible to download electronic copy of all slides of the lectures, perform selfassessment tests, read general information on the course and news about the lectures and the exam organization on the elearning platform DIR . 
Modalità di verifica dell'apprendimento  The examination can be either oral or a written test (usually it is written in the first exams session, oral in the other sessions). When the exam takes the form of a written test, it is possible to ask for an oral integration (for instance this could be the case when the written test grade is not fully sufficient, it is possible to ask for an oral integration to improve the grade to pass the exam). The test includes questions each of which possibly structured into several points. The questions may also take the form of an exercise testing the ability to apply the learned concepts to practical examples. 
Programma esteso  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, UTF8). 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, Flipflop, 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: fetchdecodeexecute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction to the machine language (IJVM) of the MIC1 architecture. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2 

Course ID  MF0201 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  POCCIA Silvestro 
Teachers  Poccia Silvestro 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  1 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  English 
Risultati di apprendimento attesi  Explain the organization of a von Neumann machine and its main functional units. Describe how it is performed an instruction in this type of machine. Show the representation of machine language instructions at a symbolic level (mnemonic representation at assembler level, for the programmer) and in binary (representation inside the machine). Showing how a compiler can transform highlevel language elements into assembler / machine language. Write short programs in assembler language (IJVM). Explain different instruction formats with different number of addresses per fixed or variable instruction and length. List and describe different addressing methods. Discuss the impact of the different addressing mode on the instruction format. Discuss the usefulness of some addressing methods in the translation from high level languages in assembler language. Describe an example of implementation of a processor complete with datapath e control. Compare alternative implementations. Discuss the advantages of prefetching. Explain how you can exploit the internal parallelism to the typical instructions of pipeline architectures and conflicts that may occur due to dependencies between instructions. Explain the concept of predicting jumps and discussing its utility in a pipeline architecture. Describe how the use of the memory hierarchy, and in particular of the cache between CPU and RAM, it allows to reduce the memory latency. To discuss importance of the spatial and temporal location for the proper functioning of the memory hierarchy. Describe the organization of the caches memories (address mapping, block size, replacement and writing policy), with practical examples. Explain what virtual memory is, what it is used for, how you can implement and describe similarities and dierences compared to the cache. Explain how control of I / O devices and data transfer between these and the CPU can be realized (e vice versa) in the implementation of the programmed I / O with active waiting and in the implementation of I / O based on interrupt, or DMA (bring examples of data exchange with keyboard / display, printers or magnetic disks). Describe some types of parallel architectures. 
Contenuti  Description of the architecture, levels structure of a modern cpu system: in this module we will teach the structure of a microprogrammed processor (not real but plausible) that achieves through a microinterpretation of the IJVM machine language, derived from the Java bytecode Virtual machine, presented in the first module of this teaching. Different versions of the microarchitecture are illustrated with progressively better performances. In addition, various process optimization techniques are illustrated (pipelines, jump prediction mechanisms, out of order execution, cache memories). The following is a general overview of the Set Architecture (ISA) instruction level, ie the characteristics of machine languages. The concept of virtual memory will also be shown. Finally, an overview of parallel architectures will be presented. 
Testi di riferimento  A.S. Tanenbaum, T.Austin: "Computer Architecture: a structural approach", VI Edizione, Pearson Education Italia, 2013. 
Obiettivi formativi  Know and understand the internal organization of a processor, its main components and the general operating mechanism. Knowing how to distinguish between microprogrammed architectures and architectures that execute machine language instructions in hardware. Knowing how to describe an example of microarchitecture (in particular that proposed in the textbook) at a fairly detailed level of detail. Knowing how to explain how some architectural variants can significantly change the speed of execution. Develop the ability to compare different architectural solutions in terms of costs and performance. Know the operational semantics of a machine language and apply this knowledge to simulate the execution of a code fragment in machine language. Explain how this semantics can be realized through a microinterpreter (with particular reference to the example proposed in the textbook). Know and be able to describe the structure and the principle of operation of the cache memories and the differences between the different types of organization of the same. Know the parameters to measure the effectiveness of a cache memory. Knowing how to describe the general characteristics of a machine language (types of instructions, instruction format, addressing methods) and discuss the motivations, advantages and disadvantages of different choices; provide concrete examples. Describe the interaction modes between CPU and I / O devices (specific instructions for I / O vs. memory mapped I / O; programmed I / O with active waiting or interruptbased I / O or still Direct Memory Access  DMA). ). Know and be able to describe the principle of operation of virtual memory by placing it within the hierarchy of memories; know how to indicate similarities and differences with respect to the cache. Knowing how to describe the main types of parallel architectures. Acquire the ability to deepen and update on specific aspects and more advanced themes of processor architectures, in particular by making use of resources available online. 
Prerequisiti  Knowledge of module 1 course 
Metodi didattici  The topics covered in the course are mainly exposed through lectures that can be integrated with some laboratory exercises for experimentation through an emulator of the microinterpreter implementation of the machine language of the MIC1 architecture. 
Altre informazioni  On the DIR platform are available: the electronic copy of the slides used in the lectures, examples of exam texts, selfassessment quizzes, multimedia manuals on the emulator used in the laboratory, general information on the course and notices related to the course and exams. 
Modalità di verifica dell'apprendimento  The exam can be oral or written (it is usually written in the first exam sessions after the course, oral in the subsequent sessions). When the exam is done in written form, it is possible to request an oral supplement (for example in the event that the written grade is almost sufficient). The test includes four to six questions, each of which can be structured in multiple points. The questions can also take the form of exercises to evaluate the ability to apply the theoretical concepts learned in the course to practical examples. The exam can also be passed through intermediate exemption tests to be carried out during the course. 
Programma esteso  Layered architecture: hardware level, microarchitecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. An example of a microprogrammed architecture that creates IJVM, the machine language of MIC1. Laboratory exercises with a MIC1 emulator equipped with a microprogram compiler and IJVM programs. Performance improvement. Introduction of a sampling unit and pipeline: the MIC2, MIC3 and MIC4 architectures. Cache memories: bridging the gap between memory and processor speed. The prediction of the jumps. Execution out of order. Characteristics of machine languages (Instruction Set Architecture): data types, types of instructions, instruction format, addressing mode. Interaction with Input / Output devices. Examples of architectures and machine languages of real processors. Virtual memory: purpose and methods to implement it, comparison of principles and mechanisms of operation of the cache. Presentation of some types of parallel architectures. 
Agenda web  Lessons schedule 
Print
Course  FISICA 

Course ID  MF0203 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  BARONE Vincenzo 
Teachers  Barone Vincenzo 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  FIS/01  FISICA SPERIMENTALE 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowing the basic elements of mechanics, thermodynamics and electromagnetism, and solving simple physical problems. 
Contenuti  Lectures on elementary physics, from mechanics to electromagnetism 
Testi di riferimento  Wolfson, Fisica, vol. 1 and vol. 2, Pearson Italia. 
Obiettivi formativi  Learning the basic concepts of physics and its fundamental laws 
Prerequisiti  Notions of Calculus 
Metodi didattici  Frontal lectures. 
Altre informazioni   
Modalità di verifica dell'apprendimento  Written exam 
Programma esteso  Physical variables. Motion in one dimension. Vectors. Motion in two dimensions. The laws of dynamics. Work and energy. Oscillations. Gravity. Waves. Temperature and heat. Ideal gas. Thermodynamical transformations. First and second principle of thermodynamics. Electric charge. Coulomb force. Electric field. Gauss law for electric field  applications. Electric potential  applications. Capacitors and their properties. Electric current. Electric energy and power. Circuits. Magnetic field. Lorentz force. Ampère’s law. applications . Electromagnetic induction – Faraday’s law. Selfinduction. Maxwell equations. Electromagnetic waves. The nature and speed of light. Propagation of light in a medium – refraction index. Dispersion. Interference and diffraction. 
Agenda web  Lessons schedule 
Print
Course  INGLESE (SEDE DI VERCELLI) 

Course ID  MF0397 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  LEONI BEATRICE 
Teachers  Leoni Beatrice 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  NN  
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  E 
Year  1 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  G 
Course borrowed to  SCIENZA DEI MATERIALI  CHIMICA (1931)  MF0398 INTEGRAZIONE INGLESE 
Print
Course  INGLESE  LT INFORMATICA 

Course ID  MF0400 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MINIHAN DAVID CHARLES 
Teachers  Minihan David Charles 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  NN  
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  E 
Year  1 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  English 
Course borrowed to  CHIMICA (1930)  MF0398 INTEGRAZIONE INGLESE CHIMICA (1930)  S0324 INGLESE  ALESSANDRIA 
Print
Course  TECNICHE DI COMUNICAZIONE E SCRITTURA 

Course ID  MF0395 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  BUSSOLINO CLAUDIA 
Teachers  Bussolino Claudia 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  LFILLET/12  LINGUISTICA ITALIANA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC119503  MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA [A. Ferrero, C. Bardelle]  Lessons schedule 
EC119504  MATEMATICA DISCRETA: LOGICA  Lessons schedule 
Print
Course  MATEMATICA DISCRETA  

Course ID  MF0204  
Academic Year  2019/2020  
Year of rule  2019/2020  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  FERRERO ALBERTO  
Teachers  Bardelle Cristina, Ferrero Alberto  
CFU  9  
SSD  MAT/03  GEOMETRIA, MAT/01  LOGICA MATEMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  1  
Period  Primo Semestre  
Site  VERCELLI  
Grading type  V  

Show parent course details
Print
Course  MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA 

Course ID  MF0205 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FERRERO ALBERTO 
Teachers  Bardelle Cristina, Ferrero Alberto 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/03  GEOMETRIA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The first purpose is to provide the students with a method of study based on rigorous proofs which allows them to exploit such an acquired skill also in subjects different from Mathematics. Coming now to the more technical part dealing with the contents of the course, we point out the fact that one of the main purposes of the course is to provide the students with the basic notions of algebra and vector and matrix calculus, of fundamental importance in the applications. These notions have to become necessarily part of the knowledge of the students in order to allow them to better face some applicable courses in which such notions find a direct application such as in the case of Physics. 
Contenuti  Part of Algebra: integer numbers, Euclidean algorithm, Diophantine equations, basics of crittography. Part of Geometry: vectors in the plane, in the tridimensional space and extension to the case of R^N, matrices, linear systems, analytical geometry in the tridimensional space. 
Testi di riferimento  Suggested book for the part of Algebra: Facchini, "Sussidiario di algebra e matematica discreta", ed. Zanichelli. Facchini, "Algebra per informatica. Introduzione ai metodi della matematica discreta e all'algebra astratta", ed. Zanichelli. Suggested book for the part of Geometry: Bramanti, Pagani, Salsa, "Analisi Matematica 1 con elementi di algebra lineare", Ed. Zanichelli. 
Obiettivi formativi  Acquire the basic notions of algebra, vector and matrix calculus and their applications. 
Prerequisiti  Basic notions of elementary mathematics. 
Metodi didattici  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  In addition to the suggested books for the theoretical part and the exercises, eventual further material for the preparation of the exam will be provided during the development of the course. 
Modalità di verifica dell'apprendimento  The exam consists of a written test made of a variable number of exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam consists of questions about the theoretical part of the course. 
Programma esteso  Integer numbers, euclidean division, greatest common divisor, Euclid's algorithm. Diophantine equations. Congruence systems and Chinese Remainder Theorem. Residue classes. The Euler Theorem. The problem of the discrete logarithm. Computation of the discrete logarithm. Applications to cryptography. The DiffieHellman protocol, the RSA protocol. MillarRabin primality test. Vectors in the plane and in the tridimensional space and extension to the case of R^N. Definition of matrix, sum of matrices, product between a scalar and a matrix, row column product of matrices. Definition of transposed matrix, symmetric matrix, inverse matrix. Definition of determinant for square matrices and its geometric interpretation. Scalar product, vector product and mixed product of vectors and applications of the determinant in the computation of vector and mixed products. Rank of a matrix and applications of the determinant in the computation of the rank. Linear systems, RouchèCapelli Theorem, Cramer Rule. Resolution of linear systems with the Gauss Elimination Method, lines and planes in the tridimensional space. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  MATEMATICA DISCRETA: LOGICA 

Course ID  MF0206 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  BARDELLE CRISTINA 
Teachers  Bardelle Cristina 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  MAT/01  LOGICA MATEMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  Introduction to propositional logic. 
Testi di riferimento  A. Asperti, A. Ciabattoni "Logica a Informatica", Mc Graw Hill Education (1997). 
Obiettivi formativi  Providing the main notions on propositional and firstorder 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  Reading and production of short texts in italian. Basic knowledge of syntax. 
Metodi didattici  Facetoface lectures. Personalized tutoring and computeraided exercises. 
Altre informazioni  Optional exercises on the platform DIR. Simulations of written examinations. 
Modalità di verifica dell'apprendimento  Written test, possibly followed by an interview. 
Programma esteso  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 result; Predicate Logic:  Syntax: free and bound variables, substitution,  Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results. 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC119506  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1 [G. Franceschinis]  Lessons schedule 
EC119507  ARCHITETTURA 2 [S. POCCIA]  Lessons schedule 
Print
Course  ARCHITETTURA DEGLI ELABORATORI  

Course ID  S1363  
Academic Year  2019/2020  
Year of rule  2019/2020  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  FRANCESCHINIS Giuliana Annamaria  
Teachers  Franceschinis Giuliana Annamaria, Poccia Silvestro  
CFU  12  
SSD  INF/01  INFORMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  1  
Period  Annuale  
Site  ALESSANDRIA  
Grading type  V  

Show parent course details
Print
Course  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 1 

Course ID  S1364 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FRANCESCHINIS Giuliana Annamaria 
Teachers  Franceschinis Giuliana Annamaria 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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 fetchdecodeexecute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the instruction set of IJVM, the machine language of MIC1, implement some simple programs using such language and simulate their execution. 
Contenuti  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: "Structured Computer Organization", VI Ed., Pearson Education, 2013. 
Obiettivi formativi  Know and understand the basic concepts of information encoding (binary representation of numbers, text and images) including some simple redundant codes for errors detection and correction. Know and understand the basic definitions and laws of Boolean algebra, and the relation between Boolean algebra expressions and logic circuits.Know the main components of a computer, understand the basic operational principles and the interactions between such components. Acquire the appropriate terminology to describe the operating principles of computer systems and the information encoding techniques. Understand the impact of technological evolution on the evolution of computer organization. Apply the procedures for encoding and decoding information, and to detect and correct errors. Know how to express logical functions through Boolean algebra expressions and how to transform such expressions into logic circuits. Be able to describe the logical function implemented by a logic circuit. Develop the ability to compare the characteristics of different computer architecture organizations (or of different computer component organizations) and to evaluate the difference in cost and performance. Understand the syntax and operational semantics of a simple machine language end the relation between machine languages and high level programming lenguages. Be able to implement simple machine language programs and to simulate their execution. Acquire the skills for autonomous learning specific aspects or more advanced topics about computer architecture (in particular skills to search the necessary documentation online). 
Prerequisiti  None 
Metodi didattici  The topics of the course are mainly presented through class lectures that may be integrated with lab sessions (to experiment the internal representation of various data types, to design and simulate combinatorial and sequential , to experiment the execution of simple machine language programs through an emulator). 
Altre informazioni  It is possible to download electronic copy of all slides of the lectures, perform selfassessment tests, read general information on the course and news about the lectures and the exam organization on the elearning platform DIR . 
Modalità di verifica dell'apprendimento  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  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, UTF8). 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, Flipflop, 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: fetchdecodeexecute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction to the machine language (IJVM) of the MIC1 architecture. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  ARCHITETTURA DEGLI ELABORATORI: ARCHITETTURA 2 

Course ID  S1365 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  POCCIA Silvestro 
Teachers  Poccia Silvestro 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  INF/01  INFORMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  B 
Year  1 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  English 
Risultati di apprendimento attesi  Explain the organization of a von Neumann machine and its main functional units. Describe how it is performed an instruction in this type of machine. Show the representation of machine language instructions at a symbolic level (mnemonic representation at assembler level, for the programmer) and in binary (representation inside the machine). Showing how a compiler can transform highlevel language elements into assembler / machine language. Write short programs in assembler language (IJVM). Explain different instruction formats with different number of addresses per fixed or variable instruction and length. List and describe different addressing methods. Discuss the impact of the different addressing mode on the instruction format. Discuss the usefulness of some addressing methods in the translation from high level languages in assembler language. Describe an example of implementation of a processor complete with datapath e control. Compare alternative implementations. Discuss the advantages of prefetching. Explain how you can exploit the internal parallelism to the typical instructions of pipeline architectures and conflicts that may occur due to dependencies between instructions. Explain the concept of predicting jumps and discussing its utility in a pipeline architecture. Describe how the use of the memory hierarchy, and in particular of the cache between CPU and RAM, it allows to reduce the memory latency. To discuss importance of the spatial and temporal location for the proper functioning of the memory hierarchy. Describe the organization of the caches memories (address mapping, block size, replacement and writing policy), with practical examples. Explain what virtual memory is, what it is used for, how you can implement and describe similarities and dierences compared to the cache. Explain how control of I / O devices and data transfer between these and the CPU can be realized (e vice versa) in the implementation of the programmed I / O with active waiting and in the implementation of I / O based on interrupt, or DMA (bring examples of data exchange with keyboard / display, printers or magnetic disks). Describe some types of parallel architectures. 
Contenuti  Description of the architecture, levels structure of a modern cpu system: in this module we will teach the structure of a microprogrammed processor (not real but plausible) that achieves through a microinterpretation of the IJVM machine language, derived from the Java bytecode Virtual machine, presented in the first module of this teaching. Different versions of the microarchitecture are illustrated with progressively better performances. In addition, various process optimization techniques are illustrated (pipelines, jump prediction mechanisms, out of order execution, cache memories). The following is a general overview of the Set Architecture (ISA) instruction level, ie the characteristics of machine languages. The concept of virtual memory will also be shown. Finally, an overview of parallel architectures will be presented. 
Testi di riferimento  A.S. Tanenbaum, T.Austin: "Computer Architecture: a structural approach", VI Edizione, Pearson Education Italia, 2013. 
Obiettivi formativi  Know and understand the internal organization of a processor, its main components and the general operating mechanism. Knowing how to distinguish between microprogrammed architectures and architectures that execute machine language instructions in hardware. Knowing how to describe an example of microarchitecture (in particular that proposed in the textbook) at a fairly detailed level of detail. Knowing how to explain how some architectural variants can significantly change the speed of execution. Develop the ability to compare different architectural solutions in terms of costs and performance. Know the operational semantics of a machine language and apply this knowledge to simulate the execution of a code fragment in machine language. Explain how this semantics can be realized through a microinterpreter (with particular reference to the example proposed in the textbook). Know and be able to describe the structure and the principle of operation of the cache memories and the differences between the different types of organization of the same. Know the parameters to measure the effectiveness of a cache memory. Knowing how to describe the general characteristics of a machine language (types of instructions, instruction format, addressing methods) and discuss the motivations, advantages and disadvantages of different choices; provide concrete examples. Describe the interaction modes between CPU and I / O devices (specific instructions for I / O vs. memory mapped I / O; programmed I / O with active waiting or interruptbased I / O or still Direct Memory Access  DMA). ). Know and be able to describe the principle of operation of virtual memory by placing it within the hierarchy of memories; know how to indicate similarities and differences with respect to the cache. Knowing how to describe the main types of parallel architectures. Acquire the ability to deepen and update on specific aspects and more advanced themes of processor architectures, in particular by making use of resources available online. 
Prerequisiti  Knowledge of module 1 course 
Metodi didattici  The topics covered in the course are mainly exposed through lectures that can be integrated with some laboratory exercises for experimentation through an emulator of the microinterpreter implementation of the machine language of the MIC1 architecture. 
Altre informazioni  On the DIR platform are available: the electronic copy of the slides used in the lectures, examples of exam texts, selfassessment quizzes, multimedia manuals on the emulator used in the laboratory, general information on the course and notices related to the course and exams. 
Modalità di verifica dell'apprendimento  The exam can be oral or written (it is usually written in the first exam sessions after the course, oral in the subsequent sessions). When the exam is done in written form, it is possible to request an oral supplement (for example in the event that the written grade is almost sufficient). The test includes four to six questions, each of which can be structured in multiple points. The questions can also take the form of exercises to evaluate the ability to apply the theoretical concepts learned in the course to practical examples. The exam can also be passed through intermediate exemption tests to be carried out during the course. 
Programma esteso  Layered architecture: hardware level, microarchitecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. An example of a microprogrammed architecture that creates IJVM, the machine language of MIC1. Laboratory exercises with a MIC1 emulator equipped with a microprogram compiler and IJVM programs. Performance improvement. Introduction of a sampling unit and pipeline: the MIC2, MIC3 and MIC4 architectures. Cache memories: bridging the gap between memory and processor speed. The prediction of the jumps. Execution out of order. Characteristics of machine languages (Instruction Set Architecture): data types, types of instructions, instruction format, addressing mode. Interaction with Input / Output devices. Examples of architectures and machine languages of real processors. Virtual memory: purpose and methods to implement it, comparison of principles and mechanisms of operation of the cache. Presentation of some types of parallel architectures. 
Agenda web  Lessons schedule 
Print
Course  ANALISI MATEMATICA I 

Course ID  S0357 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FERRERO ALBERTO 
Teachers  Ferrero Alberto 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/05  ANALISI MATEMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  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. 
Contenuti  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  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. McGrawHill. Suggested books for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli. 
Obiettivi formativi  Acquire the basic notions of differential and integral calculus for real functions of one real variable. 
Prerequisiti  Elementary notions of algebra and trigonometry. 
Metodi didattici  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  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  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 46 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  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. 
Agenda web  Lessons schedule 
Codice  Nome  Link 

EC119510  MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA [P. Ferrari]  Lessons schedule 
EC119511  MATEMATICA DISCRETA: LOGICA [P. Ferrari]  Lessons schedule 
Print
Course  MATEMATICA DISCRETA  

Course ID  S1366  
Academic Year  2019/2020  
Year of rule  2019/2020  
Degree  INFORMATICA  
Curriculum  CORSO GENERICO  
Teaching leader  FERRARI Pier Luigi  
Teachers  Ferrari Pier Luigi  
CFU  9  
SSD  MAT/03  GEOMETRIA, MAT/01  LOGICA MATEMATICA  
Course type  Attività formativa integrata  
Course mandatoriety  OBB  
Year  1  
Period  Primo Semestre  
Site  ALESSANDRIA  
Grading type  V  
Lingua insegnamento  Italian.  
Risultati di apprendimento attesi  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. Mastery of some basic proof techniques.  
Contenuti  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 and geomtry: Instructor's notes. Notes which can be found on the web. Logic: Maschio, S. (2019). Tecniche dimostrative. La logica incontra la matematica. Trieste: Scienza express. Asperti, A. & Ciabattoni, A. (1997). Logica a Informatica. Milano: Mc Graw Hill Education.  
Obiettivi formativi  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 basic notions of propositional and firstorder logic, with a particular care to the relationship between truth and derivability and to the use of the predicate calculus for expressing ordinary language statements. Application of some techniques widely used in mathematics, such as induction. Recognition, application and evaluation of some basic proof schemes.  
Prerequisiti  Reading and production of short descriptive and argumentative texts in italian. Basic properties of integers. Basic properties of the cartesian plane.  
Metodi didattici  Facetoface lectures. Personalized tutoring and (for the algebra and geometry module) computeraided exercises.  
Altre informazioni  Algebra and geometry: Optional exercises on the platform DIR. Simulations of written examinations. Final written computeraided 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, geometry and Logic: Written computeraided examination, possibly followed by a discussion of the written test. 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 'Composition'.  
Programma esteso  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 DiffieHellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems. 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. Mathematical induction. Proof schemes: reasoning by cases and by negation.  

Show parent course details
Print
Course  MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA 

Course ID  S1367 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FERRARI Pier Luigi 
Teachers  Ferrari Pier Luigi 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/03  GEOMETRIA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  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. 
Contenuti  Elementary theory of numbers and introduction to criptography. Some basic ideas of linear algebra. 
Testi di riferimento  Instructor's notes. A range of materials available on the platform DIR. 
Obiettivi formativi  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  Reading and production of short texts in italian. Basic properties of integers. Basic properties of the cartesian plane. 
Metodi didattici  Facetoface lectures. Personalized tutoring and Computeraided exercises. 
Altre informazioni  Optional exercises on the platform DIR. Simulations of written examinations. 
Modalità di verifica dell'apprendimento  Written computerbased test, possibly followed by a discussion of the written test. The written test, integrated with the 'Logic' module, consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'. 
Programma esteso  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 DiffieHellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems. 
Agenda web  Lessons schedule 
Show parent course details
Print
Course  MATEMATICA DISCRETA: LOGICA 

Course ID  S1368 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FERRARI Pier Luigi 
Teachers  Ferrari Pier Luigi 
CFU  3 
Teaching duration (hours)  24 
Individual study time  51 
SSD  MAT/01  LOGICA MATEMATICA 
Course type  Modulo di sola Frequenza 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian. 
Risultati di apprendimento attesi  Knowledge of some basic concepts and algorithms of Mathematical Logic. Understanding of the distinction between syntax and semantics. Ability at taking into account the differences between everyday language and symbolic ones. Mastery of some basic proof techniques. 
Contenuti  Introduction to propositional and first order logic 
Testi di riferimento  Logica: Maschio, S. (2019). Tecniche dimostrative. La logica incontra la matematica. Trieste: Scienza express. Asperti, A. & Ciabattoni, A. (1997). Logica a Informatica. Milano: Mc Graw Hill Education. 
Obiettivi formativi  Providing the basic notions of propositional and firstorder logic, with a particular care to the relationship between truth and derivability and to the use of the predicate calculus for expressing ordinary language statements. Application of some techniques widely used in mathematics, such as induction. Recognition, application and evaluation of some basic proof schemes. 
Prerequisiti  Reading and production of short texts in italian. Basic knowledge of syntax. 
Metodi didattici  Facetoface lectures. Personalized tutoring and computeraided exercises. 
Altre informazioni  Optional exercises on the platform DIR. Simulations of written examinations. 
Modalità di verifica dell'apprendimento  Written computerbased test, possibly followed by an interview. The written test, integrated with the 'Algebra' and 'Geometry' modules consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'. 
Programma esteso  Propositional logic: Syntax; Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results, semantic equivalence, normal forms and functional completeness; Natural deduction: inference rules and proofs, soundness, statement of the completeness resultPredicate Logic: Syntax: free and bound variables, substitution, Semantics: interpretation, notions of satisfiability, inconsistency, validity, logical consequence and related results. Mathematical induction. Proof schemes: reasoning by cases and by negation. 
Agenda web  Lessons schedule 
Print
Course  PROGRAMMAZIONE 1 

Course ID  MF0207 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  CODETTA RAITERI Daniele 
Teachers  Codetta Raiteri Daniele, Striani Manuel 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  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  Kelley, Pohl, “A book on C : programming in C", AddisonWesley. P. Deitel, H. Deitel, “C: How to program”, Prentice Hall. Kernighan, Ritchie, The C Programming Language (2nd edition), Prentice Hall. 
Obiettivi formativi  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 flowchart, the pseudocode, 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  None 
Metodi didattici  The course consists of frontal lectures and laboratory lectures. Modality: during the frontal lectures the theoretical aspects about programming (algorithms, constructs, data structure, etc) are presented. Moreover, by means of a computer connected to a projector, the way to implement such aspects on a computer, is shown. For each topic, several examples of problems are presented, together with the corresponding algorithms and programs. During the laboratory lectures, the students are asked to implement the same programs presented in the frontal lectures, and to implement other programs solving similar problems. Tools: in order to gradually learn the concepts of algorithm, program, and their constructs, at the begin of the course, the algorithms are defined through several abstraction levels: flowchart, pseudocode, 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  Partial exams are planned during the course, in order to early check the knowledge level of the students, and allow them to be aware of the exam difficulty. If partial exams are passed, they replace the general exam after the course. 
Modalità di verifica dell'apprendimento  The exam consists of a practical exercise on the computer, where the students, given a specific problem, must: define the solving algorithm, implement the algorithm in C language, properly structuring the code, successfully compile the program, verify the correct functioning of the program. The program must be structured into several functions. Typically, 5 functions are required to be implemented, including the main function. The functions required at the exam are similar to those presented in the course, during the frontal or laboratory lectures. A score depending on the complexity, is associated with each function (6 points on average). An extra requirement counting 2 points is foreseen to reach an honorable score. The exam has a 2 hours duration and is about all the topics of the course. The students can find details and examples of exams on the DIR platform. During the exam, consulting the course material or manuals is not allowed. The computers in the laboratory are used; the use of mobile devices or portable computers is forbidden. 
Programma esteso   introduction to programming and C language;  algorithms and their representation;  variables, constants, data types, arithmetic operators;  input/output operators in C;  first programs in C, with the only use of command sequences;  selection (if...else) with simple and composed Boolean conditions;  loops (while, for, dowhile);  arrays;  functions with arguments by value;  pointers and function arguments by reference;  pointer arithmetic;  arguments from command line;  array sorting algorithms;  input/output to file;  use of terminal. 
Agenda web  Lessons schedule 
Print
Course  PROGRAMMAZIONE 2 

Course ID  MF0208 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  BOTTRIGHI Alessio 
Teachers  Bottrighi Alessio, Nai Roberto 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Secondo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The student must be able to manage the list implemented through pointers, to develop programs for their management both in recursion and in iteration 
Contenuti  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 
Obiettivi formativi  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  The student must have successfully completed Programming 1 
Metodi didattici  Teacher lessons in classroom, exercises in classroom and in lab 
Altre informazioni  Lab activity needs an individual and active participation of the student , to increase the basic programming skills. In this way, the student can test directly the achievement of the goals. 
Modalità di verifica dell'apprendimento  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   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 
Agenda web  Lessons schedule 
Print
Course  PROGRAMMAZIONE 2 

Course ID  MF0164 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MANZINI Giovanni 
Teachers  Manzini Giovanni 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The achievement, up to a degree measured by grades, of the learning goals. 
Contenuti  The course deals with advanced topics in C programming a illustrating tools and techniques required to fully exploit the power of this programming language. with the Advanced topics in C programming. Recursion. 
Testi di riferimento  Paul Deitel, Harvey Deitel “C How to Program". Prentice Hall. 
Obiettivi formativi  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  The student must have successfully completed Programming 1 
Metodi didattici  Standard lectures in classroom, exercises in classroom and in the computer lab 
Altre informazioni  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  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. 
Programma esteso   Advanced topics in C programming: bit operations, struct, pointers, text and binary files.  make command and makefiles.  Dynamic memory managment: dynamic arrays, linked lists, bidimensional arrays.  Heap vs stack, static and global variabiles  Recursion: basic concepts, examples, activation record, mutual recursion  Pointers to functions, passing functions as parametres, casting. void pointers  Quicksort: library function and implementation of a generic quicksort function.  Library functions for string manipulations (strcmp, strcpy, strdup, strtok)  Debugging tools: valgrind and gdb 
Agenda web  Lessons schedule 
Print
Course  PROGRAMMAZIONE 1 

Course ID  MF0163 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  TERENZIANI Paolo 
Teachers  Terenziani Paolo, Bottrighi Alessio 
CFU  9 
Teaching duration (hours)  72 
Individual study time  153 
SSD  INF/01  INFORMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  The students must acquire the capability of applying the topdown 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;  ifthenelse and boolean conditions  iteration (while, for, dowhile);  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. 
Contenuti  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. Additional materials on DIR. 
Obiettivi formativi  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 (ifthenelse, 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 flowchart, the pseudocode, 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  None 
Metodi didattici  Standard lectures and programming sessions in the computer lab. 
Altre informazioni  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  The exam follows two different modalities: with and without computer. The computerbased 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   Introduction to structured programming Topdown 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 ifthenelse and Boolean Conditions iteration (while, for, dowhile); 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. 
Agenda web  Lessons schedule 
Print
Course  ANALISI MATEMATICA I 

Course ID  MF0198 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  FERRERO ALBERTO 
Teachers  Ferrero Alberto 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  MAT/05  ANALISI MATEMATICA 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  A 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  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. 
Contenuti  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  Suggested book for the theoretical part: Bramanti, Pagani, Salsa, “Analisi Matematica 1 con elementi di geometria e algebra lineare”, Ed. Zanichelli. Suggested book for exercises: Salsa, Squellati: "Esercizi di Analisi Matematica 1", Ed. Zanichelli. 
Obiettivi formativi  Acquire the basic notions of differential and integral calculus for real functions of one real variable. 
Prerequisiti  Elementary notions of algebra and trigonometry. 
Metodi didattici  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  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  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 46 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  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. 
Agenda web  Lessons schedule 
Print
Course  FISICA 

Course ID  MF0202 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  SITTA Mario 
Teachers  Sitta Mario 
CFU  6 
Teaching duration (hours)  48 
Individual study time  102 
SSD  FIS/01  FISICA SPERIMENTALE 
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  C 
Year  1 
Period  Secondo Semestre 
Site  ALESSANDRIA 
Grading type  V 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowning the basis of classical Physics. 
Contenuti  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 
Obiettivi formativi  To give the Students a knowledge of the research methods in Physics and of the fundamental concepts in Classical Physics. 
Prerequisiti  Calculus 1 
Metodi didattici  Frontal lectures on the theoretical part and numerical exercises. 
Altre informazioni  Written exam with open and closed questions. Students must prove they learnt the basics of classical Physics. 
Modalità di verifica dell'apprendimento  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  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. 
Agenda web  Lessons schedule 
Print
Course  CONOSCENZE INIZIALI 

Course ID  MF0435 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MONTANI Stefania 
Teachers  Montani Stefania 
Teaching duration (hours)  24 
SSD  NN  
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  D 
Year  1 
Period  Primo Semestre 
Site  ALESSANDRIA 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowledge of some basic concepts of mathematics, in particular: real numbers and their representations and main elementary functions. Ability at applying these concepts in simple problem solving and in the interpretation of graphs. Awareness about potential and limits of the concepts and methods adopted. 
Contenuti  The course aims at developing basic competencies and skills related to the comprehension of scientific texts, including mathematical representations and notations, taking into account the National Guidelines for secondary school. 
Testi di riferimento  Didactic material provided by the teacher on the DIR platform of the course 
Obiettivi formativi  Being able to interpret scientific texts and, in particular, to be able to decode and manipulate specific mathematical notations. The goal is to develop competencies related to the interpretation of mathematical problem texts and to the implementation of solution strategies. All the activities will require effective communication of the processes carried out and of the results obtained. 
Prerequisiti  Language and mathematical skills required at the end of secondary school. 
Metodi didattici  Lectures and training sessions carried out also by means of the use of the University Moodle platform. 
Altre informazioni  Learning monitoring: tutoring activities supported by the use of the Moodle platform of the University. These activities have a formative goal: they are discussed and corrected together with the students 
Modalità di verifica dell'apprendimento  Final test in analogy with the competence assessment initial test. The final test consists of 20 questions about the understanding of scientific texts, including representations and notations of mathematics. To get through the test it is necessary to get at least 50% of the points. 
Programma esteso  The course will deal with content and problems related to basic skills that are required to face the DiSIT first year courses. Scientific texts, that include mathematical representations and notations, will be analyzed and problem solving activities will be carried out. In particular they will be studied: 1) Some fundamental features of scientific texts. 2) Different representations of number and measures. 3) Algebraic notations proprieties. 4) Graphic representations of phenomena 
Print
Course  CONOSCENZE INIZIALI 

Course ID  MF0436 
Academic Year  2019/2020 
Year of rule  2019/2020 
Degree  INFORMATICA 
Curriculum  CORSO GENERICO 
Teaching leader  MONTANI Stefania 
Teachers  Montani Stefania 
Teaching duration (hours)  24 
SSD  NN  
Course type  Attività formativa monodisciplinare 
Course mandatoriety  OBB 
Course category  D 
Year  1 
Period  Primo Semestre 
Site  VERCELLI 
Grading type  G 
Lingua insegnamento  Italian 
Risultati di apprendimento attesi  Knowledge of some basic concepts of mathematics, in particular: real numbers and their representations and main elementary functions. Ability at applying these concepts in simple problem solving and in the interpretation of graphs. Awareness about potential and limits of the concepts and methods adopted. 
Contenuti  The course aims at developing basic competencies and skills related to the comprehension of scientific texts, including mathematical representations and notations, taking into account the National Guidelines for secondary school. 
Testi di riferimento  Didactic material provided by the teacher on the DIR platform of the course 
Obiettivi formativi  Being able to interpret scientific texts and, in particular, to be able to decode and manipulate specific mathematical notations. The goal is to develop competencies related to the interpretation of mathematical problem texts and to the implementation of solution strategies. All the activities will require effective communication of the processes carried out and of the results obtained 
Prerequisiti  Language and mathematical skills required at the end of secondary school. 
Metodi didattici  Lectures and training sessions carried out also by means of the use of the University Moodle platform. 
Altre informazioni  Learning monitoring: tutoring activities supported by the use of the Moodle platform of the University. These activities have a formative goal: they are discussed and corrected together with the students 
Modalità di verifica dell'apprendimento  Final test in analogy with the competence assessment initial test. The final test consists of 20 questions about the understanding of scientific texts, including representations and notations of mathematics. To get through the test it is necessary to get at least 50% of the points. 
Programma esteso  The course will deal with content and problems related to basic skills that are required to face the DiSIT first year courses. Scientific texts, that include mathematical representations and notations, will be analyzed and problem solving activities will be carried out. In particular they will be studied: 1) Some fundamental features of scientific texts. 2) Different representations of number and measures. 3) Algebraic notations proprieties. 4) Graphic representations of phenomena 
Print guide
Print
Data synched: 04/07/2020, 01:10