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
| Date | Morning | Afternoon |
|---|---|---|
| Part I | ||
| 22/9 | Lecture QM1 | Practical work TP1 |
| 29/9 | Lecture QM2 | Practical work TP2 |
| 03/10 | Lecture QM3 | |
| 06/10 | Tutorial TD1 | |
| 13/10 | Lecture QM4 | Tutorial TD2 |
| Part II | ||
| 20/10 | Lecture CM1 | Tutorial TD3 |
| 24/10 | Lecture CM2 | |
| 03/11 | Practical work TP3 | |
| 10/11 | Lecture CM3 | Exercises QM |
| 17/11 | Lecture CM4 | Practical work TP4 |
| Part III | ||
| 24/11 | Lecture SM1 | Exercises CM Exercises SM |
| 28/11 | Lecture SM2 | |
| 01/12 | Practical work TP5 | |
| 08/12 | Lecture SM3 | Tutorial TD6 |
| 15/12 | Lecture SM4 | Tutorial TD7 |
| 12/01 | Final 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
file directly..ipynb - 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.