Guida degli insegnamenti

Syllabus

Partially translatedTradotto parzialmente
[3I084] - FONDAMENTI DI INFORMATICAFUNDAMENTALS OF COMPUTER SCIENCE
CHIARA CONTOLI
Lingua di erogazione: ITALIANOLessons taught in: ITALIAN
Laurea - [IT15] INGEGNERIA PER LA SOSTENIBILITÀ INDUSTRIALE First Cycle Degree (3 years) - [IT15] SUSTAINABLE INDUSTRIAL ENGINEERING
Dipartimento: [040004] Dipartimento Ingegneria Industriale e Scienze MatematicheDepartment: [040004] Dipartimento Ingegneria Industriale e Scienze Matematiche
Anno di corsoDegree programme year : 2 - Primo Semestre
Anno offertaAcademic year: 2023-2024
Anno regolamentoAnno regolamento: 2022-2023
Obbligatorio
Crediti: 6
Ore di lezioneTeaching hours: 48
TipologiaType: A - Base
Settore disciplinareAcademic discipline: INF/01 - INFORMATICA

LINGUA INSEGNAMENTO LANGUAGE

Italiano

Italian


PREREQUISITI PREREQUISITES

Concetti di funzione e relazione, algebra booleana e teoria degli insiemi. Operazioni con numeri interi e reali, vettori e matrici.

Notions of function and relation, boolean algebra and set theory. Operations with natural and real numbers, vectors and matrices.


MODALITÀ DI SVOLGIMENTO DEL CORSO DEVELOPMENT OF THE COURSE

Il corso consiste in 48 ore di lezione così suddivise:
• 30 di lezioni di teoria
• 6 di esercitazione
• 12 di laboratorio

The course consists of 48 hours of class lectures, divided as the following:
• 30 hours of theory
• 6 hours of exercises
• 12 hours of laboratory


RISULTATI DI APPRENDIMENTO ATTESI LEARNING OUTCOMES
Conoscenze e comprensione.

Il corso fornisce conoscenze di base dei principi dell'informatica e della programmazione strutturata. In particolare il corso introduce alla conoscenza delle principali strutture dati e tecniche di programmazione strutturata e ad oggetti, nonché degli elementi di base di teoria della complessità.
Il corso fornisce inoltre elementi di base per la programmazione in Python per dispositivi intelligenti e ad elevato efficientamento energetico.


Capacità di applicare conoscenze e comprensione.

Al termine del corso, lo studente, grazie anche allo svolgimento di lavoro di gruppo, sarà in grado di:
• scrivere programmi applicativi efficienti in Python utilizzando le più importanti strutture dati;
• svolgere analisi del codice durante le fasi di sviluppo al fine di individuare errori di programmazione e di design;
• definire algoritmi per la soluzione di problemi complessi e usare quindi le più comuni tecniche di problem solving;
• utilizzare ambienti di sviluppo propri per la programmazione di dispositivi smart;
• valutare le soluzioni software più efficienti.


Competenze trasversali.

Al termine del corso lo studente avrà sviluppato la capacità di affrontare in maniera critica la progettazione e implementazione di soluzioni software efficienti in contesti che mettono in primo piano l’efficientamento energetico. A questo scopo, sarà in grado di sapersi relazionare con diverse professionalità, anche di formazione ingegneristica, ma senza esperienza nell’ambito della programmazione software. Grazie alle attività di gruppo previste, lo studente acquisirà la capacità di lavorare in gruppo come membro o come coordinatore sapendosi relazionare con persone di pari livello o di livello superiore. Infine, svilupperà una propria autonomia di giudizio data dalla consapevolezza delle proprie competenze.


Knowledge and Understanding.

The course provides basic knowledge of the principles of computer science and structured programming. In particular, the course introduces knowledge of the main data structures and structured, object-oriented programming techniques, as well as basic elements of complexity theory.
The course also provides basic elements for programming in Python for intelligent and energy efficient devices.


Capacity to apply Knowledge and Understanding.

At the end of the course, the student, thanks also to the development of group work, will be able to:
• write efficient application programs in Python using the most important data structures;
• perform code analysis during the development phases in order to identify programming and design errors;
• define algorithms for the solution of complex problems and then use the most common problem solving techniques;
• use development environments specifically designed for programming smart devices;
• estimate the most efficient software solutions.


Transversal Skills.

At the end of the course the student will have developed the ability to deal critically with the design and implementation of efficient software solutions in contexts that focus on energy efficiency. To this end, the student will be able to relate to different professionals, including those with an engineering background, but without experience in software programming. Thanks to the planned group activities, the student will acquire the ability to work in a group as a member or as a coordinator knowing how to relate with people of the same level or higher. Finally, they will develop their own autonomy of judgment given by the awareness of their own skills.



PROGRAMMA PROGRAM

Il corso comprende due parti distinte, una di carattere più fondazionale su principi e tecniche di programmazione, che utilizza Python come linguaggio di riferimento, ed una seconda più applicativa sullo sviluppo di applicazioni software in ambienti smart.
PRIMA PARTE: Principi e tecniche di programmazione
1. Introduzione agli algoritmi e alle strutture dati.
2. Descrizione dei paradigmi e linguaggi di programmazione.
3. Il caso di Python.
4. Nomi, ambienti e gestione della memoria.
5. Strutture e astrazioni dei dati.
6. Strutture e astrazioni del flusso di esecuzione.
7. Programmazione ad oggetti.
8. Complessità computazionale e cenni di teoria della calcolabilità.
9. Tecniche di analisi e progettazione.
SECONDA PARTE: Sviluppo di applicazioni efficienti
10. Implementazione di algoritmi su strutture dati avanzate.
11. Sviluppo di interfacce grafiche.
12. Building automation con Python.

The course includes two distinct parts, one more foundational on programming principles and techniques, using Python as a reference language, and a second more applied on the development of software applications in smart environments.
FIRST PART: Principles and techniques of programming
1. Introduction to algorithms and data structures.
2. Description of programming paradigms and languages.
3. The case of Python.
4. Names, environments and memory management.
5. Data Structures and abstractions.
6. Execution flow structures and abstractions.
7. Object-oriented programming.
8. Computational complexity and introduction to computability theory.
9. Analysis and design techniques.

SECOND PART: Development of efficient applications
10. Implementation of algorithms on advanced data structures.
11. Development of graphical interfaces.
12. Building automation with Python.


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

L'esame consiste in una prova scritta e nella discussione orale di un progetto svolto dallo studente. La prova scritta consiste di uno o più esercizi mirati a valutare la capacità di sviluppo, correzione e analisi di programmi applicativi. Il progetto verte su requisiti assegnati dal docente almeno un mese prima della sessione in cui si svolge l’esame. Lo svolgimento del progetto consiste nella progettazione e sviluppo di una applicazione software funzionante ed efficiente, che dovrà essere presentata dallo studente nella discussione orale.


Criteri di valutazione dell'apprendimento.

Per la prova scritta verranno valutate per ogni esercizio la correttezza metodologica nello svolgimento dell’esercizio, nonché la correttezza del codice e/o delle analisi fornite come risposta; l’efficacia delle soluzioni proposte come risposta, nonché la padronanza delle tecniche e delle competenze usate nel fornire la risposta; la chiarezza delle soluzioni proposte.
Per la discussione orale verranno valutate la correttezza ed efficienza del progetto, la padronanza delle tecniche usate durante lo svolgimento, la capacità di motivare e argomentare le soluzioni tecniche adottate, la chiarezza espositiva.


Criteri di misurazione dell'apprendimento.

Il voto sarà assegnato in trentesimi, con possibilità di lode. La votazione minima per passare l’esame è 18/30.


Criteri di attribuzione del voto finale.

Per superare l’esame lo studente deve dimostrare di avere una buona conoscenza dei principi e delle tecniche di programmazione, con particolare riferimento al linguaggio Python. Deve inoltre dimostrare di saper applicare le conoscenze teoriche acquisite allo sviluppo di applicazioni software corrette ed efficienti e alla risoluzione di problemi complessi tramite algoritmi. La lode verrà assegnata agli studenti che sapranno dimostrare ottima padronanza di linguaggio, capacità di esposizione scritta e orale, un utilizzo appropriato delle tecniche di problem solving e degli ambienti di sviluppo.


Learning Evaluation Methods.

The exam consists of a written test and an oral discussion of a project carried out by the student. The written test consists of one or more exercises aimed at assessing the ability to develop, correct and analyze application programs. The project is based on requirements assigned by the lecturer at least one month before the session in which the exam is held. The project consists of the design and development of a working and efficient software application, which must be presented by the student in the oral discussion.


Learning Evaluation Criteria.

For the written test, the following will be evaluated for each exercise: the methodological correctness in carrying out the exercise, as well as the correctness of the code and/or of the analyses provided as an answer; the effectiveness of the solutions proposed as an answer, as well as the mastery of the techniques and skills used in providing the answer; the clarity of the solutions proposed.
For the oral discussion, the elements under evaluation are the correctness and efficiency of the project, the mastery of the techniques used during the development, the ability to motivate and argue the technical solutions adopted, and the clarity of exposition.


Learning Measurement Criteria.

The final vote will be assigned with a score in the scale of 30, with the opportunity to award a praise for the best students. Minimum vote to pass the exam is 18/30.


Final Mark Allocation Criteria.

To pass the exam, the student must demonstrate a good knowledge of programming principles and techniques, with particular reference to the Python language. He must also demonstrate the ability to apply the acquired theoretical knowledge to the development of correct and efficient software applications and to the resolution of complex problems using algorithms. Honors will be awarded to students who can demonstrate excellent command of language, written and oral expository skills, appropriate use of problem solving techniques and development environments.



TESTI CONSIGLIATI RECOMMENDED READING

Appunti e slides delle lezioni.
K.A. Lambert, Programmazione in Python, Apogeo.
M. Gabbrielli e S. Martini, Linguaggi di programmazione: principi e paradigmi, Seconda edizione. McGraw-Hill.

Lecture notes and slides.
K.A. Lambert Fundamentals of Python, Cengage.
R.W. Sebesta. Concepts of Programming Languages. Pearson.


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

 


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