From 302e107705fcb1191b73941d568614c5fa41aea5 Mon Sep 17 00:00:00 2001
From: Prabhu Ramachandran
Date: Thu, 22 Dec 2016 00:57:49 +0530
Subject: Split session 1 into two parts.

---
 scipy/basic/session1a.tex | 714 ++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 714 insertions(+)
 create mode 100644 scipy/basic/session1a.tex

(limited to 'scipy/basic/session1a.tex')

diff --git a/scipy/basic/session1a.tex b/scipy/basic/session1a.tex
new file mode 100644
index 0000000..ded2a91
--- /dev/null
+++ b/scipy/basic/session1a.tex
@@ -0,0 +1,714 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Tutorial slides on Python.
+%
+% Author: FOSSEE
+% Copyright (c) 2009-2016, FOSSEE, IIT Bombay
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[14pt,compress]{beamer}
+
+% Modified from: generic-ornate-15min-45min.de.tex
+\mode<presentation>
+{
+  \usetheme{Warsaw}
+  \useoutertheme{infolines}
+  \setbeamercovered{transparent}
+}
+
+\usepackage[english]{babel}
+\usepackage[latin1]{inputenc}
+%\usepackage{times}
+\usepackage[T1]{fontenc}
+
+% Taken from Fernando's slides.
+\usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler}
+\usepackage[scaled=.95]{helvet}
+
+\definecolor{darkgreen}{rgb}{0,0.5,0}
+
+\usepackage{listings}
+\lstset{language=Python,
+    basicstyle=\ttfamily\bfseries,
+    commentstyle=\color{red}\itshape,
+  stringstyle=\color{darkgreen},
+  showstringspaces=false,
+  keywordstyle=\color{blue}\bfseries}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Macros
+\setbeamercolor{emphbar}{bg=blue!20, fg=black}
+\newcommand{\emphbar}[1]
+{\begin{beamercolorbox}[rounded=true]{emphbar}
+      {#1}
+ \end{beamercolorbox}
+}
+\newcounter{time}
+\setcounter{time}{0}
+\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\tiny \thetime\ m}}
+
+\newcommand{\typ}[1]{\lstinline{#1}}
+
+\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}}  }
+
+%%% This is from Fernando's setup.
+% \usepackage{color}
+% \definecolor{orange}{cmyk}{0,0.4,0.8,0.2}
+% % Use and configure listings package for nicely formatted code
+% \usepackage{listings}
+% \lstset{
+%    language=Python,
+%    basicstyle=\small\ttfamily,
+%    commentstyle=\ttfamily\color{blue},
+%    stringstyle=\ttfamily\color{orange},
+%    showstringspaces=false,
+%    breaklines=true,
+%    postbreak = \space\dots
+% }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Title page
+\title[Interactive Plotting]{Introductory Scientific Computing with
+Python}
+\subtitle{Introduction, IPython and Plotting}
+
+\author[FOSSEE] {FOSSEE}
+
+\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\date[] {Mumbai, India
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\pgfdeclareimage[height=0.75cm]{iitmlogo}{iitmlogo}
+%\logo{\pgfuseimage{iitmlogo}}
+
+
+%% Delete this, if you do not want the table of contents to pop up at
+%% the beginning of each subsection:
+\AtBeginSubsection[]
+{
+  \begin{frame}<beamer>
+    \frametitle{Outline}
+    \tableofcontents[currentsection,currentsubsection]
+  \end{frame}
+}
+
+\AtBeginSection[]
+{
+  \begin{frame}<beamer>
+    \frametitle{Outline}
+    \tableofcontents[currentsection,currentsubsection]
+  \end{frame}
+}
+
+% If you wish to uncover everything in a step-wise fashion, uncomment
+% the following command:
+%\beamerdefaultoverlayspecification{<+->}
+
+%%\includeonlyframes{current,current1,current2,current3,current4,current5,current6}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DOCUMENT STARTS
+\begin{document}
+
+\begin{frame}
+  \maketitle
+\end{frame}
+
+%% \begin{frame}
+%%   \frametitle{Outline}
+%%   \tableofcontents
+%%   % You might wish to add the option [pausesections]
+%% \end{frame}
+
+\begin{frame}
+    \frametitle{Acknowledgement}
+    \Large
+    \begin{center}
+        \alert{FOSSEE group (\url{fossee.in})} \\
+        based at\\
+        \alert{IIT Bombay}\\
+        and funded by\\
+        The National Mission on Education through ICT, \\
+        \alert{Ministry of HRD, India}
+    \end{center}
+\end{frame}
+
+\section{Checklist}
+\begin{frame}
+\frametitle{Checklist}
+  \begin{enumerate}
+    \item Editor - we recommend \alert{Canopy}
+    \item IPython
+    \item Data files:
+      \begin{itemize}
+      \item \typ{pendulum.txt}
+      \item \typ{data.csv}
+      \end{itemize}
+    \item Images
+      \begin{itemize}
+      \item \typ{lena.png}
+      \end{itemize}
+  \end{enumerate}
+\end{frame}
+
+\begin{frame}
+  \frametitle{About the Tutorial}
+  \begin{block}{Intended Audience}
+  \begin{itemize}
+       \item Engg., Mathematics and Science researchers with a
+           reasonable programming background.
+  \end{itemize}
+  \end{block}
+
+  \begin{block}{Goal: Successful participants will be able to}
+    \begin{itemize}
+      \item Start using Python as plotting, computational tool.
+      \item Use the basic libraries and tools for scientific computing
+          with Python.
+    \end{itemize}
+  \end{block}
+\end{frame}
+
+%% \begin{frame}[fragile]
+%% \frametitle{The Python interpreter \ldots}
+%% \begin{block}{}
+%% \begin{lstlisting}
+%%   $ python
+%% \end{lstlisting} %$
+%% \end{block}
+%% \begin{lstlisting}
+%%   >>> print "Hello, World!"
+%%   Hello, World!
+%% \end{lstlisting}
+%% Exiting
+%% \begin{lstlisting}
+%%   >>> ^D(Ctrl-D)
+%%   $
+%% \end{lstlisting} %$
+%% \end{frame}
+
+\section{Starting up IPython}
+\begin{frame}[fragile]
+\frametitle{Starting up \ldots}
+\begin{block}{Start a terminal}
+  \begin{itemize}
+    \item Canopy command prompt (Tools menu)
+\end{itemize}
+\end{block}
+
+\begin{block}{On Terminal}
+\begin{lstlisting}
+  $ ipython --pylab
+\end{lstlisting} %$
+\end{block}
+\end{frame}
+
+% \section{Starting up IPython}
+% \begin{frame}[fragile]
+% \frametitle{Starting up \ldots}
+% \begin{block}{Terminal Jupyter}
+% \begin{lstlisting}
+%   $ jupyter console
+
+%   In [1]: %pylab
+% \end{lstlisting} %$
+% \end{block}
+% \end{frame}
+
+
+\begin{frame}[fragile]
+\frametitle{Running IPython}
+\begin{lstlisting}
+  In []: print("Hello, World!")
+  Hello, World!
+\end{lstlisting}
+
+Exiting on the \textbf{terminal}
+\begin{lstlisting}
+  In []: ^D(Ctrl-D)
+  Do you really want to exit([y]/n)? y
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{IPython? }
+  \begin{itemize}
+  \item An enhanced Python interpreter
+  \end{itemize}
+\end{frame}
+
+% \begin{frame}[fragile]
+%   \frametitle{Pressed Ctrl-D on Canopy? }
+%   \begin{itemize}
+%   \item Pressed \verb+Ctrl-D+ inside Canopy?
+%   \item You suddenly lost the Python prompt?
+%   \item Go to \verb+View->Python+
+%   \end{itemize}
+% \end{frame}
+
+
+\section{Breaking out of loops}
+\begin{frame}[fragile]
+\frametitle{Breaking out of Loops}
+Breaking out of loops
+\begin{lstlisting}
+  In []: while True:
+    ...:     print("Hello, World!")
+    ...:
+  Hello, World!
+  Hello, World!^C(Ctrl-C)
+  ------------------------------------
+  KeyboardInterrupt
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Exercise}
+
+  \begin{itemize}
+  \item Exit the IPython interpreter
+  \item Close the terminal
+  \item Restart the terminal (Canopy tools menu)
+  \item Restart IPython using:
+  \end{itemize}
+\begin{lstlisting}
+  $ ipython --pylab
+\end{lstlisting} %$
+  \inctime{10}
+\end{frame}
+
+\section{Plotting}
+
+\begin{frame}
+  \frametitle{Important instructions}
+  \begin{itemize}
+  \item For the first session, please do not experiment
+  \item Follow along and type everything!
+  \item Case matters
+  \item Every character you type matters!
+  \end{itemize}
+\end{frame}
+
+\subsection{Drawing plots}
+\begin{frame}[fragile]
+\frametitle{First Plot}
+\begin{columns}
+    \column{0.25\textwidth}
+    \hspace*{-0.25in}
+  \includegraphics[height=2in, interpolate=true]{data/firstplot}
+    \column{0.8\textwidth}
+    \begin{block}{}
+    \begin{small}
+\begin{lstlisting}
+In []: x = linspace(0, 2*pi, 50)
+In []: plot(x, sin(x))
+\end{lstlisting}
+    \end{small}
+    \end{block}
+\end{columns}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Walkthrough}
+\begin{block}{\typ{x = linspace(start, stop, num)} }
+returns \typ{num} evenly spaced points, in the interval [\typ{start}, \typ{stop}].
+\end{block}
+\vspace*{.35in}
+\begin{block}{}
+  \small
+\begin{lstlisting}
+In []: x[0]
+Out[]: 0.0
+
+In []: x[49]
+Out[]: 6.2831853071795862
+\end{lstlisting}
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Walkthrough \ldots}
+\begin{block}{\typ{plot(x, y)}}
+plots \typ{x} and \typ{y} using default line style and color
+\end{block}
+\inctime{5}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Important instructions}
+  \begin{itemize}
+  \item Please do not close the plot windows or IPython
+  \item For the first session, please do not experiment
+  \item Follow along and type everything!
+  \item Case matters
+  \item Every character you type matters!
+  \end{itemize}
+\end{frame}
+
+\subsection{Decoration}
+\begin{frame}[fragile]
+\frametitle{Adding Labels}
+\begin{columns}
+  \column{0.25\textwidth}
+  \hspace*{-0.45in}
+  \includegraphics[height=2in, interpolate=true]{data/label}
+  \hspace*{0.5in}
+  \column{0.55\textwidth}
+  \begin{block}{}
+  \small
+  \begin{lstlisting}
+In []: xlabel('x')
+
+In []: ylabel('sin(x)')
+  \end{lstlisting}
+  \small
+%  \end{lstlisting}
+%\typ{xlabel(s)} sets the label of the \typ{x}-axis to \typ{s}
+
+%  \begin{lstlisting}
+  \end{block}
+%\typ{ylabel(s)} sets the label of the \typ{y}-axis to \typ{s}
+\end{columns}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Another example}
+  \begin{lstlisting}
+In []: clf()
+  \end{lstlisting}
+\emphbar{Clears the plot area.}
+  \begin{lstlisting}
+In []: y = linspace(0, 2*pi, 50)
+In []: plot(y, sin(2*y))
+In []: xlabel('y')
+In []: ylabel('sin(2y)')
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{IPython tips}
+
+\begin{itemize}
+\item Use \typ{TAB} to complete command
+\item Try:
+\begin{lstlisting}
+In []: pl<TAB>
+\end{lstlisting}
+\end{itemize}
+\vspace*{0.5in}
+
+{\Large \structure{History}}
+\begin{itemize}
+\item Up arrow and down arrow
+
+\item Left / right to move and edit
+
+\item Type some text and press up arrow:
+\begin{lstlisting}
+In []: pl<Up Arrow>
+\end{lstlisting}
+
+\end{itemize}
+
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Advanced IPython tips \ldots}
+  \begin{itemize}
+\item Search: \typ{Ctrl-r} and start typing
+
+\item \typ{Ctrl-a}: go to start of line
+
+\item \typ{Ctrl-e}: go to end of line
+
+\item \typ{Ctrl-k}: kill to end of line
+  \end{itemize}
+\end{frame}
+
+
+\subsection{More decoration}
+\begin{frame}[fragile]
+\frametitle{Title and Legends}
+\vspace*{-0.15in}
+%  \begin{block}{}
+%  \small
+\begin{lstlisting}
+In []: title('Sinusoids')
+In []: legend(['sin(2y)'])
+\end{lstlisting}
+%  \small
+%  \end{block}
+  \vspace*{-0.1in}
+  \begin{center}
+  \includegraphics[height=2in, interpolate=true]{data/legend}
+  \end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Legend Placement}
+\begin{block}{}
+    \small
+\begin{lstlisting}
+In []: legend(['sin(2y)'], loc='center')
+\end{lstlisting}
+\end{block}
+
+\begin{columns}
+    \column{0.6\textwidth}
+ \includegraphics[height=2in, interpolate=true]{data/position}
+\column{0.45\textwidth}
+\vspace{-0.2in}
+\begin{lstlisting}
+'best'
+'right'
+'left'
+'center'
+\end{lstlisting}
+\end{columns}
+\inctime{15}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Important instructions}
+  \begin{itemize}
+  \item Please do not close the plot windows or IPython
+  \item For the first session, please do not experiment
+  \item Follow along and type everything!
+  \item Case matters
+  \item Every character you type matters!
+  \end{itemize}
+\end{frame}
+
+%% \begin{frame}[fragile]
+%%   \frametitle{For arbitrary location}
+%% \vspace*{-0.1in}
+%% \begin{lstlisting}
+%% In []: legend(['sin(2y)'], loc=(.8,.1))
+%% \end{lstlisting}
+%% \emphbar{Specify south-east corner position}
+%% %\vspace*{-0.2in}
+%% \begin{center}
+%%   \includegraphics[height=2in, interpolate=true]{data/loc}
+%% \end{center}
+%% %\inctime{10}
+%% \end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Showing it better}
+\vspace{-0.15in}
+\begin{lstlisting}
+In []: plot(y, cos(y), 'r')
+# See a red plot!
+
+In []: clf()
+In []: plot(y, sin(y), 'g', linewidth=2)
+\end{lstlisting}
+\vspace*{-0.2in}
+\begin{center}
+  \includegraphics[height=2.2in, interpolate=true]{data/green}
+\end{center}
+%\inctime{10}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Annotating}
+\vspace*{-0.1in}
+\begin{lstlisting}
+In[]: annotate('local max', xy=(1.5, 1))
+\end{lstlisting}
+\vspace*{-0.2in}
+\begin{center}
+  \includegraphics[height=3in, interpolate=true]{data/annotate}
+\end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Saving \& Closing}
+\begin{lstlisting}
+In []: savefig('sin.png')
+
+In []: close()
+\end{lstlisting}
+Some supported formats:
+\begin{itemize}
+\item png
+\item pdf
+\item svg
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Recap}
+  \begin{itemize}
+  \item \typ{linspace(start, end, num)}
+  \item \typ{plot(x, y)}
+  \item \typ{clf()}
+  \item \typ{xlabel, ylabel}
+  \item \typ{title, legend, annotate}
+  \item \typ{savefig}
+  \item \typ{close}
+  \end{itemize}
+  \inctime{10}
+\end{frame}
+
+\section{Multiple plots}
+\begin{frame}[fragile]
+  \frametitle{Overlaid Plots}
+\begin{lstlisting}
+In []: y = linspace(0, 2*pi, 50)
+\end{lstlisting}
+
+\begin{lstlisting}
+In []: clf()
+In []: plot(y, sin(y))
+In []: plot(y, cos(y))
+In []: xlabel('y')
+In []: ylabel('f(y)')
+In []: legend(['sin(y)', 'cos(y)'])
+# Note how we made two legends
+\end{lstlisting}
+
+
+\emphbar{By default plots would be overlaid!}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Plotting separate figures}
+\begin{lstlisting}
+In []: clf()
+In []: figure(1)
+In []: plot(y, sin(y))
+In []: figure(2)
+In []: plot(y, cos(y))
+In []: savefig('cosine.png')
+In []: figure(1)
+In []: title('sin(y)')
+In []: savefig('sine.png')
+In []: close()
+In []: close()
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Get Axes lengths}
+\emphbar{Getting axes lengths}
+  \begin{lstlisting}
+In []: xmin, xmax = xlim()
+In []: ymin, ymax = ylim()
+In []: print(xmin, xmax)
+\end{lstlisting}
+\pause
+\emphbar{Set the axes limits}
+  \begin{lstlisting}
+In []: xlim(xmin, 2*pi )
+In []: ylim(ymin-0.2, ymax+0.2)
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[plain,fragile]
+  \frametitle{Axes lengths}
+  \vspace*{-0.2in}
+  \begin{center}
+    \includegraphics[height=3.25in, interpolate=true]{data/limits}
+  \end{center}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{IPython tip: documentation}
+
+\begin{itemize}
+
+    \item Try:
+\begin{lstlisting}
+In []: plot?
+\end{lstlisting}
+      \vspace*{0.2in}
+        to get more information on \typ{plot}
+
+      \item Use arrow keys to scroll docs
+      \item Note: exit help pager with ``q''
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{IPython tip: source}
+\begin{itemize}
+    \item Try:
+\begin{lstlisting}
+In []: plot??
+\end{lstlisting}
+    to see the source code for \typ{plot}
+
+\end{itemize}
+\inctime{10}
+\end{frame}
+
+
+\begin{frame}[plain,fragile]
+\frametitle{Review Problem}
+\begin{enumerate}
+\item Plot $x, -x, \sin(x), x \sin(x)$ in range $-5\pi$ to $5\pi$
+\item Add a legend
+\item Annotate the origin
+\item Set axes limits to the range of x
+\end{enumerate}
+\vspace*{-0.15in}
+\begin{center}
+  \includegraphics[height=2.6in, interpolate=true]{data/four_plot}
+\end{center}
+\end{frame}
+
+\end{document}
+
+%% Questions for Quiz %%
+%% ------------------ %%
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+Draw (roughly) the plot obtained by the following:
+\begin{lstlisting}
+In []: x = linspace(0, pi, 3)
+In []: plot(x, sin(x))
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+Describe the plot produced by the following:
+\begin{lstlisting}
+In []: x = linspace(0, 2*pi, 50)
+In []: plot(x, cos(x), 'go')
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}
+\frametitle{\incqno }
+How will you plot the previous graph with line width set to 3?  How will
+you set the $x$ and $y$ labels of the plot?
+\end{frame}
+
+\begin{frame}
+\frametitle{\incqno }
+How will you set the x and y axis limits so that the region of interest
+is in the rectangle $(0, -1.5)$ (left bottom coordinate) and $(2\pi,
+1.5)$ (right top coordinate)?
+\end{frame}
+
+\begin{frame}
+\frametitle{\incqno }
+What ipython magic command do you use to obtain the lines of code you have already typed in the interpreter? What command do you use to save them?
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{\incqno }
+The following code snippet has an error/bug:
+\begin{lstlisting}
+In []: y = linspace(0, 2*pi, 50)
+In []: plot(y, sin(y))
+In []: clf()
+In []: plot(y, cos(y))
+In []: legend(['sin(y)', 'cos(y)'])
+\end{lstlisting}
+What is the error? How do you fix it?
+\end{frame}
-- 
cgit 

