mail unicampaniaunicampania webcerca

    Stefano MARRONE

    Insegnamento di FONDAMENTI DI INFORMATICA

    Corso di laurea in MATEMATICA

    SSD: INF/01

    CFU: 8,00

    ORE PER UNITÀ DIDATTICA: 72,00

    Periodo di Erogazione: Primo Semestre

    Italiano

    Lingua di insegnamento

    ITALIANO

    Contenuti

    Principi di architettura e di programmazione dei calcolatori elettronici

    Testi di riferimento

    Linguaggio C - Alessandro Bellini, Andrea Guidi - McGraw-Hill Education
    Brian Kernighan e Dennis Ritchie, Il linguaggio C: principi di programmazione e manuale di riferimento - Pearson
    Dispense del docente

    Obiettivi formativi

    Conoscenza e capacità di comprensione (knowledge and understanding):
    Conoscenze dei principi dell’informatica e della programmazione dei calcolatori elettronici nel calcolo scientifico. Introduzione ad un linguaggio di programmazione imperativo (linguaggio C).

    Capacità di applicare conoscenza e comprensione (applying knowledge and understanding):
    Capacità di analizzare semplici problemi e di progettare algoritmi per la loro risoluzione automatica. Capacità di implementare tali algoritmi in programmi e di usare gli strumenti software adeguati (editor, compilatori, linker, etc.)

    Abilità comunicative (communication skills):
    Capacità di motivare le scelte progettuali ed implementative in modo logico ed argomentato. Capacità di usare la terminologia propria dell’informatica e della programmazione.

    Al termine dell'insegnamento lo studente dovrà dimostrare:
    - di saper progettare programmi e funzioni per la soluzione di semplici problemi;
    - di saper far uso di cicli, funzioni e tipi di dato sia statici che dinamici;
    - capire come funziona un semplice programma e verificarne la correttezza;
    - di avere compreso i meccanismi di base del funzionamento di un calcolatore elettronico.

    Prerequisiti

    Nessuno

    Metodologie didattiche

    40 ore di lezione, 36 ore di attività di laboratorio. Data la presenza di una prova d’esame pratica è consigliata la frequenza alle lezioni di laboratorio.

    Metodi di valutazione

    L’esame si compone di due prove: una prova al calcolatore ed una prova orale.
    La prova al calcolatore mira ad accertarsi delle competenze legate all’analisi ed allo sviluppo di programmi in C. Si chiederà lo sviluppo di semplici programmi o porzioni di essi: la prova viene superata se i programmi sono scritti in modo corretto e soddisfano i requisiti richiesti dalla traccia.
    La prova orale mira a valutare ulteriori capacità di programmazione e la verifica delle conoscenze dello studente anche attraverso il collegamento di contenuti trasversali e la capacità espositiva.
    Non sono previste prove di esonero durante il corso.
    Il voto finale sarà espresso in trentesimi.

    Altre informazioni



    Programma del corso

    PROGRAMMA

    Introduzione
    Concetto di elaborazione e di algoritmo, esecutori di algoritmi. Algebra di Boole. Automi a stati finiti e macchina di Turing. Modello funzionale di Von Neumann, programmi e dati di un elaboratore. Informazione, valore e dato. Codifica e decodifica dei dati: codifica binaria, conversioni di basi decimale-binario (da e verso decimale). Conversioni binario-esadecimale.

    Elementi di architettura
    Architettura dei calcolatori: memoria, processore, I/O, bus. Memorie cache. Linguaggio Macchina ed assemblativo. Compilazione ed interpretazione. Sistemi Operativi: funzionalità, struttura e sottoelementi. Il sistema operativo Unix: principali comandi da terminale, editing di file, compilazione C sotto Unix.

    Concetti fondamentali di programmazione
    Il linguaggio di programmazione C. I dati nella programmazione: concetto di variabile e tipo di dato. Tipo intero (rappresentazione segno e modulo e rappresentazione complemento a due). Tipo reale: sistemi floating point. Tipo booleano. Tipo carattere. Dichiarazione ed uso delle variabili. Operatori logico-aritmetici. Operatori di flusso di controllo: sequenza, selezione (IF, IF-ELSE, SWITCH), iterazioni (FOR, WHILE, DO-WHILE).

    Tipi di dato
    Concetto di array: i vettori come array monodimensionali. Le matrici come array bidimensionali. Algoritmi notevoli: ricerca (sequenziale, binaria) e ordinamento (bubble sort). I puntatori in C: assegnazione ed uso dei puntatori a variabile semplice. Allocazione dinamica di array. Gestione stringhe in C. Lettura e scrittura di file.

    Procedure e funzioni
    Concetto di sottoprogramma: procedure e funzioni. Schemi di passaggio dei parametri. Parametri di
    ingresso/uscita. Concetto di ricorsione.

    English

    Teaching language

    Italian

    Contents

    Principles of architecture and programming of electronic calculators

    Textbook and course materials

    Linguaggio C - Alessandro Bellini, Andrea Guidi - McGraw-Hill Education
    Brian Kernighan e Dennis Ritchie, Il linguaggio C: principi di programmazione e manuale di riferimento - Pearson
    Dispense del docente

    Course objectives

    Knowledge and understanding (knowledge and understanding):
    Knowledge of the principles of informatics and programming of electronic calculators in scientific calculation. Introduction to an imperative programming language (C language).

    Ability to apply knowledge and understanding (applying knowledge and understanding):
    Ability to analyze simple problems and to design algorithms for their automatic resolution. Ability to implement these algorithms in programs and to use the appropriate software tools (editors, compilers, linkers, etc.)

    Communication skills (communication skills):
    Ability to motivate design and implementation choices in a logical and reasoned way. Ability to use the proper terminology of information technology and programming.

    At the end of the course the student must demonstrate:
    - to know how to design programs and functions for the solution of simple problems;
    - to know how to make use of cycles, functions and types of data both static and dynamic;
    - understand how a simple program works and verify its correctness;
    - to have understood the basic mechanisms of the functioning of an electronic calculator.

    Prerequisites

    None

    Teaching methods

    40 hours of lessons, 36 hours of laboratory activities. Given the presence of a practical exam, it is recommended to attend laboratory classes.

    Evaluation methods

    The exam consists of two tests: a computer test and an oral exam.
    The computer test aims at ascertaining the skills related to the analysis and development of C programs. We will ask for the development of simple programs or portions of them: the test is passed if the programs are written correctly and meet the required requirements from the track.
    The oral exam aims to evaluate further programming skills and the verification of the student's knowledge also through the connection of transversal contents and the exhibition capacity.
    No exoneration tests are scheduled during the course.
    The final mark will be expressed in thirtieths.

    Other information



    Course Syllabus

    PROGRAM

    Introduction
    Concept of processing and algorithm, algorithm executors. Boole's algebra. Finite state automata and Turing machine. Functional model of Von Neumann, programs and data of a computer. Information, value and data. Encoding and decoding of data: binary coding, conversion of decimal-binary bases (from and to decimal). Binary-hexadecimal conversion.

    Elements of architecture
    Computer architecture: memory, processor, I / O, bus. Cache memories. Machine and assembly language. Compilation and interpretation. Operating Systems: functionality, structure and sub-elements. Unix operating system: main terminal commands, file editing, C compiling under Unix.

    Fundamental planning concepts
    The programming language C. Data in programming: concept of variable and data type. Integer type (sign and form representation and two's complement representation). Real type: floating point systems. Boolean type. Font type. Declaration and use of variables. Logic-arithmetic operators. Control flow operators: sequence, selection (IF, IF-ELSE, SWITCH), iterations (FOR, WHILE, DO-WHILE).

    Types of data
    Array concept: vectors as one-dimensional arrays. Arrays as two-dimensional arrays. Notable algorithms: search (sequential, binary) and sorting (bubble sort). Pointers in C: assignment and use of simple-variable pointers. Dynamic array allocation. String management in C. Reading and writing files.

    Procedures and functions
    Subprogram concept: procedures and functions. Parameters for passing parameters. Parameters of
    input / output. Recursion concept.

    facebook logoinstagram buttonyoutube logotype