Laboratorio di Informatica

Documenti analoghi
Laboratorio di Informatica

Informatica e Tecnologie per la Produzione del Software

Docente: Prof. Marco Patella Tutor: Lorenzo Rosa

Fondamenti di Informatica II Corso (HA-ZZ) Introduzione al corso

Docente: Prof. Marco Patella Tutor: Stefano Pio Zingaro

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Programmazione in C. Requisiti didattici

Università degli Studi di Enna Kore Facoltà di Ingegneria e Architettura

Introduzione al corso

Fondamenti di Informatica. Proff. B.Buttarazzi & A.D Ambrogio A.A. 2011/2012

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Programmazione Procedurale

Il corso di Sistemi Operativi Introduzione al corso di Sistemi Operativi

Fondamenti di Informatica

Programmazione Procedurale

Informatica industriale L-31. Corso di Programmazione e Laboratorio di Programmazione

Sistemi Operativi Informatica II. Presentazione del corso. a.a Patrizia Scandurra

Informatica triennale (L31) sede di Bari Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Laurea in Ingegneria Gestionale. Corso di Fondamenti di Informatica A.A. 2018/2019

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Laboratorio di Informatica

Lezione 1: Introduzione al Corso Mercoledì 30 Settembre 2009

Università degli Studi di Enna Kore Facoltà di Ingegneria e Architettura

Corso di Laurea Ingegneria Civile

Tecnologie Informatiche L-31. Corso di Ingegneria del software e Laboratorio di Ingegneria del software

Fondamenti di Informatica e Programmazione

Ingegneria del Software II

Fondamenti di Informatica e Laboratorio T-AB

Corso di Laurea Ingegneria Civile

Presentazione del Corso Informazioni utili

Università degli Studi di Enna Kore

Introduzione al corso

Informatica industriale L-31. Corso di Programmazione e Laboratorio di Programmazione

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

Dip. Informatica VI Piano. Ambito disciplinare. Secondo Semestre Secondo Anno Lezioni frontali (9 CFU) Progetto (3 CFU)

Architettura. Nome Modulo Tipologia lezioni Ore Docente SSD Ruolo Interno Affidamento. Vincenzo Conti

Introduzione al corso

Fondamenti di Informatica

Università degli Studi di Enna Kore Facoltà di Scienze dell Uomo e della Società

Laboratorio di Internet I Introduzione

Informatica industriale L-31. Corso di Programmazione 1

Programmazione Orientata agli Oggetti I

PROGRAMMAZIONE ANNO SCOLASTICO 2018/2019

Sistemi Operativi (mod. Informatica II)

PROGRAMMAZIONE DISCIPLINARE pag. 1

INGEGNERIA DEL SOFTWARE INFORMATICA ARDIMENTO PASQUALE

CORSO DI FONDAMENTI DI INFORMATICA

Introduzione al corso

Prof. Luigi Gallo INGEGNERIA MECCANICA (N-Z) UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II FACOLTÀ DI INGEGNERIA

Fondamenti di Informatica T1

Fondamenti di Informatica T1

Introduzione al corso

Università degli Studi di Enna Kore Facoltà di Scienze dell Uomo e della Società

Principi di Progettazione del Software a.a " Introduzione al corso! Prof. Luca Mainetti! Università del Salento!

OBIETTIVI. Conoscere i concetti di base dell Informatica. Conoscere i principi e gli strumenti di base della programmazione

SCHEDA INSEGNAMENTO A.A. 2017/2018

Corso di. Fondamenti di Informatica T

Corso di Informatica - 6 CFU

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura Anno Accademico

Introduzione al corso: I sistemi informativi aziendali

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

INSEGNAMENTO DI INGEGNERIA DEL SOFTWARE B (5 CFU) CORSO DI LAUREA SPECIALISTICA IN INGEGNERIA INFORMATICA a.a

Fondamenti di Informatica. Introduzione al Corso

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

PROGRAMMAZIONE ANNO SCOLASTICO 2018/2019

Linguaggi di Programmazione + Lab. A.A Docente: Marco de Gemmis. Presentazione dell insegnamento

Laurea in INFORMATICA

Fondamenti di Informatica T-1

Corso di Fondamenti di Informatica T-1

Metodologia della ricerca educativa Prof.ssa Antonella Poce 4 crediti anno accademico

Fondamenti di Informatica

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011. Benvenuti al Corso!

Syllabus A042 Insegnamenti disciplinari

Università degli Studi di Enna Kore Facoltà di Scienze dell Uomo e della Società Anno Accademico

Università di Bologna Corso di Laurea in Ingegneria Informatica A.A Sistemi Operativi L-A. Obiettivi del Corso. Argomenti trattati

Programmazione Orientata agli Oggetti in Linguaggio Java

SCHEDA INSEGNAMENTO A.A. 2018/2019

Fondamenti di Informatica MultiDAMS

Università di Bologna Corso di Laurea in Ingegneria Informatica A.A Sistemi Operativi L-A

Fondamenti di Informatica (lettere A-I) A

Informatica Generale

Corso di Laurea in Scienze Chimiche Per capire e migliorare il mondo intorno a noi

Informazioni sul corso

Programmazione. Prof. Marco Bertini

Università degli Studi di Enna Kore Facoltà di Scienze dell Uomo e della Società Anno Accademico

Laurea in INFORMATICA INTERNET, RETI E SICUREZZA [ST0855] A.A. 2017/2018 SILLABO. Fausto Marcantoni.

ANNO ACCADEMICO 2016/17. Informatica e Tecnologie per la Produzione del Software. Prof.Giovanni Dimauro. ANNO DI CORSO primo SEMESTRE primo

INFORMATICA Corso di Laurea in Fisica a.a. 2015/2016

Prof. Massimo Esposito INGEGNERIA MECCANICA (DI-M) UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II FACOLTÀ DI INGEGNERIA

Fondamenti di Informatica T1"

STRUMENTI DIGITALI PER LA A.A.2014/15 INTRODUZIONE AL CORSO COMUNICAZIONE. Corso di Laurea in Scienze della Comunicazione

Fondamenti di Informatica e Laboratorio T-AB

Transcript:

Corso di Laurea in Informatica e Tecnologie per la Produzione del Sofware (Track B) - A.A. 2016/2017 Laboratorio di Informatica Presentazione del Corso docente: Cataldo Musto cataldo.musto@uniba.it

Dove mi trovo? E il posto giusto per me? 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://tinyurl.com/manifesto-itps (pagina 14) 08/03/2017 2

Laboratorio di Informatica: a che serve? 08/03/2017 3

Laboratorio di Informatica: a che serve? Quasi. 08/03/2017 4

Cosa insegna? Aspetti pragmatici della programmazione Pragmatico=? 08/03/2017 5

Cosa insegna? Aspetti pragmatici della programmazione Pragmatico: che riguarda l attività pratica (in greco, pragma significa «cosa») 08/03/2017 6

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 08/03/2017 7

Programmazione «difensiva»? 08/03/2017 8

Programmazione «difensiva» Capire i casi «limite» che possono caratterizzare il comportamento di un algoritmo e scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore 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»); } 08/03/2017 9

Programmazione «difensiva» Capire i casi «limite» che possono caratterizzare il comportamento di un algoritmo e scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore 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»); } 08/03/2017 10

Programmazione «difensiva» Capire i casi «limite» che possono caratterizzare il comportamento di un algoritmo e scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore 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»); } 08/03/2017 11

Programmazione «difensiva» Capire i casi «limite» che possono caratterizzare il comportamento di un algoritmo e scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore 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»); } Cosa succede se l utente inserisce un valore non realistico? Es. 400 oppure -20 oppure scrive DICIOTTO 08/03/2017 12

Programmazione «difensiva» Capire i casi «limite» che possono caratterizzare il comportamento di un algoritmo e scrivere del codice che sia in grado di prevenire o gestire le situazioni di errore 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»); } Esempio di Programmazione Difensiva 08/03/2017 13

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 <stdio.h>) 08/03/2017 14

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 (#include <stdio.h>) 08/03/2017 15

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 <stdio.h>) 08/03/2017 16

Testing, Debugging e Documentazione 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) 08/03/2017 17

Stile di Programmazione 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 08/03/2017 18

Obiettivi professionalizzanti: cosa imparo? Saper scrivere programmi correttamente funzionanti e ben documentati Sapere applicare tecniche per limitare l introduzione di malfunzionamenti nei programmi; Saper verificare empiricamente la correttezza dei programmi mediante testing; Saper individuare (e risolvere) malfunzionamenti attraverso il debugging; Ampliare le capacità di problem-solving. 08/03/2017 19

Obiettivi professionalizzanti: cosa imparo? Imparare a programmare. Meglio. 08/03/2017 20

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, "Problem solving 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) 08/03/2017 21

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 Giovedì 11.30 14.30 08/03/2017 22

Struttura del Corso Lezioni Frontali In Aula Magna Frequenza Consigliata Si affrontano gli aspetti teorici del corso Come si usa un debugger? Cosa è il testing? Come si definiscono i casi limiti di un programma? Come si genera della «buona» documentazione? Quali sono i principi della programmazione modulare? Ogni lezione Illustra i contenuti teorici Li collega ad esercizi pratici da sviluppare in Laboratorio 08/03/2017 23

Struttura del Corso Lezioni di Laboratorio Inizialmente 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) Possibile completamento a casa 1 CFU = 15 ore in aula + 10 ore a casa Il docente verifica l andamento dell esercitazione Il docente non è un debugger Il docente non è un tester Il docente non è un conoscitore di tutti i possibili problemi che possono essere causati dall uso errato del Linguaggio C 08/03/2017 24

Programma del Corso Revisione/Approfondimento Linguaggio C Richieste? Stili di programmazione Programmazione modulare Testing e Debugging Documentazione del codice Argomenti avanzati Linguaggio C (cenni) Ulteriori dettagli su: http://informatica.uniba.it Link al programma: https://tinyurl.com/programma-labinf-itps 08/03/2017 25

Come possiamo interagire? Quesiti di interesse comune? Attraverso la piattaforma Chalkup (http://www.chalkup.co) 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 dopo la lezione Concordare prima (preferibilmente) 08/03/2017 26

Utilizzo di Chalkup (http://www.chalkup.co) Iscrizione alla piattaforma. 08/03/2017 27

Utilizzo di Chalkup (http://www.chalkup.co) Cliccare sul «+» accanto a Courses e inserire il codice del corso Codice corso: ckv8xw 08/03/2017 28

Utilizzo di Chalkup (http://www.chalkup.co) Il materiale sarà disponibile nella sezione «Materials» mentre la sezione «Discussions» può essere utilizzata per fare domande o discutere sui temi del corso 08/03/2017 29

Utilizzo di Repl ( http://repl.it ) Iscrizione alla piattaforma. 08/03/2017 30

Utilizzo di Repl ( http://repl.it ) Autorizzate uno dei social network o compilate il form di iscrizione 08/03/2017 31

Utilizzo di Repl (http://repl.it) Link di accesso: https://repl.it/classroom/invite/cyfxosz 08/03/2017 32

Utilizzo di Repl (http://repl.it) (1) (2) Lo utilizzeremo anche come strumento di esercitazione, nella prima parte del corso (Sessions Start Coding Now Linguaggio C) 08/03/2017 33

Modalità d esame Progetto Prova orale 08/03/2017 34

Modalità d esame Progetto Caso di studio da sviluppare durante il corso (a lezione, durante le ore in Laboratorio, e a casa); Definito a fine Marzo / inizio Aprile; Include tutti i temi discussi durante l anno nel programma Massimo due persone. Prova Orale Discussione del caso di studio e dei contenuti del corso. 08/03/2017 35

Modalità d esame do{ } esame(); while (!(progetto_d_anno() && prova_orale()) 08/03/2017 36

Modalità d esame do{ } esame(); while (!(progetto_d_anno() && prova_orale()) Valuteremo la possibilità di prevedere delle prove parziali, che esonerino dalla parte teorica. (resta la discussione del caso di studio!) 08/03/2017 37

Ora o mai più. Riassumendo Materiale corso: http://www.chalkup.co Piattaforma esercitazioni: http://www.repl.it Comunicazioni: via Chalkup o su cataldo.musto@uniba.it Esame: progetto+orale (su teoria e caso di studio), eventuali prove parziali per esonerare la parte di teoria 08/03/2017 38

Recap: domande? Laboratorio di Informatica docente: Cataldo Musto cataldo.musto@uniba.it 08/03/2017 39