- Foundations of Computer Science
- Summary
Course Syllabus
Obiettivi
Al termine del corso lo studente sarà in grado di interrogare e di inferire la struttura implicita della base di dati a partire dalle tabelle che la compongono.
Inoltre lo studente saprà scrivere e correggere gli errori di semplici programmi in Python per la gestione e l'analisi di dataset formati da poche tabelle interconnesse, come quelle disponibili a kaggle.com (formati CSV, TSV, JSON). In particolare, le analisi verranno fatte utilizzato il Jupyter Notebook.
Infine, lo studente potrà interrogare database relazionali usando SQL, sia come linguaggio separato, sia come chiamata in un programma Python.
Conoscenza e comprensione
Questo insegnamento fornisce le conoscenze basilari e capacità di comprensione relativamente a:
- Database.
- SQL
- Programmazione in Python
- Notebook Jupyter
- Gestione di dati tabellari con Pandas
Capacità di applicare conoscenza e comprensione
Alla fine dell'insegnamento gli studenti saranno in grado di:
- Scrivere interrogazioni in SQL
- Scrivere notebook in Python per gestire dataset
- Scrivere notebook in Python per analizzare e pulire dataset
Contenuti sintetici
Organizzazione di dati grezzi: file system, file con delimitatori.
Introduzione ai database. Il modello relazionale dei dati e linguaggio SQL. Select ... From … Where.
Introduzione alla programmazione in Python. Programmazione esplorativa. Gestione dati in formato tabellare.
Programma esteso
- Organizzazione di dati grezzi
- file, directory, tipi di file
- principali comandi da terminale
- file con delimitatori.
- Introduzione ai database.
- Il modello relazionale dei dati
- Il linguaggio SQL: Select ... From … Where su una tabella.
- Interrogazioni su più tabelle.
- Introduzione alla programmazione in Python.
- Array, liste, dizionari
- Cicli
- Organizzazione di un programma: funzioni
- Librerie
- Programmazione esplorativa. Gestione dati in formato tabellare.
- Jupyter Notebook
- Pandas
- Cenni di test e debugging.
Prerequisiti
Nessuno
Modalità didattica
Lezioni e esercizi al computer. Durante l'emergenza ci saranno delle videoregistrazioni asincrone per introdurre i concetti. Queste occuperanno circa il 25% del tempo totale. Il restante 75% sarà invece dedicato ad esercitazioni pratiche al computer che verranno svolte tramite videoconferenze sincrone.
Il corso è erogato in Italiano.
Materiale didattico
Downey, Pensare in Python (https://github.com/AllenDowney/ThinkPythonItalian)
Downey, Think Python (http://greenteapress.com/wp/think-python-2e/)
VanderPlas, Python Data Science Handbook (https://jakevdp.github.io/PythonDataScienceHandbook/
Allulli, Nanni. Fondamenti di Basi di Dati
Periodo di erogazione dell'insegnamento
Primo semestre
Modalità di verifica del profitto e valutazione
L'esame consiste di due parti: uno scritto per basi di dati e un progetto per Python.
L'esame scritto prevede quattro domande a risposta aperta per la parte di Basi di Dati, dove ogni domanda è una query SQL. Nello scritto viene valutata la completezza e la correttezza delle risposte.
Il progetto in Python è svolto in piccoli gruppi (max 3 persone), e prevede una discussione del progetto dove viene valutata la capacità di realizzare le analisi richieste e di giustificare le decisioni progettuali. La composizione dei gruppi viene decisa dal docente, al fine di garantire un adeguato livello di eterogeneità nella composizione del gruppo. In particolare ogni gruppo contiene una persona con buone competenze informatiche e una persona con buone competenze statistiche.
Il voto finale è ottenuto per 1/3 dalla prova scritta e per 2/3 dal progetto.
Non sono previste prove in itinere, ma alla fine delle lezioni ci sarà una prova parziale, con le stesse modalità della prova scritta. Il superamento della prova parziale permette di non dovere svolgere l'esame scritto.
Orario di ricevimento
Su appuntamento per email. Durante l'emergenza il ricevimento viene garantito e gestito tramite videoconferenza.
Aims
At the end of the course, the students will understand how query a database, and how to infer the implicit structure of a database from its tables.
Moreover, the students will be able to write and debug some simple programs in Python to manage and analyze datasets consisting of a few interconnected tables, such as those usually available at kaggle.com (CSV, TSV, JSON formats). This part will use the Jupyter Notebook.
Finally, the students will be able to query a relational database using SQL, both as a separate language as well as called from a Python program.
Knowledge and understanding
This course provides basic knowledge and understanding on:
- Data bases
- SQL
- Programming in Python
- Jupyter notebooks
- Managing tabular datasets with Pandas
Ability to apply knowledge and understanding
At the end of the course the students will be able to:
- Write SQL queries
- Write Python notebooks to manage datasets
- Write Python notebooks to analyze and clean datasets
Contents
Organizing raw datasets: file system, delimited files.
Introduction to data bases. Relational Data Model and SQL. Select ... From … Where.
Introduction to programming with Python. Explorative programmaing. Managing tabular data.
Introduction to testing and debugging.
Detailed program
- Organizing raw datasets
- files, directories, types of files
- main command-line commands
- delimiter-separated values
- Introduction to data bases.
- The Relational Data Model.
- SQL: Select ... From … Where on a table.
- Querying two or more tables.
- Introduction to programming in Python.
- Arrays, lists, dictionaries
- Loops
- Organization of a programma: functions
- Modules and libraries
- Explorative programming. Managing tabular data.
- The Jupyter Notebook
- Pandas
- Introduction to testing and debugging.
Prerequisites
None
Teaching form
Lectures and exercises with a PC. During the emergency there will be some prerecorded video lectures: those asynchronous video lectures will be roughly 25% of the course. The remaining 75% of the course will be with synchronous videoconferences where some practical exercises will be attacked.
This course is taught in Italian.
Textbook and teaching resource
Downey, Pensare in Python (https://github.com/AllenDowney/ThinkPythonItalian)
Downey, Think Python (http://greenteapress.com/wp/think-python-2e/)
VanderPlas, Python Data Science Handbook (https://jakevdp.github.io/PythonDataScienceHandbook/
Allulli, Nanni. Fondamenti di Basi di Dati
Semester
First
Assessment method
The exam consists of 2 parts: a written exam (with open questions) on the Data bases topics, and a small group (max 3 people) project, with an oral discussion, on the Python topics.
The grading of the written exam is based on the correctness and the completeness of the answers. The written exam consists of writing 4 SQL queries, where each query corresponds to an open-ended question.
The grading of the project is based on the individual contribution that is displayed during the oral discussion and on the fitness of the project to perform the required analysis. The composition of the group is determined by prof. Della Vedova, with the goal of guaranteeing an adequate level of heterogeneity of the group. More precisely, each group will have a student with good programming skills and another student with good statistical skills.
The final grade is 1/3 of the written exam and 2/3 of the project.
There are no in-progress exams.
Office hours
Please reserve a meeting via email. During the emergency, office hours will be via videoconference.
Key information
Staff
-
Gianluca Della Vedova
-
Marco Previtali
-
Simone Ciccolella