Scheda programma d'esame
FONDAMENTI DI INFORMATICA E CALCOLATORI - AN
CINZIA BERNARDESCHI
Anno accademico2023/24
CdSINGEGNERIA DELLE TELECOMUNICAZIONI
Codice1157I
CFU12
PeriodoAnnuale
LinguaItaliano

ModuliSettore/iTipoOreDocente/i
CALCOLATORI - ANING-INF/05LEZIONI60
MARCO AVVENUTI unimap
FONDAMENTI DI INFORMATICA - ANING-INF/05LEZIONI60
CINZIA BERNARDESCHI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Al termine del corso, lo studente:

  • avrà acquisito conoscenze sui principi della programmazione strutturata in un linguaggio di alto livello; e su un sottoinsieme significativo del linguaggio di programmazione  C++
  • avrà acquisito conoscenze relative all'architettura di un calcolatore e all'organizzazione e alle tecniche utilizzate in un sistema operativo multiprogrammato
  • avrà le basi concettuali per acquisire ulteriori conoscenze su specifici sistemi operativi, inclusi sistemi embedded e sistemi in tempo reale
Knowledge

Upon completion of the course, the student will:

  • have acquired  fundamentals of problem solving  in computer programming; and a relevant subset of the programming language  C++
  • have acquired knowledge related to the architecture of a computer and the organization and techniques used in a multiprogrammed operating system
  • have the conceptual basis to gain further knowledge about specific operating systems, including embedded systems and real-time systems.
Modalità di verifica delle conoscenze
  • Durante le lezioni e le esercitazioni, gli studenti saranno coinvolti nel proporre una soluzione ai problemi individuati dal docente
  • L'accertamento finale delle conoscenze sarà svolto tramite una prova orale, durante la quale lo studente sarà valutato per la sua capacità di comprendere, presentare e risolvere le problematiche relative ai sistemi operativi, usando una terminologia appropriata
Assessment criteria of knowledge
  • During lectures and exercises, students will be involved in proposing a solution to problems identified by the lecturer
  • The final assessment of knowledge will be conducted through an oral test, during which the student will be evaluated for his or her ability to understand, present and solve problems related to operating systems, using appropriate terminology.
Capacità

Al termine del corso, lo studente:

  • avrà sviluppato la capacità di analisi di un problema informatico,  di identificazione  di procedimenti risolutivi (algoritmi)  e di scrittura di programmi utilizzando correttamente un linguaggio  di programmazione.
  • saprà svolgere le funzioni fondamentali di amministratore di un sistema operativo UNIX-based
Skills

By the end of the course:

  • students will develop capabilities on  understanding a computer programming problem,  designing an algorithm to solve it  and write the program using a programming language.
  • students will be able to perform the basic functions of administrator in a UNIX-based operating system
Modalità di verifica delle capacità
  • Durante le lezioni in laboratorio, lo studente verrà stimolato a risolvere esercizi ed eseguire programmi, sulla base di quesiti e template forniti dal docente
  • La verifica finale avverrà in sede di esame, eventualmente richiedendo allo studente di svolgere alcuni esercizi in forma scritta
Assessment criteria of skills
  • During laboratory classes, the student will be challenged to solve exercises and execute programs, based on questions and templates provided by the instructor
  • Final verification will take place in the exam, possibly requiring the student to perform some exercises in written form.
Comportamenti

Lo studente verrà stimolato ad usare un linguaggio tecnico non ambiguo nel definire un problema, e ad esercitare un motivato spirito critico nel descrivere e analizzare le soluzioni.

Behaviors

The student will be stimulated to use unambiguous technical language in defining a problem, and to exercise a motivated critical spirit in describing and analyzing solutions.

Modalità di verifica dei comportamenti

Durante l'esame orale, lo studente dovrà rispondere ai quesiti seguendo uno schema "problema-soluzione-analisi", curando precisione e appropriatezza del linguaggio.

Assessment criteria of behaviors

During the oral examination, the student is expected to answer the questions following a "problem-solution-analysis" pattern, taking care of accuracy and appropriateness of language.

Prerequisiti (conoscenze iniziali)

Nessuno.

Prerequisites

None

Indicazioni metodologiche

Lezioni frontali, con ausilio di lavagna e slide. Esercitazioni in laboratorio con presenza di docente di supporto; si possono usare sia i PC delle aule informatiche, che i PC personali, se disponibili.

Teaching methods

Lectures, with the aid of blackboard and slides. Lab exercises with supporting lecturer present; either PCs in computer classrooms or personal PCs may be used if available.

Programma (contenuti dell'insegnamento)

Rappre­sentazione dell'informazione all'interno dei calcolatori: numeri naturali, numeri interi, numeri reali, testi. 

Fondamenti di programmazione: Il concetto di algoritmo. Il calcolatore come esecutore di algoritmi. Sintassi e semantica di un linguaggio di programmazione. Metodologie di programmazione strutturata e orientata alle procedure. Il linguaggio C++: tipi fondamentali. Istruzioni semplici, strutturate e di salto. Funzioni. Ricor­sione. Riferimenti e puntatori. Array. Strutture e unioni. Memoria libera. Visibilità e collegamento. Strutture dati: Liste, Code, Pile. Alcuni algoritmi di ricerca e di ordinamento.

Un ambiente di sviluppo per programmi in linguaggio C++:  Code::Blocks

 

Architettura del calcolatore. Modello di Von Neumann. Blocchi funzionali e loro collegamento. Organizzazione dello spazio di memoria e dello spazio di I/O. Tipo di transazioni sul bus. La CPU: registri generali, registri di stato (IP, PSW, SP). Il set di istruzioni del microprocessore mED: formato istruzioni, istruzioni operative, istruzioni di controllo, esempio di programma. Ciclo della CPU: fetch, decode, execute. Meccanismo di chiamata e ritorno da sottoprogramma. Meccanismo di interruzione: vettore di interruzione, gestione di interruzioni esterne. Gerarchia di memoria. Il DMA. Meccanismi di protezione.

Principali funzioni di un sistema operativo. Organizzazione di un sistema operativo. Cenni storici sull’evoluzione dei sistemi operativi. Struttura dei sistemi operativi multiprogrammati.

Gestione dei processi. Definizione di processo. Stati di un processo. Descrittore di un processo. Code di processi. Cambio di contesto. Creazione e terminazione dei processi. Interazione tra i processi. Richiami sul nucleo di un sistema a processi. Classificazione degli algoritmi di short-term scheduling e metriche per la loro valutazione (FCFS, SJF, SRTF, RR). Schedulazione di sistemi hard real-time (RM, EDF). Thread.

Sincronizzazione dei processi. Tipi di interazione tra processi. Competizione, cooperazione, interferenza. Ambiente globale e ambiente locale. Problema della mutua esclusione. Problemi della comunicazione: Produttori-Consumatori, Semafori: definizione e primitive wait() e signal(). Uso dei semafori per la soluzione dei problemi di mutua esclusione e della comunicazione. Il blocco critico: esempio con grafo possesso-attesa. Condizioni, prevenzione statica e dinamica, rilevamento e recupero.

Gestione della memoria. Aspetti caratterizzanti, la memoria virtuale, rilocazione statica e dinamica, Memory Management Unit, allocazione della memoria fisica. Tecniche di gestione della memoria: partizioni fisse e variabili, ricerca first-fit e best-fit, frammentazione esterna ed interna. Memoria segmentata. Stati swapped di un processo. Segmentazione a domanda. Memoria paginata. Meccanismo di traduzione degli indirizzi. Gestione di un page-fault. Algoritmi di rimpiazzamento: algoritmo second chance. Memoria segmentata e paginata.

Protezione e sicurezza. Modelli, politiche e meccanismi di protezione. Domini di protezione. Il modello matrice degli accessi. Realizzazione della matrice degli accessi. Sistema di sicurezza multilivello. Controllo degli accessi basato sui ruoli. 

Syllabus

Fundamentals of binary data representation : natural numbers, integers, real numbers and text.

Computer Programming Basicsthe notion of  algorithm, syntax and sematics of a programming language; structured programming paradigm. C++ Programming Language: data types, operators and expressions; control structures; arrays; pointers and references; functions; structures and unions;  dynamic memory allocation, input/output. Search and ordering algorithms. Modular programming technique. Introduction to classses.

 An integrated development environment for C++:Code::Blocks

Computer architecture. Von Neumann model. Function blocks and their connection. Organization of memory space and I/O space. Type of transactions on the bus. The CPU: general registers, status registers (IP, PSW, SP). The mED microprocessor instruction set: instruction format, operating instructions, control instructions, example program. CPU cycle: fetch, decode, execute. Mechanism of call and return from subprogram. Interrupt mechanism: interrupt vector, handling external interrupts. Memory hierarchy. DMA. Protection mechanisms.

Main functions of an operating system. Organization of an operating system. Historical background on the evolution of operating systems. Structure of multiprogrammed operating systems.

Process management. Definition of a process. States of a process. Descriptor of a process. Process queues. Change of context. Creation and termination of processes. Interaction between processes. Recalls on the core of a process system. Classification of short-term scheduling algorithms and metrics for their evaluation (FCFS, SJF, SRTF, RR). Scheduling of hard real-time systems (RM, EDF). Threads.

Synchronization of processes. Types of interaction between processes. Competition, cooperation, interference. Global environment and local environment. Problem of mutual exclusion. Communication problems: Producer-Consumer, Semaphores: definition and wait() and signal() primitives. Use of semaphores for solving mutual exclusion and communication problems. The critical block: example with possession-waiting graph. Conditions, static and dynamic prevention, detection and recovery.

Memory management. Characterizing aspects, virtual memory, static and dynamic relocation, Memory Management Unit, physical memory allocation. Memory management techniques: fixed and variable partitions, first-fit and best-fit search, external and internal fragmentation. Segmented memory. Swapped states of a process. Demand-driven segmentation. Paged memory. Address translation mechanism. Handling of a page-fault. Replacement algorithms: second chance algorithm. Segmented and paged memory.

Protection and security. Protection models, policies and mechanisms. Protection domains. The access matrix model. Implementation of the access matrix. Multilevel security system. Role-based access control.

Bibliografia e materiale didattico

Libri di testo:

  • P. Corsini, G. Frosini, Note su organizzazione di un calcolatore: rappresentazione dell'informazione, Edizioni ETS, Piazza Carrara, 16-19, Pisa, 2017.
  • A. Domenici, G. Frosini, Introduzione alla Programmazione ed Elementi di Strutture Dati con il Linguaggio C++, Franco Angeli, Milano, 2001

  • P. Ancilotti, M.  Boari, A .Ciampolini, G.Lipari, Sistemi Operativi, 2ed, Mc Graw-Hill. 
Bibliography

Textbook:

  • P. Corsini, G. Frosini, Note su organizzazione di un calcolatore: rappresentazione dell'informazione, Edizioni ETS, Piazza Carrara, 16-19, Pisa, 2017.
  • A. Domenici, G. Frosini, Introduzione alla Programmazione ed Elementi di Strutture Dati con il Linguaggio C++, Franco Angeli, Milano, 2001.

  • P. Ancilotti, M.  Boari, A .Ciampolini, G.Lipari, Sistemi Operativi, 2ed, Mc Graw-Hill. 
Modalità d'esame

L'esame è composto da

- una prova scritta, che consiste in un esercizio di programmazione 

- da una prova orale sul programma del corso.

Assessment methods

The final assessment consists of

- a written test, which consists in a program in C++

- and oral test.

 

Ultimo aggiornamento 25/10/2023 00:16