COMPUTATIONAL PHYSICS

Academic year
2024/2025 Syllabus of previous years
Official course title
COMPUTATIONAL PHYSICS
Course code
CM0648 (AF:520835 AR:291828)
Modality
On campus classes
ECTS credits
6
Degree level
Master's Degree Programme (DM270)
Educational sector code
FIS/03
Period
2nd Semester
Course year
2
Moodle
Go to Moodle page
Computational physics is a branch of physics that utilizes computational methods to solve complex physical problems that are otherwise unsolvable using analytical techniques. It serves as a crucial complement to both theoretical and experimental physics, providing valuable insights for a wide range of systems and phenomena by using numerical simulations and big data analysis techniques. Recently, given the advent of quantum computers, computational physics have also been embracing the use of quantum computing methods to solve problems that have been considered nearly intractable for classical computers.
The objective of the course is to provide students with both foundational knowledge and practical skills necessary to carry out computer simulations for both classical and quantum systems, as well as to perform data analyses effectively.
The course will introduce computational physics, with examples and exercises in the Python programming language. Specifically, students will learn to:
- Study classical systems by numerically solving the Newton’s equation of motion simulating classical dynamics beyond the limits of the approximations used for analytical solutions.
- Study many-body systems involving interactions among multiple particles.
- Solve the Schrödinger equation for quantum systems relevant to nanoscience and materials science, numerically calculating observables and simulating quantum dynamics.
Additionally, the course will provide a brief introduction to some practical applications of machine learning and quantum computing in the study of physical systems.
The course complements other physics and mathematics courses in the Quantum Science and Technology master's program. It provides a hands-on approach to studying problems encountered in Statistical Mechanics, Physics of Complex Systems, and Modern Condensed Matter Physics. Rather than delving into the details of algorithms already covered in the Numerical Methods and Quantum Computation courses, students will learn how to implement these methods, using existing libraries and tools, and finally apply them to interesting physical problems.
1. Knowledge and understanding
• Basic knowledge of computational methods commonly used in research across various areas of physics.
• Familiarity with the Python programming language and various libraries useful for studying physics problems.

2. Ability to apply knowledge and understanding
• Independently develop Python programs to simulate physical systems, both classical and quantum.
• Select appropriate numerical techniques, libraries, and data visualization tools for each specific problem.
• Critically analyze the results obtained from numerical simulations.

3. Autonomy of judgment
• Identify and correct errors through a critical analysis of the methods applied and the results obtained.

4. Communication skills
• Clearly and precisely communicate acquired knowledge using appropriate terminology, both in written and oral forms.
• Present simulation results using graphs and figures that comply with the standards of scientific publications.

5. Learning skills
• Take notes by selecting and organizing information based on its relevance and priority.
• Achieve sufficient autonomy in identifying and using computational tools and open-source software to solve physics problems.
To enroll in this course, students are required to have knowledge of Mathematical Methods, Classical Physics, and Quantum Mechanics at the level covered in a three-year scientific degree program.
Although the course will consider some problems and systems encountered in Statistical Mechanics, Physics of Complex Systems, and Modern Condensed Matter Physics, the course does not formally require having passed these previous courses. All the information about the systems relevant for the Computational Physics course will be re-introduced during the lectures.
1. Introduction to computational physics.
2. Python programming for physicists.
3. Graphics and visualization.
4. Simulation of classical systems. Solution of the Newton’s equation of motion for damped and driven systems, including non-linear dynamics.
5. Introduction to Monte Carlo methods for classical many-body systems. Application to the Ising model.
6. Solution of the time-independent Schrödinger equation. Calculation of the band structure of graphene nanoribbons and carbon nanotubes.
7. Brief introduction about quantum Monte Carlo techniques for many-body quantum systems, with a more detailed study of Variational Monte Carlo.
8. Brief mention of methods for strongly correlated lattice systems.
9. Solution of the time-dependent Schrödinger equation for quantum dynamics.
10. Introduction to machine learning with Python.
11. Introduction to quantum computing with the Qiskit software development kit.
12. Variational quantum eigensolver.
Mark E. Newman, Computational Physics (revisited and expanded version) (Cambridge University Press, 2013).
On-line resources indicated by the teacher during each lecture.
The exam consists of various take-home exercises and an oral exam:

Take-home exercises: At the end of a few lectures, individual computational exercises will be assigned to practice the methods and tools learned. A total of four exercises will be given. All solutions, presented in the form of tables or graphs, should be compiled in Word or LaTeX files, and submitted to the teacher through Moodle. In some cases, the teacher may also request submission of specific parts of the student’s codes. The exercises will be graded on a 30-point scale. Students may submit exercises individually throughout the course or all at once at the end (at least 4 days -96 hours- before the oral exam). Access to the oral exam will only be permitted once all exercises have been submitted with an average score of at least 16/30.
Oral Exam (30-40 minutes): During the oral exam, the student will answer in-depth questions on the results of the exercises and on the fundamental course content, allowing the teacher to assess the student’s understanding of the topics and techniques covered.

Final Evaluation:
• Excellent (27-30/30): The exam will be considered fully successful if the average score of the exercises is 25/30 or higher, and during the oral exam, the student is able to answer most questions, demonstrating a complete comprehension of the subject matter.
• Good (22-26/30): The exam will be rated as good if the average score of the exercises is 20/30 or higher, and during the oral exam, the student demonstrates a solid understanding of the key methods and tools treated during the course and shows the ability to address and correct errors in the exercises.
• Sufficient (18-21/30): The exam will be considered sufficient if the average score of the exercises is 16/30 or higher, and during the oral exam, the student demonstrates adequate knowledge of the main course concepts, understanding also the more significant errors made in the solution of the exercises.

Failed Exam: The exam will be considered failed if the average score of the exercises is below 16/30, in which case access to the oral exam will not be granted, or above 16, but the student demonstrates very poor understanding of the main methods and tools introduced during the course. The teacher will assign new exercises to allow the student to retake the exam.

The problems and fundamental equations relevant to each part of the course will be introduced using a traditional approach, with all calculations done on a black/whiteboard. The implementation in the Python programs will be conducted step by step by the lecturer, projecting the computer screen so that students can easily follow and replicate each operation on their computers.
English
oral
Definitive programme.
Last update of the programme: 12/11/2024