Merged with mainline.
authorPuneeth Chaganti <punchagan@fossee.in>
Wed, 14 Oct 2009 11:02:18 +0530
changeset 111 ae070c133120
parent 110 220ac08e67b5 (current diff)
parent 109 16e04782baac (diff)
child 112 24992ab48f2b
child 113 e7febbccd376
Merged with mainline.
--- a/day1/Session-2.tex	Tue Oct 13 22:34:46 2009 +0530
+++ b/day1/Session-2.tex	Wed Oct 14 11:02:18 2009 +0530
@@ -159,32 +159,23 @@
 \section{Functions}
 \subsection{Defining}
 \begin{frame}[fragile]
-\frametitle{Functions: examples}
-  \begin{lstlisting}
-def signum( r ):
-    """returns 0 if r is zero
-    -1 if r is negative
-    +1 if r is positive"""
-    if r < 0:
-        return -1
-    elif r > 0:
-        return 1
-    else:
-        return 0
-  \end{lstlisting}
+\frametitle{Functions: Definition}
+\begin{itemize}
+  \item \kwrd{def} keyword
+  \item 
+\end{itemize}
 \end{frame}
 
 \begin{frame}[fragile]
   \frametitle{Functions: examples}
   \begin{lstlisting}
-def pad( n, size ): 
-    """pads integer n with spaces
-    into a string of length size
-    """
-    SPACE = ' '
-    s = str( n )
-    padSize = size - len( s )
-    return padSize * SPACE + s
+In [35]: def plot_sinx():
+   ....:     x = linspace(0, 2*pi, 100)
+   ....:     plt.plot(x, sin(x))
+   ....:     plt.show()
+   ....:    
+
+In [36]: plot_sinx()
   \end{lstlisting}
 \pause
 \emphbar{What about \% formatting?}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/day1/session2.tex	Wed Oct 14 11:02:18 2009 +0530
@@ -0,0 +1,369 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Tutorial slides on Python.
+%
+% Author: The FOSSEE Group
+% Copyright (c) 2009, The FOSSEE Group, 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{split}
+  \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]{\texttt{#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[Basic Python]{Python:\\A great programming toolkit}
+
+\author[FOSEE Team] {The FOSSEE Group}
+
+\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\date[] {31, October 2009\\Day 1, Session 2}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\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}
+  \titlepage
+\end{frame}
+\begin{frame}
+  {Acknowledgements}
+  \begin{center}
+  This program is conducted by\\
+  IIT, Bombay\\
+  as part of  the open source initiatives\\
+  under the aegis of\\
+  \alert{National Mission on Education through ICT,} \\
+  Ministry of HRD.
+  \end{center}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Outline}
+  \tableofcontents
+  % You might wish to add the option [pausesections]
+\end{frame}
+
+\section{Functions}
+\begin{frame}{Functions: Definition}
+\begin{itemize}
+  \item \kwrd{def} keyword
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Functions: Example 1}
+  \begin{lstlisting}
+In [1]: def plot_sinx():
+   ....:     x = linspace(0, 2*pi, 100)
+   ....:     plt.plot(x, sin(x))
+   ....:     plt.show()
+   ....:    
+
+In [2]: plot_sinx()
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+\frametitle{Functions: Example 2}
+  \begin{lstlisting}
+In [3]: def f(x):
+   ....:     return sin(x*x*x)+(3*x*x)
+
+In [4]: x = linspace(0,2*pi, 1000)
+
+In [5]: plt.plot(x, f(x))
+  \end{lstlisting}
+  \inctime{10}
+\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% TIME: 10 m, running 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Creating and running scripts}
+\begin{frame}
+  {Creating python files}
+  \begin{itemize}
+    \item aka scripts
+    \item use your editor
+    \item extension \typ{.py}
+    \item run with \texttt{python hello.py} at the command line
+    \item in IPython using \kwrd{\%run}
+  \end{itemize}
+\inctime{5}
+\end{frame}
+
+\section{Files Handling}
+\begin{frame}[fragile]
+  \frametitle{Basic File Operations}
+Opening and Reading files
+\begin{lstlisting}
+In [6]: f = open('/path/to/file_name')
+In [7]: data = f.read() # Read entire file.
+In [8]: line = f.readline() # Read one line.
+In [9]: f.close() # close the file.
+\end{lstlisting}
+Writing files
+\begin{lstlisting}
+In [10]: f = open('/path/to/file_name', 'w')
+In [11]: f.write('hello world\n')
+In [12]: f.close()
+\end{lstlisting}
+\begin{itemize}
+    \item Everything read or written is a string
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+    \frametitle{File and \kwrd{for}}
+\begin{lstlisting}
+In [13]: f = open('dummyfile')
+
+In [14]: for line in f:
+    ...:     print line
+    ...:  
+\end{lstlisting}
+\inctime{10}
+\end{frame}
+
+\section{Strings}
+\begin{frame}[fragile]
+  \frametitle{Strings}
+  \begin{lstlisting}
+s = 'this is a string'
+s = 'This one has "quotes" inside!'
+s = "I have 'single-quotes' inside!"
+l = "A string spanning many lines\
+one more line\
+yet another"
+t = """A triple quoted string does
+not need to be escaped at the end and 
+"can have nested quotes" etc."""
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]\frametitle{Strings and \typ{split()}}
+  \begin{lstlisting}
+In [15]: a = 'hello world'
+
+In [16]: a.split()
+Out[17]: ['hello', 'world']
+  \end{lstlisting}
+Now try this:
+  \begin{lstlisting}
+In [18]: b = 'KD, Madhu, Punchagan, Shantanu, Vattam'
+
+In [19]: b.split(',')
+Out[20]: ['KD', ' Madhu', ' Punchagan', ' Shantanu', ' Vattam']
+  \end{lstlisting}
+\inctime{5}
+\end{frame}
+
+\section{Plotting points}
+\begin{frame}[fragile]
+\frametitle{How to plot points?}
+We saw how to plot graphs, lets now look at how to plot points.\\
+\begin{lstlisting}
+In [21]: plt.plot(x, sin(x), 'ro')
+Out[22]: [<matplotlib.lines.Line2D object at 0xac17e0c>]
+\end{lstlisting}
+\begin{itemize}
+  \item \kwrd{'r'},\kwrd{'g'},\kwrd{'b'} for red, green and blue
+  \item \kwrd{'o'} - Dots
+  \item \kwrd{'-'} - Lines
+  \item \kwrd{'- -'} - Dashed lines
+\end{itemize}
+\inctime{5}
+\end{frame}
+
+\section{Lists}
+
+\begin{frame}[fragile]
+  \frametitle{List creation and indexing}
+\begin{lstlisting}
+In [23]: lst = [] #Empty list
+
+In [24]: lst = [1,2,3,4] #More useful list
+
+In [25]: len(lst)
+Out[26]: 4
+
+In [27]: lst[0]+lst[1]+lst[-1]
+Out[27]: 7
+\end{lstlisting}
+\begin{itemize}
+  \item Indices start with ?
+  \item Negative indices indicate ?
+  \end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{List: slices}
+  \begin{itemize}
+  \item Slicing is a basic operation
+  \item \typ{list[initial:final:step]}
+  \item  The step is optional
+  \end{itemize}
+\begin{lstlisting}
+In [28]: lst[1:3]  # A slice.
+Out[28]: [2, 3]
+
+In [29]: lst[1:-1]
+Out[29]: [2, 3]
+
+In [30]: lst[1:] == lst[1:-1]
+Out[30]: False
+\end{lstlisting}
+Explain last result
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{List: more slices}
+\begin{lstlisting}
+In [31]: lst[0:-1:2] # Notice the step!
+Out[31]: [1, 3]
+
+In [31]: lst[::2]
+Out[31]: [1, 3]
+
+In [32]: lst[-1::-1]
+\end{lstlisting}
+What do you think the last one will do?
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{List methods}
+\begin{lstlisting}
+In [33]: lst.append(5)
+
+In [34]: lst
+Out[34]: [1, 2, 3, 4, 5]
+
+In [35]: lst.append([6,7])
+
+In [36]: lst
+Out[36]: [1, 2, 3, 4, 5, [6, 7]]
+
+In [37]: lst.extend([8,9])
+
+In [38]: lst
+Out[38]: [1, 2, 3, 4, 5, [6, 7], 8, 9]
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{List containership}
+  \begin{lstlisting}
+In [39]: animals = ['cat', 'dog', 'rat', 'croc']
+
+In [40]: 'dog' in animals
+Out[40]: True
+
+In [41]: 'snake' in animals
+Out[41]: False
+  \end{lstlisting}
+  \inctime{10}
+\end{frame}
+
+\section{Modules and import}
+\begin{frame}{Modules and \typ{import}}
+  \begin{itemize}
+    \item \kwrd{import} x
+    \item \kwrd{from} x \kwrd{import} y
+  \end{itemize}
+Whats the difference??
+\inctime{5}
+\end{frame}
+
+\end{document}