Merged with Mainline.
authorPuneeth Chaganti <punchagan@fossee.in>
Tue, 27 Oct 2009 19:36:09 +0530
changeset 212 298cd56f4d5a
parent 211 8618546997ac (current diff)
parent 209 81351147c9c1 (diff)
child 213 ce62706cf870
child 216 c6704d4a18bd
Merged with Mainline.
day1/session3.tex
--- a/day1/session3.tex	Tue Oct 27 19:25:14 2009 +0530
+++ b/day1/session3.tex	Tue Oct 27 19:36:09 2009 +0530
@@ -140,6 +140,7 @@
   \begin{itemize}
     \item Draw a pie chart representing the number of students who scored more than 90\% in Science per region.
     \item Draw a pie chart representing the number of students who scored more than 90\% per subject(All regions combined).
+    \item Print mean, median, mode and standard deviation of math scores for all regions combined.
   \end{itemize}
 \end{frame}
 
@@ -147,8 +148,11 @@
   \frametitle{Statistical Analysis and Parsing \ldots}
   Machinery Required -
   \begin{itemize}
-    \item File reading and parsing
+    \item File reading
+    \item Parsing
     \item Dictionaries
+    \item NumPy arrays
+    \item Statistical operations
   \end{itemize}
 \end{frame}
 
@@ -156,8 +160,8 @@
   \frametitle{File reading and parsing}
   Understanding the structure of sslc1.txt
   \begin{itemize}
-    \item Each line in the file, i.e each row of a file is a single record.
-    \item Each record corresponds to a record of a single student
+    \item Each line in the file corresponds to one student's details
+    \item aka record
     \item Each record consists of several fields separated by a ';'
   \end{itemize}
 \end{frame}
@@ -169,11 +173,10 @@
     \item Region Code
     \item Roll Number
     \item Name
-    \item Marks of 5 subjects
+    \item Marks of 5 subjects: English, Hindi, Maths, Science, Social
     \item Total marks
-    \item Pass (P)
+    \item Pass/Fail (P/F)
     \item Withdrawn (W)
-    \item Fail (F)
   \end{itemize}
 \end{frame}
 
@@ -186,44 +189,83 @@
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Dictionary - Building parsed data}
+  \frametitle{Dictionary: Introduction}
   \begin{itemize}
-    \item Let the parsed data be stored in list of dictionaries.
-    \item d = \{\} is an empty dictionary
+    \item lists index: 0 \ldots n
+    \item dictionaries index using strings
   \end{itemize}
+\begin{block}{Example}
+d = \{ ``Hitchhiker's guide'' : 42,
+     ``Terminator'' : ``I'll be back''\}\\
+d[``Terminator''] => ``I'll be back''
+\end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Dictionary: Introduction}
+\begin{lstlisting}
+In [1]: d = {"Hitchhiker's guide" : 42,
+      "Terminator" : "I'll be back"}
+
+In [2]: d["Hitchhiker's guide"]
+Out[2]: 42
+
+In [3]: "Hitchhiker's guide" in d
+Out[3]: True
+
+In [4]: "Guido" in d
+Out[4]: False
+\end{lstlisting}
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Dictionary - Building parsed data}
+  \frametitle{Dictionary: Introduction}
+\begin{lstlisting}
+In [5]: d.keys()
+Out[5]: ['Terminator', "Hitchhiker's 
+                              guide"]
+
+In [6]: d.values()
+Out[6]: ["I'll be back", 42]
+\end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{enumerate: Iterating through list indices}
 \begin{lstlisting}
-ninety_percents = [{}, {}, {}, {}, {}]
+In [1]: names = ["Guido","Alex", "Tim"]
+
+In [2]: for i, name in enumerate(names):
+   ...:     print i, name
+   ...: 
+0 Guido
+1 Alex
+2 Tim
 \end{lstlisting}
 \end{frame}
 
 \begin{frame}[fragile]
+  \frametitle{Dictionary: Building parsed data}
+    Let our dictionary be:
+    \begin{lstlisting}
+science = {} # is an empty dictionary
+    \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
   \frametitle{Dictionary - Building parsed data}
   \begin{itemize}
-    \item Index of a dictionary is called a \emph{key}
-    \item \emph{Keys} of these dictionaries are strings - region codes
+    \item \emph{Keys} of \emph{science} will be region codes
+    \item Value of a \emph{science} will be the number students who scored more than 90\% in that region
   \end{itemize}
 \end{frame}
 
 \begin{frame}[fragile]
-  \frametitle{Dictionary - Building parsed data \ldots}
-  \begin{itemize}
-    \item Value of a \emph{key} can be any legal Python value
-    \item In this problem let the value of a \emph{key} be another an integer
-    \item This dictionary contains:
-  \end{itemize}
-'region code': Number of students who scored more than 90\% in this region for this subject
-\end{frame}
-
-\begin{frame}[fragile]
   \frametitle{Building parsed data \ldots}
   \begin{lstlisting}
-from pylab import *
+from pylab import pie
 
-ninety_percents = [{}, {}, {}, {}, {}]
+science = {}
 
 for record in open('sslc1.txt'):
     record = record.strip()
@@ -235,17 +277,92 @@
 
 \begin{frame}[fragile]
   \frametitle{Building parsed data \ldots}
+  \begin{lstlisting}
+if region_code not in science:
+    science[region_code] = 0
+
+score_str = fields[4].strip()
+
+score = int(score_str) if
+    score_str != 'AA' else 0
+
+if score > 90:
+    science[region_code] += 1
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Pie charts}
+  \small
+  \begin{lstlisting}
+figure(1)
+pie(science.values(), 
+    labels=science.keys())
+title('Students scoring 90% and above 
+      in science by region')
+savefig('/tmp/science.png')
+  \end{lstlisting}
+\begin{columns}
+    \column{5.25\textwidth}
+    \hspace*{1.1in}
+\includegraphics[height=2in, interpolate=true]{data/science}
+    \column{0.8\textwidth}
+\end{columns}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Building data for all subjects \ldots}
+  \begin{lstlisting}
+from pylab import pie
+from scipy import mean, median, std
+from scipy import stats
+
+scores = [[]] * 5
+ninety_percents = [{}] * 5
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Building data for all subjects \ldots}
+  \begin{lstlisting}
+from pylab import pie
+from scipy import mean, median, std
+from scipy import stats
+  \end{lstlisting}
+
+  \begin{block}{Repeating list items}
+    \begin{lstlisting}
+scores = [[]] * 5
+ninety_percents = [{}] * 5
+    \end{lstlisting}
+  \end{block}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Building data for all subjects \ldots}
+  \begin{lstlisting}
+for record in open('sslc1.txt'):
+    record = record.strip()
+    fields = record.split(';')
+
+    region_code = fields[0].strip()
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Building data for all subjects \ldots}
   \small
   \begin{lstlisting}
 for i, field in enumerate(fields[3:8]):
-
     if region_code not in ninety_percents[i]:
         ninety_percents[i][region_code] = 0
 
     score_str = field.strip()
+    score = int(score_str) if
+      score_str != 'AA' else 0
 
-    score = 0 if score_str == 'AA' else 
-                         int(score_str)
+    scores[i].append(score)
+
     if score > 90:
         ninety_percents[i][region_code] += 1
   \end{lstlisting}
@@ -263,25 +380,6 @@
 
 \begin{frame}[fragile]
   \frametitle{Pie charts}
-  \small
-  \begin{lstlisting}
-figure(1)
-pie(ninety_percents[4].values(), 
-    labels=ninety_percents[1].keys())
-title('Students scoring 90% and above 
-      in science by region')
-savefig('/tmp/science.png')
-  \end{lstlisting}
-\begin{columns}
-    \column{5.25\textwidth}
-    \hspace*{1.1in}
-\includegraphics[height=2in, interpolate=true]{data/science}
-    \column{0.8\textwidth}
-\end{columns}
-\end{frame}
-
-\begin{frame}[fragile]
-  \frametitle{Pie charts}
   \begin{lstlisting}
 figure(2)
 pie(subj_total, labels=['English',
@@ -299,6 +397,32 @@
   \includegraphics[height=3in, interpolate=true]{data/all_regions}
 \end{frame}
 
+\begin{frame}[fragile]
+  \frametitle{Obtaining statistics}
+  \begin{lstlisting}
+math_scores = array(scores[2])
+
+print "Mean: ", mean(math_scores)
+
+print "Median: ", median(math_scores)
+
+print "Mode: ", stats.mode(math_scores)
+
+print "Standard Deviation: ",
+              std(math_scores)
+  \end{lstlisting}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{What tools did we use?}
+  \begin{itemize}
+   \item Dictionaries for storing data
+   \item Facilities for drawing pie charts
+   \item NumPy arrays for efficient array manipulations
+   \item Functions for statistical computations - mean, median, mode, standard deviation
+  \end{itemize}
+\end{frame}
+
 \begin{frame}
 \frametitle{L vs $T^2$ \ldots}
 Let's go back to the L vs $T^2$ plot
@@ -436,14 +560,4 @@
 \end{lstlisting}
 \end{frame}
 
-\begin{frame}[fragile]
-  \frametitle{What did we learn?}
-  \begin{itemize}
-   \item Dictionaries
-   \item Drawing pie charts
-   \item Arrays
-   \item Least Square fitting
-   \item Intro to Matrices
-  \end{itemize}
-\end{frame}
 \end{document}
--- a/day2/session1.tex	Tue Oct 27 19:25:14 2009 +0530
+++ b/day2/session1.tex	Tue Oct 27 19:36:09 2009 +0530
@@ -248,7 +248,7 @@
     This Python idiom works for all types of variables.\\
 They need not be of the same type!
   \end{block}
-  \inctime{}
+  \inctime{10}
 \end{frame}
 
 \section{Control flow}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/day2/session5.tex	Tue Oct 27 19:36:09 2009 +0530
@@ -0,0 +1,202 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%Tutorial slides on Python.
+%
+% Author: Prabhu Ramachandran <prabhu at aero.iitb.ac.in>
+% Copyright (c) 2005-2009, 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\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[Exercises]{Exercises}
+
+\author[FOSSEE] {FOSSEE}
+
+\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\date[] {1, November 2009\\Day 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}
+}
+
+
+% 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}{Problem 1.1}
+  The aliquot of a number is defined as: the sum of the \emph{proper} divisors of the number. For example, aliquot(12) = 1 + 2 + 3 + 4 + 6 = 16.\\
+  Write a function that returns the aliquot number of a given number. 
+\end{frame}
+
+\begin{frame}{Problem 1.2}
+  A pair of numbers (a, b) is said to be \alert{amicable} if the aliquot number of a is b and the aliquot number of b is a.\\
+  Example: \texttt{220, 284}\\
+  Write a program that prints all four digit amicable pairs.
+  
+\inctime{20}
+\end{frame}
+
+%% \begin{frame}{Problem 2}
+%%   Given an empty chessboard and one Bishop placed in any s%quare, say (r, c), generate the list of all squares the Bi%shop could move to.
+
+%% \end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Problem Set 2}
+  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}
+\inctime{10}
+\end{frame}
+
+\begin{frame} 
+  \frametitle{Problem Set 3}
+  \begin{description}
+    \item[3.1] Count word frequencies in a file.
+\end{description}
+\inctime{5}
+\end{frame}
+
+\begin{frame}[fragile]
+  \frametitle{Problem set 4}
+  Finite difference
+  \begin{equation*}
+  \frac{sin(x+h)-sin(x)}{h}
+  \end{equation*}
+  \begin{lstlisting}
+  >>> x = linspace(0,2*pi,100)
+  >>> y = sin(x)
+  >>> deltax = x[1] - x[0]
+  \end{lstlisting}
+  \pause
+    \begin{enumerate}
+      \item Given this, get the finite difference of sin in the range 0 to 2*pi
+    \end{enumerate}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Problem Set 5}
+  \begin{itemize}
+      \item[5.1] Write a function that plots any regular n-gon given \typ{n}.
+      \item[5.2] Consider the logistic map, $f(x) = kx(1-x)$, plot it for
+          $k=2.5, 3.5$ and $4$ in the same plot.
+\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile] 
+\frametitle{Problem Set 5}
+  \begin{columns}
+    \column{0.6\textwidth}
+    \small{
+    \begin{itemize}
+      \item[3] Consider the iteration $x_{n+1} = f(x_n)$ where $f(x) = kx(1-x)$.  Plot the successive iterates of this process as explained below. 
+    \end{itemize}}
+    \column{0.35\textwidth}
+    \hspace*{-0.5in}
+  \includegraphics[height=1.6in, interpolate=true]{data/cobweb}  
+\end{columns}
+\end{frame}
+
+\begin{frame}
+  \frametitle{Problem Set 5.3}
+  Plot the cobweb plot as follows:
+  \begin{enumerate}
+    \item Start at $(x_0, 0)$ ($\implies$ i=0)
+    \item Draw a line to $(x_i, f(x_i))$
+    \item Set $x_{i+1} = f(x_i)$
+    \item Draw a line to $(x_{i+1}, x_{i+1})$
+    \item $(i\implies i+1)$ 
+    \item Repeat from 2 for as long as you want 
+  \end{enumerate}
+\inctime{20}
+\end{frame}
+
+\end{document}