Objective: introducing students to modern architectures for high performance computing. Students will learn how to properly test such architectures (computing power, bandwidth, latency, energy efficiency). Leveraging these skills, students will be introduced to the parallel programming based on MPI protocols (Message Passing Interface) and multi-threading with OpenMP.
Objective: providing numerical analysis tools for scientific computing, with particular attention to linear algebra, polynomial approximation, numerical integration, numerical solution of ordinary differential equations and partial differential equations, approximation of eigenvalues and eigenvectors.
Objective: introducing concepts and techniques for collaborative development of large and complex software systems for industrial applications, including Java, software development lifecycle, best practices in software development as code testing, versioning, and design patterns.
Objective: providing advanced knowledge of both theoretical and practical programming in C / C ++ and Python, with particular regard to the principles of object oriented programming and best practices of software development (advanced use of version control systems, continuous integration, unit testing), and introducing the modern technology of algorithms development.
Objective: introducing students to the fundamentals and practice of stochastic modeling, simulation of stochastic models and inference of parameters starting from observations, with a focus on scalability for large models.
Objective: providing students with the methodological, theoretical and practical tools to formulate linear programming models and combinatorial optimization problems and to solve them, even for high dimensionality problems, using appropriate optimization software.
Objective: introducing the student to state of the art methods for the numerical simulation of partial differential equation.
Objective: providing fundamental tools and numerical algorithms for solving problems of classical physics and simple problems of quantum physics.
Objective: introducing the computational techniques used in molecular modeling and simulation, and illustrating how these techniques can be employed to describe and/ or predict chemical, physical and biological phenomena.
Objective: providing an introduction to numerical methods and techniques for the numerical solution of quantum mechanical problems, especially in atomic physics and condensed matter, with a practical approach.
Objective: providing the ability to understand the functioning and the internal structure of a molecular dynamics program. Being able to write code for molecular dynamics simulations and to analyze the output.
Objective: providing knowledge of the most important theoretical formalism used in quantum chemistry, and of the main computational methods, numerical algorithms, and software tools in the field of quantum chemistry.
Objective: providing methods and results of the elementary statistics mechanics in equilibrium.
Objective: Introduce the students to the machine learning fundamentals, to the main techniques on supervised learning, and to the principal application domains. Present evolutionary calculation. The course explains how to design, develop and evaluate simple ML-based end-to-end systems and, at the same time, how to describe their operations.
Objective: introduce the student to the principles of learning from data based on statistics, and to the scientific treatment of data to obtain new and reproducible knowledge. Some of the main supervised and unsupervised statistical learning techniques are presented.