Computational physics laboratory

A.Y. 2021/2022
Overall hours
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.
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.
Course syllabus and organization

Single session

Lesson period
Second semester
The course will be delivered in presence. Only if the Covid-19 pandemic should be still active, with the necessary restriction measures, than the course will be partially or even completely delivered online.
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);
-Python: optimization of problems, with a genetic algorithm, like the automatic writing of
computer codes or the solution of a cryptographic challenge)
-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.
-Quantitative finance. Development of a C++ library that allows the simulation of the temporal evolution of financial products and the evaluation of the gain of the contracts related to these products. The simulation codes run also on NVIDIA GPUs.
Prerequisites for admission
Basic knowledge of at least one programming language (C/C++/Fortran).
Basic skills for the analysis and description of a problem in algorithmic form.
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.
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.
Laboratories: 48 hours
Lessons: 14 hours
Educational website(s)
Mo-Fr, after 2.30pm
To be agreed (email)
DC/1/6, Physics Department