%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %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 { \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} \frametitle{Outline} \tableofcontents[currentsection,currentsubsection] \end{frame} } \AtBeginSection[] { \begin{frame} \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 \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 In []: print \end{lstlisting} Type \typ{whi} and hit the Tab key \begin{lstlisting} In []: whi In []: while \end{lstlisting} \end{frame} \section{Tab Suggestions} \begin{frame}[fragile] \frametitle{Tab Suggestions} \begin{lstlisting} In []: a = 'Hello world' In []: a. \end{lstlisting} \ldots \end{frame} \section{Command history} \begin{frame}[fragile] \frametitle{Command history} \typ{In []:} \alert{$\uparrow$}\\ \typ{In []: a = 'Hello world'}\\ \emphbar{The previously entered commands can be browsed using the \alert{$\uparrow$} key.} \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}