## 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.
• 1-D 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.