CODE 97163 ACADEMIC YEAR 2021/2022 CREDITS 9 cfu anno 2 INGEGNERIA GESTIONALE 10716 (L-9) - GENOVA SCIENTIFIC DISCIPLINARY SECTOR ING-INF/05 LANGUAGE Italian (English on demand) TEACHING LOCATION GENOVA SEMESTER 2° Semester TEACHING MATERIALS AULAWEB OVERVIEW The course introduces to advanced programming in Python, including object-oriented programming, efficient use of data structures and algorithms, creation and use of exceptions and libraries for file manipulation; the course introduces also to database management by providing elements on design and implementation of relational databases. AIMS AND CONTENT LEARNING OUTCOMES The aim of the course is to introduce the student to the main concepts related to the management of large quantities of data on computers (database) and their use in applications developed to enable input, handling and management of such data. The course will provide knowledge about the main databases in use (relational and associative model) and on the related technical and practical features. The knowledge of object oriented programming in Python will be given as an instrument to interact with database and develop applications that can persist data beyond the standard predefined data structures in Python. During the course the student will leanr how to implement simple databases and interact with them through Python scripts. As for capabilities, the student will learn how to choose the best model for a specific task, and choose the best implementation of data structures to interact with a specific database. AIMS AND LEARNING OUTCOMES The aim of the course for the Python programming language part, is to introduce the student to the following topics: object-oriented design and programming; using pre-defined and user-defined data structures efficiently; using libraries for file manipulation; creazione e utilizzo di eccezioni per la gestione degli errori; introduction to the libraries numpy, matplotlib and pandas to analyze and present data. Regarding databases, the aim of the course is to introduce the student to the following topics: introduction to databases relational databases SQL language to create and query relational databases progettazione di basi di dati con diagrammi entità-relazione The main learning outcome will be the ability to combine programming skills in Python with database engineering skills in order to build applications that, starting from row data, can process them, insert them into a database to enable efficient querying and presentation of data. PREREQUISITES The course requires basic knowledge of the Python programming language (types, expressions, conditional statements, iteration statements, function definition, predefined data structures). Even if the course starts with a quick review of these concepts, a good grasp on them is preferrable to follow the course. TEACHING METHODS The course is taught with standard classes and labs. Most classes will be hands-on, where the main concepts will be explained through examples and extensive interaction will take place. Some classe will be mainly based on slides. During labs students will have a chance to solve some exercises with teacher guidance. Classe and labs might be delivered online. SYLLABUS/CONTENT The course focuses on the following topics: Variables, expressions, string types Control structures Lists: features and performances Tuples and ranges: features and performances Sets: features and performances Dictionaries: features and performances Console IO and file handling Regular expressions, modules and packages datatime module, mathematical and numerical modules Collections and heapq module Class definition and implementation Inheritance and polymorfism Iterators and generators Errors and exceptions Structured testing Introduction to databases Relational model Using SQL as Data Definition Language Design of databases Entity-relationship diagrams Logic design Using SQL as Data Manipulation Language Normalization RECOMMENDED READING/BIBLIOGRAPHY Tony Gaddis - Introduzione a Python - Pearson (Informatica) Paolo Atzeni, Stefano Ceri, Piero Fraternali - Basi di Dati - McGraw Hill TEACHERS AND EXAM BOARD FABIO ROLI ARMANDO TACCHELLA Ricevimento: Please make an appointment with the teacher via email Exam Board ARMANDO TACCHELLA (President) MASSIMO NARIZZANO DAVIDE ANGUITA (President Substitute) LESSONS LESSONS START https://corsi.unige.it/10716/p/studenti-orario Class schedule The timetable for this course is available here: Portale EasyAcademy EXAMS EXAM DESCRIPTION Hands-on test (possibly online) and interview about the test (possibly online as well). ASSESSMENT METHODS Solving exercises that require loading raw data to a database; data are contained in text files; the databse shoudl be queried and results presented according to specifications. Exam schedule Data appello Orario Luogo Degree type Note 20/01/2022 09:00 GENOVA Scritto 15/02/2022 09:00 GENOVA Scritto 08/06/2022 09:00 GENOVA Scritto 30/06/2022 09:00 GENOVA Scritto 25/07/2022 09:00 GENOVA Scritto 16/09/2022 09:00 GENOVA Scritto