%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Tutorial slides on Python.
%
% Author: FOSSEE 
% Copyright (c) 2009, FOSSEE, IIT Bombay
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\documentclass[14pt,compress]{beamer}
%\documentclass[draft]{beamer}
%\documentclass[compress,handout]{beamer}
%\usepackage{pgfpages} 
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]

% 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[Tricks of the trade]{Python for Science and Engg: Tricks of the trade}

\author[FOSSEE] {FOSSEE}

\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
\date[] {28 January, 2010\\Day 1, Introduction}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\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{Workshop Schedule: Day 1}
  \begin{description}
	\item[Session 1] Mon 09:00--10:00
	\item[Session 2] Mon 10:05--11:05
	\item[Session 3] Mon 11:20--12:20
	\item[Session 4] Mon 12:25--13:25
        \item[Quiz 1] Mon 14:25--14:40
        \item[Exercises] Mon 14:40--15:25
        \item[Session 5] Mon 15:40--16:40
        \item[Quiz 2] Mon 16:45--17:00
  \end{description}
\end{frame}

\begin{frame}
  \frametitle{Workshop Schedule: Day 2}
  \begin{description}
	\item[Session 1] Tue 09:00--10:00
	\item[Session 2] Tue 10:05--11:05
	\item[Session 3] Tue 11:20--12:20
	\item[Session 4] Tue 12:25--13:25
        \item[Quiz 1]  Tue 14:25--14:40
        \item[Exercises] Tue 14:40--15:25
        \item[Session 5] Tue 15:40--16:40
        \item[Quiz 2]  Tue 16:45--17:00
  \end{description}
\end{frame}

\section{Checklist}
\begin{frame}
\frametitle{Checklist}
  \begin{enumerate}
    \item IPython
    \item Editor: We recommend \alert{scite}.
    \item Data files: 
      \begin{itemize}
      \item \typ{sslc1.txt}
      \item \typ{pendulum.txt}
      \item \typ{points.txt}
      \item \typ{pos.txt}
      \item \typ{holmes.txt}
      \end{itemize}
    \item Python scripts: 
      \begin{itemize}
      \item \typ{sslc_allreg.py}
      \item \typ{sslc_science.py}
      \end{itemize}
    \item Images
      \begin{itemize}
      \item \typ{lena.png}
      \item \typ{smoothing.gif}
      \end{itemize}
  \end{enumerate}
\end{frame}

\section{Starting up Ipython}
\begin{frame}[fragile]
\frametitle{Starting up \ldots}
\begin{block}{}
\begin{lstlisting}
  $ ipython -pylab  
\end{lstlisting} %$
\end{block}
\begin{lstlisting}     
  In []: print "Hello, World!"
  Hello, World!
\end{lstlisting}
Exiting
\begin{lstlisting}     
  In []: ^D(Ctrl-D)
  Do you really want to exit([y]/n)? y
\end{lstlisting}
\end{frame}

\section{Loops - Indentation and Breaking out of loops}
\begin{frame}[fragile]
\frametitle{Loops}
Breaking out of loops
\begin{lstlisting}     
  In []: while True:
    ...:     print "Hello, World!"
    ...:     
  Hello, World!
  Hello, World!^C(Ctrl-C)
  ------------------------------------
  KeyboardInterrupt                   

\end{lstlisting}
\emphbar{\alert{Indentation: Notice the 4 spaces after\\} \typ{while True:}}
\end{frame}

\section{Saving Commands}
\begin{frame}[fragile]
\frametitle{History and Saving of Commands}
\begin{itemize}
\item \typ{\%hist} gives complete history of commands in a session
\item \typ{\%save} can be used to save the commands
\end{itemize}
\begin{block}{Careful about errors!}
  \kwrd{\%hist} will contain the errors as well,\\
  so be careful while selecting line numbers.
\end{block}
\end{frame}

\section{Editors}
\begin{frame}[fragile]
  \frametitle{Editors}
  The following are some good editors:
  \begin{itemize}
  \item emacs
  \item vim
  \item scite - we recommend scite
  \end{itemize}
\end{frame}

\section{Scite - How to}
\begin{frame}[fragile]
  \frametitle{Scite - How to \ldots}
  \begin{itemize}
  \item Opening a file
  \item Saving a file
  \item Exiting the editor
  \end{itemize}
\end{frame}

\section{Summary}
\begin{frame}[fragile]
  \frametitle{What did we learn?}
  \begin{itemize}
    \item Starting up IPython
    \item Loops - Indentation and breaking out of loops
    \item \kwrd{\%hist}
    \item Saving commands to a script
  \end{itemize}
\end{frame}

\end{document}
