logo-polimi
Loading...
Bibliographic resources
Bibliography mandatory
Bibliography not mandatory
Summary Teaching Assignment
Academic Year 2019/2020
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, Caglioti Vincenzo, Matera Maristella, Mirandola Raffaela, Miele Antonio Rosario, Loiacono Daniele, Braga Daniele Maria, Negri Mauro

Programme Track From (included) To (excluded) Course
Ing Ind - Inf (1 liv.)(ord. 270) - MI (349) INGEGNERIA ELETTRICA*COMFEI082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (1 liv.)(ord. 270) - MI (355) INGEGNERIA DELL'AUTOMAZIONE*COMFEI082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (1 liv.)(ord. 270) - MI (357) INGEGNERIA ELETTRONICA*COMFEI082746 - FONDAMENTI DI INFORMATICA
Ing Ind - Inf (1 liv.)(ord. 270) - MI (358) INGEGNERIA INFORMATICAI1ACOMFEI082746 - FONDAMENTI DI INFORMATICA
I1TCOMFEI082746 - FONDAMENTI DI INFORMATICA
IT1COMFEI082746 - FONDAMENTI DI INFORMATICA

Goals

Corso di introduzione agli aspetti fondamentali dell’informatica, ossia alla risoluzione dei problemi e alla programmazione in linguaggio C, con riferimento all’architettura di massima dei sistemi di calcolo. L’obiettivo del corso è fare in modo che lo studente/la studentessa sia in grado di risolvere problemi mediante lo sviluppo di programmi, avendo acquisito le conoscenze di base (tecniche di astrazione, tipi di dati fondamentali e strutture di controllo, sottoprogrammi, strutture dati dinamiche, cenni di programmazione modulare e cenni di ricorsione). L’attenzione è posta in egual misura agli aspetti concettuali e a quelli sperimentali. L'insegnamento non adotta modalità di didattica innovativa.


Expected learning outcomes

DdD1. Conoscenza e comprensione

  • Comprensione dei meccanismi di codifica dell’informazione all’interno di un calcolatore
  • Conoscenza degli elementi basilari dell’architettura di un calcolatore
  • Comprensione degli elementi di sintassi e semantica del linguaggio di programmazione C
  • Conoscenza dei principali costrutti usati nei linguaggi di programmazione imperativi per la rappresentazione e manipolazione dei dati

DdD2. Capacità di applicare conoscenze e comprensione

  • Progettazione di strutture dati nella memoria del calcolatore allo scopo di rappresentare efficacemente i dati di uno specifico problema
  • Progettazione di semplici algoritmi a partire dalla specifica di un problema
  • Realizzazione dell’algoritmo mediante un programma in linguaggio C
  • Selezione di schemi di computazione noti e loro applicazione per la soluzione di nuovi problemi

DdD3. Autonomia di giudizio

  • Valutazione della correttezza degli algoritmi progettati
  • Individuazione di strutture dati e algoritmi più adatti a specifici problemi
  • Confronto benefici e svantaggi di diversi approcci algoritmici alla soluzione di un problema dato

DdD5. Capacità di apprendimento

  • Essere in grado di apprendere nuovi linguaggi e paradigmi di programmazione
  • Essere in grado di utilizzare le conoscenze e competenze apprese per affrontare in maniera metodologica problemi complessi

Topics
  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, 16, notazione in 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, 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: sottoprogrammi come astrazione per la realizzazione modulare dei programmi, 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 è facoltativa e costituisce un’attività particolarmente importante ai fini dell’apprendimento della materia.

L'insegnamento non adotta modalità di didattica innovativa.


Pre-requisites

Nozioni di base sulle caratteristiche e l'uso del personal computer: interfaccia utente, Internet (uso del browser), posta elettronica.


Assessment

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

  • la risoluzione di problemi numerici sulla codifica dell’informazione (Descrittore Dublino DdD1);
  • domande di carattere teorico a risposta aperta (Descrittori Dublino DdD1, DdD2,DdD3,DdD5);
  • progettazione di semplici strutture dati e algoritmi (Descrittore Dublino DdD2);
  • identificazione e valutazione di algoritmi alternativi per risolvere un problema dato (Descrittore Dublino DdD3);
  • implementazione di programmi in linguaggio C (Descrittori Dublino DdD1, DdD2, DdD3, DdD5).

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


Bibliography
Risorsa bibliografica facoltativaKim N. King, Programmazione in C, Editore: Apogeo
Risorsa bibliografica facoltativaP. Deitel, H Deitel, IL linguaggio C, Editore: Pearson
Risorsa bibliografica facoltativaJeri R. Hanly, Elliot B. Koffmann, Problem solving e programmazione in C, Editore: Apogeo
Risorsa bibliografica facoltativaIra Pohl, Al Kelley, C: didattica e programmazione, Editore: Pearson

Software used
No software required

Learning format(s)
Type of didactic form Ore di attività svolte in aula
(hh:mm)
Ore di studio autonome
(hh:mm)
Lesson
52:00
78:00
Training
40:00
60:00
Computer Laboratory
16:00
4:00
Experimental Laboratory
0:00
0:00
Project Laboratory
0:00
0:00
Total 108:00 142:00

Information in English to support internationalization
Course offered in Italian
Textbook/Bibliography available in English
Support available in English
schedaincarico v. 1.10.0 / 1.10.0
Area Servizi ICT
25/07/2024