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:
Queste conoscenze verranno in parte approfondite in corsi successivi.
Cristiana Bolchini
Phone: (02 2399) 3619
Email: cristiana . bolchini @ polimi . it
Cesare Bernardis
Email: cesare . bernardis @ polimi . it
Andrea Romanoni
Email: andrea . romanoni @ polimi . it
lunedì 8:15 - 10:15 | aula B8.0.4
martedì 8:15 - 11:15 | aula B8.2.1
giovedì 10:15 - 13:15 | aula B8.0.4
lunedì 10:15 - 12:15 (concordato)
giovedì 14:15 - 17:15 | B8.1.2 (inizio ore 14:15)
Nota: Le sessioni di laboratorio non si terranno tutti i giovedì ma nelle date qui riportate.
26/09* - 17/10 - 24/10 - 14/11 - 21/11 - 5/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.
Gli argomenti che verranno trattati all'interno del corso sono i seguenti:
Un riepilogo degli argomenti trattati è riportato nel syllabus.
Manuali del linguaggio C (in alternativa tra loro)
* 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)
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.
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 al tutor che sono presenti in aula.
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 5 sessioni: nei giorni in cui non c'è attività di laboratorio, 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.
È stata preparata inoltre una VirtualBox identica a quella utilizzata per le esercitazioni con il calcolatore, con tutto il software necessario, ed è scaricabile all'indirizzo ftp://ftp.elet.polimi.it/users/Cristiana.Bolchini/fi/Lubuntu18.ova (1.78GB). L'ambiente della virtual machine è una distribuzione Lubuntu (versione leggera di Ubuntu, per limitare le dimensioni https://lubuntu.net/): se desiderate aggiornare il software, la password dell'utente è nopassword.
Coloro che possiedeno un mac non hanno bisogno di installare VirtualBox: possono lavorare direttamente utilizzando il sistema operativo a disposizione, tramite terminale. Il compilatore gcc è già installato. Per il debugger, è disponibile lldb.
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).
Oltre a questa pagina web che riporta le informazioni generali del corso, si farà uso del seguente sito:
Per accedere a Piazza è necessario registrarsi, per l'altro l'accesso avviene tramite il sistema di autenticazione unica del Politecnico (assicurarsi di non aver problemi con tale autenticazione o non sarà possibile consegnare gli esercizi di laboratorio.).
È stato attivato uno spazio su piazza.com per le interazioni con i docenti. Ogni studente iscritto al corso verrà invitato a registrarsi al corso per poter accedere al forum/chat. In questo modo verrà anche condiviso materiale e altre informazioni di interesse generale. È quindi preferibile utilizzare questo strumento (ci sono anche le app per smartphone).
È 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.
lezione ⬦ esercitazione ⬦ laboratorio ⬦ altro ⬦ sospensione
data | argomento | dettaglio |
---|---|---|
16 settembre 2019 | introduzione al corso | |
17 settembre 2019 | rappresentazione dell'informazione | i numeri naturali e i numeri relativi |
18 settembre 2019 | rappresentazione dell'informazione | i numeri reali in virgola mobile, il codice ASCII |
19 settembre 2019 | sospensione | |
23 settembre 2019 | algoritmi | dal problema all'algoritmo |
24 settembre 2019 | programmazione in C | C: struttura di un programma, tipi, operatori |
26 settembre 2019 | programmazione in C | cast, costrutto if, condizioni, espressioni |
26 settembre 2019 | laboratorio 0 | introduzione all'ambiente di lavoro |
30 settembre 2019 | programmazione in C | costrutto while e do-while |
01 ottobre 2019 | programmazione in C | esercizi |
03 ottobre 2019 | sospensione: lauree | |
07 ottobre 2019 | programmazione in C | |
08 ottobre 2019 | programmazione in C | esercizi |
10 ottobre 2019 | programmazione in C | array mono-dimensionali, costrutto for |
14 ottobre 2019 | programmazione in C | esercizi |
15 ottobre 2019 | programmazione in C | array bi-dimensionali, struct e typedef |
17 ottobre 2019 | programmazione in C | stringhe |
17 ottobre 2019 | laboratorio 1 | esercizi fino ad array |
21 ottobre 2019 | programmazione in C | esercizi |
22 ottobre 2019 | programmazione in C | sottoprogrammi e passaggio parametri |
24 ottobre 2019 | programmazione in C | sottoprogrammi e passaggio parametri |
24 ottobre 2019 | laboratorio 2 | esercizi fino a array, struct e stringhe |
28 ottobre 2019 | programmazione in C | esercizi |
29 ottobre 2019 | programmazione in C | esercizi |
31 ottobre 2019 | programmazione in C | esercizi di riepilogo |
04 novembre 2019 | sospensione | |
05 novembre 2019 | sospensione | |
07 novembre 2019 | programmazione in C | file di testo e file binari |
11 novembre 2019 | programmazione in C | esercizi file |
12 novembre 2019 | programmazione in C | allocazione dinamica |
14 novembre 2019 | programmazione in C | esercizi allocazione dinamica |
14 novembre 2019 | laboratorio 3 | esercizi fino a sottoprogrammi |
18 novembre 2019 | programmazione in C | liste concatenate semplici |
18 novembre 2019 | programmazione in C | liste concatenate semplici |
21 novembre 2019 | laboratorio 4 | lavoro di gruppo |
21 novembre 2019 | programmazione in C | ricorsione e variabili static |
25 novembre 2019 | lezione sospesa | |
26 novembre 2019 | programmazione in C | esercizi |
28 novembre 2019 | programmazione in C | esercizi |
02 dicembre 2019 | programmazione in C | esercizi |
03 dicembre 2019 | programmazione in C | argc, argv, variabili globali |
05 dicembre 2019 | programmazione in C | esercizi |
05 dicembre 2019 | laboratorio 5 | lavoro di gruppo |
09 dicembre 2019 | architettura del calcolatore | architettura hardware |
10 dicembre 2019 | architettura del calcolatore | sistema operativo |
12 dicembre 2019 | programmazione in C | esercizi |
16 dicembre 2019* | XMAS party | |
16 dicembre 2019** | sfida di programmazione | testo |