Offerta Didattica
INGEGNERIA ELETTRONICA E INFORMATICA
FONDAMENTI DI INFORMATICA (annuale)
Classe di corso: L-8 - Ingegneria dell'informazione
AA: 2016/2017
Sedi: MESSINA
SSD | TAF | tipologia | frequenza | moduli |
---|---|---|---|---|
ING-INF/05 | Caratterizzante | Libera | Libera | Sì |
CFU | CFU LEZ | CFU LAB | CFU ESE | ORE | ORE LEZ | ORE LAB | ORE ESE |
---|---|---|---|---|---|---|---|
12 | 9 | 0 | 3 | 120 | 72 | 0 | 48 |
LegendaCFU: n. crediti dell’insegnamento CFU LEZ: n. cfu di lezione in aula CFU LAB: n. cfu di laboratorio CFU ESE: n. cfu di esercitazione FREQUENZA:Libera/Obbligatoria MODULI:SI - L'insegnamento prevede la suddivisione in moduli, NO - non sono previsti moduli ORE: n. ore programmate ORE LEZ: n. ore programmate di lezione in aula ORE LAB: n. ore programmate di laboratorio ORE ESE: n. ore programmate di esercitazione SSD:sigla del settore scientifico disciplinare dell’insegnamento TAF:sigla della tipologia di attività formativa TIPOLOGIA:LEZ - lezioni frontali, ESE - esercitazioni, LAB - laboratorio
Obiettivi Formativi
Il corso ha l'obiettivo di fornire le conoscenze di base degli aspetti teorici e pratici dell'informatica e di introdurre gli studenti alla programmazione attraverso il linguaggio C.Learning Goals
The goal of the course is to provide basic knowledge about theoretical and practical aspects of computer science and to introduce students to programming through the C language.Metodi didattici
Lezioni frontali ed esercitazioni al calcolatore.Teaching Methods
Classroom-taught lessons and practice exercises with the computer.Prerequisiti
Nessuno.Prerequisites
None.Verifiche dell'apprendimento
Prova di programmazione al calcolatore e esame orale.Assessment
Computer programming test and oral exam.Programma del Corso
- Introduzione all'informatica. Il calcolatore elettronico, macchina di Von Neumann. Gerarchie di memorie. - Sistemi numerici posizionali. Sistema binario. Conversioni di base. Operatori aritmetici nel sistema binario. Overflow. - Algoritmi, dati ed istruzioni, programmazione strutturata, Teorema di Böhm-Jacopini. - Codifica degli algoritmi, linguaggio naturale, linguaggio di programmazione, pseudo-codice. Diagramma a blocchi e di flusso. - Algebra booleana: tabelle di verità, principali operatori e loro proprietà. - Linguaggi e grammatiche. Grammatiche formali. Grammatica Backus-NaurForm(BNF). Sintassi e semantica. - Linguaggi di programmazione: linguaggio macchina, Assembler, linguaggi di alto livello. Compilatori ed interpreti. Compilatori per linguaggio C, GCC. - Caratteristiche del linguaggio C, struttura di un programma C, principali librerie. - Tipi di dato, tipi elementari. Stringhe e I/O da terminale. Operatori ed espressioni, precedenza ed associatività, overloading degli operatori, conversioni di tipo. - Istruzioni semplici, istruzioni di controllo, blocchi, regole di visibilità. Costrutto IF e costrutto SWITCH-CASE. - Costrutti WHILE, DO-WHILE, FOR. - Tipi di dato strutturato in C. Array: definizione, operatori, inizializzazione. - Gestione della memoria, Heap. Puntatori e loro operatori. Implementazione di array con puntatore. - Le strutture. Tipi enumerativi. Le unioni. Tipi di dato definiti dall'utente. - Le funzioni. Passaggio dei parametri per valore e per riferimento, utilizzo dei puntatori. - Gestione dei file, file di testo e binari, canali standard, uso dei buffer. - Algoritmi ricorsivi: funzioni ricorsive e parametri di funzioni ricorsive in C, condizione di terminazione, esempi di algoritmi ricorsivi e loro implementazione in C. - Calcolo della complessità: introduzione alla valutazione della complessità di un algoritmo, utilizzo di espressioni asintotiche per esprimere la complessità computazionale di un algoritmo e loro proprietà e regole. - Complessità computazionale di operazioni semplici, cicli e funzioni (ricorsive e non). - Esempi di calcolo di complessità computazionale di programmi in C. - Ricerca e ordinamento in strutture dati semplici. Algoritmi di ricerca: ricerca sequenziale e ricerca binaria. Loro implementazione in C e calcolo della loro complessità computazionale. - Algoritmi di ordinamento semplici e evoluti: Bubble sort, Selection sort, Insertion sort, Shell sort, Quick sort, Merge sort. Loro implementazione in C e calcolo della relativa complessità computazionale. - Tipi di dato astratto: liste, pile e code. Liste concatenate: ricerca, inserimento in testa, in coda e ordinato, cancellazione. Liste doppiamente concatenate: ricerca, inserimento in testa, in coda e ordinato, cancellazione. - Implementazione delle liste tramite array collegati e tramite allocazione dinamica della memoria e puntatori in C. - Implementazione di pile e code con liste concatenate e con array monodimensionali in C. Code circolari. Operazioni di push, pop e peak. Operazioni di enqueue e dequeue. - Strutture dati complesso: grafi e alberi. Definizione di grafo. Grafi orientati e non orientati. Rappresentazione dei grafi con matrici di adiacenza e liste di adiacenza in C. - Algoritmi di attraversamento dei grafi: in ampiezza e in profondità. Loro implementazione in C. - Definizione di albero come grafo aciclico. Definizione di albero binario, algoritmi di attraversamento e loro implementazione in C. - Definizione di albero binario di ricerca. Algoritmi di creazione, inserimento ordinato, cancellazione, ricerca e loro implementazione in C.Course Syllabus
- Introduction to computer science. Von Neumann model. Memory hierarchies. - Binary system. Conversions. Arithmetic operators. Overflow. - The notion of algorithm. Bohm-Jacopini theorem. - Natural languages, programming languages, pseudo-code. - Introduction to Boolean algebra. - Formal grammar. Backus-Naur Form (BNF). - Machine language, Assembler, high-level languages. Compilers and interpreters. Introduction to GCC. - Basics of C language. - IF and SWITCH-CASE constructs. - WHILE, DO-WHILE, and FOR constructs. - Arrays, pointers and their operators. Structures and enumerations. Unions. Use of Typedef. - Functions. Differences between passage of parameters by value and by reference. - File management. Text and binary files. - Recursive algorithms. Examples. - Computational complexity theory. Computation complexity of simple instructions, cycles, functions (ricorsive and not). Examples. - Search and sorting algorithms. Sequential and binary search. Bubble sort, Selection sort, Insertion sort, Shell sort, Quick sort, Merge sort. Their C implementations and their computational complexity. - Abstract data types: lists, stacks, queues. Their C implementation. Main related algorithms and their C implementation. - Graphs and trees. Their C implementation. Main related algorithms and their C implementation.Testi di riferimento: A. Bellini, A. Guidi, “Linguaggio C – guida alla programmazione”, McGraw-Hill oppure B. Kernighan, D. Ritchie, “Il Linguaggio C”, Pearson - Prentice Hall oppure N. Wirth, “Algoritmi + Strutture Dati = Programmi”, Tecniche Nuove
Esami: Elenco degli appelli
Elenco delle unità didattiche costituenti l'insegnamento
FONDAMENTI DI INFORMATICA A
Docente: FRANCESCO LONGO
Orario di Ricevimento - FRANCESCO LONGO
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Martedì | 15:00 | 16:00 | 7° piano blocco B del Dipartimento di Ingegneria |
Giovedì | 15:00 | 16:00 | 7° piano blocco B del Dipartimento di Ingegneria |
Note:
FONDAMENTI DI INFORMATICA B
Docente: FRANCESCO LONGO
Orario di Ricevimento - FRANCESCO LONGO
Giorno | Ora inizio | Ora fine | Luogo |
---|---|---|---|
Martedì | 15:00 | 16:00 | 7° piano blocco B del Dipartimento di Ingegneria |
Giovedì | 15:00 | 16:00 | 7° piano blocco B del Dipartimento di Ingegneria |
Note: