Computational Physics Laboratory
A.Y. 2024/2025
Learning objectives
The course "Computational Physics" introduces several modern techniques adopted in the theoretical and experimental research in Physics, useful for the development of models and the prediction of physical observables.
The course aims at stimulating the students skills, to analyze the proposed probles and to project the computer code necessary for their solution. We will write original code, limiting the usage of external packages and libraries.
The students will be invitetd to analyze the efficiency of their code
and the possible critical elements.
In modern computer programming several languages and frameworks can be interfaced, combining the resepctive strenghts. The students will be exposed to this variety and will learn to handle it.
The course aims at stimulating the students skills, to analyze the proposed probles and to project the computer code necessary for their solution. We will write original code, limiting the usage of external packages and libraries.
The students will be invitetd to analyze the efficiency of their code
and the possible critical elements.
In modern computer programming several languages and frameworks can be interfaced, combining the resepctive strenghts. The students will be exposed to this variety and will learn to handle it.
Expected learning outcomes
At the end of the course the students will master a modern programming language (Mathematica, CUDA, C++, Python).
Writing an original package/library will induce the development of logical skills and the algorithmic formulation of the solution of the problem. The ability to solve coding problems, both at low- and high-level, is expecetd.
The final presentation and discussion of the results of the simulations will force the student to critically analyze the validity of the results and the effectiveness of the chosen solutions.
Writing an original package/library will induce the development of logical skills and the algorithmic formulation of the solution of the problem. The ability to solve coding problems, both at low- and high-level, is expecetd.
The final presentation and discussion of the results of the simulations will force the student to critically analyze the validity of the results and the effectiveness of the chosen solutions.
Lesson period: Second semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course can be attended as a single course.
Course syllabus and organization
Single session
Responsible
Lesson period
Second semester
Course syllabus
Development of a project, using advanced programming techniques, in
one of the following fields.
-Mathematica. Realization from scratch of a symbolic manipulation
package (generation of graphs and of scattering amplitudes
according to the Feynman diagrams technique, analysis of the Sand Piles problem, a critical phenomenon in Statistical Mechanics, creation of an interface between Mathematica and a GPU programmed in CUDA);
-Digital electronics: the FPGA programming language will be introduced and used to develop a project that uses such devices.
-Block-chain. Introduction to the cryptography techniques based on bloch-chains. Development of an environment that allows to set smart-contracts. The techniques are then applied to real life problems.
one of the following fields.
-Mathematica. Realization from scratch of a symbolic manipulation
package (generation of graphs and of scattering amplitudes
according to the Feynman diagrams technique, analysis of the Sand Piles problem, a critical phenomenon in Statistical Mechanics, creation of an interface between Mathematica and a GPU programmed in CUDA);
-Digital electronics: the FPGA programming language will be introduced and used to develop a project that uses such devices.
-Block-chain. Introduction to the cryptography techniques based on bloch-chains. Development of an environment that allows to set smart-contracts. The techniques are then applied to real life problems.
Prerequisites for admission
Basic knowledge of at least one programming language (C/C++/Fortran).
Basic skills in the analysis of a problem from the algorithmic perspective.
Basic skills in the analysis of a problem from the algorithmic perspective.
Teaching methods
The course is organised in three parts.
In the first part, a series of lectures on modern programming language is delivered, with the aim of providing a background for the problems and the needs that might arise during the development of the final projects. During the lectures each student must have a computer available to immediately reproduce and test the examples proposed.
In the second part, the students are split in groups, choosing to focus on a specific programming language. The activity of the groups proceed in parallel . In each group a second series of lectures is delivered, to discuss the detailed features of the chosen programming language, which will be then applied in the final project.
In the third part, the topics of the final projects are proposed. Each student chooses on topic and starts individually to develop the code. In the following meetings, the planning of the code, its development, the solution of bugs or of logical problems are faced, discussed and solved with the Professor. The final result is a computer code or a library of routines, whose usage allows to compute the results, numerical or symbolical, which will be illustrated in the final report.
In the first part, a series of lectures on modern programming language is delivered, with the aim of providing a background for the problems and the needs that might arise during the development of the final projects. During the lectures each student must have a computer available to immediately reproduce and test the examples proposed.
In the second part, the students are split in groups, choosing to focus on a specific programming language. The activity of the groups proceed in parallel . In each group a second series of lectures is delivered, to discuss the detailed features of the chosen programming language, which will be then applied in the final project.
In the third part, the topics of the final projects are proposed. Each student chooses on topic and starts individually to develop the code. In the following meetings, the planning of the code, its development, the solution of bugs or of logical problems are faced, discussed and solved with the Professor. The final result is a computer code or a library of routines, whose usage allows to compute the results, numerical or symbolical, which will be illustrated in the final report.
Teaching Resources
Assessment methods and Criteria
The exam consists in the submission of a written report on the project and its oral discussion at the blackboard. The report will describe the problem, the methodologies used in the calculations and/or in the simulations, the final results and their soundness, the prospects to extend the approach to more complex requests in the same computational domain.
The final evaluation is based on several factors:
the completeness of the project, in its mandatory and complementary items;
the level of the checks which have been applied to test the validity of the results presented;
the level of the oral presentation of the final results.
The final evaluation is based on several factors:
the completeness of the project, in its mandatory and complementary items;
the level of the checks which have been applied to test the validity of the results presented;
the level of the oral presentation of the final results.
FIS/02 - THEORETICAL PHYSICS, MATHEMATICAL MODELS AND METHODS - University credits: 6
Laboratories: 48 hours
Lessons: 14 hours
Lessons: 14 hours
Professors:
Riboldi Stefano, Vicini Alessandro
Professor(s)
Reception:
Upon appointment
Via Celoria 16, LITA building, 2nd floor