L'impegno UPO per l'emergenza COVID-19. Vai a tutte le NEWS.

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 Event-Driven Applications - Fog-computing, Internet of Things - Design and implementation of a network application based on an Event-Driven architecture
Testi di riferimento - Kurose & Ross - Computer-Networking: a Top-Down Approach.
Obiettivi formativi To develop the capability of designing a network application based on the concept of distribuited micro-services.
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 network-I
Metodi didattici The course includes: Lectures (36 hours) Activity assisted by the teacher (36 hours) Individual activity self-organized 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 data-link layer: - Service and functionality characterization. - Network to data-link interface: ARP (IP-v4), ND (IP-v6). - Medium Access Control principles: CSMA, CSMA/CD, CSMA/CA, CDMA. - Ethernet, Ethernet switches. - Wi-Fi, Access-point, 802.11 protocol suite. - Bluetooth (basic notions). Application to Internet of Things. - ZigBee (basic notions). Application to Internet of Things. b) Multi-media communication on IP networks: - Requirement characterization. - Audio-video streaming. - Protocols supporting audio-vido streaming: 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. - Event-Driven rchitectures versus Client-Server architectures. - Interconnecting agents in private networks: port-forwarding, Dynamic-DNS. - Relay in public networks, message brokers - Self-configuring hosts in local networks: ZeroConf, 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, Raspberry-PI, 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: message-broker based architectures with focus on popular open-source platforms: KAFKA, RabbitMQ, Mosquitto. - Experimentation with the message queue and the public-subscribe paradigms. - Experimentation with multi-thread and multi-process architecture for handling real-time events. d) Project development: the student will have assigned an application in the IoT domain, which will be developend following the typical software engineering approach: - Requirement analysis and general software specification. - Architecture design, module and class specification. - Discussion with the teacher of the developed design. - Implementation - Validation and analysis of the permances - Final report
Agenda web
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 event-driven applications. Applying knowledge and understanding: students will be able to apply the acquired knowledge to develop an event-driven application capable to interface with IoT devices connected to a LAN. During the application design the students will be able to use the techniques/methodologies acquired in the software engineering course. Making judgments: students will be able to autonomously analyze different architectural and implementation solutions, identify their pros and cons and choose the most suitable solutions. Communication skills: students will learn to synthetically explain the features of their application and the architectural or implementation choices and reasoning about their effectiveness. Learning skills: students will be capable to interact with different devices and platforms, developed according to the general principles acquired in the courses, but with different specific interfaces. Thus students will be able to autonomously learn the specific characteristics of provided services in order to develop an application capable to interact with them.
Contenuti - Local Area Network architectures - Architecture and Design of Event-Driven Applications - Fog-computing, Internet of Things - Design and implementation of a network application based on an Event- Driven architecture
Testi di riferimento James F. Kurose, Keith W. Ross, Computer networking - A top-down approach , 7th Edition, Addison Wesley (2017)
Obiettivi formativi To develop the capability of designing a network application based on the concept of distributed micro-services.
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 networks-I
Metodi didattici The course includes: Lectures (32 hours) Activity assisted by the teacher (40 hours) Individual activity self-organized by the student
Modalità di verifica dell'apprendimento 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 data-link layer: - Service and functionality characterization. - Network to data-link interface: ARP (IP-v4), ND (IP-v6). - Medium Access Control principles: CSMA, CSMA/CD, CSMA/CA, CDMA. - Ethernet, Ethernet switches. - Wi-Fi, Access-point, 802.11 protocol suite. - Bluetooth (basic notions). Application to Internet of Things. - ZigBee (basic notions). Application to Internet of Things. b) Multi-media communication on IP networks: - Requirement characterization. - Audio-video streaming. - Protocols supporting audio-vido streaming: RTP. c) Computer Network Security: - Basic principles. - Shared key cryptography. - Public key cryptography. - User authentication, digital signature - Secure socket layer: SSL, HTTPS d) Network Application Architectures: - Cloud, Private Networks and IoT. - Event-Driven architectures versus Client-Server architectures. - Interconnecting agents in private networks: port-forwarding, Dynamic- DNS. - Relay in public networks, message brokers - Self-configuring hosts in local networks: ZeroConf. 2. Lab Module (48 hours: 12 lectures +36 assisted activity): Development of a Network Application. a) Environment: - Local Area Network provided with hosts oriented to IoT applications: Raspberry-PI. - Communication protocol: MQTT + HTTP - University Cloud service provided with Mosquitto, RabbitMQ. b) Assignment: the student is required to develop a project applying the methods learned in the courses of software engineering, object oriented programming, computer networks, and WEB programming. The computer language for the software implementation can be choosed among: Java, C++. Javascript, Python. c) Preliminary activity: - Familiarization with the methodological aspects of the project: message- broker based architectures with focus on popular open-source platforms: RabbitMQ, Mosquitto. - Experimentation with the message queue and the public-subscribe paradigms. - Experimentation with multi-thread and multi-process architecture for handling real-time events. d) Project development: the student will have assigned an application in the IoT domain, which will be developend following the typical software engineering approach: - Requirement analysis and general software specification. - Architecture design, module and class specification. - Discussion with the teacher of the developed design. - Implementation - Validation and analysis of the performances - Final report
Agenda web
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
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 Syntax-directed translation and its use for the translation of imperative programming languages.
Testi di riferimento A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 1986, or A. V. Aho, M.S. Lam, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", 2nd ed., Addison-Wesley, 2006
Obiettivi formativi Knowing and being able to apply different methods for syntax-directed translation, understanding the conditions under which they can be used and being able to explain why they can or cannot be used in a specific case. Being able to apply them to the translation of the most typical structures of programming languages.
Prerequisiti 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. Syntax-directed translation: attribute grammars, translation schemes. Semantic analysis, type checking. Run-time environments for imperative languages. Intermediate languages. Intermediate code generation.
Agenda web
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 context-free ones modeling regular languages through linear grammars know the relationships between linear grammars and regular languages know the relationships between the main syntactic structures and the context-free rules needed to generate them modeling languages through context-free grammars, developed using the "divide et impera" methodology know deterministic and non-deterministic finite automata and their relationships with regular languages know deterministic and non-deterministic pushdown automata and their relationships with context-free languages developing non-deterministic pushdown automata on the basis of context-free grammars developing deterministic pushdown automata to recognize context-free (deterministic) languages know the basic notions of top-down and bottom-up parsing know LR(0) and SLR(1) parsing developing LR(0) and SLR(1) parsers staring from a context-free grammar
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 non-deterministic) finite automata context free languages and grammars, (deterministic and non-deterministic) pushdown automata LR(0) and SLR(1) parsing Capacity to apply knowledge and comprehension: modeling regular languages via regular expression modeling languages via context free grammars developing pushdown automata on the basis of context free grammars developing deterministic pushdown automata to recognize deterministic context free languages developing LR(0) and SLR(1) parsers to recognize deterministic context free grammars Judgement autonomy: recognize regular languages vs. context free languages know the relationships between classes of languages, classes of grammars, and classes of automata choosing the proper constructs to define context free grammars recognizing a given language Communication abilities: Students must acquire and adopt the rigorous terminology used in the theory of languages Learning capacity: Students must acquire the capabilities to recognize classes of problems and face them adopting the appropriate methodologies. They should also acquire the capability of modeling and analyzing problems in a formal way.
Prerequisiti 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): 7-8 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 -        Finite-state automata and relationships to regular languages -        Stack automata (deterministic and non-deterministic) and relationships to context free languages -        Basic bottom up parsing theory, focusing on LR parsing (LR(0) e SLR(1))
Agenda web
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 context-free ones modeling regular languages through linear grammars know the relationships between linear grammars and regular languages know the relationships between the main syntactic structures and the context-free rules needed to generate them modeling languages through context-free grammars, developed using the "divide et impera" methodology know deterministic and non-deterministic finite automata and their relationships with regular languages know deterministic and non-deterministic pushdown automata and their relationships with context-free languages developing non-deterministic pushdown automata on the basis of context-free grammars developing deterministic pushdown automata to recognize context-free (deterministic) languages know the basic notions of top-down and bottom-up parsing know LR(0) and SLR(1) parsing developing LR(0) and SLR(1) parsers staring from a context-free grammar
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 non-deterministic) finite automata context free languages and grammars, (deterministic and non-deterministic) pushdown automata LR(0) and SLR(1) parsing Capacity to apply knowledge and comprehension: modeling regular languages via regular expression modeling languages via context free grammars developing pushdown automata on the basis of context free grammars developing deterministic pushdown automata to recognize deterministic context free languages developing LR(0) and SLR(1) parsers to recognize deterministic context free grammars Judgement autonomy: recognize regular languages vs. context free languages know the relationships between classes of languages, classes of grammars, and classes of automata choosing the proper constructs to define context free grammars recognizing a given language Communication abilities: Students must acquire and adopt the rigorous terminology used in the theory of languages Learning capacity: Students must acquire the capabilities to recognize classes of problems and face them adopting the appropriate methodologies. They should also acquire the capability of modeling and analyzing problems in a formal way.
Prerequisiti 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 -        Finite-state automata and relationships to regular languages -        Stack automata (deterministic and non-deterministic) and relationships to context free languages -        Basic bottom up parsing theory, focusing on LR parsing (LR(0) e SLR(1))
Agenda web
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", Addison-Wesley. (For reference) A. V. Aho, R. Sethi, J.D. Ullman: "Compilers Principles, Techniques and Tools", Addison-Wesley, 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 top-down (LL), parsing bottom-up (LR). Abstract syntax tree and pattern Visitor. Symbol table implementation. Semantic analysis: attribute definition, attribute evaluation, type checking for object oriented languages.
Agenda web
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 Design-patterns of each category (behavioral, creational, structural) also identifying advantages/disadvantages, alternative architectural solutions, and anti-patterns. Apply the Design-patterns in practice during both design and development of software systems. Describe the main verification and validation (V&V) activities usually performed during the software development lifecycle. Formally define the concepts of: test, test case, success, selection criterion (reliable, valid). Apply the test selection criterion on simple examples. Describe the main module testing strategies (structural, functional). Describe and apply in practice test adequacy criteria for structural test. Describe and apply in practice the equivalence class partitioning (ECP). Describe and apply the static analysis on simple examples. Describe and apply in practice integration testing activity. Describe the test double technique to achieve module test in isolation. Use integrated development environment (IDE), such as Eclipse, to develop, test, debug object-oriented software systems (Java programs).
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, Addison-Wesley 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 pseudo-formal 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 plug-in. 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
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 Server-side web programming: web applications and services (REST).
Testi di riferimento Suggested but not mandatory: http://csharpindepth.com/ https://legacy.gitbook.com/book/nbarbettini/little-asp-net-core-book/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 object-oriented programming. Basic understanding of the concepts related to web development : HTTP, HTML, CSS, JavaScript. Basic knowledge of the relational model. Basic understanding of a RDBMS (MySQL, PosgreSQL, ...). Basic understanding of Windows.
Metodi didattici 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
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
Modules
Course ID Course SSD Teachers Agenda web
MF0123Applicazioni mobili: sviluppo di applicazioni mobili 1 INF/01 - INFORMATICA Ardito Luca
MF0124Applicazioni mobili: sviluppo di applicazioni mobili 2 INF/01 - INFORMATICA Canonico Massimo
Show parent course details
Print
Course Applicazioni mobili: sviluppo di applicazioni mobili 1
Course ID MF0123
Academic Year 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 XML-based layout 5- Basic widgets 6- Working with containers 7- Input Method Framework 8- Pop-up messages 9- Dealing with Threads 10- Handling activity lifecycle 11- Creating Intent filter 12- Handling Multiple Screen Sizes
Agenda web
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
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. Flip-flops, registers and counters. Troubleshooting digital circuits. Semiconductor memories: ROM, EPROM, RAM. Flash memories and Solid State Disks. Serial data transmission: RS-232 and USB. Digital-to-analog and analog-to-digital conversion.
Agenda web
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 TSQL2-like approaches to cope with time in relational databases - knowledge and ability to use the BCDM model to model the semantics of temporal relational databases - knowledge about the main issues concerning the treatment of time in Artificial Intelligence (hints) C) Having understood notions of: 1. knowledge management 2. prediction 3. optimisation 4. adaptation described in the lessons; being able to apply such notions in answering theoretic questions as well as exercises.
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 re-organize operational data, to support strategical decision-making B) Methodologies and techniques to deal with validity and transaction time in relational databases C) Methodologies and techniques to realize a modern Business Intelligence system;
Testi di riferimento A) M. Golfarelli, S. Rizzi: “Data Warehouse”, McGraw-Hill, Milano. B) The second part of the course (Temporal Issues) is bases of scientific journal publications provided by the teacher. C) Z. Michalewicz et al., Adaptive Business Intelligence, Springer.
Obiettivi formativi Knowledge and comprehension: students must acquire a deep knowledge about: A) the methodologies to retrieve, analyse, synthetise, and re-organise operational data; the methodologies to design at the conceptual and at the logical relational level a datawarehouse B) the semantics of temporal databases; the main methodologies to mana valid time and transaction time in temporal relational databases; the main problems when dealing with "time" in knowledge bases C) methodologies and techniques for: knowledge representation and management, prediction, optimization, adaptation. Capacity to apply knowledge and comprehension: A) ability to design (conceptual and logical level) and develop a datawarehouse in the relational context, starting from operational data sources B) capacity to properly use TSQL2-like temporal DBMS. C) ability to evaluate and/or apply the techniques studied in the course to design a decision support tool in an enterprise context, where heterogeneous data and knowledge may be available; Judgement autonomy: A) ability to identify facts of interest, granularity, dimensions and the hierarchy of dimensional attributes for a datawarehouse B) capability of recognizing the necessity of general\specific techniques to cope with time in relational DBs; ability to identify temporal problems (in DBs), and the methodologies to solve them C) ability to work in an autonomous way, and deal with complex enterprise situations or with incomplete information Communication abilities: A-B) Students must acquire and adopt the rigorous terminology used in datawarehousing and in temporal databases. B) They must also be able to express in a rigourous (formal) way the semantics of temporal databases. C) They must be able to justify their design or implementation choices and clearly communicate them also to a non expert audience. Learning capacity: students must acquire the capability of A) analysing a modeling in a uniform way data coming from heterogeneous sources B) analysing possibly complex temporal problems in temporal databases C) describing and properly choosing the correct techniques to realize an enterprise decision support system
Prerequisiti 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; Rule-based Reasoning and Case-based Reasoning; advanced Case-based Reasoning solutions (time series data, fuzzy CBR, process-oriented CBR); 2. prediction: classification, regression, time series; mathematical models, distance-based models, logic models, heuristic models; hybrid methods; 3. optimisation: mathematical methods, evolutionary algorithms, ant systems, hybrid methods; 4. adaptation: techniques to improve the prediction module performances.
Course borrowed from INFORMATICA (1983) - MF0288 BUSINESS INTELLIGENCE: DATA WAREHOUSE, ASPETTI TEMPORALI E SUPPORTO ALLE DECISIONI - ALESSANDRIA
Agenda web
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 one-shot 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; Case-Based Reasoning; Uncertain knowledge representation: probability theory and Bayesian Networks; Introduction to Decision Theory. INTELLIGENT DECISION SUPPORT SYSTEMS Decision Theory, Multi-attribute utility, Influence diagrams, One-shot and sequential decisions, Decision-theoretic planning (Markov Decision Processes)
Testi di riferimento S. Russell, P. Norvig. Artificial Intelligence: A Modern Approach (3rd edition), Prentice-Hall.
Obiettivi formativi ARTIFICIAL INTELLIGENCE: To introduce the fundamentals notions of AI systems INTELLIGENT DECISION SUPPORT SYSTEMS: Modeling one-shot 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: path-based blind and heuristic search. A* algorithm. Iterative improvement algorithms: hillclimbing and simulated annealing CSP problems Two players games: minimax and alpha/beta pruning Knowledge representations: hints on logical formalism. Case-Based Reasoning systems; the CBR-Works tool. Uncertain knowledge: probability theory, Bayesian Networks (properties and algorithms); BN tools (Genie, Hugin, etc...). Fundamentals of Decision theory. INTELLIGENT DECISION SUPPORT SYSTEMS: Decision Theory Multi-attribute utility Influence diagrams One-sot and sequential decisions Decision-theoretic planning (Markov Decision Processes)
Course borrowed from INFORMATICA (1983) - MF0293 INTELLIGENZA ARTIFICIALE E SUPPORTO INTELLIGENTE ALLE DECISIONI - ALESSANDRIA
Agenda web
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), Prentice-Hall 2010. P. Hitzler, M. Krötzsch, S. Rudolph, Foundations of Semantic Web, CRC Press, 2010. K. Marriott, P. Stuckey, Programming with Constraints: an Introduction, MIT Press, 1998. M. Gebser, R. Kaminski, B. Kaufmann, and T. Schaub, Answer Set Solving in Practice, Morgan and Claypool, 2012.
Obiettivi formativi 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 on-the-fly 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 first-order logic. Knowledge representation and reasoning in description logics, which is the basis for the use of ontologies in the Semantic Web. Knowledge representation and reasoning with rules 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
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 4-6 questions and 1-3 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix systems. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization.
Modules
Course ID Course SSD Teachers Agenda web
MF0369SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 INF/01 - INFORMATICA Cerotti Davide
MF0370SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 INF/01 - INFORMATICA Guazzone Marco
Show parent course details
Print
Course SISTEMI OPERATIVI: SISTEMI OPERATIVI 1
Course ID MF0369
Academic Year 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 4-6 questions and 1-3 programming assignments on different course topics. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix systems. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization.
Agenda web
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. ISBN-10: 1292061421, ISBN-13: 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
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
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 object-oriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage non-standard cases through exceptions.
Contenuti The course consists of two parts. In the first, object-oriented programming in Java and the Test-based program development methodology are introduced. In the second part, functional programming is introduced using the Python language.
Testi di riferimento 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 object-oriented 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 2-3 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 2-3 questions about the Java-oriented programming basics. The second part requires to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests.
Programma esteso Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and auto-boxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries Test-Driven Development Pattern Programming Model-View-Controller Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction
Agenda web
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
Modules
Course ID Course SSD Teachers Agenda web
MF0366SISTEMI OPERATIVI: SISTEMI OPERATIVI 1 INF/01 - INFORMATICA Theseider Dupre' Daniele
MF0367SISTEMI OPERATIVI: SISTEMI OPERATIVI 2 INF/01 - INFORMATICA Anglano Cosimo Filomeno
Show parent course details
Print
Course SISTEMI OPERATIVI: SISTEMI OPERATIVI 1
Course ID MF0366
Academic Year 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 4-10 questions or oral exam consisting in 2-4 questions on different course topics, including programming with system calls. The final grade will be based on the score obtained on the single questions and assignments.
Programma esteso General notions on the architecture of a multi-user system. Operating system kernel. Process and thread management. Process and thread synchronization, concurrent Programming. Deadlocks. Memory management. Processes in the Unix system. General notions on Unix system calls. System calls for process management, thread library. System calls and library functions for process and thread synchronization.
Agenda web
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
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 Client-side 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 3-tier 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 3-tier architectures; Markup languages, HTML5, Cascading Style Sheet. Client-side 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
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, McGraw-Hill 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 entity-relation model and of normalization theory. Sperimentazioni: for successfully completing Sperimentazioni the students should prove to have learned the basic concepts relating to database design and the use of SQL language, through the realization of a lab project.
Modalità di verifica dell'apprendimento Fondamenti: A written examination and an optional discussion. The exam involves several questions on different subjects within the course contents. The evaluation takes into account the answers to the different questions. Sperimentazioni: an individual oral examination where a lab project will be discussed. The lab project consists of two parts: i) the design of a conceptual and a logical model for a database (the requirements for such a database are assigned by the teachers) and ii) about 10-20 SQL queries assigned by the teacher on an existing database also assigned by the teacher. The lab project is carried out by the students working in small groups of approximately up to three people. The students are expected to write a report about their lab project to be delivered to the teacher a few days before the discussion. The individual oral examination can be supplemented with questions regarding the basic concepts of relational databases using as a basis the students’ report. The total score of this partial test is 30 points. The overall assessment will take account of the partial scores obtained in the two parts.
Programma esteso Fondamenti: among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. The course consists of the following parts: Relational Model; Relational Algebra; Entity-Relationship Model; translation from the ER model to the relational model; Normal Forms. The threelevel architecture of a DBMS is introduced. The main notions on indexes and transactions are briefly discussed. Sperimentazioni: Sperimentazioni: Conceptual and logical design: introduction of case studies. Introduction to SQL: Data Definition Language, Data Manipulation Language and Query Language. Implementation and management of a relational database using SQL through the implementation of some case studies in the computer lab. Use of the PostgreSQL DBMS.
Agenda web
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
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 3-tier 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 3-tier architecture (client/application/data). Concepts related to markup languages like HTML5 will be introduced, together with concepts related to style notations like CCS3. The course will also cover client-side programming (JavaScript) and server-side programming (Node.js), as well as methods for interacting with relational DBMS (RDBMS). Accessibility and usability aspects will be considered along the course, to allow web pages and applications to be really usable by everyone.
Testi di riferimento 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 3-tier architecture (client/application/data).
Prerequisiti Object-oriented 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 Client-side programming: JavaScript, Dynamic HTML and DOM, AJAX Overview on RDBMS design Server-side programming: web servers and 3-tier architectures, node.js and the Express framework Interaction with RDBMS Overview on web services and APIs Development tools for the web, inside and outside the browser
Agenda web
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, 2-3 trees.  - Hash tables.  - Priority queues. These notions will then be further examined by means of their implementation. In particular, the exercises will refer to the following topics:   Sorting algorithms: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Dynamic data structures: Lists, Queues, Stacks; Trees; Hash tables.
Agenda web
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, McGraw-Hill or Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010
Obiettivi formativi 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 Hands-on activity requires active participation of the students, who this way develop pracatical skills (ability to implement a program). Moreover, the active involvement leads the students to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this allows a regular monitoring of the way the subject is being understood.
Modalità di verifica dell'apprendimento 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: Bellman-Ford's algorithm -all-pairs shortest paths on a weighted graph: Floyd-Warshall's algorithm Introduction to intractable problems: -P, NP complexity classes and NP-completeness -pseudopolinomial algorithms -introduction to the techniques to deal with intractable problems.
Agenda web
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
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 Top-Down 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 self-evaluation 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 e-mail, web and DNS. -Session level: socket and socket programming. -Transport level: protocols TCP and UDP -Network level: protocols IP and ICMP -Routing protocols: routing algorithms, notion of Autonomous System, protocols RIP, OSPF, BGP. Besides the description of the mentioned protocols, the course aims at endowing the student with a direct experience on management of computer networks and the related issues. Therefore, part of the course consists of practical lessons in which the student is given exercises to complete in lab hours or as a homework.
Agenda web
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 MacGraw-Hill, 2008; ISBN: 978 88 386 64687 - Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein Introduction to Algorithms, third edition McGraw-Hill, 2010
Obiettivi formativi 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 study in depth the algorithmic techniques, leveraging on analogies among algorithms that use the same techniques. The presentation is completed with discussions on the usage of each algorithm in practice to solve specific kinds of problems. In lab the student is guided in implementing the algorithms seen in class, realizing for each algorithm a few variants as a propaedeutic exercise to problem solving. On the DIR site of the course the students have access to quizzes that serve as practice and self-evaluation. The aim is to offer to the students a means to check their own progress and comprehension, so as to discover as early as possible their weaknesses and to be able to ask for explanations to the teacher.
Altre informazioni Hands-on activity requires active participation of the students, who this way develop prcatical skills (ability to implement a program). Moreover, he active involvement leads the students to ask themselves questions (and, as a consequence, often to ask questions to the instructor); this allows a regular monitoring of the way the subject is being understood.
Modalità di verifica dell'apprendimento 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: Bellman-Ford's algorithm (use in routing algorithms) -all-pairs shortest paths on a weighted graph: Floyd-Warshall's algorithm Introduction to intractable problems: -P, NP complexity classes and NP-completeness -pseudopolinomial algorithms -introduction to the techniques to deal with intractable problems.
Agenda web
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, 2-3 trees. - Hash tables. - Priority queues. These notions will then be further examined by means of their implementation. In particular, the exercises will refer to the following topics: Sorting algorithms: Insertion sort, Selection sort, Merge sort, Heap sort, Quicksort; Dynamic data structures: Lists, Queues, Stacks; Trees; Hash tables.
Agenda web
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, McGraw-Hill 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 entity-relation model and of normalization theory. Sperimentazioni: for successfully completing Sperimentazioni the students should prove to have learned the basic concepts relating to database design and the use of SQL language, through the realization of a lab project.
Modalità di verifica dell'apprendimento Fondamenti: A written examination and an optional discussion. The exam involves several questions on different subjects within the course contents. The evaluation takes into account the answers to the different questions. Sperimentazioni: an individual oral examination where a lab project will be discussed. The lab project consists of two parts: i) the design of a conceptual and a logical model for a database (the requirements for such a database are assigned by the teachers) and ii) about 10-20 SQL queries assigned by the teacher on an existing database also assigned by the teacher. The lab project is carried out by the students working in small groups of approximately up to three people. The students are expected to write a report about their lab project to be delivered to the teacher a few days before the discussion. The individual oral examination can be supplemented with questions regarding the basic concepts of relational databases using as a basis the students’ report. The total score of this partial test is 30 points. The overall assessment will take account of the partial scores obtained in the two parts.
Programma esteso Among the main data models presented in data base literature, the course presents the relational model and, in particular, it focuses on its theoretical aspects. Conceptual models are introduced for database design and the logical structure of the database is analyzed through the notion of normal forms. The course consists of the following parts: Relational Model; Relational Algebra; Entity-Relationship Model; translation from the ER model to the relational model; Normal Forms. The threelevel architecture of a DBMS is introduced. The main notions on indexes and transactions are briefly discussed. Sperimentazioni: Conceptual and logical design: introduction of case studies. Introduction to SQL: Data Definition Language, Data Manipulation Language and Query Language. Implementation and management of a relational database using SQL through the implementation of some case studies in the computer lab. Use of the PostgreSQL DBMS.
Agenda web
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 object-oriented and functional programming. Being able to model an application by identifying the components and the best paradigm for their description. Knowing how to design and implement the chosen solution using both Java and Python. Perform tests with JUnit. Master the Java and Python Collections framework. Knowing how to recognize and manage non-standard cases through exceptions.
Contenuti The course consists of two parts. In the first, object-oriented programming in Java and the Test-based program development methodology are introduced. In the second part, functional programming is introduced using the Python language.
Testi di riferimento 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 object-oriented 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 2-3 classes with their test classes using the eclipse IDE, and for the acquisition of the theoretical concepts the students have to answer to 2-3 questions about the Java-oriented programming basics. The second part require to present a project designed and implemented either individually or in a group to asses both the ability to structure a problem in the object paradigm and its implementation with the use of Java libraries. The project is discussed during an oral exam. The third part aims at testing the acquired competences as regards functional programming. The score is determined by the scores in the three tests.
Programma esteso Introduction to Java. Objects, classes, methods Basic types, syntactic structures for flow control, arrays. Wrappers for primitive types and auto-boxing/unboxing Interfaces, polymorphism, inheritance Parametric programming Exception handling Overview of the core libraries New functional features of Java 8 and new collections libraries Test-Driven Development Pattern Programming Model-View-Controller Introduction to functional programming in Python. Functions as values Higher order functions Immutable data Lazy evaluation Working with Collections: recursion and reduction
Agenda web
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 3-tier 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 3-tier architecture (client/application/data). Concepts related to markup languages like HTML5 will be introduced, together with concepts related to style notations like CCS3. The course will also cover client-side programming (JavaScript) and server-side programming (Node.js), as well as methods for interacting with relational DBMS (RDBMS). Accessibility and usability aspects will be considered along the course, to allow web pages and applications to be really usable by everyone.
Testi di riferimento 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 3-tier architecture (client/application/data).
Prerequisiti Object-oriented 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 Client-side programming: JavaScript, Dynamic HTML and DOM, AJAX Overview on RDBMS design Server-side programming: web servers and 3-tier architectures, node.js and the Express framework Interaction with RDBMS Overview on web services and APIs Development tools for the web, inside and outside the browser
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 Client-side 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 3-tier 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 3-tier architectures; Markup languages, HTML5, Cascading Style Sheet. Client-side 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 L-FIL-LET/12 - LINGUISTICA ITALIANA
Course type Attività formativa monodisciplinare
Course mandatoriety OBB
Course category C
Year 1
Period Secondo Semestre
Site VERCELLI
Grading type V
Agenda web
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
Modules
Course ID Course SSD Teachers Agenda web
MF0200ARCHITETTURA 1 INF/01 - INFORMATICA Valenza Fulvio
MF0201ARCHITETTURA 2 INF/01 - INFORMATICA Poccia Silvestro
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 fetch-decode-execute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the instruction set of IJVM, the machine language of MIC1, implement some simple programs using such language and simulate their execution.
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 on-line).
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 self-assessment tests, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR .
Modalità di verifica dell'apprendimento 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, UTF-8). Redundant codes: parity bit, Hamming (single) error correcting code. Images encoding (bitmap, image resolution and depth).Boolean algebra, AND, OR, NOT, NAND, NOR gates. From logical functions to combinatorial circuits (truth tables, sum of products and product of sums normal form expressions, simplification by means of algebra laws, or through Karnaugh’s maps).Examples of circuits: Decoder, Multiplexer, Half Adder, Full Adder, ALU, etc. Sequential circuits: Latch, Flip-flop, registers and memories.Main components of a computer (CPU, RAM memory, Magnetic disks, RAID, Optical disks, BUS, various peripherals) and their basic operating principles.Central Processing Unit: fetch-decode-execute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction to the machine language (IJVM) of the MIC1 architecture.
Agenda web
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 high-level 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 micro-architecture (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 micro-interpreter (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 interrupt-based 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 micro-interpreter 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, self-assessment 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, micro-architecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. An example of a microprogrammed architecture that creates IJVM, the machine language of MIC-1. Laboratory exercises with a MIC-1 emulator equipped with a microprogram compiler and IJVM programs. Performance improvement. Introduction of a sampling unit and pipeline: the MIC-2, MIC-3 and MIC-4 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
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. Self-induction. Maxwell equations. Electromagnetic waves. The nature and speed of light. Propagation of light in a medium – refraction index. Dispersion. Interference and diffraction.
Agenda web
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 L-FIL-LET/12 - LINGUISTICA ITALIANA
Course type Attività formativa monodisciplinare
Course mandatoriety OBB
Course category C
Year 1
Period Secondo Semestre
Site ALESSANDRIA
Grading type V
Agenda web
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
Modules
Course ID Course SSD Teachers Agenda web
MF0205ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Bardelle Cristina, Ferrero Alberto
MF0206LOGICA MAT/01 - LOGICA MATEMATICA Bardelle Cristina
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 Diffie-Hellman protocol, the RSA protocol. Millar-Rabin primality test. Vectors in the plane and in the tridimensional space and extension to the case of R^N. Definition of matrix, sum of matrices, product between a scalar and a matrix, row column product of matrices. Definition of transposed matrix, symmetric matrix, inverse matrix. Definition of determinant for square matrices and its geometric interpretation. Scalar product, vector product and mixed product of vectors and applications of the determinant in the computation of vector and mixed products. Rank of a matrix and applications of the determinant in the computation of the rank. Linear systems, Rouchè-Capelli Theorem, Cramer Rule. Resolution of linear systems with the Gauss Elimination Method, lines and planes in the tridimensional space.
Agenda web
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 first-order logic, with a particular attention to the relations between truth and derivability and to the use of the predicate calculus for representing natural language statements
Prerequisiti Reading and production of short texts in italian. Basic knowledge of syntax.
Metodi didattici Face-to-face lectures. Personalized tutoring and computer-aided 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
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
Modules
Course ID Course SSD Teachers Agenda web
S1364ARCHITETTURA 1 INF/01 - INFORMATICA Franceschinis Giuliana Annamaria
S1365ARCHITETTURA 2 INF/01 - INFORMATICA Poccia Silvestro
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 fetch-decode-execute cycle. State the differences between CISC and RISC architectures and the principle behind the pipeline architectures. Describe the instruction set of IJVM, the machine language of MIC1, implement some simple programs using such language and simulate their execution.
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 on-line).
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 self-assessment tests, read general information on the course and news about the lectures and the exam organization on the e-learning platform DIR .
Modalità di verifica dell'apprendimento 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, UTF-8). Redundant codes: parity bit, Hamming (single) error correcting code. Images encoding (bitmap, image resolution and depth).Boolean algebra, AND, OR, NOT, NAND, NOR gates. From logical functions to combinatorial circuits (truth tables, sum of products and product of sums normal form expressions, simplification by means of algebra laws, or through Karnaugh’s maps).Examples of circuits: Decoder, Multiplexer, Half Adder, Full Adder, ALU, etc. Sequential circuits: Latch, Flip-flop, registers and memories.Main components of a computer (CPU, RAM memory, Magnetic disks, RAID, Optical disks, BUS, various peripherals) and their basic operating principles.Central Processing Unit: fetch-decode-execute cycle. CISC and RISC processors, Processors with pipeline architecture. Introduction to the machine language (IJVM) of the MIC1 architecture.
Agenda web
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 high-level 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 micro-architecture (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 micro-interpreter (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 interrupt-based 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 micro-interpreter 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, self-assessment 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, micro-architecture level, Instruction Set Architecture level, Operating System level, Assembler programming level. An example of a microprogrammed architecture that creates IJVM, the machine language of MIC-1. Laboratory exercises with a MIC-1 emulator equipped with a microprogram compiler and IJVM programs. Performance improvement. Introduction of a sampling unit and pipeline: the MIC-2, MIC-3 and MIC-4 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
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. McGraw-Hill. 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 4-6 exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam is made of preliminary questions about the basic notions of mathematics and about elementary functions, of a discussion on the exercises contained in the written exams and of some final questions on statements and proofs of the main theoretical results.
Programma esteso 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
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 first-order logic, with a particular care to the relationship between truth and derivability and to the use of the predicate calculus for expressing ordinary language statements. Application of some techniques widely used in mathematics, such as induction. Recognition, application and evaluation of some basic proof schemes.
Prerequisiti Reading and production of short descriptive and argumentative texts in italian. Basic properties of integers. Basic properties of the cartesian plane.
Metodi didattici Face-to-face lectures. Personalized tutoring and (for the algebra and geometry module) computer-aided exercises.
Altre informazioni Algebra and geometry: Optional exercises on the platform DIR. Simulations of written examinations. Final written computer-aided examination, possibly followed by an interview. Logic: The requirement for passing the exams is the acquirement of the basic notions of prtopositional logic (both on the semantics and on proof methods) and of predicate logic.
Modalità di verifica dell'apprendimento Algebra, geometry and Logic: Written computer-aided 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 Diffie-Hellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems. 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.
Modules
Course ID Course SSD Teachers Agenda web
S1367ALGEBRA E GEOMETRIA MAT/03 - GEOMETRIA Ferrari Pier Luigi
S1368LOGICA MAT/01 - LOGICA MATEMATICA Ferrari Pier Luigi
Show parent course details
Print
Course MATEMATICA DISCRETA: ALGEBRA E GEOMETRIA
Course ID S1367
Academic Year 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 Face-to-face lectures. Personalized tutoring and Computer-aided exercises.
Altre informazioni Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento Written computer-based test, possibly followed by a discussion of the written test. The written test, integrated with the 'Logic' module, consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'.
Programma esteso Integers. Divisibility and primes. Greatest common divisor. Euclid's algorithm. Least common multiple. Diophantine equations. Congruences and residue classes. Divisibility criteria. Representation of number in basis other than ten. Chinese remainder theorem. Sharing secrets by means of systems of congruences. Euler's theorem. The problem of the discrete logarithm. The Diffie-Hellman protocol. The RSA protocol. Linear systems. Gauss' elimination method. Matrices, determinants, rank, inverse matrix. Vector spaces, bases, linear dependence. Linear functions, scalar product. Applications to linear systems.
Agenda web
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 first-order logic, with a particular care to the relationship between truth and derivability and to the use of the predicate calculus for expressing ordinary language statements. Application of some techniques widely used in mathematics, such as induction. Recognition, application and evaluation of some basic proof schemes.
Prerequisiti Reading and production of short texts in italian. Basic knowledge of syntax.
Metodi didattici Face-to-face lectures. Personalized tutoring and computer-aided exercises.
Altre informazioni Optional exercises on the platform DIR. Simulations of written examinations.
Modalità di verifica dell'apprendimento Written computer-based test, possibly followed by an interview. The written test, integrated with the 'Algebra' and 'Geometry' modules consists in 6 items, with closed or open answer, based on the format 'Quiz' of the platform DIR and in 3 problems in the format 'Composition'.
Programma esteso 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
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", Addison-Wesley. 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 flow-chart, the pseudo-code, the program in the programming language. Moreover the program must require and present data to the user by means of message that the user can understand. Learning capacity: the student must be able to learn how to generate an algorithm from the problem, how to implement an algorithm in a programming language, and finally how to compile and execute a program on a computer.
Prerequisiti 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: flow-chart, pseudo-code, programming language. Since it is a course on basic programming, the programs are written on the computer by means of an ordinary text editor. In order to make the students familiar with the terminal (useful for the following courses), program compiling and execution is performed through the command line of the terminal. Besides the compiling and execution commands, the main terminal commands are presented and applied. During the course, learning is verified through a series of exercises for each topic of the course. Each exercise requires to define an algorithm and write the corresponding program in C language. During the laboratory lectures, each exercise is introduced, the general program structure is defined, and the students are asked to complete the program in an autonomous way, within a certain amount of time. Then, the solution of the exercise is provided in order to verify the correctness. At the end of the course, several exam simulation are performed, on the computer, to allow the students to be aware of what is actually required at the exam. Besides the laboratory lectures, tutoring lectures are available for the students, in order to continue the exercises, clarify doubts, and require to explain a topic for the second time. The course has its own page in the platform DIR (Didattica in Rete), which contains the slides, the programs shown during the frontal lectures, the programs prepared during the laboratory and tutoring lectures, the exams of the past, etc.
Altre informazioni 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, do-while); - arrays; - functions with arguments by value; - pointers and function arguments by reference; - pointer arithmetic; - arguments from command line; - array sorting algorithms; - input/output to file; - use of terminal.
Agenda web
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
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
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 top-down methodology in the problem analysis. They must be able to identify input and output, to develop flow diagrams, and C programs, using the basic notions of: - variables and data types; - if-then-else and boolean conditions - iteration (while, for, do-while); - functions and parameters (by value and by reference) - arrays, strings, files Additionally they must acquire the capability of analyzing the algorithm complexity, and of compiling, verifying and executing C programs.
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 (if-then-else, while, for, functions and parameters ). Capacity to apply knowledge and comprehension: given a problem, - identifying input data to be collected from the user, and output data to be produced; - identifying the data structures necessary to manage such data; - defining an algorithm transforming input data in output data, by following the programming constructs; - writing on the computer the source program implementing the algorithm, using the programming language (C); - generating the executable program by compiling the source program, on the computer; - executing and testing the executable program, on the computer. Judgement autonomy: in an autonomous way the student must be able to identify the necessary data structures, define and implement the algorithm in the programming language (C), and finally compile and execute the program. Communication abilities: the student must be able to define an algorithm at several abstraction levels, such as the flow-chart, the pseudo-code, the program in the programming language. Moreover the program must require and present data to the user by means of message that the user can understand. Learning capacity: the student must be able to learn how to generate an algorithm from the problem, how to implement an algorithm in C, and finally how to compile and execute a program on a computer.
Prerequisiti 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 computer-based exam (laboratory test) requires the development and testing of a program in C. The part of exam without computer consists of a written examination (compulsory) and an oral one (optional). The written examination may be carried on as a single exam or through two intermediate written exams. The written examinations consist in the analysis of simple programming problems, and in the development of flow charts and C programs solving them. The final score is obtained through a weighted average of the scores achieved in each single exam.
Programma esteso - Introduction to structured programming- Top-down methodology in the problem analysis and in the development of flow charts (and programs)- Basic programming concepts (expressed in the “C” language):- variables, data types- input and output;- esay C programs using only sequences- if-then-else and Boolean Conditions- iteration (while, for, do-while); loop invariants (not formal);- functions and parameter passing (by value and by reference)- arrays and array algorithms;- the string data type- file management- complexity analysis- Introduction to Linux. Main commands to manage files, to compile and execute programs.
Agenda web
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 4-6 exercises on different subjects of the course. In each written exam, most of the subjects contained in the course are covered. The presence of questions on the theoretical part is not excluded. The oral exam is made of preliminary questions about the basic notions of mathematics and about elementary functions, of a discussion on the exercises contained in the written exams and of some final questions on statements and proofs of the main theoretical results.
Programma esteso 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
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
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
Year Course ID Course Teachers SSD Curriculum Site CFU Agenda web
1 S1363 COMPUTER ARCHITECTURE Franceschinis Giuliana Annamaria, Poccia Silvestro INF/01 All ALESSANDRIA 12 Select module
1 MF0199 COMPUTER ARCHITECTURE Valenza Fulvio, Poccia Silvestro, Franceschinis Giuliana Annamaria INF/01 All VERCELLI 12 Select module
1 MF0435 CONOSCENZE INIZIALI Montani Stefania NN All ALESSANDRIA 0 Not available
1 MF0436 CONOSCENZE INIZIALI Montani Stefania NN All VERCELLI 0 Not available
1 MF0204 DISCRETE MATHEMATICS Bardelle Cristina, Ferrero Alberto MAT/03, MAT/01 All VERCELLI 9 Select module
1 S1366 DISCRETE MATHEMATICS Ferrari Pier Luigi MAT/03, MAT/01 All ALESSANDRIA 9 Select module
1 MF0400 English Minihan David Charles NN All ALESSANDRIA 6 Not available
1 MF0397 English Leoni Beatrice NN All VERCELLI 6 Not available
1 MF0198 MATHEMATICAL ANALYSIS 1 Ferrero Alberto MAT/05 All VERCELLI 6 Lessons schedule
1 S0357 Mathematical Analysis 1 Ferrero Alberto MAT/05 All ALESSANDRIA 6 Lessons schedule
1 MF0202 PHYSICS Sitta Mario FIS/01 All ALESSANDRIA 6 Lessons schedule
1 MF0203 PHYSICS Barone Vincenzo FIS/01 All VERCELLI 6 Lessons schedule
1 MF0207 PROGRAMMING 1 Codetta Raiteri Daniele, Striani Manuel INF/01 All VERCELLI 9 Lessons schedule
1 MF0163 PROGRAMMING 1 Terenziani Paolo, Bottrighi Alessio INF/01 All ALESSANDRIA 9 Lessons schedule
1 MF0208 PROGRAMMING 2 Bottrighi Alessio, Nai Roberto INF/01 All VERCELLI 9 Lessons schedule
1 MF0164 PROGRAMMING 2 Manzini Giovanni INF/01 All ALESSANDRIA 9 Lessons schedule
1 MF0396 Techniques of communication and writing Demartini Silvia L-FIL-LET/12 All VERCELLI 3 Lessons schedule
1 MF0395 Techniques of communication and writing Bussolino Claudia L-FIL-LET/12 All ALESSANDRIA 3 Lessons schedule
2 MF0209 ALGORITHMS 1 Montani Stefania, Guazzone Marco INF/01 All VERCELLI 9 Lessons schedule
2 MF0034 ALGORITHMS 1 Montani Stefania, Leonardi Giorgio INF/01 All ALESSANDRIA 9 Lessons schedule
2 MF0210 ALGORITHMS 2 Piovesan Luca INF/01 All VERCELLI 6 Lessons schedule
2 MF0054 ALGORITHMS 2 Egidi Lavinia INF/01 All ALESSANDRIA 6 Lessons schedule
2 MF0216 COMPUTER NETWORKS 1 Munafo' Maurizio Matteo INF/01 All VERCELLI 6 Lessons schedule
2 S1609 Computer Networks 1 Canonico Massimo INF/01 All ALESSANDRIA 6 Lessons schedule
2 MF0211 DATABASES AND INFORMATION SYSTEMS Giordano Laura, Striani Manuel INF/01 All VERCELLI 9 Lessons schedule
2 MF0158 DATABASES AND INFORMATION SYSTEMS Giordano Laura, Striani Manuel INF/01 All ALESSANDRIA 9 Lessons schedule
2 MF0365 Operating systems Theseider Dupre' Daniele, Anglano Cosimo Filomeno INF/01 All ALESSANDRIA 12 Select module
2 MF0368 Operating systems Cerotti Davide, Guazzone Marco INF/01 All VERCELLI 12 Select module
2 MF0357 Probability and statistics Grassi Pietro MAT/06 All ALESSANDRIA 6 Lessons schedule
2 MF0358 Probability and statistics Grassi Pietro MAT/06 All VERCELLI 6 Lessons schedule
2 MF0363 Programming paradigms Giannini Paola INF/01 All ALESSANDRIA 9 Lessons schedule
2 MF0364 Programming paradigms Neuss Peter Michael, Piovesan Luca INF/01 All VERCELLI 9 Lessons schedule
2 MF0437 WEB PROGRAMMING METODOLOGIES De Russis Luigi INF/01 All ALESSANDRIA 6 Not available
2 MF0438 WEB PROGRAMMING METODOLOGIES Parimbelli Enea INF/01 All VERCELLI 6 Not available
2 MF0162 WEB PROGRAMMING METODOLOGIES De Russis Luigi INF/01 All ALESSANDRIA 6 Lessons schedule
2 MF0222 WEB PROGRAMMING METODOLOGIES Parimbelli Enea INF/01 All VERCELLI 6 Lessons schedule
3 MF0057 Artificial Intelligence Portinale Luigi INF/01 All ALESSANDRIA 6 Lessons schedule
3 MF0059 Business intelligence 1: data warehousing Terenziani Paolo, Montani Stefania INF/01 All ALESSANDRIA 3 Lessons schedule
3 S1736 Computational Logic Giordano Laura, Theseider Dupre' Daniele INF/01 All ALESSANDRIA 3 Lessons schedule
3 MF0244 Design and implementation of networked software systems Franceschinis Giuliana Annamaria, Cerotti Davide, Callegari Elia INF/01 All VERCELLI 9 Lessons schedule
3 MF0243 Design and implementation of networked software systems Giordana Attilio INF/01 All ALESSANDRIA 9 Lessons schedule
3 MF0309 Digital electronics Ramello Luciano FIS/01 All VERCELLI 3 Lessons schedule
3 MF0219 FOUNDATIONS, LANGUAGES AND TRASLATORS 1 Bottrighi Alessio INF/01 All VERCELLI 6 Lessons schedule
3 S1725 FOUNDATIONS, LANGUAGES AND TRASLATORS 1 Terenziani Paolo INF/01 All ALESSANDRIA 6 Lessons schedule
3 MF0220 FOUNDATIONS, LANGUAGES AND TRASLATORS 2 Giannini Paola INF/01 All VERCELLI 6 Lessons schedule
3 S1726 FOUNDATIONS, LANGUAGES AND TRASLATORS 2 Theseider Dupre' Daniele INF/01 All ALESSANDRIA 6 Lessons schedule
3 MF0128 Mobile applications Ardito Luca, Canonico Massimo INF/01 All ALESSANDRIA 6 Select module
3 S1730 SOFTWARE ENGINEERING Codetta Raiteri Daniele INF/01 All ALESSANDRIA 6 Lessons schedule
3 MF0221 SOFTWARE ENGINEERING Musumeci Marialessia INF/01 All VERCELLI 6 Lessons schedule
3 MF0224 Web applications: architectures and languages Mantovani Daniele INF/01 All VERCELLI 6 Lessons schedule
Data synched: 04/07/2020, 01:10