Fondamenti di Informatica - A.A. 2022-23

Scuola di Ingegneria Industriale e dell’Informazione

obiettivi del corso

Corso introduttivo alla risoluzione di problemi e programmazione in linguaggio C. L'obiettivo del corso è fare in modo che al termine lo studente sia in grado di:

  • individuare un algoritmo che risolve un problema e scrivere un programma in C che lo realizza, partendo da una specifica di un problema;
  • scrivere, leggere e comprendere un programma scritto in C;
  • compilare ed eseguire un programma scritto in C;
  • conoscere a grandi linee l'architettura di un sistema di calcolo, in termini di hardware e sistema operativo.

Queste conoscenze verranno in parte approfondite in corsi successivi.

informazioni generali

Cristiana Bolchini
Telefono: (02 2399) 3619
Email: cristiana . bolchini @ polimi . it

 

Isabella Poles
Email: isabella . poles @ polimi . it

orario del corso

lezione ed esercitazione

lunedì 10:15 - 12:15 | 3.0.3
martedì 10:15 - 13:15 | 9.0.1
giovedì 10:15 - 13:15 | T.2.1

 

ricevimento studenti

giovedì 14:00 - 16:00 (concordato)

esercitazione con il calcolatore (laboratorio)

venerdì 14:15 - 18:15 | T.1.1 (inizio ore 14:15)

Nota:

Le sessioni di laboratorio non si terranno tutti i venerdì ma nelle date qui riportate.

23/09* - 21/10 - 11/11 — 25/11 — 16/12.
*: lezione introduttiva all'ambiente di sviluppo (ambiente linux, compilatore gcc, debugger gdb).
La lezione è consigliata a coloro che non hanno mai utilizzato un ambiente di programmazione o sono abituati ad utilizzare ambienti di sviluppo integrati.

risorse

  • volantino del corso 
  • syllabus 
  • risorse
  • stile del codice   
  • il processo di compilazione 
  • rappresentazione dell'informazione 
  • numero reale: conversione IEEE754 > 10MS 
  • numero reale: conversione 10MS > IEEE754 
  • quale struttura dati 
  • argomenti da riga di comando 
  • cheatsheet unix/linux 
  • cheatsheet linguaggio C 
  • temi d'esame 
  • programma del corso

    Gli argomenti che verranno trattati all'interno del corso sono i seguenti:

    • Architettura calcolatore: hardware & sistema operativo
    • Rappresentazione/codifica dell'informazione e aritmetica
    • Introduzione agli algoritmi
    • Dall'algoritmo al programma (in linguaggio C)
    • Il linguaggio C (ANSI - 89)

    Un riepilogo degli argomenti trattati è riportato nel syllabus .

    testi di riferimento

    Manuali del linguaggio C (in alternativa tra loro)

    • Kim N. King, Programmazione in C, Apogeo *
    • Jeri R. Hanly, Elliot B. Koffman, Problem solving e programmazione in C, Apogeo **
    • H. M. Deitel, P. J. Deitel, C Corso completo di programmazione, Apogeo
    • Kernigham, Ritchie, Linguaggio C II edizione, Jackson Libri
    • qualsiasi libro

    * argomenti trattati in un ordine/modo simile a quanto fatto nel corso
    ** molto bello il modo di spiegare come individuare un algoritmo dato il problema da risolvere (parte di problem solving)

    modalità d'esame

    Riferite al regolamento didattico valido per tutti i corsi di Fondamenti di Informatica

    L'esame prevede una verifica scritta con eventuale discussione orale (esclusivamente nel caso di verifica scritta ampiamente sufficiente) su richiesta del docente.

    La prova si svolge senza l'uso del calcolatore.

    attività di laboratorio ¬ esercizi con il calcolatore

    L'attività di laboratorio consiste nello svolgimento autonomo di esercizi. Non si tratta di un'esercitazione guidata, quanto di un momento in cui ogni studente in modo autonomo risolve gli esercizi proposti e chiede aiuto nel caso in cui si trovi in difficoltà al responsabile o ai tutor. Si tratta di un'opportunità per risolvere problemi simili a quelli proposti in aula durante le lezioni ed esercitazioni (talvolta un po' più articolati vista la modalità di lavoro e il tempo a disposizione) avendo la possibilità di essere supportati.
    Lo studente può anche risolvere esercizi diversi da quelli proposti (esercizi presentati a lezione e/o esercitazione, o tratti da precedenti temi d'esame), purchè inerenti il corso.
    Ad ogni sessione di laboratorio viene proposta una lista di esercizi che coprono gli argomenti trattati in aula fino a quel momento, pertanto è opportuno aver studiato tali argomenti per utilizzare al meglio il tempo e beneficiare della presenza di persone competenti.

    Sono previste 4 sessioni: nei giorni in cui non c'è attività di laboratorio, a meno che non venga comunicato diversamente (ad esempio per recuperare ore perse a causa di sospensioni) non c'è alcun altro tipo di didattica.

    Sebbene la prova d'esame si svolga risolvendo esercizi senza l'uso del calcolatore, lo studente al termine del corso deve essere in grado di scrivere il programma, compilarlo ed eseguirlo. Questa capacità non viene direttamente valutata durante le sessioni di laboratorio, ma emerge comunque dalla prova scritta. Si suggerisce quindi di frequentare le sessioni e compilare ed eseguire sempre gli esercizi proposti in aula.

    ambiente di sviluppo: linux/unix

    In laboratorio l'ambiente di sviluppo adottato (consigliato anche a fronte dei corsi degli anni successivi) è un ambiente linux, dove il codice viene compilato ed eseguito da linea di comando.

    • editor: nessuna IDE (no codeblocks, no DevC++, no XCode, no interface web), editor di testi semplice, con eventuale evidenziazione della sintassi senza completarla (unix/linux: gedit - mac: TextMate, SublimeText, windows: Notepad++, SublimeText)
    • compilatore: gcc (http://gcc.gnu.org/)
    • debugger: gdb

    Qualsiasi distribuzione linux va bene.

    Coloro che possiedeno un mac possono lavorare direttamente utilizzando il sistema operativo a disposizione, tramite terminale. Il compilatore gcc è già installato. Per il debugger, è disponibile lldb (google: "gcc su mac" oppure google: "come installare Xcode Command Line Tools").

    Per coloro che possiedono un pc con Windows 10, una comoda opzione è l'installazione di Ubuntu dal Windows Store (https://tutorials.ubuntu.com/tutorial/tutorial-ubuntu-on-windows#0 oppure google: "ubuntu terminal su windows 10").

    Uso da riga di comando
    Esempio di uso di editor di testo e compilatore da riga di comando, leggendo i messaggi di errore e avvertimento per andare a sistemare il codice (ambiente Mac OSX).
    Uso da riga di comando
    Esempio di uso di editor di testo e compilatore da riga di comando, leggendo i messaggi di errore e avvertimento per andare a sistemare il codice (ambiente Windows - Ubuntu).

    siti web

    Oltre a questa pagina web che riporta le informazioni generali del corso, si farà uso del seguente sito:

    • beep (interazione con il docente)

    contatti

    Per domande, dubbi e chiarimenti che possono essere di interesse di molti, per favore utilizzate WeBEEP o usufruite dei momenti di ricevimenti.
    È anche possibile contattarmi mediante posta elettronica. I messaggi devono avere nel campo oggetto [FINFO] e devono essere firmati. Qualsiasi messaggio che non rispetta questo formato non verrà preso in considerazione.