- Docente: Michele Lombardi
- Crediti formativi: 9
- Lingua di insegnamento: Italiano
- Moduli: Michele Lombardi (Modulo 1) Francesco Barchi (Modulo 2)
- Modalità didattica: Convenzionale - Lezioni in presenza (Modulo 1) Convenzionale - Lezioni in presenza (Modulo 2)
- Campus: Bologna
-
Corso:
Laurea in
Ingegneria dell'automazione (cod. 9217)
Valido anche per Laurea in Ingegneria dell'automazione (cod. 9217)
Laurea in Ingegneria dell'energia elettrica (cod. 9255)
Laurea in Ingegneria dell'energia elettrica (cod. 9255)
Conoscenze e abilità da conseguire
Introduzione all'uso di un linguaggio di programmazione di alto livello e relativi ambienti di sviluppo. Analisi, specifica e sintesi di algoritmi. Analisi, specifica e progetto, orientati agli oggetti, di sistemi software.
Contenuti
Prerequisiti: La frequentazione di questo insegnamento non richiede alcun prerequisito. Nell'ambito dell'insegnamento infatti lo studente viene introdotto gradualmente ai principi e ai metodi della programmazione imperativa, strutturata e procedurale in particolare. Le nozioni basilari e fondamentali necessarie alla comprensione della materia sono fornite nell'ambito dell'insegnamento stesso, e non viene fatta alcuna assunzione di conoscenze pregresse. Ovviamente, eventuali nozioni acquisite precedentemente sui linguaggi di programmazione possono comunque risultare di aiuto allo studente.
Contenuti:
- Introduzione ai concetti di base dei sistemi di elaborazione moderni: cenni storici sull'informatica, introduzione alla "Architettura di von Neumann" ed ai dispositivi hardware, concetti di base dei sistemi operativi moderni.
- Introduzione al concetto di algoritmo, macchine speciali e universali di Turing, risoluzione di problemi e funzioni computabili e non, concetti di base sui linguaggi macchina e sui linguaggi di programmazione ad alto livello, sintassi dei linguaggi tramite grammatiche EBNF.
- Introduzione al linguaggio C: valori, tipi, costanti, variabili, operatori ed espressioni, puntatori, vettori e stringhe, strutture.
- Programmazione strutturata e procedurale in C: istruzioni di controllo, funzioni, procedure.
- Input e Output in C: primitive di I/O, astrazione basata sul concetto di "stream", accesso ai file.
- Principi e metodologie fondamentali di progetto e sviluppo di algoritmi: soluzione di problemi su piccola scala, iterazione e ricorsione, progettazione e organizzazione di programmi sorgente su più file/moduli nel linguaggio C.
- Organizzazione della macchina runtime del C: rappresentazione run-time dei programmi e del record di attivazione delle funzioni
- Allocazione dinamica della memoria di scalari, strutture e array; gestione della memoria e problemi di "memory leaking" in C.
- Algoritmi di ordinamento semplici: Naive Sort, Bubble Sort, Insert Sort, Merge Sort, e Quick Sort.
- Introduzione ai tipi di dato astratto (ADT): definizione del tipo e operazioni (costruttori, selettori, predicati, funzioni e trasformatori). Alcuni esempi di ADT fondamentali: liste, code, pile.
Testi/Bibliografia
Programmazione e il linguaggio C:
- H. Deitel, P. Deitel. "Il Linguaggio C - Fondamenti e Tecniche di Programmazione", Pearson 2016 o edizioni precedenti.
- A. Kelley, I. Pohl. "C: Didattica e Programmazione", Pearson Education, 2018, o edizioni precedenti.
- A. Bellini, A. Guidi. "Linguaggio C: Guida alla Programmazione", Mc Graw-Hill, 2013, o edizioni precedenti.
Metodi didattici
L'insegnamento è organizzato in due moduli, strettamente integrati per argomenti trattati:
- Il Modulo 1 si tiene in aula, ed ha come obiettivo quello di fornire principi, metodi e strumenti caratterizzanti la disciplina. Le lezioni sono erogate mediante proiezione diretta dal computer del docente, in aula, di diapositive (delle quali lo studente può liberamente scaricarne copia dal sito web del corso, prima delle lezioni).
- Il Modulo 2 si tiene nei laboratori della Scuola, ed ha come scopo quello di permettere agli studenti di "mettere in pratica" quanto presentato nel Modulo 1: ciò avviene tramite esercitazioni, casi di studio e problemi reali posti dal docente. Gli studenti sono spesso invitati a risolvere tramite i computer presenti nei laboratori i problemi posti (esercitazioni), effettuando così una esperienza immediata e diretta di quanto appreso pur restando sotto la supervisione del docente. Anche nel Modulo 2 si fa uso di diapositive proiettate dal computer del docente (disponibili sul sito del corso).
I due moduli sono quindi strettamente correlati, poichè forniscono due "punti di vista" complementari degli stessi argomenti: l'acquisizione da parte dello studente degli argomenti della materia può dirsi completa solo se entrambi gli aspetti sono stati completamente esplorati e oppurtunamente approfonditi.
Modalità di verifica e valutazione dell'apprendimento
La verifica dell'apprendimento si svolge sia in forma di autovalutazione dello studente, tramite le esercitazioni sistematicamente proposte in laboratorio durante il corso, sia al termine, sotto forma di prova d'esame.
La prova d'esame riflette la strutturazione del corso in due moduli. Allo studente infatti viene richiesto di sostenere due prove, una scritta ed una in laboratorio:
- La prova scritta (un'ora di durata) si svolge in aula (condizioni della pandemia di COVID19 permettendo), e riguarda piccoli esercizi e/o domande aperte su tutti gli argomenti trattati nel corso. Il voto di tale prova consiste in un punteggio fino ad un massimo di 12 punti, con una soglia di sufficienza posta al minimo di 7/12 punti; sotto tale soglia la prova è considerata "non superata". Durante tale prova allo studente non è concesso consultare testi, appunti o altra fonte di informazione.
- La prova in laboratorio (due ore di durata) consiste nella risoluzione di un problema tramite la progettazione e lo sviluppo di un piccolo programma in linguaggio C. La prova si svolge al calcolatore, e la consegna dei file di programma avviene tramite una semplice interfaccia web. Il voto di tale prova consiste in un punteggio fino ad un massimo di 20 punti, con una soglia di sufficienza posta al minimo di 11/20 punti; sotto tale soglia la prova è considerata "non superata". Durante tale prova allo studente è permessa la consultazione di testi, appunti e altro materiale in suo possesso; inoltre, è possibile accedere a tutti i materiali didattici pubblicati nel sito web del corso stesso, incluse le diapositive delle lezioni.
Il voto finale è dato dalla somma dei punteggi ottenuti nelle singole prove, se superate. Il voto ottenuto dalla somma è da considerarsi in /30; qualora lo studente abbia preso un punteggio finale eccedente i 30 punti, il voto finale è 30&Lode/30. Qualora lo ritengano necessario, i docenti si riservano la possibilità di chiamare all’orale gli studenti per confermare il voto della prova.
Lo studente può richiedere di sostenere una prova orale facoltativa, allo scopo di aumentare il voto conseguito (l'aumento possibile è al massimo di due punti). In tale caso l'orale verterà su tutti gli argomenti, teorici e non, che sono stati trattati durante il corso.
Lo studente può sostenere le due prove in qualunque ordine, e in uno o più appelli di esame, indifferentemente. Ad esempio è possibile sostenere una prova in un appello di gennaio, ed un'altra prova in un appello a giugno. Tuttavia, data la stretta correlazione delle prove, si consiglia di sostenere entrambe le prove in date prossime tra loro.
Lo studente può ripetere più volte una prova, qualora non sia riuscito a superarla in precedenza, o qualora non sia soddisfatto del punteggio conseguito. Qualora lo studente ripeta una prova (consegnando l'elaborato al docente), tutti i voti precedenti relativi a quella prova vengono considerati nulli, e verrà presa in considerazione solo la prova più recente.
Strumenti a supporto della didattica
Materiale Didattico: tutte le diapositive proiettate e discusse a lezione (sia in aula che in laboratorio) sono pubblicate in formato elettronico e consultabili sulla piattaforma di e-learning: https://virtuale.unibo.it
La pubblicazione e l'aggiornamento delle diapositive avviene a cura del docente, che provvede a rendere disponibile il materiale usato in aula in anticipo rispetto allo svolgersi delle lezioni.
Un elenco esaustivo di testi di riferimento e manuali è consultabile sia sul sito Web, sia sulle diapositive.
Il sito fornisce inoltre suggerimenti per ulteriori approfondimenti, nonchè un certo numero di esercizi e problemi aggiuntivi utili nella preparazione all'esame.
Infine, sempre sul sito web del corso sono disponibili un grande numero di testi e soluzioni di prove d'esame degli anni accademici precedenti, utili allo studente per raffinare e autovalutare la propria preparazione.
Altri strumenti: durante le lezioni e le esercitazioni in laboratorio sono disponibili elaboratori con installati ambienti professionali di sviluppo e programmazione per il linguaggio C. Tali strumenti software, indicati sul sito Web del corso, sono a disposizione gratuita degli studenti e possono essere scaricati ed installati su personal computer privati degli studenti.
Orario di ricevimento
Consulta il sito web di Michele Lombardi
Consulta il sito web di Francesco Barchi