logo-polimi
Loading...
Bibliographic resources
Bibliography mandatory
Bibliography not mandatory
Summary Teaching Assignment
Academic Year 2014/2015
School School of Industrial and Information Engineering
Course 082746 - FUNDAMENTALS OF COMPUTER SCIENCE
Cfu 10.00 Type of Course Mono-Disciplinary Course
Lecturers: Titolare (Co-titolari) Bolchini Cristiana, Bruschi Francesco, Negri Mauro

Programme Track From (included) To (excluded) Course
Ing Ind - Inf (1 liv.)(ord. 270) - MI (358) INGEGNERIA INFORMATICAI1AAE082746 - FONDAMENTI DI INFORMATICA
082823 - COMPLEMENTI DI INFORMATICA

Detailed program and learning outcomes

Obiettivi del corso di Fondamenti di Informatica

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.

 

Programma delle lezioni e delle esercitazioni

1. Concetti introduttivi: Algoritmi, programmi e linguaggi - Struttura di massima di un calcolatore e di un sistema informatico (hardware, software, Sistema Operativo, reti) - 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, 16, complemento alla base 2: codifica e aritmetica), codifica dei numeri reali, codifica di caratteri e dati multimediali). Cenni di aritmetica binaria.

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,puntatori), 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.

7. I processi e le funzioni per la loro gestione: creazione dei processi, spazio di memoria e contesto di un processo (semplificato), esecuzione programmi e controllo variabili e sincronizzazione padre e figli.

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. 

Per l'attività di laboratorio gli studenti saranno divisi in squadre, che svolgono lo stesso lavoro.

La valutazione dallo studente viene effettuata sul complesso del lavoro svolto e deriva dalla frequente interazione informale docente/discente. Ogni sessione di laboratorio costituisce pertanto un momento congiunto di didattica e di valutazione. La frequenza al laboratorio assume pertanto una particolare importanza.

 

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.


Notes on methods of assessing

L’esame prevede una verifica scritta con eventuale discussione orale su richiesta del docente. Durante l'anno si terranno due prove in itinere il cui superamento sostituisce la prova scritta.

L'attività di laboratorio viene svolta solo nel semestre del corso e non prevede recupero: per conseguire una valutazione che contribuisca al punteggio finale è necessario dimostrare di saper risolvere semplici problemi mediante lo sviluppo di un programma e la sua esecuzione.

La prova d'esame e la valutazione del laboratorio contribuiscono indicativamente al voto finale nel seguente modo

90% verifica scritta (prove in itinere o appello singolo)

10% attività di laboratorio


Bibliography
Risorsa bibliografica facoltativaS.Ceri, D.Mandrioli, et al, Informatica: Programmazione
Risorsa bibliografica facoltativaA. Bellini, A. Guidi, Linguaggio C - Guida alla programmazione
Risorsa bibliografica facoltativaB. Kernighan, D. Ritchie, Linguaggio C [ANSI C]
Risorsa bibliografica facoltativaS.Ceri, D.Mandrioli, et al, Informatica: arte e mestiere
Risorsa bibliografica facoltativaD. Braga, D. Martinenghi, Fondamenti di Informatica: Esercizi tratti da Temi d'Esame
Risorsa bibliografica facoltativaKim N. King, Programmazione in C, Editore: Apogeo, ISBN: 8850328699
Risorsa bibliografica facoltativaJeri R. Hanly, Elliot B. Koffmann, Problem solving e programmazione in C, Editore: Apogeo, Anno edizione: 2013, ISBN: 8838786410

Software used
No software required

Didactic forms
Type of didactic form Teaching hours
lesson
54.0
training
40.0
computer laboratory
20.0
experimental laboratory
0.0
project
0.0
project laboratory
0.0

Information in English to support internationalization
Course offered in Italian
It is possible to take the examination in English
Support available in English
schedaincarico v. 1.10.0 / 1.10.0
Area Servizi ICT
15/07/2024