Fondamenti di Informatica 2023/2024
by Tullio Facchinetti
Le informazioni riguardanti il corso dell’Anno Accademico 2022-23 sono disponibili a questa pagina.
Comunicazioni
- 2024-03-05 Scambio di orario: La lezione di giovedì 21 marzo viene scambiata con la lezione di Analisi 2 del 18 marzo; in altri termini, lunedì 18 marzo alle 9-11 si svolgerà la lezione di Fondamenti di Informatica in aula EF4, mentre giovedì 21 marzo alle 9-11 si svolgerà la lezione di Analisi 2 in aula EF4.
Informazioni sul corso
Il corso di Fondamenti di Informatica, relativamente alla parte di programmazione, sarà tenuto dal sottoscritto, Prof. Tullio Facchinetti.
Consiglio di visitare periodicamente il sito del corso, in quanto saranno esposte comunicazioni straordinarie e avvisi vari.
Per ulteriori informazioni e comunicazioni, posso essere contattato all’indirizzo tullio.facchinetti@unipv.it.
Per contattarmi tramite e-mail, specificare chiaramente nome, cognome, numero di matricola, anno di iscrizione e corso di riferimento. Dal momento che tengo vari corsi, e molti altri ho tenuto negli anni scorsi, l’indicazione del corso è particolarmente necessaria.
IMPORTANTE: Il materiale che verrà utilizzato nelle lezioni sul linguaggio C segue in modo fedele il contenuto del libro di testo. Si raccomanda vivamente di avere a disposizione una copia del testo, in modo da poter rileggere e approfondire gli argomenti che verranno trattati a lezione.
Orari
L’orario per il secondo semestre dell’anno accademico 2023/24 è il seguente:
- martedì 09:00 - 11:00, aula EF4
- giovedì 09:00 - 11:00, aula EF4
Tutorato/esercitazioni
Il tutorato viene svolto con due modalità: presso le aule didattiche di informatica C2-C3 e in forma remota. I tutorati sono organizzati in turni, in modo che ciascun studente possa fruire di 2 ore di tutorato alla settimana.
I tutorati in aula si svolgeranno con il seguente partizionamento:
- venerdì 14:00 - 16:00 - studenti con cognome A-J (compresi)
- venerdì 16:00 - 18:00 - studenti con cognome K-Z (compresi)
Il programma previsto per i tutorati in aula è il seguente:
- Venerdì 22 Marzo : Comandi UNIX e utilizzo della shell
- Venerdì 5 Aprile : Hello world e compilazione
- Venerdì 12 Aprile : Costrutti di controllo e verifica automatica
- Venerdì 19 Aprile : Vettori
- Venerdì 3 Maggio : Funzioni
- Venerdì 10 Maggio : Stringhe
- Venerdì 17 Maggio : Struct
- Venerdì 24 Maggio : File
- Venerdì 31 Maggio : Allocazione dinamica e puntatori
- Venerdì 7 Giugno : Ricerca e ordinamento
- Venerdì 14 Giugno : Tema d’esame
Gli orari di tutorato sono da intendersi come uno spazio per il chiarimento di dubbi riguardo allo svolgimento degli esercizi. Si richiede che gli studenti cerchino di risolvere in autonomia gli esercizi proposti, e che riservino il tempo del tutorato online alla richiesta di chiarimenti. Negli slot assegnati è prevista assistenza in tempo reale da parte dei tutori. Non è escluso che i chiarimenti possano essere forniti anche al di fuori dell’orario previsto, ma in quel caso non è garantita una risposta in tempo reale.
Ogni settimana, il docente fornirà indicazioni su quali esercizi dovranno essere svolti per la settimana successiva.
Sono disponibili le informazioni sulle modalità di svolgimento del tutorato e alla configurazione degli strumenti necessari.
Informazioni sull’esame
IMPORTANTE: come da regolamento di Ateneo, gli esami si svolgono in presenza.
La parte di esame del Prof. Facchinetti consiste in una prova pratica di programmazione e in una prova di teoria della programmazione.
Prova pratica di programmazione
Per quanto riguarda la prova pratica:
- viene normalmente svolta presso le aule didattiche di informatica (C2-C3-B1-B2, ecc.);
- viene utilizzata la piattaforma piattaforma SSHCode; assicurarsi di avere le credenziali in vista dell’esame; in caso di necessità, le credenziali possono essere richieste seguendo queste istruzioni;
- la prova prevede la soluzione di un problema attraverso la realizzazione di un programma in linguaggio C;
- la durata della prova pratica è di 3 ore;
- durante la prova è possibile utilizzare gli appunti e il libro di testo, ma non l’eserciziario e altri documenti contenenti esercizi risolti;
- non è possibile fruire dell’accesso alla rete Internet ne’ utilizzare cellulari e smartphone; è invece possibile consultare il manuale delle funzioni del linguaggio utilizzando il comando
man
da terminale;
Leggere con attenzione la sezione seguente relativa all’iscrizione alla prova di programmazione.
Verifica di corretta iscrizione alla prova di programmazione
La partecipazione alla prova pratica richiede la creazione di un account d’esame sulla piattaforma SSHCode da parte del docente. Questo non può essere fatto al momento dell’ammissione all’esame in aula o da remoto, ma deve essere fatto per tempo.
PERTANTO….
Per evitare disguidi al momento dell’ammissione all’esame, in seguito all’iscrizione verrà inviata una email di promemoria a tutti gli iscritti come conferma di corretta iscrizione all’esame, contenente le credenziali.
Se non si dovesse ricevere l’email entro qualche ora prima dell’esame (orientativamente la sera precedente in caso di esame il mattino, oppure al mattino in caso di esame al pomeriggio), si informi il docente via email in quanto potrebbero essersi verificati dei problemi durante l’iscrizione su Esse3.
IMPORTANTE: L’email di conferma non viene inviata né automaticamente né immediatamente in seguito all’iscrizione, ma viene inviata manualmente dal docente una volta espletate le procedure per la preparazione dell’ambiente d’esame. Si attenda quindi al più tardi l’orario sopra indicato prima di contattare il docente.
Prova di teoria della programmazione
Per quanto riguarda la prova di teoria della programmazione:
- viene normalmente svolta presso le aule didattiche di informatica (C2-C3-B1-B2, ecc.);
- viene svolta tramite la piattaforma Kirotesting platform;
- la durata della prova è di circa 2 ore;
- consiste in domande sulla parte di corso tenuta dal Prof. Facchinetti, inclusi i comandi UNIX, i flowchart, e il linguaggio C;
Valutazione dell’esame
Il voto complessivo della parte di corso relativa alla progammazione è la media tra il voto della parte pratica e di quella della teoria della programmazione (pesi 2/3 e 1/3 rispettivamente).
Il voto complessivo dell’esame di Fondamenti di Informatica è pertanto composto da 3 parti: 1) la prova pratica di programmazione 2) la prova di teoria della programmazione (Facchinetti) e 3) la prova teorica del Prof. Danese. Le tre prove si possono sostenere in qualsiasi momento, indipendentemente l’una dall’altra. Il risultato di una prova già superata rimane valido per 1 anno. Se una prova già superata viene sostenuta nuovamente, ad es. per migliorare il risultato precedente, tale risultato precedente viene annullato, anche se il voto più recente è inferiore al precedente o insufficiente.
Il voto finale dell’esame è la media tra il voto acquisito per la parte teorica (Prof. Danese) e per la parte del Prof. Facchinetti.
Materiale didattico
Il testo adottato è Facchinetti, Larizza, Rubini, Programmare in C - Concetti base e tecniche avanzate, Apogeo Editore, 2015.
Parte del materiale, in particolare quello relativo all’introduzione, ai flowchart e ai comandi UNIX, è disponibile come slide scaricabili da questo sito, mentre tutto il materiale sul linguaggio C è invece contenuto nel libro di testo (le slide presentate durante il corso non sono pubblicamente disponibili).
Le slide disponibili sono le seguenti (viene indicata la data di ultimo aggiornamento):
- [09/03/2021] Introduzione : introduzione al corso; problemi, algoritmi, programmazione; errori nella programmazione; classificazione dei linguaggi di programmazione; breve storia del C;
- [10/04/2024] Sistemi UNIX : introduzione; autenticazione; la shell; il prompt; filesystem, file e directory; percorsi assoluti e relativi;
- [10/03/2023] Comandi UNIX : sintassi; i comandi echo, cat, pwd, man e ls; manipolazione di directory: cd, mkdir, rmdir; manipolazione di file: cp, mv, rm; wildcard; redirezione dell’output;
- [24/03/2023] Programmazione strutturata e flowchart : algoritmi e programmi, concetti di equivalenza, teorema di Jacopini-Bohm, diagrammi a blocchi, esempi di flowchart non strutturati, duplicazione dei blocchi per passare a flowchart di tipo strutturato, pseudo-codice.
In questa pagina si trovano vari screencast con esempi relativi ai comandi UNIX utilizzati in tempo reale.
Per facilitare le esercitazioni sugli argomenti del corso, è disponibile la piattaforma SSHCode. Le credenziali per accedere alla piattaforma SSHCode vengono inviate via email.
Materiale per tutorati ed esercitazioni
È disponibile un eserciziario contenente il materiale adatto ad affrontare la prova pratica di programmazione:
- Programmazione in linguaggio C - Problemi e temi svolti, C. Cusano, T. Facchinetti, C. Larizza, E. Losiouk, D. De Martini, A. Tramonte, Medea Edizioni, 2015.
Sono disponibili i seguenti esercizi, che vengono svolti durante il tutorato:
Il materiale utilizzato durante i tutorati in aula informatica e per il tutorato remoto è pubblicamente disponibile a questo indirizzo.
È disponibile un esercizio di programmazione sull’individuazione di errori di tipo “segmentation fault” in un programma esistente in linguaggio C.
Risultati degli esami
- I risultati della prova teorica del Prof. Danese sono/saranno disponibili alla pagina gestita dal Prof. Gianni Danese stesso.
- I risultati delle prove di programmazione e di teoria della programmazione, gestite dal Prof. Facchinetti, sono/saranno disponibili alla pagina dedicata
Link utili
- Homepage del Laboratorio di Robotica.