Courses
Multimedia Design and Production
The course is held by Professor Alberto Del Bimbo at the Faculty of Engineering of the University of Florence. The course includes: an introduction to Human Communication Systems, media and media formats, processing of visual data, composition of multimedia documents.
Multimedia Databases
The course is held by Professor Alberto Del Bimbo at the Faculty of Engineering of the University of Florence. The course includes an introduction to multimedia recognition and indexing covering global image features, the MPEG7 standard, local image features, visual words and bag of Words representation, Object instance recognition, detection and categorization, bag of visual words, matching at large scale.
Theoretical Computer Science
The course is held by Professor Andrew Bagdanov at the School of Engineering of the University of Florence, master program in Computer Engineering. In this course we develop theories of computation from the ground up. We begin by examing the class of regular languages and three different models for them: regular expressions, deterministic finite automata, and nondeterministic finite automata. Then we establish the precise limitations of this basic model, and begin extending it to the context-free languages, and finally the languages accepted by Turing Machine. Emphasis is on formalizing our intuition about computation into a rigorous Theory of Computation that can be used to precisely bound capability models and complexity of problems. The course concludes with a rigorous treatment of complexity theory and the P=NP conjecture.
Human Computer Interaction
The course is held by Professor Andrew Bagdanov at the School of Engineering of the University of Florence, master program in Computer Engineering.In this course we design and implement real interfaces that help real users perform real tasks they need to perform. The course shows how to discover and articulate user needs; how to prototype human-computer interfaces of increasing levels of fidelity; how to critically evaluate the usability of interfaces; and how to fully realize working human-computer interfaces that address the needs of real users. You also acquire the technical know-how required to implement advanced human-computer interfaces using a variety of established and emerging technologies for HCI on desktop, mobile, and large-format display platforms.
Object Recognition in Images and Video
The course is held by Professor Andrew Bagdanov at the School of Engineering of the University of Florence, PhD in Smart Computing. In this course we see how to build systems for
recognizing the semantic content of images and videos. We start with the historical context given by first attempts by Marr and colleagues to formalize recognition of visual phenomena, then proceed to develop the Bag-of-Features models of visual recognition that led to the first significant breakthroughs in object recognition, and finally to the Convolutional Neural Network (CNN) models that are the current state-or-the-art. The course if organized around assigned readings of seminal and recent papers in the field.
Fundamentals of Computer Programming
The course is held by Professor Stefano Berretti at the School of Engineering of the University of Florence, bachelor program in Computer Engineering. The course includes basics on data and instruction representation, program execution on a reference hardware, grammar and syntax of the C language, data structures and algorithms in C, searching and sorting algorithms in C, cost and complexity of algorithms.
Computer Graphics and 3D
The course is held by Professor Stefano Berretti at the School of Engineering of the University of Florence, master program in Computer Engineering. The course includes a comprehensive introduction to basic and advanced computer graphics concepts by presenting the most common techniques for 3D modeling, animation and rendering. The Open Graphics Library (OpneGL) is used for practical demonstrations and assignments. The course also introduces to the state of the art methods for acquisition, processing and analysis of real 3D data captured with low- and high-resolution scanners, focusing on practical applications, like 3D retrieval, 3D recognition, 3D biometrics, etc.
Differential Geometric Methods with Applications to 3D Computer Vision
The course is held by Professor Stefano Berretti at the School of Engineering of the University of Florence, PhD in Smart Computing. Nonlinear manifolds have a special place in problem solutions where constraints of the problems restrict the domains to some interesting, structured sets. The differential geometry of these constrained spaces, or manifolds, guides us to reach more efficient solutions. Besides being mathematically appealing, the solutions based on the geometry of the underlying manifolds are often faster and more stable than their constrained optimization counterparts. This fact has been exploited in many branches of science and engineering, in developing methodologies, algorithms, and systems. In this short course, we will focus on several manifolds including shape manifolds of planar closed curves, Grassmann manifolds, and manifolds of covariance matrices (Symmetric Positive Semi Definite) and affine transformations. In each case, we will provide a mathematical background and demonstrate the use of these manifolds in 3D Computer Vision applications such as shape analysis, human behavior understanding, and activity classification from 3D data. Practical examples will be presented using Matlab.
Programming
The course is held by Professor Marco Bertini at the School of Engineering of the University of Florence, bachelor program in Computer Engineering. The course includes basics on object oriented programming and design, C++ (inheritance, templates, exceptions, C++11), C++ libraries (STL), design patterns and idioms.
Parallel Computing
The course is held by Professor Marco Bertini at the School of Engineering of the University of Florence, master program in Computer Engineering. The course includes a comprehensive overview of parallel programming tools and techniques. Design of modern CPUs, SIMD and vectorization is followed by an analysis of Java parallel programming, PThreads using C and C++11 parallel programming. Implicit threading with OpenMP using C++ is also presented, followed by GPU programming in CUDA. Techniques for programming distributed memory systems include Apache Hadoop and Storm (Lambda architecture), as well as MPI.
GPU Programming basics
The course is held by Professor Marco Bertini at the School of Engineering of the University of Florence, PhD in Smart Computing. This course provides a fast and complete introduction to GPU programming, presenting the main hardware differences between CPUs and GPUs, and then addressing GPU programming and, in particular, UDA programming.
Students will learn about SIMT and thread organization in GPUs, thread scheduling and divergence. Organization of threads will address the use of 2D and 3D CUDA kernels, followed by CUDA memory architecture. Efficient CUDA programming will include analysis of tiling, barriers and phase-based processing, as well as DRAM burst and memory coalescing. Atomic instructions and privatization will be presented. Lab exercises about 1D and 2D convolutions, using tiling, border checking and constant memory will be performed.
Database Management Systems
The course is held by Professor Pietro Pala at the School of Engineering of the University of Florence, bachelor program in Computer Engineering. The course covers database design and the use of database management systems for applications. It includes extensive coverage of the relational model, relational algebra, and SQL. The course also includes database design through the Entity Relationships model, ER model mapping to the relational schema, and relational design principles based on dependencies and normal forms. Additional key database topics include integrity constraints, triggers, views and transactions. Class lessons are complemented with lab sessions using PostgreSQL.
Image and video analysis
The course is held by Professor Pietro Pala at the School of Engineering of the University of Florence, master program in Computer Engineering. The course covers metric and topological image properties, grayscale and geometric transforms, linear and non linear filters for image analysis, scalespace image analysis, models for color and texture representation, binary and lattice morphological image analysis, models for image segmentation: approaches based on parametric and non-parametric clustering, spectral analysis, watershed, Mumford-Shah functional. The course also covers the optic flow model for motion field estimation in videos, models for the estimation of the optic flow, models for background estimation in videos. Class lessons are complemented with lab sessions using Matlab.