Salta al programma e libri di testo
Questa è la pagina del modulo di Laboratorio di Algoritmi e Strutture Dati (Classe A, Classe B), corso di laurea in Ingegneria e Scienze Informatiche, AA 2022/2023, Università di Bologna.
I tutor per il laboratorio sono:
Il modulo di teoria è tenuto dai prof. Luciano Margara (classe A) e Vittorio Maniezzo (classe B).
Per seguire in modo proficuo il laboratorio di Algoritmi e Strutture Dati è necessario avere una buona conoscenza del linguaggio C: occorre saper usare un compilatore/ambiente di sviluppo a propria scelta per scrivere programmi di media complessità. In pratica, è necessario aver seguito il corso di Programmazione e superato il relativo esame.
All'inizio di ogni laboratorio il docente farà una breve introduzione (20-30 minuti al massimo) sull'argomento trattato e i problemi da risolvere. Gli esercizi riguarderanno quanto visto nelle lezioni di teoria (in certi casi potremmo dover anticipare argomenti trattati in lezioni di teoria successive); in ogni caso suggerisco di riguardare quanto fatto in aula prima di ogni laboratorio.
Durante i laboratori verranno forniti programmi parzialmente implementati da completare; potranno essere forniti anche dei file di input oppure dei casi di test per verificare la presenza di errori (non la loro assenza!). A questo punto ciascuno completerà i programmi, lavorando individualmente o in gruppo. Il docente e i tutor saranno a disposizione per fornire suggerimenti e aiutare a risolvere i problemi.
Nei giorni successivi il laboratorio verranno fornite delle possibili soluzioni. Si tenga presente che in generale non esiste una unica soluzione "corretta", per cui soluzioni alternative sono benvenute (purché corrette ed efficienti).
Il docente utilizzerà il compilatore gcc in ambiente Linux, ma gli esercizi possono essere svolti con qualunque ambiente di sviluppo che supporti lo standard C89/C90 (ANSI C), ad esempio, Code::Blocks, Xcode, MS Visual Studio, ecc.
Personalmente consiglio l'uso di un compilatore a riga di comando:
A causa dell'enorme varietà di combinazioni di sistema operativo/ambiente di sviluppo, è impossibile fornire assistenza alla configurazione del software. Come scritto sopra, non si impone l'uso di un ambiente di sviluppo specifico, ma si assume che gli studenti sappiano usare il proprio sistema secondo i requisiti del corso. È comunque disponibile una guida alla configurazione di Code::Blocks, Visual Studio e uso della riga di comando a cura del docente e dei tutor.
Per la parte di teoria, il libro già consigliato dai proff. Maniezzo e Margara:
Sulla programmazione C va bene quello usato nel corso di Programmazione, oppure il classico "Kernighan e Ritchie":
Sulle buone pratiche per la scrittura del codice:
Classe B (prof. Maniezzo) | Giovedì 15:00—18:00, lab 2.2 |
---|---|
Classe A (prof. Margara) | Venerdì 09:00—12:00, lab 2.2 |
Salta al calendario delle lezioni
L'esame del modulo di laboratorio consiste nello svolgimento di un progetto composto da un esercizio in cui si richiede la progettazione e realizzazione di un algoritmo in linguaggio C (standard ANSI C/C89/C90). Non saranno accettati programmi scritti in C99.
Non verrà assegnato un voto, ma la consegna di un progetto corretto è condizione necessaria per accedere alla prova scritta, anche in anni accademici successivi (i progetti valutati positivamente non scadono).
Le specifiche del progetto vengono assegnate alla fine del corso, e rese disponibili tramite la piattaforma Virtuale. Le specifiche restano valide per tutto l'Anno Accademico corrente (2022/2023).
A titolo di esempio, vengono rese disponibili le specifiche del progetto dell'anno accademico precedente. Non si garantisce che il tipo di progetto o il livello di difficoltà restino gli stessi anche per il presente anno accademico.
Il progetto va svolto individualmente. I programmi potranno essere consegnati in qualunque momento, fino a circa 10 giorni prima di ciascuna prova scritta.
Nel caso di progetto insufficiente sarà possibile modificare il codice e riconsegnare. In caso di riconsegna non è garantito che la correzione venga effettuata in tempo per l'ammissione all'appello immediatamente successivo.
Tutte le consegne verranno confrontate tra loro mediante software antiplagio. Indici di similarità troppo elevati comporteranno l'annullamento della consegna e l'assegnazione di un nuovo progetto, con specifiche diverse, da svolgere da zero. L'annullamento riguarderà entrambi gli estremi della copiatura (cioè sia chi copia, sia chi fa copiare).
Nota: Il materiale didattico non sostituisce né i libri di testo né la frequenza di lezioni e laboratori. Il materiale verrà aggiornato periodicamente.
Data | Classe B (prof. Maniezzo) [Virtuale classe B] |
Data | Classe A (prof. Margara) [Virtuale classe A] |
---|---|---|---|
23/2 15:00 |
|
24/2 09:00 |
|
2/3 15:00 |
Guida alla configurazione di Code::Blocks, Visual Studio e uso della riga di comando
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe B] |
3/3 09:00 |
Guida alla configurazione di Code::Blocks, Visual Studio e uso della riga di comando
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe A] |
9/3 15:00 |
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe B] |
10/3 09:00 |
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe A] |
16/3 15:00 |
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe B] |
17/3 09:00 |
Siete invitati a completare il test di autovalutazione sulla piattaforma "Virtuale" [Virtuale classe A] |