LABORATORIO INFORMATICO

Teaching in italian
LABORATORIO INFORMATICO
Teaching
Subject area
ING-INF/05
Reference degree course
NURSING
Course type
Bachelor's Degree
Credits
2.0
Teaching hours
Frontal Hours: 40.0
Academic year
2023/2024
Year taught
2023/2024
Course year
1
Curriculum
SEDE LECCE
Reference professors for teaching
CAFARO Massimo
MAINETTI LUCA

Teaching description

Non vi è alcuna propedeuticità per il corso.

In sintesi il laboratorio affronta i seguenti temi: introduzione alle architetture dei dati, introduzione all'analisi dei dati tramite linguaggio SQL, struttura dei sistemi di calcolo, concetto di algoritmo ed elementi della programmazione strutturata, introduzione al linguaggio di programmazione Python.

Il corpus principale del laboratorio intende dunque fornire le basi pratiche per la modellazione e l'analisi dei dati e, parallelamente, per l'elaborazione dei dati sviluppando semplici programmi Python. Ogni concetto esposto è sperimentato in modo pratico insieme agli studenti utilizzando il personal computer e strumenti di sviluppo moderni e ampiamente diffusi nel mondo industriale.

Conoscenze e comprensione. Al termine del corso gli studenti: (a) conosceranno i principi della programmazione strutturata, in relazione alle caratteristiche del software; (b) conosceranno gli aspetti generali del linguaggio Python cioè programmazione con i tipi di dati fondamentali, le strutture di controllo, le funzioni, le liste, i file, gli insiemi e i dizionari; (c) comprenderanno le tecniche di codifica in Python di algoritmi; (d) comprenderanno come utilizzare i principali ambienti di sviluppo Python anche in relazione delle singole necessità rappresentate nei requisiti del software e nella strutturazione dei dati.

Inoltre, al termine del corso gli studenti conosceranno il linguaggio SQL, necesssario per interagire con una base di dati. In particolare: (a) gli statements (DDL, Data Definition Language) necessari per specificare lo schema concettuale ed interno di un DBMS (Data Base Management System) ed il mapping tra i due; (b) gli statements (DML, Data Manipulation Language) necessari per manipolare una base di dati. Le operazioni tipicamente supportate includono il recupero, l’inserimento, la cancellazione e la modifica dei dati.

Capacità di applicare conoscenze e comprensione. Gli studenti saranno in grado di applicare le conoscenze acquisite in diversi ambiti applicativi e, in generale, per la codifica al computer in linguaggio Python di logica di business. Inoltre, gli studenti saranno in grado di creare ed interrogare una base di dati.

Autonomia di giudizio. Il corso favorisce l'autonomia di giudizio degli studenti attraverso l'analisi critica di problemi di modellazione del software da requisiti funzionali e non funzionali, per i quali trovare le soluzioni adeguate a risolverli in linguaggio Python. Diverse soluzioni proposte interattivamente dagli studenti saranno poste a confronto e valutate criticamente dagli studenti stessi. Inoltre, gli studenti devono possedere la capacità di problem solving e devono pervenire a idee e giudizi originali e autonomi, a scelte coerenti nell’ambito del loro lavoro, particolarmente delicate nell’ambito della implementazione di una base di dati. Il corso promuove lo sviluppo dell’autonomia di giudizio nella scelta appropriata della soluzione migliore relativa a semplici problemi legati all’interazione con una base di dati e la capacità critica di interpretare la bontà dei risultati ottenuti.

 

Abilità comunicative. Gli studenti apprenderanno come comunicare adeguatamente e con il corretto livello di formalismo le scelte di design adottate e le strategie di implementazione scelte. Il metodo di insegnamento interattivo e teorico/pratico favorirà momenti di confronto in cui mettere in pratica tali abilità comunicative. È fondamentale che gli studenti siano in grado di comunicare con un pubblico vario e composito, non omogeneo culturalmente, in modo chiaro, logico ed efficace, utilizzando gli strumenti metodologici acquisiti e le loro conoscenze scientifiche e, in particolar modo, il lessico di specialità. Il corso favorisce lo sviluppo delle abilità inerenti le capacità di esporre in termini precisi e formali snippets di codice sorgente in linguaggio Python e queries SQL.

Capacità di apprendimento. La materia in costante evoluzione (sia le tecniche di sviluppo del software, sia i linguaggi che le implementano) richiederà agli studenti la capacità di aggiornarsi e di ricercare materiale on-line, valutandone anche la qualità. Il metodo didattico favorirà l’approfondimento autonomo da parte degli studenti, incuriosendoli su tecniche di sviluppo evolute (vedi i design pattern). Gli studenti fevono inoltre essere in grado di riusare le conoscenze legate alle basi di dati indipendentemente dallo specifico DBMS utilizzato.

Lezioni frontali in laboratorio con ampio spazio a esercitazioni pratiche svolte con l’uso del personal computer, creazione individuale di semplici basi di dati, elaborazione di script SQL e di programmi Python.

L'esame prevede una prova orale per la verifica dell'apprendimento dei concetti teorici (verifica delle conoscenze) e della capacità di applicazione dei medesimi, in particolare per la codifica autonoma di basi di dati, di script SQL e di semplici programmi Python (verifica delle competenze). Durante l’esame lo studente dovrà usare il personal computer, configurato con gli ambienti di sviluppo illustrati e utilizzati in laboratorio.

Si veda www.disteba.unisalento.it.

www.unisalento.it/people/luca.mainetti

www.unisalento.it/people/massimo.cafaro

 

Ricevimento Studenti

Su appuntamento; contattare il docente via e-mail o al termine degli incontri di classe.

Presentazione dettagliata del modulo Python (1 ora). Struttura dei sistemi di calcolo (2 ore). Il concetto di algoritmo (1 ora). Introduzione al linguaggio Python (2 ore). Programmare con numeri e stringhe (2 ore). Decisioni (2 ore). Cicli (2 ore). Funzioni (2 ore). Liste (2 ore). Eccezioni e file (2 ore). Insiemi e dizionari (2 ore).

 

Introduzione ai database. (1 ora)

Progettazione di un database usando il modello Entità-Relazioni (ER). Tipi di entità, insiemi di entità, attributi e chiavi. Tipi di relazioni, insiemi di relazioni, ruoli e vincoli strutturali. Tipi di entità deboli. Notazione utilizzata. Il modello Entità-Relazioni potenziato. Sottoclassi, superclassi ed ereditarietà. Specializzazione e generalizzazione. Vincoli e caratteristiche delle gerarchie di specializzazione e generalizzazione (4 ore)

 

Modello relazionale. Vincoli del modello relazionale e schemi di database relazionali. (1 ora)

 

Il linguaggio SQL. Definizione dei dati e tipi di dato. I concetti di schema e catalogo. Statement CREATE SCHEMA. Statement CREATE TABLE. Tipi di dato di un attributo. Statement CREATE DOMAIN. Specifica di vincoli in SQL. Vincoli sugli attributi e valori di default per gli attributi. PRIMARY Key, FOREIGN KEY, integrità referenziale. Clausola UNIQUE, clausola CHECK per vincoli su tuple. Query SELECT. Aliases. Eliminare tuple duplicate con DISTINCT. Tabelle come insiemi: operazioni UNION, EXCEPT, INTERSECT. Tabelle come multi-insiemi: UNION ALL, EXCEPT ALL, INTERSECT ALL. Pattern matching per sottostringhe ed operatori aritmetici. Ordinare i risultati di una query: ORDER BY. (3 ore)

 

Statement INSERT. Statement DELETE. Statement UPDATE. Valori NULL. Logica basata sui tre valori TRUE, FALSE ed UNKNOWN. Queries annidate. Queries annidate correlate. Funzioni EXISTS e UNIQUE. Insiemi espliciti e ridenominazione di attributi in SQL. (3 ore).

 

JOIN, NATURAL JOIN, OUTER JOIN (left, right, full). Funzioni di aggregazione: COUNT, SUM, MAX, MIN, AVG. Clausola GROUP BY. Clausola HAVING. Clausola WITH. Costrutto CASE. Queries ricorsive. Concetto di vista in SQL. Statement CREATE VIEW. Statement DROP VIEW. Autorizzazione: statements GRANT e REVOKE. Statement DROP. Statement ALTER. (3 ore)

 

Il DBMS SQLite. DB Browser for Sqlite (1 ora)

 

Accesso ed interazione con una base di dati SQLite in Python. (4 ore)

- Cay Horstmann, Rance D. Necaise, “Concetti di Informatica e Fondamenti di Python”, Seconda Edizione, Apogeo Education, Maggioli Editore, 2019.

- Ramez Elmasri, Shamkant B. Navathe, “Fundamentals of Database Systems”, 7th Edition, Pearson, 2015.

- Materiale didattico fornito dal docente tramite il sito elearning.unisalento.it.

Semester
Second Semester (from 04/03/2024 to 07/06/2024)

Exam type

Type of assessment

Course timetable
https://easyroom.unisalento.it/Orario

Parent teaching
ALTRE ATTIVITA' I ANNO (LB51)

Download teaching card (Opens New Window)(Opens New Window)