In [4]:
from import ConfigManager
from IPython.utils.path import locate_profile
cm = ConfigManager(profile_dir=locate_profile(get_ipython().profile))
cm.update('livereveal', {
              'theme': 'sky',
              'transition': 'zoom',
              'start_slideshow_at': 'selected',
{u'start_slideshow_at': 'selected', u'theme': 'sky', u'transition': 'zoom'}

Numerical linear algebra, Skoltech,

Fall 2015, general course info.


Ivan Oseledets, [email protected],
Maxim Rakhuba, [email protected],
Evgeny Frolov, [email protected],
Daria Sushnikova, darya [email protected],
Denis Kolesnikov, [email protected]
Alexander Fonarev, [email protected]

How do we grade

  • 50% homework
  • 20% Written tests (surely one mid-term)
  • pass-fail ping-pong test
  • 20%-50% Application period and/or term project

Deadlines & attendance & late submissions

  1. Strict deadlines with 5 days of additional budget.
  2. You can still get 50% for late submissions
  3. Attendance control not strict (as usual do not disappoint us: the negative bonus can be large)

Course description

  • Numerical linear algebra is the basis for computational science and engineering. </font>
  • Matrices and their decompositions are the key </font>
  • The tools are different for small-scale and large-scale problems </font>
  • The idea is to give the basis for other IT courses in Computational Science and Engineering (but Data as well). </font>

Learning outcomes

  • Solve medium-scale numerical linear algebra problems (solve linear systems, compute eigenvalues and eigenvectors, solve linear least squares) using matrix factorizations </font>
  • Iterative methods for sparse/structured systems </font>
  • Find which methods are the most appropriate for the particular problem </font>
  • Find appropriate software </font>

Some details

  • We will use Python ecosystem for programming. The first week we will spend for the Python crash course (including today)
  • All the homework will be distributed in the form of IPython/Jupyter notebooks
In [2]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import seaborn  as sns
x = np.linspace(0, 1, 1024)
#Do some random plot here
[<matplotlib.lines.Line2D at 0x11422aa50>]

(Approximate) Syllabus

  • Week 1: Python crash course, floating points arithmetics, some games with matrices
  • Week 2: Matrices, vectors, norms, ranks
  • Week 3: Linear systems, eigenvectors, eigenvalues
  • Week 4: Matrix decompositions (LU, QR, SVD) + test
  • Week 5: Sparse matrices and structured matrices
  • Week 6: Iterative methods / preconditioners / matrix functions
  • Week 7: Ping-pong + written test
  • Week 8: Application period

From advanced topics, we will try to cover compressed sensing, image procession and tensor factorizations.


  • 4 problem sets
  • Each Friday (starting from the week 2) will be the deadline
  • Everybody has a resource of 5 days to postpone problem sets deadlines


  • 2 written tests (week 4 and week 7)
  • Ping-pong test (week 7)


  • Golub, Van Loan, "Matrix computations" (4th edition)
  • Tyrtyshnikov, "Brief introduction to numerical analysis"
  • Demmel, "Numerical Linear Algebra"

Now let us go to Python intro

In [7]:
from IPython.core.display import HTML
def css_styling():
    styles = open("./styles/custom.css", "r").read()
    return HTML(styles)