00819 - PROGRAMMAZIONE (CL.A)

Anno Accademico 2026/2027

  • Docente: Antonella Carbonaro
  • Crediti formativi: 12
  • SSD: INFO-01/A
  • Lingua di insegnamento: Italiano
  • Moduli: Antonella Carbonaro (Modulo 1) Mirko Ravaioli (Modulo 2)
  • Modalità didattica: Lezioni in presenza (totalmente o parzialmente) (Modulo 1); Lezioni in presenza (totalmente o parzialmente) (Modulo 2)
  • Campus: Cesena
  • Corso: Laurea in Ingegneria e scienze informatiche (cod. 6673)

Conoscenze e abilità da conseguire

Al termine del corso, lo studente ha una competenza di base sulla programmazione mediante linguaggio C e sull'analisi di alcuni problemi fondamentali e dei relativi algoritmi risolutori.

Contenuti

Il corso di Programmazione è finalizzato a fornire una solida competenza nella programmazione in linguaggio C. Non sono richiesti prerequisiti informatici. Il corso introduce dapprima l'approccio algoritmico alla soluzione di problemi mediante calcolatore, per poi sviluppare, attraverso il linguaggio C, i principali problemi, le strutture dati e gli algoritmi. Il linguaggio viene presentato in modo completo e autosufficiente, senza presupporre alcuna conoscenza pregressa da parte degli studenti.

Il linguaggio C

  • Organizzazione della memoria: indirizzi, parole, puntatori
  • Tipi di dato e strutture dati
  • Il linguaggio C: scopi, caratteristiche e struttura di un programma (header, dichiarazioni, librerie)
  • Puntatori e aritmetica dei puntatori
  • Array e matrici: rappresentazione in memoria
  • Strutture dati fondamentali: liste, pile, code, alberi
  • Funzioni di libreria e funzioni definite dall'utente
  • Passaggio di parametri e funzioni ricorsive
  • Funzioni di input/output e gestione dei file
  • Gestione diretta della memoria
  • Funzioni per la manipolazione delle stringhe

Progetto ed analisi di algoritmi

  • Tipi di dato astratti: specifica algebrica e implementazione di vettori, liste, pile, code, alberi
  • Algoritmi su strutture dati: costruzione, ricerca e ordinamento

Il ruolo degli strumenti di intelligenza artificiale nella programmazione

  • Uso degli strumenti di IA generativa nel ciclo di vita del codice
  • Potenzialità e rischi nel supporto all'apprendimento e alla produttività

Struttura del Corso

Il corso di Programmazione è articolato in due moduli distinti, pensati per favorire un apprendimento completo e graduale:

  • Modulo 1 – Lezioni Frontali (in aula):
    Questo modulo si svolge interamente in aula e affronta in modo sistematico tutti gli argomenti previsti dal programma. Le lezioni frontali guidano gli studenti attraverso i concetti teorici fondamentali della programmazione, fornendo le basi necessarie per affrontare le esercitazioni pratiche.

  • Modulo 2 – Laboratorio (in presenza):
    Il secondo modulo è completamente dedicato alle attività di laboratorio. Qui gli studenti hanno l'opportunità di mettere in pratica quanto appreso durante le lezioni, sviluppando codice, risolvendo esercizi e lavorando su piccoli progetti. L'obiettivo è consolidare le competenze teoriche attraverso l’esperienza diretta e guidata.

Testi/Bibliografia

Necessari alla preparazione dell’esame: copia dei lucidi usati a lezione e materiale didattico messi a disposizione dal docente sul sito dedicato al corso.

Consigliati: 

  • Programmazione in C - Kim N. King - Apogeo, 2009.

Approfondimenti:

  • Introduction to Algorithms - T. H. Cormen, C. E. Leiserson, R. L. Rivest - MIT Press, Cambridge, 1990.

Metodi didattici

Didattica frontale, esercitazioni in aula, esercitazioni in laboratorio.

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/] in modalità e-learning.

Modalità di verifica e valutazione dell'apprendimento

La verifica dell'apprendimento avviene attraverso lo svolgimento di una prova scritta e di una successiva prova orale. La prova scritta, della durata di circa due ore, mira ad accertare le abilità acquisite nella programmazione tramite linguaggio C, con l'implementazione di algoritmi efficienti, e a verificare l'acquisizione delle conoscenze previste dal programma del corso. Durante la prova scritta, lo studente non può avvalersi dell'aiuto di libri, appunti o di qualsiasi altro supporto. Per partecipare alla prova scritta lo studente iscriversi alla lista dell'appello tramite l'applicativo AlmaEsami.

La valutazione della prova scritta deve risultare almeno sufficiente (i.e., lo studente deve ottenere una valutazione ≥ 18/30) per poter accedere alla successiva obbligatoria prova orale. La prova orale, anch'essa valutata in trentesimi, mira a verificare l'acquisizione delle conoscenze previste dal programma del corso.

Il voto finale, espresso in trentesimi, tiene conto delle valutazioni ottenute nella prova scritta e nella prova orale. Sarà valutata la padronanza dei concetti fondamentali e la capacità operativa nell’applicarli. Un punteggio più alto sarà assegnato a chi mostrerà una comprensione completa dei contenuti dell’insegnamento, sapendo impiegarli con proprietà di linguaggio e autonomia nella risoluzione di problemi, anche di natura nuova o non trattati durante le lezioni. Il mancato superamento dell’esame potrà invece derivare da una conoscenza parziale o inadeguata dei concetti di base, da un uso improprio del linguaggio tecnico, o da una scarsa capacità di astrazione e generalizzazione.

Pur non essendo obbligatoria, la partecipazione attiva alle lezioni e ai laboratori è fortemente consigliata, in quanto rappresenta un supporto fondamentale per acquisire in modo efficace e graduale i contenuti del corso.

 

Strumenti a supporto della didattica

Tutto il materiale utilizzato durante le lezioni frontali e durante le esercitazioni di laboratorio viene reso disponibile anche in formato elettronico e raggiungibile sugli spazi di Ateneo dedicati al corso.

Orario di ricevimento

Consulta il sito web di Antonella Carbonaro

Consulta il sito web di Mirko Ravaioli

SDGs

Istruzione di qualità Imprese innovazione e infrastrutture

L'insegnamento contribuisce al perseguimento degli Obiettivi di Sviluppo Sostenibile dell'Agenda 2030 dell'ONU.