summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xday1/Session-2.tex33
-rw-r--r--day1/session2.tex369
2 files changed, 381 insertions, 21 deletions
diff --git a/day1/Session-2.tex b/day1/Session-2.tex
index dd26535..21dfffd 100755
--- a/day1/Session-2.tex
+++ b/day1/Session-2.tex
@@ -159,32 +159,23 @@ The number of lines must be obtained from the user as input.\\
\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?}
diff --git a/day1/session2.tex b/day1/session2.tex
new file mode 100644
index 0000000..be8ba73
--- /dev/null
+++ b/day1/session2.tex
@@ -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}