Vai al contenuto principale
Se prosegui nella navigazione del sito, ne accetti le politiche:
  • Condizioni di utilizzo e trattamento dei dati
Prosegui
x
Se prosegui nella navigazione del sito, ne accetti le politiche:
  • Condizioni di utilizzo e trattamento dei dati
Prosegui
x
e-Learning - UNIMIB
  • Home
  • My Media
  • Altro
Ascolta questa pagina con ReadSpeaker
Italiano ‎(it)‎
English ‎(en)‎ Italiano ‎(it)‎
 Login
e-Learning - UNIMIB
Home My Media
Percorso della pagina
  1. Area di Scienze
  2. Corso di Laurea Triennale
  3. Informatica [E3102Q - E3101Q]
  4. Insegnamenti
  5. A.A. 2023-2024
  6. 1° anno
  1. Algoritmi e Strutture Dati
  2. Introduzione
Insegnamento Titolo del corso
Algoritmi e Strutture Dati
Codice identificativo del corso
2324-1-E3101Q107
Descrizione del corso SYLLABUS

Syllabus del corso

  • Italiano ‎(it)‎
  • English ‎(en)‎
Esporta

Obiettivi

Scopo del corso è insegnare allo studente come progettare, valutare e implementare algoritmi efficienti, utilizzando in modo opportuno le tecniche di programmazione e le strutture dati adeguate.

Si presenteranno, a tal fine, le tecniche di programmazione ricorsiva e Divide-et-impera e le principali strutture di dati. Verranno fornite le competenze necessarie a valutare quali tecniche e quali strutture dati scegliere per affrontare al meglio i diversi tipi di problemi computazionali.

Contenuti sintetici

Metodologie di base per progettare algoritmi e analizzarne l’efficienza. Strutture dati fondamentali: definizioni e utilizzo

Programma esteso

  • Introduzione: Algoritmo, problema, istanza.
  • Analisi di algoritmi: Valutazione dei tempi di esecuzione, caso pessimo, ottimo e medio.
  • Programmazione ricorsiva e approccio Divide-et-Impera: Mergesort e Quicksort.
  • Valutazione del tempo di esecuzione di algoritmi ricorsivi: equazioni di ricorrenza.
  • Altri algoritmi di ordinamento: ordinamento in tempo lineare.
  • Strutture dati fondamentali: Array, liste, pile e code.
  • Alberi Binari e Alberi Binari di Ricerca
  • Heap e code con priorità. Heapsort.
  • Grafi e loro rappresentazione in memoria.
  • Algoritmi di visita dei grafi: BFS e DFS.

Prerequisiti

Nozioni base di programmazione

Modalità didattica

Lezioni, esercitazioni e approfondimenti sperimentali. Attività di studio individuali supportate da materiali didattici in E-learning.

Le lezioni sono tenute in italiano.

Materiale didattico

T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduzione agli Algoritmi e Strutture dati, Ed. Mc. Graw Hill

Materiale integrativo disponibile sul sito e-learning.

Periodo di erogazione dell'insegnamento

Secondo Semestre

Modalità di verifica del profitto e valutazione

Prova scritta: la valutazione massima della prova scritta è 30/30. Tale prova consiste in:

  • Esercizi che richiedono sviluppo di un algoritmo ricorsivo o iterativo per la soluzione di un problema assegnato
  • Esercizi di simulazione relativi ad algoritmi presentati a lezione
  • Domande aperte relative alle nozioni teoriche presentate a lezione

Le domande di teoria valgono, complessivamente, 8 punti

Possono essere assegnati fino a 2 punti aggiuntivi in caso di esercizi svolti particolarmente bene.

Prove parziali:
La prova scritta può essere sostituita da due prove parziali, che si tengono a metà corso e nel primo appello di giugno, a fine corso. Le prove parziali sono riservate alle matricole. Ogni prova è costituita da:

  • Un esercizio che richiede sviluppo di un algoritmo per la soluzione di un problema assegnato
  • Un esercizio di simulazione su input specifici degli algoritmi presentati a lezione
  • Domande aperte relative alle nozioni teoriche presentate a lezione

Ogni prova parziale ha valutazione massima 15/15: il voto finale si ottiene sommando i voti delle due prove parziali. È prevista la possibilità di recuperare una sola delle due prove parziali (in caso di insufficienza, assenza o anche per migliorare il voto) nell'appello di luglio. Possono essere assegnati fino a 2 punti aggiuntivi (totali per le due prove) in caso di esercizi svolti particolarmente bene.

Orario di ricevimento

Su appuntamento

Esporta

Aims

The aim of the course is to teach to design, evaluate and implement efficient algorithms, making use of the most appropriate progamming techniques and data structures.

We will introduce recursive programming and Divide-and-conquer technique, and main data structures. Students will learn to evaluate which programming technique and which data structures are more adequate to solve various types of computational problems

Contents

Basic techniques to develop algorithms and to analyse their efficiency. Introduction to the use of fundamental data structures.

Detailed program

  • Introduction and basic definitions: algorithm, problem, instance.
  • Computational complexity analysis of algorithms.
  • Recursive programming and Divide-and-Conquer programming technique: Mergesort and Quicksort.
  • Time complexity for recursive algorithms: recursive equations.
  • Linear time sorting algorithms.
  • Basic data structures: arrays, linked lists, stacks, queues.
  • Binary trees and Search Binary Trees.
  • Heap and priority queues. Heapsort.
  • Graphs and graph representation.
  • Traversing algorithms for graphs: BFS and DFS

Prerequisites

Basics of Computer Programming

Teaching form

Theoretical lectures, exercises, and practical implementation of proposed algorithms. Further exercises are available online, through an E-learning website.

The course is taught in Italian.

Textbook and teaching resource

T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein, Introduction to Algorithms, Mit press ed.

Further material available through the e-learning website.

Semester

Second semester

Assessment method

Written examination, maximum mark 30/30. The exam consists of

  • Exercises to be solved by developing an algorithm to solve a given computing problem
  • Simulations on specific inputs for algorithms illustrated during the lectures
  • Open questions concerning theoretical aspects discussed during the lectures

Score for theoretical questions: 8 points (in total)

Up to 2 more points can be given in case of extremely good exercises.

The exam can be substituted by two intermediate exams, each evaluating some of the subjects covered during the course.

Split examination:

Written examination can be replaced by two split short exams, held during mid course break and at the end of the course. Such possibility is only allowed to first-year students. Each short exam consist of:

  • An exercise to be solved by developing an algorithm to solve a given computing problem
  • A simulation on specific inputs of algorithms illustrated during the lectures
  • Open questions concerning theoretical aspects discussed during the lectures

The maximum score for each short exam is 15/15. Final mark is obtained by summing the marks of the two short exams. Students can repeat one of the two short exams (in case of non sufficient result, or to improve the result) during the exam in july.

Up to 2 more points can be given (considering both short exams) in case of extremely good exercises.

Office hours

By appointment

Entra

Scheda del corso

Settore disciplinare
INF/01
CFU
8
Periodo
Secondo Semestre
Tipo di attività
Obbligatorio
Ore
72
Tipologia CdS
Laurea Triennale
Lingua
Italiano

Staff

    Docente

  • GF
    Guido Giuseppe Fiorino
  • Yuri Pirola
    Yuri Pirola
  • CZ
    Claudio Zandron
  • Tutor

  • GR
    Giorgia Rigamonti
  • CR
    Claudio Rota

Opinione studenti

Vedi valutazione del precedente anno accademico

Bibliografia

Trova i libri per questo corso nella Biblioteca di Ateneo

Metodi di iscrizione

Iscrizione manuale
Iscrizione spontanea (Studente)

Non sei collegato. (Login)
Politiche
Ottieni l'app mobile
Powered by Moodle
© 2025 Università degli Studi di Milano-Bicocca
  • Privacy
  • Accessibilità
  • Statistiche