%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%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, Tricks of the Trade}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%\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[Tricks of the trade] Thu 09:00--09:30
	\item[Session 1] Thu 09:30--10:30
	\item[Session 2] Thu 10:45--11:45
	\item[Session 3] Thu 11:50--12:30
	\item[Session 4] Thu 12:30--1:30
        \item[Quiz 1] Thu 14:30--14:45
        \item[Exercises] Thu 14:45--15:30
        \item[Session 5] Thu 15:45--16:45
        \item[Quiz 2] Thu 16:50--17:05
  \end{description}
\end{frame}

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

\section{Indentation}
\begin{frame}[fragile]
  \frametitle{Indentation}
  \begin{lstlisting}
  In []: while True:
    ...:     print "Hello, World!"
    ...:     
  \end{lstlisting}
\emphbar{\alert{Indentation: Notice the 4 spaces before\\} \typ{print "Hello, World!"}\\
  Hit the ``ENTER'' key twice to return to the previous indentation level}
\end{frame}

\section{Tab Completion}
\begin{frame}[fragile]
  \frametitle{Tab Completion}
  Type \typ{pri} and hit the Tab key
  \begin{lstlisting}
    In []: pri <Tab>
    In []: print
  \end{lstlisting}
  Type \typ{whi} and hit the Tab key
  \begin{lstlisting}
    In []: whi <Tab>
    In []: while
  \end{lstlisting}
\end{frame}

\section{Tab Suggestions}
\begin{frame}[fragile]
  \frametitle{Tab Suggestions}
  \begin{lstlisting}
In []: a = 'Hello world'

In []: a.<Tab>
  \end{lstlisting}
  \ldots
\end{frame}

\section{Saving Commands}
\begin{frame}[fragile]
\frametitle{History and Saving of Commands}
\begin{itemize}
\item \typ{\%hist} gives 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 \alert{scite} - we recommend it
  \end{itemize}
\end{frame}

\section{Scite - How to}
\begin{frame}[fragile]
  \frametitle{Scite - How to \ldots}
  \begin{itemize}
  \item Opening scite
    \begin{itemize}
    \item GNU/Linux: \alert{Applications} $\rightarrow$ \alert{Programming} $\rightarrow$ \alert{SciTE Text Editor}
    \item Windows: Double click on the \alert{SciTE} Desktop icon
    \end{itemize}
  \item Type the contents
  \item Saving the file with a filename \alert{File $\rightarrow$ Save as}
  \item Saving the file  \alert{File $\rightarrow$ Save}
  \item Exiting the editor  \alert{File $\rightarrow$ Exit}
  \item To open an existing file: \alert{File $\rightarrow$ Open}
  \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} - History of commands
    \item \kwrd{\%save} - Saving commands 
    \item Using SciTE
  \end{itemize}
\end{frame}

\end{document}
