logo-polimi
Loading...
Risorse bibliografiche
Risorsa bibliografica obbligatoria
Risorsa bibliografica facoltativa
Scheda Riassuntiva
Anno Accademico 2019/2020
Scuola Scuola di Ingegneria Industriale e dell'Informazione
Insegnamento 082746 - FONDAMENTI DI INFORMATICA
Docente Baresi Luciano
Cfu 10.00 Tipo insegnamento Monodisciplinare

Corso di Studi Codice Piano di Studio preventivamente approvato Da (compreso) A (escluso) Insegnamento
Ing Ind - Inf (1 liv.)(ord. 270) - CR (368) INGEGNERIA GESTIONALE*AZZZZ082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (1 liv.)(ord. 270) - MI (358) INGEGNERIA INFORMATICAI1CAZZZZ082746 - FONDAMENTI DI INFORMATICA
ICRAZZZZ082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (Mag.)(ord. 270) - CR (263) MUSIC AND ACOUSTIC ENGINEERING*AZZZZ082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (Mag.)(ord. 270) - MI (481) COMPUTER SCIENCE AND ENGINEERING - INGEGNERIA INFORMATICA*AZZZZ052183 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

Obiettivi dell'insegnamento

Presentare allo studente gli aspetti fondamentali dell'informatica (algoritmi, programmi, struttura di massima dei calcolatori e dei sistemi informatici). Impartire nozioni basilari sulla programmazione dei calcolatori (linguaggi di programmazione, tecniche di astrazione, tipi di dati fondamentali e strutture di controllo, sottoprogrammi e ricorsione, strutture dati dinamiche, cenni sulla programmazione modulare) approfondendone in egual misura gli aspetti concettuali e sperimentali. L'insegnamento non adotta modalità di didattica innovativa.


Risultati di apprendimento attesi

Knowledge and understanding

- Comprendere i meccanismi di codifica dell’informazione all’interno di un calcolatore

- Conoscere gli elementi basilari dell’architettura di un calcolatore

- Comprendere gli elementi sintattici e la semantica di un linguaggio di programmazione

- Conoscere i principali costrutti usati nei linguaggi di programmazione imperativi per la rappresentazione e la manipolazione dati

Applying knowledge and understanding

- Progettare le strutture dati nella memoria del calcolatore allo scopo di rappresentare efficacemente i dati di uno specifico problema

- Progettare semplici algoritmi a partire dalla specifica di un problema

- Selezionare schemi di computazione noti e applicarli per la soluzione di nuovi problemi

- Implementare algoritmi in linguaggio C

Making judgements

- Valutare la correttezza degli algoritmi progettati

- Individuare le strutture da e gli algoritmi più adatti a specifici problemi

- Confrontare i benefici e gli svantaggi di diversi approcci algoritmici alla soluzione di un problema dato (e.g., approccio ricorsivo rispetto ad un approccio iterativo)

Lifelong learning skills

- Essere in grado di apprendere nuovi linguaggi e paradigmi di programmazione

- Essere in grado di ulizzare le conoscenze e competenze apprese per affrontare in maniera metodologica problemi complessi


Argomenti trattati

1. Concetti introduttivi: Algoritmi, programmi e linguaggi - Struttura di massima di un calcolatore e di un sistema informatico (hardware, software, Sistema Operativo) Catena di programmazione.

2. Logica e codifica binaria dell’informazione (logica proposizionale, operatori logici AND, OR, NOT, leggi di De Morgan), rappresentazione dei numeri interi (base 2, 8, 1 complemento alla base 2), aritmetica binaria, rappresentazione dei numeri reali (notazione in virgola fissa e in virgola mobile), codifica dei caratteri.

3. Aspetti fondamentali della programmazione (con riferimento al linguaggio C): il linguaggio di programmazione e le esigenze di astrazione, la sintassi dei linguaggi, struttura di un programma monomodulo, astrazione sui dati (concetto di tipo e tipi base del linguaggio, operatori e compatibilità, i costruttori di tipo array, struct, puntatore, astrazione sul controllo dell'esecuzione (strutture di controllo condizionali, di selezione, iterative).

4. Sottoprogrammi e ricorsione: sottoprogrammi come astrazione sul controllo a livello di unità, passaggio dei parametri, dati locali, regole di visibilità, sviluppo top-down per raffinamento, ricorsione, supporto a run-time per la gestione della chiamata e ritorno da sottoprogramma (record di attivazione, stack e stack pointer).

5. Strutture dati dinamiche, liste collegate a puntatori.

6. Strutture dati persistenti: i file (concetti, operazioni, organizzazione logica), integrazione tra strutture dati in memoria centrale e su file.

Attività di laboratorio
L’attività del laboratorio ha lo scopo di rendere familiare allo studente sia l’utilizzo pratico del calcolatore sia i metodi e le tecniche utilizzate nella programmazione dei calcolatori. La frequenza al laboratorio, sebbene non obbligatoria, assume una particolare importanza ai fini dell’apprendimento della materia.

L'insegnamento non adotta modalità di didattica innovativa.

 

 


Prerequisiti

Nozioni di base sulle caratteristiche e l'uso del personal computer: componenti della macchina, interfaccia utente, Internet (uso del browser), posta elettronica, applicativi di videoscrittura e fogli elettronici.


Modalità di valutazione

L’esame prevede una verifica scritta su tutti gli argomenti dell'insegnamento. In particolare, l'esame prevede:

- la risoluzione di problemi numerici (codifica dell’informazione);

- domande di carattere teorico a risposta aperta;

Esercizi di tipo progettuale:

- progettazione di semplici strutture dati

- identificazione e valutazione di algoritmi alternativi per risolvere un problema dato

- implementazione di un algoritmo in linguaggio C

L'attività di laboratorio non contribuisce alla valutazione dell'esame.


Bibliografia
Risorsa bibliografica facoltativaS.Ceri, D.Mandrioli, et al, Informatica: Programmazione
Risorsa bibliografica facoltativaS.Ceri, D.Mandrioli, et al, Informatica: arte e mestiere
Risorsa bibliografica facoltativaA. Bellini, A. Guidi, Linguaggio C - Guida alla programmazione

Software utilizzato
Nessun software richiesto

Forme didattiche
Tipo Forma Didattica Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lezione
48:00
90:00
Esercitazione
40:00
60:00
Laboratorio Informatico
12:00
0:00
Laboratorio Sperimentale
0:00
0:00
Laboratorio Di Progetto
0:00
0:00
Totale 100:00 150:00

Informazioni in lingua inglese a supporto dell'internazionalizzazione
Insegnamento erogato in lingua Italiano
Possibilità di sostenere l'esame in lingua inglese
Disponibilità di supporto didattico in lingua inglese
schedaincarico v. 1.8.3 / 1.8.3
Area Servizi ICT
03/10/2023