Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[3I084] - FONDAMENTI DI INFORMATICAFUNDAMENTALS OF COMPUTER SCIENCE
Adriano MANCINI
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea Magistrale - [IM09] INGEGNERIA MECCANICA Master Degree (2 years) - [IM09] MECHANICAL ENGINEERING
Dipartimento: [040004] Dipartimento Ingegneria Industriale e Scienze MatematicheDepartment: [040004] Dipartimento Ingegneria Industriale e Scienze Matematiche
Anno di corsoDegree programme year : 1 - Primo Semestre
Anno offertaAcademic year: 2020-2021
Anno regolamentoAnno regolamento: 2020-2021
Obbligatorio
Crediti: 9
Ore di lezioneTeaching hours: 72
TipologiaType: C - Affine/Integrativa
Settore disciplinareAcademic discipline: ING-INF/05 - SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI

LINGUA INSEGNAMENTO LANGUAGE

ITALIANO

Italian


PREREQUISITI PREREQUISITES

Nessuno

Nessuno


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

La durata del corso è di 72 ore così suddivise:
• Lezioni di Teoria (L): 48 ore
• Esercitazioni (E): 24 ore

The duration of the course is 72 hours divided as follows:
• Theory lessons (L): 48 hours
• Exercises (E): 24 hours


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

L’insegnamento introduce i fondamenti dell’informatica mediante un linguaggio di programmazione moderno quale il python. Gli studenti potranno apprendere i concetti base della programmazione fino ad arrivare all'utilizzo di librerie che aiutano a risolvere problemi propri dell’ingegneria meccanica. In particolare, il corso consente di sviluppare le seguenti conoscenze:
• concetti di base della programmazione;
• istruzioni di base in Python;
• moduli e funzioni in Python;
• strutture dati in Python;
• errori, test e debugging;
• statistica e file;
• database;
• grafica ed immagini;
• ROS e interfacciamento con Python


Capacità di applicare conoscenze e comprensione.

Lo studente dovrà sviluppare la capacità di:
1) Risolvere problemi ed implementare semplici algoritmi utilizzando il linguaggio python
2) Analizzare la correttezza di un programma python ed essere in effettuare il debugging e testing
3) Acquisire dimestichezza con la terminologia di dominio.
4) Acquisire dimestichezza con l’utilizzo di librerie di pubblico dominio.


Competenze trasversali.

Le capacità di pianificare i passi da svolgere per risolvere un problema contribuiranno a sviluppare l'autonomia di giudizio e il pensiero computazionale degli studenti.


Knowledge and Understanding.

The course introduces the fundamentals of computer science through a modern programming language such as python. Students will learn the basic concepts of programming up to the use of libraries that help solve mechanical engineering problems. In particular, the course enables the acquisition of the following knowledge:
• basic concepts of programming;
• basic instructions in Python;
• modules and functions in Python;
• data structures in Python;
• errors, tests and debugging;
• statistics and files;
• database;
• graphics and images;
• ROS and Python.


Capacity to apply Knowledge and Understanding.

The student will acquire the following abilities:
1) Solve problems and implement simple algorithms using the python language
2) Analyze the correctness of a python program and
be in debugging and testing
3) Become familiar with domain terminology.
4) Become familiar with the use of public domain libraries.


Transversal Skills.

The ability to plan the steps to solve a problem will help develop students' autonomy of judgment and
computational thinking.



PROGRAMMA PROGRAM

Concetti di base della programmazione (1 CFU) (L)
Introduzione alla programmazione informatica; introduzione a Python; chi usa Python e per che cosa; installazione di Python; IDE in Python; la filosofia di Python; un primo programma in Python; personalizzare l’IDE; valutazione di un’espressione; operazioni aritmetiche ed espressioni; variabili e operatore di assegnamento; le funzioni predefinite; i tipi di dato; la funzione print(); calcoli matematici in Python; lo stile di programmazione in Python.

Le istruzioni di base in Python (0.5 CFU) (L+E)
La funzione input(); la sequenza; la selezione; operatori relazionali o di confronto; operatori logici e il tipo di dato bool; i cicli; il ciclo for; il ciclo while; cicli annidati.

Moduli e funzioni in Python (1 CFU) (L+E)
La libreria standard di Python; definizione di funzioni; spazio dei nomi; import e dir(); numeri pseudo-casuali;

Strutture dati in Python (1 CFU) (L+E)
Tipi di dati semplici e composti; il tipo di dato str; le liste; il tipo di dato list; il tipo di dato tuple; il tipo di dato set; il tipo di dato dict.

Errori, test e debugging (0.5 CFU) (L+E)
Errori ed eccezioni; bug e debugging; Test Driven Development.

Statistica e File (0.5 CFU) (L+E)
Media; frequenze assolute e relative; diagrammi; moda; mediana; cenni di calcolo numerico; metodo Monte Carlo; i file.

Database (1 CFU) (L+E)
Introduzione ai database; progettazione concettuale di un database; progettazione logica di un database; il modello relazionale; introduzione a SQL; creazione, modifica e rimozione di tabelle; inserimento, cancellazione e aggiornamento di una riga di una tabella; semplici letture da un database tramite SQL; interfacciamento tra Python e un DBMS relazionale.

Grafica e immagini (0.5 CFU) (L+E)
Immagini digitali, PIL, pip e Pillow, numpy

Python nel contesto dell’Ingegneria Meccanica (1 CFU) (L+E)
Utilizzo di librerie Python per la risoluzione di problemi dell’Ingegneria Meccanica e della Meccatronica
Librerie specifiche per il mondo meccanico
numpy, pandas e matplotlib

ROS e interfacciamento con Python (2 CFU) (L+E)
Introduzione all’ecosistema ROS; IDE per python, ROS e command line interface; concetto di ROS package, node e topic; creazione di messaggi standard e custom; ROS services e parameters; inter-node communication mediante publisher-subscriber; utilizzo di Gazebo per la simulazione di robot; strumenti di utilità per il monitoraggio e logging dei topic (rosbag, rostopic,.).

Basic concepts of programming (1 CFU)
Introduction to computer programming; introduction to Python; who uses Python and for what; installation of Python; IDE in Python; the Python philosophy; a first program in Python; customize the IDE; evaluation of an expression; arithmetic operations and expressions; variables and assignment operator; predefined functions; the types of data; the print () function; mathematical calculations in Python; the programming style in Python.

Basic Python Instructions (0.5 CFU) (L)
The input () function; the sequence; the selection; relational or comparison operators; logical operators and the data type bool; the cycles; the for loop; the while loop; nested loops.

Modules and functions in Python (1 CFU) (L+E)
The standard Python library; definition of functions; namespace; import and dir (); pseudo-random numbers;

Data structures in Python (1 CFU) (L+E)
Simple and compound data types; the data type str; the lists; the type of data list; the tuple data type; the data type set; the data type dict.

Errors, tests and debugging (0.5 CFU) (L+E)
Errors and exceptions; bugs and debugging; Test Driven Development.

Statistics and Files (0.5 CFU) (L+E)
Average; absolute and relative frequencies; diagrams; fashion; median; basics of numerical calculation; Monte Carlo method; I/O over files.

Database (1 CFU) (L+E)
Introduction to databases; conceptual design of a database; logical design of a database; the relational model; introduction to SQL; creation, modification and removal of tables; inserting, deleting and updating a row of a table; simple readings from a database through SQL; interfacing between Python and a relational DBMS.

Graphics and images (0.5 CFU) (L+E)
Digital images, PIL, pip and Pillow, numpy

Python in the context of Mechanical Engineering (1 CFU) (L+E)
Use of Python libraries for solving mechanical engineering and mechatronics problems
Specific libraries for the mechanical area
numpy, pandas and matplotlib

ROS and interfacing with Python (2 CFU) (L+E)
Introduction to the ROS ecosystem; IDE for python, ROS and command line interface; ROS package, node and topic concept; creation of standard and custom messages; ROS services and parameters; inter-node communication through publisher-subscriber; use of Gazebo for robot simulation; utility tools for monitoring and logging of topics (rosbag, rostopic, ...).


MODALITÀ DI SVOLGIMENTO DELL'ESAME DEVELOPMENT OF THE EXAMINATION
Modalità di valutazione dell'apprendimento.

La valutazione del livello di apprendimento degli studenti consiste in due prove: - una prova scritta, consistente nella realizzazione di un progetto didattico da presentare contestualmente alla sessione di esame; - una prova orale, consistente nella discussione del progetto didattico realizzato e l alcuni temi trattati nel corso. La sufficienza ottenuta nella elaborazione della prova scritta è necessaria al superamento dell'esame e tenuta contestualmente alla prova orale. Le linee guida ed istruzioni per il progetto didattico vengono presentate agli studenti all'inizio del corso e pubblicate sulla pagina del docente. Il docente assegna il progetto allo studente o al gruppo di lavoro (max 2 persone). Nel caso di sessioni numerose il docente si riserva di effettuare una prova scritta pre-selettiva.


Criteri di valutazione dell'apprendimento.

La valutazione del livello di apprendimento degli studenti consiste in due prove: - verifica delle conoscenze necessarie per la redazione dell'elaborato progettuale; - discussione orale su più temi trattati nel corso. Il progetto può essere svolto in gruppi, composti al massimo da due studenti. Il superamento della prima prova è vincolante per l'accesso alla discussione orale. Nel caso di esito negativo della discussione orale, lo studente deve ripetere entrambe le prove. Per superare con esito positivo la valutazione dell'apprendimento lo studente deve dimostrare, attraverso le prove descritte, di aver ben compreso i concetti esposti nel corso e di avere acquisito adeguata padronanza dei concetti base della programmazione e del linguaggio Python.


Criteri di misurazione dell'apprendimento.

Attribuzione del voto finale in trentesimi.


Criteri di attribuzione del voto finale.

Al fine del superamento dell'esame con votazione minima, lo studente deve possedere il bagaglio completo delle conoscenze. Ulteriore punteggio sarà attribuito in base alla padronanza delle abilità generali e specifiche. La valutazione massima è raggiunta dimostrando nell'ambito delle prove una conoscenza approfondita dei contenuti del corso. La lode verrà attribuita agli studenti che, avendo conseguito la valutazione massima, saranno in grado di esibire una spiccata padronanza della materia e brillantezza nella esposizione orale.


Learning Evaluation Methods.

The exam consists on two main parts: technical report related to a project and oral. The technical report part is the development of an educational project assigned by the teache. that is discussed during the examination session. The discussion starts from the assigned educational project exploring also additional concepts presented during the course. In case of sessions with a large number of students a written test will be evaluate by the teacher.


Learning Evaluation Criteria.

The learning evaluation criteria consists of two examinations: - evaluation of the knowledge necessary for the preparation of the design exercise; - oral examination focus on some of the course topics. The design exercise can be carried out as a group work; each group consists of, at most, two students. A positive score in the first test (design exercise) is mandatory in order to access to the oral examination. In the case of a negative score in the oral examination, the student have to take again both tests. In order to pass positively the examination, the student needs to prove to have fully understood the course topics and to have learned the foundations of computer programming and Python language.


Learning Measurement Criteria.

Assignment of a final score (maximum score is 30)


Final Mark Allocation Criteria.

Al fine del superamento dell'esame con votazione minima, lo studente deve possedere il bagaglio completo delle conoscenze. Ulteriore punteggio sarà attribuito in base alla padronanza delle abilità generali e specifiche. La valutazione massima è raggiunta dimostrando nell'ambito delle prove una conoscenza approfondita dei contenuti del corso. La lode verrà attribuita agli studenti che, avendo conseguito la valutazione massima, saranno in grado di esibire una spiccata padronanza della materia e brillantezza nella esposizione orale.



TESTI CONSIGLIATI RECOMMENDED READING

Concetti di informatica e fondamenti di Python (Italiano) Copertina flessibile – 17 giugno 2019
Cay S. Horstmann (Autore), Rance D. Necaise (Autore), M. Dalpasso (a cura di)
ISBN-10: 889163543X
ISBN-13: 978-8891635433

Materiale didattico disponibile al seguente indirizzo: https://learn.univpm.it

Concetti di informatica e fondamenti di Python (Italiano) Copertina flessibile – 17 giugno 2019
Cay S. Horstmann (Autore), Rance D. Necaise (Autore), M. Dalpasso (a cura di)
ISBN-10: 889163543X
ISBN-13: 978-8891635433

Slides and other support available at the following URL: https://learn.univpm.it


E-LEARNING E-LEARNING

NO

NO


Scheda insegnamento erogato nell’A.A. 2020-2021
Le informazioni contenute nella presente scheda assumono carattere definitivo solo a partire dall'A.A. di effettiva erogazione dell'insegnamento.
Academic year 2020-2021

 


Università Politecnica delle Marche
P.zza Roma 22, 60121 Ancona
Tel (+39) 071.220.1, Fax (+39) 071.220.2324
P.I. 00382520427