Questo corso fornisce un'introduzione completa alla programmazione in Python, insieme a una comprensione degli algoritmi principali e delle strutture dati. Il corso è pensato per fornire agli studenti le competenze necessarie per scrivere e correggere programmi Python e per applicare algoritmi e strutture dati per risolvere problemi. Gli studenti apprenderanno sia le basi teoriche che le applicazioni pratiche della programmazione e degli algoritmi attraverso una combinazione di lezioni, esercizi pratici e sessioni di laboratorio.
Prerequisiti
Non sono previsti requisiti
Metodi didattici
Il corso si articola in lezioni frontali ed esercitazioni. Ogni lezione presenta sia elementi teorici sia immediate applicazioni ed esempi. Il docente rende disponibile preventivamente tutto il materiale didattico e invita lo studente ad essere presente in aula dopo aver preso visione del materiale della lezione, che verrà svolta in modo tale da aumentare interazione, discussione e di conseguenza apprendimento.
Verifica Apprendimento
L’obiettivo della prova d’esame è l'accertamento dell’acquisizione delle conoscenze e delle abilità descritte nella sezione “Obiettivi formativi”, valutando il livello di conoscenza e soprattutto la capacità di mettere in pratica, anche integrandole tra loro, le tecniche di progettazione viste a lezione. L'esame finale è composto da una prova scritta/pratica. La prova - della durata indicativa di 120 minuti - prevede una serie di 4 problemi e 4 quesiti relativi agli argomenti trattati a lezione
Contenuti
Le lezioni affronteranno i seguenti argomenti: Parte I - Introduzione alla programmazione Python: - Variabili, costanti e tipi di dati elementari - Assegnazione e dichiarazioni composite - Nozioni di base sull'input/output - Espressioni e operatori - Strutture di controllo: selezione e cicli - Array - Introduzione alla ricorsione - Classi Parte II - Teoria della computazione - Modelli di calcolo e complessità (formalizzazione, notazioni asintotiche, modelli RAM e RASP, criteri di costo, linguaggi procedurali) - Algoritmi e strutture dati di base (vettori, matrici, liste, pile, code, grafi e alberi - rappresentazione e attraversamento, ordinamento) - Algoritmi e strutture dati avanzati (ordinamento digitale, heap e heapsort, tabelle hash, alberi binari, alberi bilanciati, partizioni) - Tecniche di progettazione (divide et impera, programmazione dinamica, algoritmi greedy)
Lingua Insegnamento
Italiano
Altre informazioni
Il docente riceve su appuntamento, previa richiesta via e-mail a alessandro.lupi@uninsubria.it.