Post on 30-Jan-2021
Laboratorio di InformaticaPresentazione del Corso
Corso di Laurea in Informatica e Tecnologie per la Produzione del Software (Track B) - A.A. 2018/2019
docente: Cataldo Musto
cataldo.musto@uniba.it
mailto:Cataldo.musto@uniba.it
2/25/2019 2
Chi siete? Cosa portate? Dove andate?
Dove mi trovo? E’ il posto giusto per me?
25/02/2019 3Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
• E’ importante aver seguito e studiato (e magari sostenuto)• Programmazione
• E’ consigliabile aver seguito e studiato • Architettura degli Elaboratori
• Sistemi Operativi
• Il Laboratorio di Informatica è propedeutico agli insegnamenti nei settori INF/01 e ING-INF/05 del secondo anno (ovvero del terzo e quarto anno per gli studenti non impegnati a tempo pieno)• Fonte: https://goo.gl/rbTA96 (pagina 14)
Laboratorio di Informatica: a che serve?
25/02/2019 4Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Laboratorio di Informatica: a che serve?
25/02/2019 5Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Laboratorio di Informatica: a che serve?
25/02/2019 6
Quasi.
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Cosa insegna?
• Aspetti pragmatici della programmazione• Pragmatico=?
25/02/2019 7Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Cosa insegna?
• Aspetti pragmatici della programmazione• Pragmatico: che riguarda l’attività pratica (in greco, pragma significa «cosa»)
25/02/2019 8Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Cosa insegna?
• Aspetti pragmatici della programmazione• Pragmatico: che riguarda l’attività pratica (in greco, pragma significa «cosa»)
• Scrivere programmi che risolvano correttamente i problemi• Programmazione «difensiva»
• Programmazione modulare
• Testing del codice
• Debugging del codice
• Documentazione del codice
• Stile di programmazione
25/02/2019 9Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva» ?
25/02/2019 10Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva»
• Scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore prevedendo e individuando i casi «limite» che possono caratterizzare il comportamento di un algoritmo
• Esempio• Scrivere un algoritmo che a seconda dell’età inserita dall’utente stampi un messaggio
se l’individuo è minorenne
int age = 0;
printf(«%s», «Inserisci la tua età»);
scanf(«%d», &age)
if(age < 18) {
printf(«%s», «utente minorenne»);
}
25/02/2019 11Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva»
• Scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore prevedendo e individuando i casi «limite» che possono caratterizzare il comportamento di un algoritmo
• Esempio• Scrivere un algoritmo che a seconda dell’età inserita dall’utente stampi un messaggio
se l’individuo è minorenne
int age = 0;
printf(«%s», «Inserisci la tua età»);
scanf(«%d», &age)
if(age < 18) {
printf(«%s», «utente minorenne»);
}
25/02/2019 12Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva»
• Scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore prevedendo e individuando i casi «limite» che possono caratterizzare il comportamento di un algoritmo
• Esempio• Scrivere un algoritmo che a seconda dell’età inserita dall’utente stampi un messaggio
se l’individuo è minorenne
int age = 0;
printf(«%s», «Inserisci la tua età»);
scanf(«%d», &age)
if(age < 18) {
printf(«%s», «utente minorenne»);
}
25/02/2019 13Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva»
• Scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore prevedendo e individuando i casi «limite» che possono caratterizzare il comportamento di un algoritmo
• Esempio• Scrivere un algoritmo che a seconda dell’età inserita dall’utente stampi un messaggio
se l’individuo è minorenne
int age = 0;
printf(«%s», «Inserisci la tua età»);
scanf(«%d», &age)
if(age < 18) {
printf(«%s», «utente minorenne»);
}
25/02/2019 14
Cosa succede se l’utente inserisce un valore non realistico? Es. 400 oppure -20 oppure scrive DICIOTTO
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione «difensiva»
• Scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore prevedendo e individuando i casi «limite» che possono caratterizzare il comportamento di un algoritmo
• Esempio• Scrivere un algoritmo che a seconda dell’età inserita dall’utente stampi un messaggio se l’individuo è minorenne
int age = 0;
printf(«%s», «Inserisci la tua età»);
scanf(«%d», &age)
if(age < 0) {
printf(«%s», «valore non valido»);
}
else if(age < 18) {
printf(«%s», «utente minorenne»);
}
else if(age > 120) {
printf(«%s», «valore non valido»);
}
25/02/2019 15
Esempio di Programmazione
Difensiva
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione modulare
• Un errore comune è quello di strutturare i programmi all’interno di un unico file sorgente e in un unico metodo
• La programmazione modulare suggerisce di «suddividere» il codice sorgente in unità più piccole• Funzioni (che possono essere richiamate in punti diverse del programma)
• Uno dei principi della programmazione modulare è di aggregare un insieme di funzioni in particolari tipi di file detti «librerie»
• Possono essere riutilizzati in programmi diversi (o anche da persone diverse)• Esempio: ho un metodo che verifica che il codice fiscale inserito da un individuo sia
corretto. Metodi che possono essere riutilizzati vengono tipicamente inseriti nelle librerie!
• Ogni qualvolta si inseriscono dei file .h nel codice in realtà si sta importando una libreria (#include )
25/02/2019 16Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione modulare
• Un errore comune è quello di strutturare i programmi all’interno di un unico file sorgente e in un unico metodo
• La programmazione modulare suggerisce di «suddividere» il codice sorgente in unità più piccole• Funzioni (che possono essere richiamate in punti diverse del programma)
• Uno dei principi della programmazione modulare è quello di aggregare un insieme di funzioni in particolari tipi di file detti «librerie»
• Possono essere riutilizzati in programmi diversi (o anche da persone diverse)• Esempio: ho un metodo che verifica che il codice fiscale inserito da un individuo sia
corretto. Metodi che possono essere riutilizzati vengono tipicamente inseriti nelle librerie!
• Ogni qualvolta si inseriscono dei file .h nel codice in realtà si sta importando una libreria (#incude )
25/02/2019 17Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione modulare
• Un errore comune è quello di strutturare i programmi all’interno di un unico file sorgente e in un unico metodo
• La programmazione modulare suggerisce di «suddividere» il codice sorgente in unità più piccole• Funzioni (che possono essere richiamate in punti diverse del programma)
• Uno dei principi della programmazione modulare è quello di aggregare un insieme di funzioni in particolari tipi di file detti «librerie»
• Possono essere riutilizzati in programmi diversi (o anche da persone diverse)• Esempio: ho un metodo che verifica che il codice fiscale inserito da un individuo sia
corretto. Metodi che possono essere riutilizzati vengono tipicamente inseriti nelle librerie!
• Ogni qual volta si inseriscono dei file .h nel codice in realtà si sta importando una libreria (#include )
25/02/2019 18Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programmazione modulare
• Un errore comune è quello di strutturare i programmi all’interno di un unico file sorgente e in un unico metodo
• La programmazione modulare suggerisce di «suddividere» il codice sorgente in unità più piccole• Funzioni (che possono essere richiamate in punti diverse del programma)
• Uno dei principi della programmazione modulare è quello di aggregare un insieme di funzioni in particolari tipi di file detti «librerie»
• Possono essere riutilizzati in programmi diversi (o anche da persone diverse)• Esempio: ho un metodo che verifica che il codice fiscale inserito da un individuo sia
corretto. Metodi che possono essere riutilizzati vengono tipicamente inseriti nelle librerie!
• Ogni qual volta si inseriscono dei file .h nel codice in realtà si sta importando una libreria (#include )
25/02/2019 19Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Vi vengono in mente altri algoritmi «riusabili» ?
Stile di Programmazione
25/02/2019 20Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Stile di Programmazione
25/02/2019 21
• Acquisire le metodologie corrette per• Assegnare nomi significativi
alle variabili
• Indentare correttamente e commentare il codice sorgente
• Utilizzare uno stile uniforme che faciliti al comprensione del codice sorgente
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Testing, Debugging e Documentazione
25/02/2019 22Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Testing, Debugging e Documentazione
25/02/2019 23
• Acquisire consapevolezza nell’uso degli strumenti per• Individuare (e rimuovere) bug presenti nel codice
• Definire dei «casi di test» che verifichino il corretto funzionamento dei programmi
• Generare in automatico la documentazione del codice (a partire dai commenti)
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Obiettivi professionalizzanti: cosa imparo?
• Saper scrivere programmi correttamente funzionanti
25/02/2019 24Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Obiettivi professionalizzanti: cosa imparo?
• Saper scrivere programmi correttamente funzionanti
• Saper scrivere programmi correttamente funzionanti è uno degli obiettivi del corso di Programmazione• Questa competenza è data per assunta
• «Professore il mio programma funziona, perché non ho superato l’esame ?»
• Scrivere del codice che funzioni non è sufficiente per superare l’esame!
25/02/2019 25Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
X
Obiettivi professionalizzanti: cosa imparo?
• Saper scrivere programmi solidi e ben documentati
• Strutturare correttamente il codice sorgente in moduli e librerie, applicando i principi dell’astrazione funzionale
• Saper verificare empiricamente la correttezza dei programmi mediante testing
• Saper individuare (e risolvere) malfunzionamenti attraverso il debugging
• Ampliare le capacità di problem-solving
25/02/2019 26Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Imparare a programmare: meglio
25/02/2019 27
Obiettivi professionalizzanti: cosa imparo?
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Da che materiale posso studiare?
• Dispense fornite dal docente
• Testi consigliati• B.W. Kerninghan, R. Pike, ''Programmazione
nella pratica'', Addison Wesley, 1999
• Jeri R. Hanly, Elliot B. Koffman, "Problemsolving e programmazione in C", Apogeo, 2013
• Testo di riferimento per il Linguaggio C• Deitel P. & H., ‘’l linguaggio C - Fondamenti
e tecniche di programmazione’’, ed. marzo 2013 - Pearson (ISBN: 9 788871 929378)
25/02/2019 28Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Come è strutturato il corso?• 6 CFU = 6 * 25 ore di
impegno studente• 3 CFU T1 (lezione) = 24 ore
di lezione frontale
• 3 CFU T2 (laboratorio) = 45 ore di esercitazioni
• Lezioni• Mercoledì 8.30 – 12.30
• Venerdì 11.00 – 14.00
25/02/2019 29Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Struttura del Corso – Lezioni Frontali
• In Aula Magna
• Frequenza Consigliata
• Si affrontano gli aspetti teorici del corso• Cosa è il testing? Come si definiscono i casi limiti di un programma? Come si
genera della «buona» documentazione? Come si usa un debugger? Quali sono i principi della programmazione modulare? Come si effettua il passaggio dei parametri?
• Ogni lezione• Illustra i contenuti teorici
• Li collega ad esercizi pratici da sviluppare sul pc
25/02/2019 30Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Struttura del Corso – Lezioni di Laboratorio
• Sempre in Aula Magna• Portate i vostri notebook (carichi!) , l’Aula è elettrificata
• Valuteremo in seguito l’utilizzo dei Laboratori
• Massimo due persone per notebook (meglio una)• Lo scopo è di svolgere l’esercitazione assegnata
• Le esercitazioni saranno erogate sulla piattaforma Repl.it (http://repl.it)
• Completamento a casa• 1 CFU = 15 ore in aula + 10 ore a casa
25/02/2019 31Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://repl.it/
Struttura del Corso – Lezioni di Laboratorio
• Nota molto molto molto molto molto ma molto importante• Il docente non è un debugger
• «Professore, non funziona»
• Il docente non è un tester• «Professore, come faccio a capire se funziona?»
• Il docente non è un conoscitore di tutti i possibili problemi che possono essere causati dall’uso errato del Linguaggio C ☺• «Professore il programma crasha, come mai?»
25/02/2019 32Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Programma del Corso
• Revisione/Approfondimento Linguaggio C • Richieste?
• Programmazione Modulare
• Stili di programmazione
• Testing e Debugging
• Documentazione del codice
• Algoritmi Fondamentali • Ricerca & Ordinamento
Ulteriori dettagli su: http://informatica.uniba.itLink al programma: https://tinyurl.com/programma-labinf1819
25/02/2019 33Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://informatica.uniba.it/https://tinyurl.com/programma-labinf1819
Come possiamo interagire?
• Quesiti di interesse comune?• Attraverso la piattaforma Ada
(https://elearning.di.uniba.it/course/view.php?id=526 )• Il materiale del corso sarà condiviso sulla piattaforma• Non è un help-desk h/24 ;)• Gli studenti possono (devono!) collaborare
• Quesiti personali?• cataldo.musto@uniba.it
• Non vi basta?• Ricevimento Giovedì 15.00-17.00
• Concordare prima (preferibilmente)
25/02/2019 34Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
https://elearning.di.uniba.it/course/view.php?id=526mailto:cataldo.musto@uniba.it
Esempi di mail da non mandare
25/02/2019 35Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Esempi di mail da non mandare
25/02/2019 36Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Utilizzo di Ada (https://elearning.di.uniba.it/course/view.php?id=526 )
25/02/2019 37Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
https://elearning.di.uniba.it/course/view.php?id=526
Utilizzo di Ada (https://elearning.di.uniba.it/course/view.php?id=526 )
25/02/2019 38Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Password: labinfb1819
https://elearning.di.uniba.it/course/view.php?id=526
Utilizzo di Repl ( http://repl.it )
25/02/2019 39
Iscrizione alla piattaformaCataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://repl.it/
Utilizzo di Repl ( http://repl.it )
25/02/2019 40
Iscrizione alla piattaformaCataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://repl.it/
Utilizzo di Repl ( http://repl.it )
25/02/2019 41
Autorizzate uno dei social network o compilate il form di iscrizione
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://repl.it/
Utilizzo di Repl (http://repl.it)
25/02/2019 42Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Link di accesso: https://tinyurl.com/repl-1819
http://www.chalkup.co/https://tinyurl.com/repl-1819
Utilizzo di Repl (http://repl.it)
25/02/2019 43Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Link di accesso: https://tinyurl.com/repl-1819
http://www.chalkup.co/https://tinyurl.com/repl-1819
Utilizzo di Repl (http://repl.it)
25/02/2019 44Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Link di accesso: https://tinyurl.com/repl-1819
Lo svolgimento (corretto) delle esercitazioni permetterà di raccogliere punti bonus per aumentare il voto d’esame
http://www.chalkup.co/https://tinyurl.com/repl-1819
Lo utilizzeremo anche come strumento di esercitazione «libera»(My Repls→ New Repl in alto → Linguaggio C)
25/02/2019 45
Utilizzo di Repl (http://repl.it)
(1)(2)
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
http://www.chalkup.co/
Altre Modalità di Interazione
25/02/2019 46Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
https://tinyurl.com/telegram-labinf-1819
https://tinyurl.com/telegram-labinf-1819
Modalità d’esame
• Progetto
• Prova orale
25/02/2019 47Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Modalità d’esame
• Progetto • Caso di studio da sviluppare durante il corso (a lezione, durante le ore in
Laboratorio, e a casa);• Da sviluppare in singolarmente / in coppia
• Valutazione basata sui temi discussi durante il corso• Correttezza e solidità del codice• Buono stile di programmazione• Capacità di progettare un buon piano di test• Utilizzo di algoritmi di ordinamento avanzati• Capacità di fare astrazione funzionale e di progettare correttamente i moduli
che compongono il programma
25/02/2019 48Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Modalità d’esame
• Una traccia diversa per ogni appello• Sessione 1: appelli Giugno, Luglio 2019
• Tracce comunicate ad Aprile 2019
• Sessione 2: appelli Settembre, Novembre 2019• Tracce comunicate a Luglio 2019
• Sessione 3: appelli Febbraio, Aprile 2020• Tracce comunicate a Novembre 2019
• Prova Orale
• Discussione del caso di studio e dei contenuti del corso.
25/02/2019 49Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Modalità d’esame
do{
esame();
}
while (!(progetto()
&& prova_orale())
25/02/2019 50Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Modalità d’esame
do{
esame();
}
while (!(progetto()
&& prova_orale())
25/02/2019 51
Probabile prova parziale a fine corso, che esoneri dalla parte teorica.
(resta la discussione del caso di studio!)
Cataldo Musto - Presentazione del CorsoLaboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Domande?
25/02/2019 52Cataldo Musto - Presentazione del Corso
Laboratorio di Informatica (ITPS, Track B) – Università degli Studi di Bari – A.A. 2018/2019
Riassumendo
Materiale corso: https://elearning.di.uniba.it/course/view.php?id=526
Piattaforma esercitazioni: http://www.repl.it
Comunicazioni: via Ada o su cataldo.musto@uniba.it
Esame: progetto+orale (su teoria e caso di studio), eventuali prove parziali per esonerare la parte di teoria
Laboratorio di Informaticadocente: Cataldo Mustocataldo.musto@uniba.it
https://elearning.di.uniba.it/course/view.php?id=526http://www.repl.it/mailto:cataldo.musto@uniba.itmailto:cataldo.musto@uniba.it