Welcome to Computational Modeling of Nanosystems!

This course will take you on a journey through the quantum, classical, and statistical foundations of molecular science. Together, we’ll explore how atoms and molecules move, interact, and transform — and how we can capture these processes with the powerful tools of modern computation.

Across lectures, tutorials, and practical sessions, you’ll gain not only the theoretical background but also hands-on experience: from coding simple molecular dynamics in Python, to exploring stochastic processes and neural networks, to understanding the role of quantum chemistry and statistical mechanics in real materials and reactions.

It’s a challenging path, but one designed to build both intuition and technical skill. By the end, you’ll see how the mathematics, physics, and chemistry we cover connect into a single framework for modeling nanoscale systems — and you’ll be equipped to use these methods in your own research.

Let’s get started.

— Mario Barbatti


Course program

The Computational Modeling of Nanosystems course is organized into three main parts:

  • Quantum Mechanics
  • Classical Mechanics
  • Statistical Mechanics

Each part consists of four masterclasses, followed by tutorials and practical work sessions that put the concepts into practice.

Masterclasses and tutorials will be taught by Prof. Mario Barbatti, while the practical sessions will be supervised by Dr. Vijay Chilkuri.


Evaluation

Your performance in this course will be assessed through a combination of continuous evaluation during tutorials (TD), practical works (TP), and a final exam:

  • Written tests (25%)
    Short written tests will be given during tutorials TD1 to TD7. They will check your understanding of the core concepts covered in recent lectures..
  • Molecular dynamics coding project (25%)
    During TP3, TP4, and TP5 you will code an analytical potential energy surface in Python and run both microcanonical and canonical dynamics. Evaluation will focus on the quality of the code, documentation of the notebook, and the insight gained from analyzing your results.
  • Final exam (50%)
    A conventional written exam covering the entire course. The exam will emphasize conceptual understanding of the main ideas developed in lectures.


Course Schedule

DateMorningAfternoon
Part I
22/9Lecture QM1Practical work TP1
29/9Lecture QM2Practical work TP2
03/10Lecture QM3
06/10Tutorial TD1
13/10Lecture QM4Tutorial TD2
Part II
20/10Lecture CM1Tutorial TD3
24/10Lecture CM2
03/11Practical work TP3
10/11Lecture CM3Exercises QM
17/11Lecture CM4Practical work TP4
Part III
24/11Lecture SM1Exercises CM
Exercises SM
28/11Lecture SM2
01/12Practical work TP5
08/12Lecture SM3Tutorial TD6
15/12Lecture SM4Tutorial TD7
12/01Final exam


Program of the Masterclasses

I – QUANTUM MECHANICS
QM1 – Intro to QM & Born-Oppenheimer approximation
QM2 – Quantum chemistry
QM3 – Beyond Born-Oppenheimer
QM4 – From quantum to classical
II – CLASSICAL MECHANICS
CM1 – Newton’s laws
CM2 – Molecular mechanics: normal modes
CM3 – Molecular mechanics: dynamics
CM4 – Hamilton and Lagrange formulations & MQCD
III – STATISTICAL MECHANICS
SM1 – Principles of SM
SM2 – Monte Carlo algorithms, sampling techniques, and rates
SM3 – Fourier transform and spectrum simulations
SM4 – Machine learning


Content of the Tutorials

Tutorials
TD1 – Basic mathematics of quantum mechanics
TD2 – Quantum chemistry 1
TD3 – Quantum chemistry 2
TD4 – Excercises of quantum mechanics
TD5 – Stochastic processes coding / Excercises of classical mechanics
TD6 – Excercises of statistical mechanics
TD7 – Machine learning Tutorial


Info about the Practical Works

Practical works
TP1 – Python workshop 1
TP2 – Python workshop 2
TP3 – PES coding
TP4 – MD coding
TP5 – Thermostat coding

TP1 & TP2 – Python workshops

In these practicals, you will learn the basics of Python coding.


TP3, TP4, and TP5 – Molecular dynamics coding

In this series of practicals, you will code an analytical potential energy surface in Python and run both microcanonical and canonical molecular dynamics on it. The work will be carried out in a Jupyter Notebook or Google Colab Notebook.

Your notebook should be:

  • Well documented: clear explanations so that another student can easily follow your code.
  • Functional: it must run smoothly from start to finish without errors.

You are encouraged to discuss and exchange ideas with colleagues, but each student must submit their own notebook. Submissions must not be identical.

Evaluation criteria

  • Quality of coding.
  • Quality and clarity of documentation.
  • Depth of analysis and insight from the results.

Resources for preparation

Submission

Share your notebook with Dr. Chilkuri.

  • If you use Jupyter, send the .ipynb file directly.
  • If you use Google Colab, send the link and make sure the notebook is accessible to anyone with the link. (For more information on sharing in Colab, see this short video.)


Final exam

The final exam covers all topics discussed in class. You can prepare yourself for it by working on the lists of questions and exercises discussed in the tutorials.


Literature and textbooks

The course does not follow a single source, but it references many books, papers, and internet material like essays and videos. The references are given during the lectures.