diff options
author | Madhusudan.C.S | 2009-10-07 14:42:38 +0530 |
---|---|---|
committer | Madhusudan.C.S | 2009-10-07 14:42:38 +0530 |
commit | 27a802ede6709c0fe24424b3809a65cabc19eabe (patch) | |
tree | d2109be768ea2fde94883965243060158295b137 /day1/Session-3.tex~ | |
parent | 4383a9a97a18150bfcda48d9111429d891a46c68 (diff) | |
download | workshops-more-scipy-27a802ede6709c0fe24424b3809a65cabc19eabe.tar.gz workshops-more-scipy-27a802ede6709c0fe24424b3809a65cabc19eabe.tar.bz2 workshops-more-scipy-27a802ede6709c0fe24424b3809a65cabc19eabe.zip |
Added what did we learn to all slides and reworked on Session 2 and 4.
Diffstat (limited to 'day1/Session-3.tex~')
-rwxr-xr-x | day1/Session-3.tex~ | 423 |
1 files changed, 0 insertions, 423 deletions
diff --git a/day1/Session-3.tex~ b/day1/Session-3.tex~ deleted file mode 100755 index 3cb32d3..0000000 --- a/day1/Session-3.tex~ +++ /dev/null @@ -1,423 +0,0 @@ -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Tutorial slides on Python. -% -% Author: Prabhu Ramachandran <prabhu at aero.iitb.ac.in> -% Copyright (c) 2005-2008, Prabhu Ramachandran -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\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, - 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:\\Modular Code, Handling Files and Objects} - -\author[FOSSEE Team] {Asokan Pichai\\Prabhu Ramachandran} - -\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} -\date[] {10, October 2009} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%\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} -} - - -% 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} - -\section{Python} - -\begin{frame} - {Problem set 3} - As you can guess, idea is to use \kwrd{for}! -\end{frame} - -\begin{frame}{Problem 3.1} - Which of the earlier problems is simpler when we use \kwrd{for} instead of \kwrd{while}? -\end{frame} - -\begin{frame}{Problem 3.2} - Given an empty chessboard and one Bishop placed in any square, say (r, c), generate the list of all squares the Bishop could move to. -\end{frame} - -\begin{frame}[fragile] - \frametitle{Problem 3.3} - - Given two real numbers \typ{a, b}, and an integer \typ{N}, write a - function named \typ{linspace( a, b, N)} that returns an ordered list - of \typ{N} points starting with \typ{a} and ending in \typ{b} and - equally spaced.\\ - - For example, \typ{linspace(0, 5, 11)}, should return, \\ -\begin{lstlisting} -[ 0.0 , 0.5, 1.0 , 1.5, 2.0 , 2.5, - 3.0 , 3.5, 4.0 , 4.5, 5.0 ] -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Problem 3.4a (optional)} - -Use the \typ{linspace} function and generate a list of N tuples of the form\\ -\typ{[($x_1$,f($x_1$)),($x_2$,f($x_2$)),\ldots,($x_N$,f($x_N$))]}\\for the following functions,\begin{itemize} - \item \typ{f(x) = sin(x)} - \item \typ{f(x) = sin(x) + sin(10*x)}. -\end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Problem 3.4b (optional)} - - Using the tuples generated earlier, determine the intervals where the roots of the functions lie. - - \inctime{15} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TIME: 15 m, running 185m -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\subsection{IO} - -\begin{frame}[fragile] - \frametitle{Simple tokenizing and parsing} - \begin{lstlisting} -s = """The quick brown fox jumped - over the lazy dog""" -for word in s.split(): - print word.capitalize() - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Problem 4.1} - Given a string like, ``1, 3-7, 12, 15, 18-21'', produce the list \\ - \begin{lstlisting} - [1,3,4,5,6,7,12,15,18,19,20,21] - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{File handling} -\begin{lstlisting} ->>> f = open('/path/to/file_name') ->>> data = f.read() # Read entire file. ->>> line = f.readline() # Read one line. ->>> f.close() # close the file. -\end{lstlisting} -Writing files -\begin{lstlisting} ->>> f = open('/path/to/file_name', 'w') ->>> f.write('hello world\n') ->>> f.close() -\end{lstlisting} -\begin{itemize} - \item Everything read or written is a string -\end{itemize} -\emphbar{Try \typ{file?} for more help} -\end{frame} - -\begin{frame}[fragile] - \frametitle{File and \kwrd{for}} -\begin{lstlisting} ->>> f = open('/path/to/file_name') ->>> for line in f: -... print line -... -\end{lstlisting} -\end{frame} - -\begin{frame}{Problem 4.2} - The given file has lakhs of records in the form:\\ - \typ{RGN;ID;NAME;MARK1;\ldots;MARK5;TOTAL;PFW}\\ - Some entries may be empty. Read the data from this file and print the - name of the student with the maximum total marks. -\end{frame} - -\begin{frame}{Problem 4.3} - For the same data file compute the average marks in different - subjects, the student with the maximum mark in each subject and also - the standard deviation of the marks. Do this efficiently. - - \inctime{20} -\end{frame} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TIME: 20 m, running 205m -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\subsection{Modules} - -\begin{frame}[fragile] - {Modules} -\begin{lstlisting} ->>> sqrt(2) -Traceback (most recent call last): - File "<stdin>", line 1, in <module> -NameError: name 'sqrt' is not defined ->>> import math ->>> math.sqrt(2) -1.4142135623730951 -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - {Modules} - \begin{itemize} - \item The \kwrd{import} keyword ``loads'' a module - \item One can also use: - \begin{lstlisting} ->>> from math import sqrt ->>> from math import * - \end{lstlisting} - \item What is the difference? - \item \alert{Use the later only in interactive mode} - \end{itemize} - \emphbar{Package hierarchies} - \begin{lstlisting} ->>> from os.path import exists - \end{lstlisting} -\end{frame} - -\begin{frame} - \frametitle{Modules: Standard library} - \begin{itemize} - \item Very powerful, ``Batteries included'' - \item Some standard modules: - \begin{itemize} - \item Math: \typ{math}, \typ{random} - \item Internet access: \typ{urllib2}, \typ{smtplib} - \item System, Command line arguments: \typ{sys} - \item Operating system interface: \typ{os} - \item Regular expressions: \typ{re} - \item Compression: \typ{gzip}, \typ{zipfile}, and \typ{tarfile} - \item And a whole lot more! - \end{itemize} - \item Check out the Python Library reference: - \url{http://docs.python.org/library/} - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - {Modules of special interest} - \begin{description}[matplotlibfor2d] - - \item[\typ{numpy}] Efficient, powerful numeric arrays - - \item[\typ{matplotlib}] Easy, interactive, 2D plotting - - \item[\typ{scipy}] statistics, optimization, integration, linear - algebra, Fourier transforms, signal and image processing, - genetic algorithms, ODE solvers, special functions, and more - - \item[Mayavi] Easy, interactive, 3D plotting - - \end{description} -\end{frame} - -\begin{frame}[fragile] - {Creating your own modules} - \begin{itemize} - \item Define variables, functions and classes in a file with a - \typ{.py} extension - \item This file becomes a module! - \item Accessible when in the current directory - \item Use \typ{cd} in IPython to change directory - - \item Naming your module - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Modules: example} - \begin{lstlisting} -# --- arith.py --- -def gcd(a, b): - if a%b == 0: return b - return gcd(b, a%b) -def lcm(a, b): - return a*b/gcd(a, b) -# ------------------ ->>> import arith ->>> arith.gcd(26, 65) -13 ->>> arith.lcm(26, 65) -130 - \end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Problem 5.1} - - Put all the functions you have written so far as part of the problems - into one module called \typ{iitb.py} and use this module from IPython. - -\inctime{20} -\end{frame} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% TIME: 20 m, running 225m -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\subsection{Objects} -\begin{frame}{Objects in Python} - \begin{itemize} - \item What is an Object? (Types and classes) - \item identity - \item type - \item method - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Why are they useful?} - \small - \begin{lstlisting} -for element in (1, 2, 3): - print element -for key in {'one':1, 'two':2}: - print key -for char in "123": - print char -for line in open("myfile.txt"): - print line -for line in urllib2.urlopen('http://site.com'): - print line - \end{lstlisting} -\end{frame} - -\begin{frame}{And the winner is \ldots OBJECTS!} - All objects providing a similar inteface can be used the same way.\\ - Functions (and others) are first-class objects. Can be passed to and returned from functions. - \inctime{10} -\end{frame} - -\subsection{Coding Style in Python} -\begin{frame}{Readability and Consistency} - \begin{itemize} - \item Readability Counts!-Code is read more often than its written. - \item Consistency! - \item Know when to be inconsistent. - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Code Layout} - \begin{itemize} - \item Indentation - \item Tabs or Spaces?? - \item Maximum Line Length - \item Blank Lines - \item Encodings - \end{itemize} -\end{frame} - -\begin{frame}{Whitespaces in Expressions} - \begin{itemize} - \item When to use extraneous whitespaces?? - \item When to avoid extra whitespaces?? - \item Use one statement per line - \end{itemize} -\end{frame} - -\begin{frame}{Comments} - \begin{itemize} - \item No comments better than contradicting comments - \item Block comments - \item Inline comments - \end{itemize} -\end{frame} - -\begin{frame}{Docstrings} - \begin{itemize} - \item When to write docstrings? - \item Ending the docstrings - \item One liner docstrings - \end{itemize} -\end{frame} -\inctime{10} -\end{document} |