Computational Physics 2019, Course 509 - Physics Applications of Computers


Introductory lecture material


Basic numerical methods

Methods and Algorithms
Monte Carlo methods
Quantum Monte Carlo methods
Continuous Time Quantum Monte Carlo
Hartree-Fock method
Density functional theory
Molecular Dynamics

Left: Simulation of a bacteria growth by DLA method, Right: Molecular dynamics simulation of a small system of atoms Simulation codes is available to download in lecture material.

This course introduces logarithmic concepts and familiarizes students with the basic conputational tools which are essential for graduate students in computational physics and related areas. In this course, students work toward mastering computational skills, needed to work in classical and quantum physics using the computer. Examples will be drawn from various areas of physics. As the programing language, we will use mostly Python and its scientific library scipy & numpy. To speed up parts of the code, we will also use C++ and fortran90 for short examples, which will be used through the Python interface. This course has no prerequsites except for familiarity with some programming language. It is designed for the student who wishes to broaden his/her knowledge of applications and develop techniques. To follow the course more efficiently, and perform the hands on training, it is desired that students bring their own laptops to the class.


Class Time: ARC 203, 12:00-1:20pm on Wednesday, 1:40-3:00pm on Friday

Instructor: Kristjan Haule
Office: Serin E267
Phone: 445-3881
Office hours: Friday 4:45pm



Preliminary Course Outline and Tentative List of Topics include


  1. System installation, Python instalation, libraries and environment.
  2. Comparison of modern programing languages.
  3. Representation of numbers in the computer.
  4. Why do we need to be aware of roundoff error.
  5. How to speed up the code with softwater such as f2py and weave.
  6. Optimizing your software with coding tricks, libraries, and profiliers
  7. How to use state of the are computer hardware. When to use GPU's
B) Learning high level programming with examples in Python and C++:
  1. Modern Scientific Computing using Python, SciPy, Numpy, Pylab
  2. Importance of data abstraction, data encapsulation and data hiding
  3. Concept of templates and their use (functors)
  4. Be aware of 80-20 rule in optimizing code
Literature for Pythons:
  1. Software carpentry
  2. How to Think Like a Computer Scientist: Learning with Python
  3. Python for beginners
  4. Dive Into Python
  5. Python documentation
  6. Python regular expressions
Literature for C++:
  1. C++ Programming language by Bjarne Stroustrup
  2. More Effective C++ by Scott Meyers
  3. The Object-Oriented Numerics Page
C) Basic numerical methods:
  1. Numeric integration (source code)
  2. Interpolation, Splines and Fourier transformation (source code)
  3. Differential equations (source code)
  4. Random numbers and multidimensional integration (source code)
  5. Parallel programming with MPI ( source code)
Literature: Numerical Recipes online from

D) Computational methods and algorithms:
  1. Monte Carlo methods and Simulated Annealing
  2. Hartree-Fock method
  3. Density functional theory
  4. Quantum Monte Carlo methods
  5. Continuous Time Quantum Monte Carlo method
  6. Molecular dynamics simulation
  1. Computational Physics by J.M. Thijssen
  2. Introduction to Computer Simulation Methods by H. Gould, J Tobocnik and W. Christian
  3. Electronic Structure, Basic Theory and Practical Methods by Richard M. Martin(Very good book for the Density functional part of the course)
  4. An Introduction to Computational Physics by Tao Pang
  5. Computational Physics by Rubin H. Landau and Manuel J. Paez(More elementary but good book)

Students with Disabilities