This exam is present in the following Optional Group

Objectives

GENERAL OBJECTIVES:
The main objective of Computing Methods for Physics is that of providing an introduction to up-to-date computational methods that are used in research areas of current interest. Three different courses are offered.

The objective of the first section is to familiarize students with modern programming techniques for numerical simulation and data analysis. In the first part, C++ and object oriented programming are discussed and used for solving physics problems with commonly used Strategy and Composition patterns. ROOT framework is discussed and used for data analysis and persistent storage of data. In the second part of the course, students are introduced to array-oriented computing in Python with NumPy and SciPy packages. MatPlotLib package is used for data visualization as well as animated physics graphs. Jupyter notebook will be used for interactive python programming. The course also briefly treats the concepts of machine learning in high energy physics.
SPECIFIC OBJECTIVES (first section):
A - Knowledge and understanding
OF 1) Knowledge of object oriented programming
OF 2) Understanding of polymorphism and its applications in physics
OF 3) Use of ROOT libraries for data analysis
OF 4) Knowledge of basics of numerical simulation of physical processes
OF 5) Understanding the basic features of Physics for data analysis
OF 6) Knowing the basics of Machine Learning and its applications
B - Application skills
OF 7) Implementation of polymorphic classes in physics
OF 8) Implement numerical simulations using polymorphic classes and objects
OF 9) Data analysis with ROOT and use of classes for plotting and fits in C++
OF 10) Use Jupyter Notebook and Scipy, Numpy, and Matplotlib packages for numerical simulation and data analysis in Python
C - Autonomy of judgment
OF 11) Ability to apply the acquired knowledge and skills in data analysis and numerical simulation is other physics areas as well as commercial and industrial applications
OF 11) To be able to integrate the knowledge acquired in order to…
OF 12) Ability to apply Machine Learning techniques in Python to solve physics problems
D - Communication skills
E - Ability to learn
OF 13) Ability to investigate and comprehend more advanced features of object oriented programming
OF 14) Ability to implement numerical simulation for more complex physics processes in the course of Laboratory of Physics
OF 15) Ability to apply data analysis and fitting techniques in the course of Laboratory of Physics


The goal of the second course is to provide the students with the theoretical background of perturbative and asymptotic analysis used in many fields of theoretical physics:
a) Definition and properties of the perturbative and asymptotic exapansions used in theoretical physics;
b) Introduction to some asymptiotic methods --- Boundary Layers, WKB, Multiple Scale, Renormalization Group --- and analisys of their filds of applicability.
SPECIFIC OBJECTIVES (second course):
A - Knowledge and understanding
OF 1) To know and understand the foundations of the perturbative methods
OF 2) To know and understand the foundations asymptotic analysis
OF 3) To know and understand the Boundary Layer Theory
OF 4) To know and understand the WKB method
OF 5) To know and understand the Multiple Scale method
OF 6) To know and understand the Renormalization Group and it connections with asymptotica analysis.
B - Application skills
OF 7) Application of the asymptotic analysis to the solution of comlex problems
OF 8) Application of the Boundary Layer Theory, WKB method and Multiple Scale method to the study of simple problems.
OF 9) Application of the Renormalization Group method to the asymptotic analysis of the solution of simple ordinary differential equations.
C - Autonomy of judgment
OF 10) Ability to analize a simple perturbative problem.
OF 11) Ability to evaluate the structure of a simple perturbative problem and use the more appropriate method to its study.
D - Communication skills
OF 12) Ability to create an effective presentation of the results of a theoretical project
OF 13) Ability to present the basis of the asymptotic analysis and some of its methods.
E - Ability to learn
OF 14) Autonomous improvement in the study of perturbation method
OF 15) Autonomous improvement in the use of asymptotic analysis in more comlex problems
OF 16) Autonomous improvement in reading and understanding research articles and reviews

The goal of the third course is to provide the students with both the theoretical background and the hands-on experience of two state-of-the-art numerical approaches within the field of condensed matter physics:
a) the density-functional theory and the pseudopotential theory, two crucial ingredients for first-principles predictions of electronic states, structural energies and interatomic forces in real molecules and solids;
b) the quantum (variational, diffusion, path-integral) Monte Carlo methods, their applicability and the motivations of their use in the numerical study of quantum many-body systems (solid or liquid helium, the electron gas, electrons in atoms and molecules).
SPECIFIC OBJECTIVES (third course):
A - Knowledge and understanding
OF 1) To know and understand the foundations of the Hartree-Fock (H-F) theory
OF 2) To know and understand the foundations of the Density Functional Theory (DFT)
OF 3) To know and understand the H-F theory of atoms and molecules
OF 4) To know and understand the foundations of the Pseudopotential Theory (PPT)
OF 5) To know and understand DFT+PPT of crystalline systems
OF 6) To know and understand the variational quantum Monte Carlo method (VMC)
OF 7) To know and understand the projection quantum Monte Carlo method (PMC)
OF 8) To know and understand the path-integral quantum Monte Carlo method (PIMC)
OF 9) To know and understand the “sign problem” for many-fermion systems
B - Application skills
OF 10) Application of the H-F theory to the helium atom (writing of a C code)
OF 11) Application of the H-F theory to simple atomic and molecular systems (GAMESS software)
OF 12) Application of DFT+PPT to simple solids (Quantum Espresso software)
OF 13) Application of the different quantum MC methods to simple many-boson and many-fermion systems (writing of simple C codes and use of large pre-existing FORTRAN codes)
C - Autonomy of judgment
OF 14) Ability to evaluate, for a given real solid or quantum fluid, which theory and algorithm is best for the description/prediction of which physical properties
OF 15) Ability to evaluate the feasibility, in terms of memory and CPU time, of a given atomic, molecular, or solid-state numerical project
D - Communication skills
OF 16) Ability to create an effective presentation of the results of a theoretical-numerical project
OF 17) Ability to write down the results of a theoretical-numerical project as a LaTeX document
E - Ability to learn
OF 18) Autonomous improvement in the programming skills
OF 19) Autonomous improvement in the use of pre-existing codes
OF 20) Autonomous improvement in the graphical display of results
OF 21) Autonomous improvement in reading and understanding research articles and reviews


GENERAL OBJECTIVES (for the 4th course):
The fourth course aims to provide the necessary knowledge to understand and implement classical molecular dynamics and Monte Carlo techniques. The methods, that allow us to generate trajectories in phase space for sampling distinct statistical ensembles, will be studied. Some techniques which offer the possibility to calculate the free energy will be also discussed and it will be shown how the use of such results can provide a description of the atoms and molecules phase diagrams. At the end of the course, students will develop the ability of a quantitative reasoning and numerical skills useful for studying, modeling and understanding a large class of atomic and molecular systems as well as supramolecular aggregates. In addition, the student will be able to utilize the most common simulation packages which are available for a numerical study of complex systems, such as colloidal and bio-molecular systems, due to the acquired full knowledge of algorithms and numerical techniques on which these programs are built. Particular emphasis will be given to object-oriented and generic programming in the implementation of a computer simulation code. In particular, the modern C++ programming language will be introduced and discussed in the context of atomistic simulations. It will be also illustrated the use of the Python language, through the NumPy and MatPlotLib libraries, to analyze and visualize the data produced by computer simulations. During the course there will be also hands-on lectures, so that students will be able to put into practice the acquired knowledge through the implementation of their own simulation code. Students will be also stimulated to present the results obtained from the simulations, so as to test their ability to communicate clearly and effectively such results. The development of a numerical simulation code will be an opportunity for the students to design and develop their own project. This way they will be able to show their learning level and ability to apply independently the theoretical concepts acquired in the course.

SPECIFIC OBJECTIVES ((for the 4th course):
A - Knowledge and understanding
OF 1) Know common techniques to carry out computer simulations
OF 2) Know object oriented programming for scientific computations.
OF 3) Know common methods for analyzing data obtained from computer simulations.
OF 4) Understand data produced by computer simulations.

B - Application skills
OF 5) Ability to implement a simulation code.
OF 6) Ability to exploit simulations to obtain information about the physical properties of investigated systems.
OF 7) Be able to develop computer codes for analyzing data produced by computer simulations.
C - Autonomy of judgment
OF 8) Be able to critically analyze the results of “numerical experiments”.
OF 9) Be able to integrate autonomously the acquired knowledge in order to face new problems that require additional numeric techniques.
OF 10) Be able to identify the best technique to solve and study a physical problem numerically.
D - Communication skills
OF 11) Know how to communicate clearly to specialists and non-specialists, through manuscripts and presentations, the results obtained.
OF 12) Know how to clearly discuss a scientific topic.
OF 13) Know how to reproduce calculations related to a given scientific topic in a critical and informed manner.
E - Ability to learn
OF 14) Have the ability to learn new algorithms and numerical techniques by exploiting the scientific literature.
OF 15) Be able to conceive and develop their own project consisting of writing a simulation code or implementing a numerical technique.
OF 16) Be able to overcome difficulties and setbacks in the implementation of numerical techniques through original ideas and solutions.


Channels

Andrea Biagioni Andrea Biagioni   Teacher profile

Programme

1) Introduction to computers: hardware organization, firmware and software, performance definition and measurement.
2) Language of computers: high level, assembly and machine languages, examples.
3) Computer arithmetic: arithmetic and logical operations on integers and floating point numbers.
4) Fundamentals of logic design: gates, truth tables, boolean logic equations; combinational and sequential circuits, finite-State machines.
5) Introduction to hardware description languages: the VHDL language.
6) Processor Architecture: functional units, registers, control unit, microprogramming; processing unit; pipelining, exceptions handling.
7) Memory hierarchy: cache memory, virtual memory.
8) Storage and I/O.
9) Overview of multicore systems, multiprocessors and clusters: parallel processing, classification, examples of many-core computing architectures (GPU) and multiprocessor systems networks

Adopted texts

Patterson D.A. Hennessy J.L: Computer Organization and Design: The Hardware/Software Interface (RISC-V Edition), Morgan Kaufmann Publishers.
Volnei A. Pedroni: Circuit Design and Simulation with VHDL, MIT Press

Bibliography

Other materials provided by lecturers during lessons (papers, tutorials, etc...)

Prerequisites

A fundamental prerequisite is that students must have a basic knowledge of the C programming language. A useful prerequisite is that students must have a basic knowledge of digital electronics.

Exam modes

The final exam will consist in the preparation of a small project and an oral exam.
Examples of possible projects are:
- Design and implementation of a C/C++ mini-application, its simulation on the RISC-V architecture, performance analysis and optimization. Comparative evaluation of performance on alternative computing architectures.
- Design and implementation of a specific hardware block (as seen during the course) using VHDL language and specific simulators;
Delivery of a small paper describing the work done (20 pages max).
The oral exam will be carried out through an oral part on the course topics and a on a "plenary" project presentation talk with slides, for a maximum duration of 20 minutes and following discussion.

Exam reservation date start Exam reservation date end Exam date
10/01/2022 22/01/2022 26/01/2022
10/01/2022 13/02/2022 17/02/2022
09/05/2022 19/06/2022 22/06/2022
09/05/2022 14/07/2022 18/07/2022
18/08/2022 21/09/2022 26/09/2022
23/11/2022 29/11/2022 30/11/2022

Alessandro Lonardo Alessandro Lonardo   Teacher profile

Programme

1) Introduction to computers: hardware organization, firmware and software, performance definition and measurement.
2) Language of computers: high level, assembly and machine languages, examples.
3) Computer arithmetic: arithmetic and logical operations on integers and floating point numbers.
4) Fundamentals of logic design: gates, truth tables, boolean logic equations; combinational and sequential circuits, finite-State machines.
5) Introduction to hardware description languages: the VHDL language.
6) Processor Architecture: functional units, registers, control unit, microprogramming; processing unit; pipelining, exceptions handling.
7) Memory hierarchy: cache memory, virtual memory.
8) Storage and I/O.
9) Overview of multicore systems, multiprocessors and clusters: parallel processing, classification, examples of many-core computing architectures (GPU) and multiprocessor systems networks

Adopted texts

Patterson D.A. Hennessy J.L: Computer Organization and Design: The Hardware/Software Interface (RISC-V Edition), Morgan Kaufmann Publishers,
ISBN: 978-0-12-812275-4.

Volnei A. Pedroni: Circuit Design and Simulation with VHDL, MIT Press

Bibliography

Other materials provided by lecturers during lessons (papers, tutorials, etc).

Prerequisites

A) A fundamental prerequisite is that students must have a basic knowledge of the C programming language. B) A useful prerequisite is that students must have a basic knowledge of digital electronics.

Exam modes

The final exam will consist in the preparation of a small project and an oral exam.
Examples of possible projects are:
-Design and implementation of a C/C++ mini-application, its simulation on the RISC-V architecture, performance analysis and optimization. Comparative evaluation of performance on alternative computing architectures.
-Design and implementation of a specific hardware block (as seen during the course) using VHDL language and specific simulators;
Delivery of a small paper describing the work done (20 pages max).
The oral exam will be carried out through an oral part on the course topics and a on a "plenary" project presentation talk with slides, for a maximum duration of 20 minutes and following discussion.

Course sheet
  • Academic year: 2021/2022
  • Curriculum: Particle and Astroparticle Physics (Percorso valido anche fini del conseguimento del titolo multiplo italo-francese-svedese-ungherese) - in lingua inglese
  • Year: First year
  • Semester: Second semester
  • SSD: INF/01
  • CFU: 6
Activities
  • Attività formative affini ed integrative
  • Ambito disciplinare: Attività formative affini o integrative
  • Exercise (Hours): 36
  • Lecture (Hours): 24
  • CFU: 6
  • SSD: INF/01