Introduction to Scientific Computing in Python
 Getting started with IPython and creating basic plots with pylab.
 Using IPython effectively, reading documentation interactively.
 Basic plots.
 Decorating plots with labels, legends, annotation, and titles.
 Multiple plots and separate figures.
 Saving plots
 Saving Python scripts and running them using IPython and Python
 Using %hist and %save
 Creating new Python scripts on an editor.
 Running scripts in IPython.
 Running scripts from the terminal with python.
 Creating and using lists, list slicing, list operations.
 Creating data and storing them in lists.
 Plotting data in lists.
 Initializing and accessing list elements with indexing
 List slicing, striding, and list operations
 Looping over a list with for.
 Defining functions in Python.
 Functions accepting arguments and returning values.
 Timing operations using IPythonâ€™s %timeit and %time magic.
 NumPy array basics.
 Basic array attributes and operations.
 1D and multidimensional arrays
 Array slicing and striding.
 Exercise on plotting data from a file.
 More on NumPy
 Creating matrices using numpy arrays.
 Special kinds of matrices, ones, identity etc.
 Accessing elements, accessing rows and columns
 Multidimensional slicing and striding.
 Elementary image processing using numpy arrays
 Reading an image and matrix as a numpy array
 More matrix operations
 Transposition.
 Inverse, determinant, sum of elements.
 Computing the singular value decomposition.
 Computing norms, eigenvalues, and eigenvectors.
 Performing a least squares fit for some experimental data.

Read data from a file and perform a least square fit from first principles.
 Introduction to Jupyter/IPython notebooks.
 Starting up the notebook.
 A sample notebook with a demonstration of images, equations, code, and simple widgets.