Scheda programma d'esame
PROGRAMMING AND ALGORITHM DESIGN
CORRADO PRIAMI
Academic year2022/23
CourseCOMPUTER SCIENCE
Code735AA
Credits15
PeriodSemester 1 & 2
LanguageItalian

ModulesAreaTypeHoursTeacher(s)
PROGRAMMAZIONE E ALGORITMICAINF/01LEZIONI120
ANNA BERNASCONI unimap
CORRADO PRIAMI unimap
Obiettivi di apprendimento
Learning outcomes
Conoscenze

Lo studente acquisirà conoscenze della teoria degli algoritmi e la teoria della programmazione.

 

Knowledge

The student will learn algorithm and programming theory.

Modalità di verifica delle conoscenze

Esercitazioni di autovalutazione.

Assessment criteria of knowledge

Self-evaluation exercises.

Capacità

Lo studente saprà scegliere i costrutti dei linguaggi di programmazione in modo corretto e coerente con gli algoritmi da codificare.

Lo studente saprà disegnare algoritmi efficienti per la soluzione di problemi complessi.

Skills

The student will be able to correctly and coherently chose programming primitives for the algorithms to be coded.

The student will be able to design efficient algorithms for complex problems.

Modalità di verifica delle capacità

Esercitazioni di autovalutazione.

Assessment criteria of skills

Self-evaluation exercises.

Comportamenti

Lo studente acquisirà la capacità di analizzare problemi complessi, riuscire a definire soluzioni algoritmiche con tecniche di codifica di programmazione correte e coerenti con la complessità del problema.

Lo studente acquisirà la capacità di formalizzare concetti e tecniche di programmazione così come gli algoritmi e la loro complessità.

Behaviors

The student will be able to anlyze complex problems, define algorithmic solutions with coding methods coherent with the complexity of the problem at hand.

The student will be able to formalize concepts and programming methods as well as algorithms and their complexity.

Modalità di verifica dei comportamenti

Esercitazioni di autovalutazione.

Assessment criteria of behaviors

Self-evaluation exercises.

Prerequisiti (conoscenze iniziali)

Nessuno

Prerequisites

None

Indicazioni metodologiche

Lezioni frontali con numerosi esercizi di chiarimento, esercitazioni periodiche sui concetti introdotti, esercitazioni di autovalutazione.

Teaching methods

Lectures with many exercises, periodic practical lectures and self-evaluation exercises

Programma (contenuti dell'insegnamento)
  • Struttura di un calcolatore e ambienti di sviluppo. Analisi asintotica del costo computazionale. Rappresentazione delle informazioni. Problemi computazionali e algoritmi di risoluzione.
  • Controllo delle operazioni e del flusso all’interno di un programma. Problem solving su array. 
  • Blocco e struttura dei programmi. Funzioni, passaggio dei parametri. Ricorsione,
  • Algoritmi per ordinamento e ricerca.
  • Strutture di dati dinamiche. Liste. Code e pile. Tabelle hash e dizionari.
  • Divide et impera, programmazione dinamica, algoritmi greedy.  
  • Algoritmi per alberi e grafi.
  • Cenni di calcolabilità e di classi di complessità.
Syllabus
  • Computer architecture and development environment. Asimptotic analysis of computational cost. Information representation. Computational problems and solving algorithms.
  • Program flux control. Problem solving with arrays. 
  • Blocks and program structurei. Functions, parameter passing mechanisms. Recursion,
  • Search and sorting algorithms.
  • Dynamic data structure. Lists. Queues and stack. Hash tables, dictionaries.
  • Divide et impera, dynamic programming, greedy algorithms.  
  • Tree and graph algorithms.
  • Brief notes on complexity and computability.
Bibliografia e materiale didattico

Slides presentate a lezione, registrazioni delle lezioni, articoli scientifici e note fornite dal docente.

Bibliography

Slides, lecture recording, scientific papers and teacher notes.

Modalità d'esame

Esame scritto.

Assessment methods

Written exam.

Updated: 29/07/2022 10:17