Topic outline

  • Topics

    "Computers are useless. They can only give you answers."

                               - Pablo Picasso

    • Overview of general-purpose programming languages: Fortran, C, C++, Python
    • Programing basics: variables, control flow, data objects, algorithms
    • Overview of interpreted languages: Matlab, Mathematica
    • Numerics: accuracy, precision, stability, bottlenecks, computer structure
    • Numerical differentiation and integration; Runge Kutta methods
    • Interpolation and extrapolation: polynomial, spline, Laplace
    • Minimization and maximization: Brent, Newton, simulated annealing
    • Statistical description of data: modeling, comparing distributions
    • Monte Carlo simulations
    • (Time permitting) Ordinary differential equations: finite differences, shooting, relaxation
    • (Time permitting) Partial differential equations: reduction, relaxation, multi-grid

    Lecture Topic  Read  Blank notes
     Class notes Links & extra
    Course Intro, programming languages, C basics, Mathematica
    demo including neural networks
    tutorials draft1Lec1
    2C workflow, Variable representation, precision, accuracy, loss of precision, random walkNR1draft2Lec2Roundoff disasters
    One-liners 2010
     3 Mathematical recursion, numerical stability, functions, scope of variables, passing variables by value/reference NR1 draft3Lec3  Variable scope
     4 Pointers, dynamical programming, continued fractions, interpolation and extrapolation: intro  NR3 draft4Lec4 referencing
    Golden ratio
     5 Searching an ordered list, reading NR codes, Interpolation: polynomial, rational, spline; P vs. NP
    NR3 draft5Lec5 Interpolation in Python, P vs. NP
     6 Interpolation in multiple dimensions; Integration: Newton-Cotes formulae, Richardson extrapolation
    NR4 draft6Lec6 Quadrature in Mathematica
     7  Newton-Cotes algorithms, Richardson extrapolation, Romberg's method, improper integrals NR4 draft7Lec7 Quadrature in Python

  • Textbooks

      • Numerical recipes, by William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery; Publisher: Cambridge University Press; 3 edition (September 10, 2007).
      • Computational physics, by Morten Hjorth Jensen; Publisher: CreateSpace Independent Publishing Platform (January 12, 2015)
      • A survey of computational physics, by Rubin H. Landau, Jos? P?ez, Cristian C. Bordeianu; Publisher: Princeton University Press; Har/Cdr edition (July 21, 2008)

  • Lecture, Tutorial and office hours

    Office Hours

    Name Day Hours Building/Room Email*
    Uri Keshet
    Thursday17:00 54/214
    David Uzan Wednesday 14:00 54/319


    Group What? Name Day Hours Building/Room
    1 Lecture Uri Keshet Tue
    14:10 - 17:00
    11 Tutorial David Uzan Thu 15:10- 17:00
    * Please use the course staff email only for private issues, material related issues should be addressed in the course forum.

  • Class Exercises

  • Home Exercises

  • Recommendations


    • Lectures teach some C and Mathematica. Tutorials and assignments are in Python.
    • Visual C, Python, Mathematica, and Matlab are installed on most BGU computers.
    • Mathematica and Matlab are available within BGU campus and dorms on any mobile device through
    • VPN to access the above - ).
    • We mainly run Python using Google Collab or Jupyter. A more professional IDE: PyCharm. Feel free to use any workspace convenient for you.
    • C codes in this course are generally short, and can be compiled online e.g. on onlineGDB,, or
    • You may wish to compile C on your machine, which would be faster, much more powerful, and independent of web connection. You may need to install a compatible free compiler. For Windows, use command-line compilation (invoke "Command Prompt" from the start button). You may need to install Visual Studio first. A lighter alternative is MSYS2 installation.
    • Before the course begins, we recommend refreshing your Python using some basic interactive guide (1, 23, etc.), and becoming familiar with the Numpy, Scipy and Matplotlib libraries, which are used in the course. 
    • C tutorial is also available and highly recommended.
    • Euler Project is a nice project that has plenty of mathematical problems you could solve only by programming, and could help you learn coding in a more interesting way.
    • Guido van Robot is a nice visual programming language that helps junior programmers understand the logic of coding. Recommended for students with no background in coding.

  • Course Policy

    • A weekly lecture (3 hours) and a weekly tutorial (2 hours).
    • A weekly problem set. Submit all (except maybe one) sets on time to attend the exam.
    • Self-grade your problem set within a week after the solutions are posted; we will sample the grades. Final grade: 70% exam, 30% problem sets.