Scheda programma d'esame
INFORMATICA CON LABORATORIO
ROBERTO GROSSI
Anno accademico2023/24
CdSFISICA
Codice366BB
CFU6
PeriodoSecondo semestre
LinguaItaliano

ModuliSettore/iTipoOreDocente/i
INFORMATICA CON LABORATORIOFIS/01LEZIONI48
ROBERTO GROSSI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Introdurre algoritmi (base) e strutture dati per risolvere problemi efficienti in tempo e/o spazio. Saranno trattate anche tecniche per valutare la complessita' degli algoritmi e dei problemi. Infine, queste tecniche saranno sperimentate mediante implementazione nel linguaggio C++ e altre esperienze di laboratorio.

 

Knowledge

The goal is to introduce (basic) algorithms and data structures to solve problems in efficient time and/or space. We will also deal with techniques for evaluating the complexity of algorithms and problems. Finally, we will experiment these algorithmic techniques by implementing some of them using the C++ language and other hands-on in the laboratory.

Modalità di verifica delle conoscenze

Le capacità acquisite dallo studente sui temi trattati durante il corso e sulla loro implementazione verranno valutate mediante:

  • Esame orale finale
  • Esame scritto finale
  • Prova pratica di laboratorio
Assessment criteria of knowledge

The student will be assessed on her/his demonstrated ability to discuss and put into practice the main topics presented during the course.

Methods:

  • Final oral exam
  • Final written exam
  • Final laboratory practical demonstration
Capacità

Capacità di base sull'utilizzo di strutture dati, e sulla comprensione e lo sviluppo di algoritmi efficienti in tempo e/o spazio.

Skills

Basic skills on algorithm and data structure design and time/space complexity evaluation.

Modalità di verifica delle capacità

Esame scritto e orale.

Assessment criteria of skills

Via project and oral exams.

Comportamenti

Gli studenti saranno in grado di valutare l'efficienze degli algoritmi prima della loro implementazione, direttamente dalla loro progettazione. Conoscenza di alcuni problemi difficili, la cui progettazione può impattare sulla implamentazione.

Behaviors

Students will be able to evaluate performance of basic algorithms before their implementation, directly from their design. Know some difficult problems and which algorithmic design choices can impact positively or negatively the algorithm implementation.

Modalità di verifica dei comportamenti

Esame scritto e orale.

Assessment criteria of behaviors

Via project and oral exams.

Prerequisiti (conoscenze iniziali)

Basi di matematica.

Prerequisites

Basics of Mathematics.

Indicazioni metodologiche

Lezioni frontali.

 

Attivita' di apprendimento:

  • partecipare alle lezioni
  • partecipare alle discussioni
  • studio individuale
  • lavoro in laboratorio

Frequenza consigliata.

Metodi di insegnamento:

  • Lezioni
  • Laboratorio
Teaching methods

Delivery: face to face

Learning activities:

  • attending lectures
  • participation in discussions
  • individual study
  • laboratory work

Attendance: Advised

Teaching methods:

  • Lectures
  • Laboratory
Programma (contenuti dell'insegnamento)

Lezioni frontali:

Modello di calcolo di von Neumann e relazione con i sistemi moderni; rappresentazione dei dati; progettazione di software e complessità di calcolo in tale modello. Algoritmi di ordinamento e metodologia divide et impera (ricorsiva) per moltiplicazione veloce e coppia di punti più vicina. Strutture di dati per la ricerca (hashing e alberi binari di ricerca). Grafi: modellazione dei dati e risoluzione di problemi computazionali. Grandi moli di dati: rassegna di alcuni cenni su algoritmi paralleli, distribuiti e per memoria esterna. NP-completezza e limiti alla calcolabilità. Altre tipologie di algoritmi.

Laboratorio:

Installazione Linux. Strumenti lato utente: bash shell, file system, compilatore g++ (debugger?), git. Introduzione alla programmazione in C/C++. Tecniche di risoluzione per problemi computazionali visti a lezione. Descrizione del progetto finale da portare all’esame.

Syllabus

Lectures:

Von Neumann computing model and its relationship with modern systems; data representation; software design and computational complexity in this model. Sorting algorithms and divide and conquer methodology (recursive) for fast multiplication and closest pair of points. Data structures for search (hashing and binary search trees). Graphs: data modeling and computational problem solving. Big data: overview of some notes on parallel, distributed, and external memory algorithms NP-completeness and limits to computability. Other types of algorithms.

Laboratory:

Linux Installation. User-side tools: bash shell, file system, g++ compiler (debugger?), git. Introduction to programming in C/C++. Problem-solving techniques for computational problems seen in class. Description of the final project to be presented at the exam.

Bibliografia e materiale didattico

da definire

Bibliography

to be announced

Ultimo aggiornamento 22/02/2024 06:24