Merging heads
authorAmit Sethi
Wed, 10 Nov 2010 17:25:18 +0530
changeset 443 79a7ca3073d4
parent 442 a9b71932cbfa (current diff)
parent 440 b2e8522839f0 (diff)
child 444 1aa91f8d8d59
child 450 d49aee7ab1b9
Merging heads
progress.org.orig
--- a/conditionals/questions.rst	Wed Nov 10 17:19:54 2010 +0530
+++ b/conditionals/questions.rst	Wed Nov 10 17:25:18 2010 +0530
@@ -75,5 +75,27 @@
 
 .. A minimum of 2 questions here (along with answers)
 
-1. Question 1
-2. Question 2
+1. Given a number, say, n. If it is divisible by 10, print the
+   quotient when divided by 10, otherwise if it is divisible by 5,
+   print the corresponding quotient, otherwise, print the number.
+
+
+   Answer::
+
+        if n%10==0:
+            print n/10
+        elif n%5==0:
+            print n/5
+        else:
+            print n
+
+2. Given a number, say, n. Write an if block to multiply n by three
+   and add 1, if it is odd, otherwise halve it. 
+
+   Answer::
+
+        if n % 2:
+            n = n*3+1
+        else:
+            n /= 2
+
--- a/conditionals/quickref.tex	Wed Nov 10 17:19:54 2010 +0530
+++ b/conditionals/quickref.tex	Wed Nov 10 17:25:18 2010 +0530
@@ -1,8 +1,12 @@
-Creating a linear array:\\
-{\ex \lstinline|    x = linspace(0, 2*pi, 50)|}
+Writing an if/elif/else block:
+\begin{lstlisting}
+if condition1:
+   # do A, B, C
+elif condition2:
+   # do D, E
+else:
+   # do Y, Z
+\end{lstlisting}
 
-Plotting two variables:\\
-{\ex \lstinline|    plot(x, sin(x))|}
-
-Plotting two lists of equal length x, y:\\
-{\ex \lstinline|    plot(x, y)|}
+The ternary operator:
+{\ex \lstinline|    C if X else Y|} -- Do C if X is True else do Y. 
--- a/conditionals/script.rst	Wed Nov 10 17:19:54 2010 +0530
+++ b/conditionals/script.rst	Wed Nov 10 17:25:18 2010 +0530
@@ -1,14 +1,20 @@
 .. Objectives
 .. ----------
 
-.. Clearly state the objectives of the LO (along with RBT level)
+.. By the end of this tutorial, you will be able to 
+
+.. * Use if/else blocks 
+.. * Use if/elif/else blocks
+.. * Use the Ternary conditional statement - C if X else Y
+
+.. to check conditions in your programs. 
+
 
 .. Prerequisites
 .. -------------
 
-..   1. Name of LO-1
-..   2. Name of LO-2
-..   3. Name of LO-3
+..   1. Basic datatypes and operators
+
      
 .. Author              : Madhu
    Internal Reviewer   : 
@@ -21,8 +27,7 @@
 
 {{{ Show the slide containing the title }}}
 
-Hello friends. Welcome to this spoken tutorial on Getting started with
-strings.
+Hello friends. Welcome to this spoken tutorial on Conditionals
 
 {{{ Show the slide containing the outline }}}
 
@@ -40,10 +45,12 @@
 
 Whenever we have two possible states that can occur depending on a
 whether a certain condition we can use if/else construct in
-Python. Say for example we have a variable "a" which stores integers
-and we are required to find out whether the value of the variable "a"
-is an even number or an odd number. To test out conditional statements
-as an example, let us say the value of the variable "a" is 5::
+Python. 
+
+For example, say, we have a variable ``a`` which stores integers and
+we are required to find out whether ``a`` is even or odd.  an even
+number or an odd number. Let's say the value of ``a`` is 5, now.
+::
 
   a = 5
 
@@ -54,36 +61,29 @@
   else:
       print "Odd"
 
-When the value of the variable "a" is divided by 2 and the remainder
-is 0 i.e. the result of the operation "a modulo 2" is 0 the condition
-"a % 2 == 0" evaluates to True, so the code within the if block gets
-executed. This means that the value of "a" is Even. 
+If ``a`` is divisible by 2, i.e., the result of "a modulo 2" is 0, it
+prints "Even", otherwise it prints "Odd". 
+
+Note that in such a case, only one of the two blocks gets executed
+depending on whether the condition is ``True`` or ``False``.
 
-If the operation "a modulo 2" is not 0 the condition "a % 2 == 0"
-evaluates to False and hence the code block within else gets executed
-which means that the value of "a" is Odd. 
-
-Note in such a case only one of the two blocks get executed depending
-on whether the condition is True or False.
+There is a very important sytactic element to understand here. Every
+code block begins with a line that ends with a ``:``, in this example
+the ``if`` and the ``else`` lines. Also, all the statements inside a
+code block are intended by 4 spaces. Returning to the previous
+indentation level, ends the code block. 
 
-There is a very important sytactic element to understand here. All the
-statements which are inside a certain code block are indented by 4
-spaces. The statement which starts a new code block after it, i.e. the
-if statement in this example ends with a colon (:). So the next
-immediate line will be inside the if block and hence indented by 4
-spaces. To come out of the code block we have to come back to the
-previous indentation level as shown in the else line here. Again the
-line following else will be in a new block so else line ends with a
-colon and the following block of code is indented by 4.
+The if/else blocks work for a condition, which can take one of two
+states. What do we do for conditions, which can take more than two
+states? 
 
-As we use if/else statement when we have a condition which can take
-one of the two states, we may have conditions which can take more than
-two states. In such a scenario Python provides if/elif/else
-statements. Let us take an example. We have a variable "a" which holds
-integer values. We need to print "positive" if the value of a is
-positive, "negative" if it is negative and "zero" if the value of the
-variable "a" is 0. Let us use if/elif/else ladder for it. For the
-purposes of testing our code let us assume that the value of a is -3::
+Python provides if/elif/else blocks, for such conditions. Let us take
+an example. We have a variable ``a`` which holds integer values. We
+need to print "positive" if ``a`` is positive, "negative" if
+it is negative or "zero" if it is 0. 
+
+Let us use if/elif/else ladder for it. For the purposes of testing our
+code let us assume that the value of a is -3::
 
   a = -3
 
@@ -94,18 +94,18 @@
   else:
       print "zero"
 
-This if/elif/else ladder is self explanatory. All the syntax and rules
-as said for if/else statements hold. The only addition here is the
-elif statement which can have another condition of its own.
+All the syntax and rules as said for if/else statements hold. The only
+addition here is the ``elif`` statement which can have another
+condition of its own.
 
-Here, exactly one block of code is executed and that block of code
-corresponds to the condition which first evaluates to True. Even if
-there is a situation where multiple conditions evaluate to True all
-the subsequent conditions other than the first one which evaluates to
-True are neglected. Consequently, the else block gets executed if and
-only if all the conditions evaluate to False.
+Here too, exactly one block of code is executed -- the block of code
+which first evaluates to ``True``. Even if there is a situation where
+multiple conditions evaluate to True all the subsequent conditions
+other than the first one which evaluates to True are neglected.
+Consequently, the else block gets executed if and only if all the
+conditions evaluate to False.
 
-Also, the else block in both if/else statement and if/elif/else is
+Also, the ``else`` block in both if/else statement and if/elif/else is
 optional. We can have a single if statement or just if/elif statements
 without having else block at all. Also, there can be any number of
 elif's within an if/elif/else ladder. For example
@@ -124,6 +124,21 @@
 is completely valid. Note that there are multiple elif blocks and there
 is no else block.
 
+Following is an exercise that you must do. 
+
+%% %% Given a number, num. Write an if else block to print num, as is,
+      if it is divisible by 10, else print 10 * num.                  
+
+Please, pause the video here. Do the exercise and then continue. 
+
+:: 
+
+  if num%10 == 0:
+      print num
+  else:
+      print 10*num
+
+
 In addition to these conditional statements, Python provides a very
 convenient ternary conditional operator. Let us take the following
 example where we read the marks data from a data file which is
@@ -147,10 +162,21 @@
 it is 0. This means that we make the scores of the students who were
 absent for the exam 0.
 
-Moving on, there are certain situations where we will have to no
-operations or statements within the block of code. For example, we
-have a code where we are waiting for the keyboard input. If the user
-enters "s" as the input we would perform some operation nothing
+Following is an exercise that you must do. 
+
+%% %% Given a number, num. Write a ternary operator to print num, as is,
+      if it is divisible by 10, else print 10 * num. 
+
+Please, pause the video here. Do the exercise and then continue. 
+
+:: 
+
+   print num if num%10 == 0 else 10*num
+
+Moving on, there are certain situations where we will have no
+operations or statements within a block of code. For example, we have
+a code where we are waiting for the keyboard input. If the user enters
+"c", "d" or "x" as the input we would perform some operation nothing
 otherwise. In such cases "pass" statement comes very handy::
 
   a = raw_input("Enter 'c' to calculate and exit, 'd' to display the existing
@@ -167,8 +193,7 @@
 
 In this case "pass" statement acts as a place holder for the block of
 code. It is equivalent to a null operation. It literally does
-nothing. So "pass" statement can be used as a null operation
-statement, or it can used as a place holder when the actual code
+nothing. It can used as a place holder when the actual code
 implementation for a particular block of code is not known yet but has
 to be filled up later.
 
--- a/conditionals/slides.org	Wed Nov 10 17:19:54 2010 +0530
+++ b/conditionals/slides.org	Wed Nov 10 17:25:18 2010 +0530
@@ -18,7 +18,7 @@
 #+LaTeX_HEADER:  commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
 #+LaTeX_HEADER:  showstringspaces=false, keywordstyle=\color{blue}\bfseries}
 
-#+TITLE:    Accessing parts of arrays
+#+TITLE:    Conditionals
 #+AUTHOR:    FOSSEE
 #+EMAIL:     
 #+DATE:    
@@ -30,81 +30,47 @@
 #+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc
 
 * Outline
-  - Manipulating one and multi dimensional arrays
-  - Access and change individual elements 
-  - Access and change rows and columns 
-  - Slicing and striding on arrays to access chunks 
-  - Read images into arrays and manipulations
-* Sample Arrays
-  #+begin_src python
-    In []: A = array([12, 23, 34, 45, 56])
-    
-    In []: C = array([[11, 12, 13, 14, 15],
-                      [21, 22, 23, 24, 25],
-                      [31, 32, 33, 34, 35],
-                      [41, 42, 43, 44, 45],
-                      [51, 52, 53, 54, 55]])
-    
-  #+end_src
+  In this tutorial, we shall look at
+    + Using if/else blocks 
+    + Using if/elif/else blocks
+    + Using the Ternary conditional statement
+
 * Question 1
-  Change the last column of ~C~ to zeroes. 
+  Given a number, num. Write an if else block to print num, as is, if
+  it is divisible by 10, else print 10 * num.
 * Solution 1
   #+begin_src python
-    In []:  C[:, -1] = 0
+    if num%10 == 0: 
+        print num   
+    else:           
+        print 10*num
+  #+end_src
+
+* ~if/elif~ ladder
+  #+begin_src python
+    if user == 'admin':
+        # Do admin operations
+    elif user == 'moderator':
+        # Do moderator operations
+    elif user == 'client':
+        # Do customer operations
   #+end_src
 * Question 2
-  Change ~A~ to ~[11, 12, 13, 14, 15]~. 
+  Given a number, num. Write a ternary operator to print num, as is,
+  if it is divisible by 10, else print 10 * num.
 * Solution 2
   #+begin_src python
-    In []:  A[:] = [11, 12, 13, 14, 15]
-  #+end_src
-* squares.png
-  #+begin_latex
-    \begin{center}
-      \includegraphics[scale=0.6]{squares}    
-    \end{center}
-  #+end_latex
-* Question 3
-  - obtain ~[22, 23]~ from ~C~. 
-  - obtain ~[11, 21, 31, 41]~ from ~C~. 
-  - obtain ~[21, 31, 41, 0]~.   
-* Solution 3
-  #+begin_src python
-    In []:  C[1, 1:3]
-    In []:  C[0:4, 0]
-    In []:  C[1:5, 0]
-  #+end_src
-* Question 4
-  Obtain ~[[23, 24], [33, -34]]~ from ~C~
-* Solution 4
-  #+begin_src python
-    In []:  C[1:3, 2:4]
-  #+end_src
-* Question 5
-  Obtain the square in the center of the image
-* Solution 5
-  #+begin_src python
-    In []: imshow(I[75:225, 75:225])
-  #+end_src
-* Question 6
-  Obtain the following
-  #+begin_src python
-    [[12, 0], [42, 0]]
-    [[12, 13, 14], [0, 0, 0]]
-  #+end_src
-
-* Solution 6
-  #+begin_src python
-    In []: C[::3, 1::3]
-    In []: C[::4, 1:4]
+    print num if num%10 == 0 else 10*num
   #+end_src
 * Summary
-  You should now be able to --
-  - Manipulate 1D \& Multi dimensional arrays
-      - Access and change individual elements 
-      - Access and change rows and columns 
-      - Slice and stride on arrays
-  - Read images into arrays and manipulate them.
+  In this tutorial session we learnt
+
+    + What are conditional statements
+    + if/else statement
+    + if/elif/else statement
+    + Ternary conditional statement - ~C if X else Y~
+    + and the ~pass~ statement
+
 * Thank you!
 #+begin_latex
   \begin{block}{}
--- a/conditionals/slides.tex	Wed Nov 10 17:19:54 2010 +0530
+++ b/conditionals/slides.tex	Wed Nov 10 17:25:18 2010 +0530
@@ -1,95 +1,123 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%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<presentation>
-{
-  \usetheme{Warsaw}
-  \useoutertheme{infolines}
-  \setbeamercovered{transparent}
-}
-
-\usepackage[english]{babel}
+% Created 2010-11-10 Wed 13:25
+\documentclass[presentation]{beamer}
 \usepackage[latin1]{inputenc}
-%\usepackage{times}
 \usepackage[T1]{fontenc}
-
-\usepackage{ae,aecompl}
-\usepackage{mathpazo,courier,euler}
-\usepackage[scaled=.95]{helvet}
+\usepackage{fixltx2e}
+\usepackage{graphicx}
+\usepackage{longtable}
+\usepackage{float}
+\usepackage{wrapfig}
+\usepackage{soul}
+\usepackage{textcomp}
+\usepackage{marvosym}
+\usepackage{wasysym}
+\usepackage{latexsym}
+\usepackage{amssymb}
+\usepackage{hyperref}
+\tolerance=1000
+\usepackage[english]{babel} \usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
+\usepackage{listings}
+\lstset{language=Python, basicstyle=\ttfamily\bfseries,
+commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
+showstringspaces=false, keywordstyle=\color{blue}\bfseries}
+\providecommand{\alert}[1]{\textbf{#1}}
 
-\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}}}  }
-
-% Title page
-\title{Your Title Here}
-
-\author[FOSSEE] {FOSSEE}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\title{Conditionals}
+\author{FOSSEE}
 \date{}
 
-% DOCUMENT STARTS
+\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
 \begin{document}
 
+\maketitle
+
+
+
+
+
+
+
+
+
 \begin{frame}
-  \maketitle
+\frametitle{Outline}
+\label{sec-1}
+
+  In this tutorial, we shall look at
+\begin{itemize}
+\item Using if/else blocks
+\item Using if/elif/else blocks
+\item Using the Ternary conditional statement
+\end{itemize}
 \end{frame}
+\begin{frame}
+\frametitle{Question 1}
+\label{sec-2}
 
+  Given a number, num. Write an if else block to print num, as is, if
+  it is divisible by 10, else print 10 * num.
+\end{frame}
 \begin{frame}[fragile]
-  \frametitle{Outline}
-  \begin{itemize}
-    \item 
-  \end{itemize}
+\frametitle{Solution 1}
+\label{sec-3}
+
+\lstset{language=Python}
+\begin{lstlisting}
+if num%10 == 0: 
+    print num   
+else:           
+    print 10*num
+\end{lstlisting}
 \end{frame}
+\begin{frame}[fragile]
+\frametitle{\texttt{if/elif} ladder}
+\label{sec-4}
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%              All other slides here.                  %%
-%% The same slides will be used in a classroom setting. %% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\lstset{language=Python}
+\begin{lstlisting}
+if user == 'admin':
+    # Do admin operations
+elif user == 'moderator':
+    # Do moderator operations
+elif user == 'client':
+    # Do customer operations
+\end{lstlisting}
+\end{frame}
+\begin{frame}
+\frametitle{Question 2}
+\label{sec-5}
 
+  Given a number, num. Write a ternary operator to print num, as is,
+  if it is divisible by 10, else print 10 * num.
+\end{frame}
 \begin{frame}[fragile]
-  \frametitle{Summary}
-  \begin{itemize}
-    \item 
-  \end{itemize}
+\frametitle{Solution 2}
+\label{sec-6}
+
+\lstset{language=Python}
+\begin{lstlisting}
+print num if num%10 == 0 else 10*num
+\end{lstlisting}
 \end{frame}
-
 \begin{frame}
-  \frametitle{Thank you!}  
+\frametitle{Summary}
+\label{sec-7}
+
+  In this tutorial session we learnt
+
+\begin{itemize}
+\item What are conditional statements
+\item if/else statement
+\item if/elif/else statement
+\item Ternary conditional statement - \texttt{C if X else Y}
+\item and the \texttt{pass} statement
+\end{itemize}
+\end{frame}
+\begin{frame}
+\frametitle{Thank you!}
+\label{sec-8}
+
   \begin{block}{}
   \begin{center}
   This spoken tutorial has been produced by the
--- a/getting-started-strings/quickref.tex	Wed Nov 10 17:19:54 2010 +0530
+++ b/getting-started-strings/quickref.tex	Wed Nov 10 17:25:18 2010 +0530
@@ -1,8 +1,8 @@
-Creating a linear array:\\
-{\ex \lstinline|    x = linspace(0, 2*pi, 50)|}
+Creating a string:\\
+{\ex \lstinline|    s = ``Hello World''|} -- Single quotes and triple
+quotes can also be used.  
 
-Plotting two variables:\\
-{\ex \lstinline|    plot(x, sin(x))|}
+Accessing individual elements:\\
+{\ex \lstinline|   s[5]|} -- Elements can be accessed with their index
 
-Plotting two lists of equal length x, y:\\
-{\ex \lstinline|    plot(x, y)|}
+Strings are immutable. 
--- a/getting-started-strings/script.rst	Wed Nov 10 17:19:54 2010 +0530
+++ b/getting-started-strings/script.rst	Wed Nov 10 17:25:18 2010 +0530
@@ -30,9 +30,9 @@
 
 {{{ Show the slide containing the outline }}}
 
-In this tutorial, we will learn what do we actually mean by strings in
-python, how python supports the use of strings. We will also learn
-some of the operations that can be performed on strings.
+In this tutorial, we will look at what we really mean by strings, how
+python supports the use of strings and some of the operations that can
+be performed on strings. 
 
 {{{ Shift to terminal and start ipython }}}
 
@@ -42,10 +42,9 @@
 
 on the terminal
 
-So what are strings? In Python anything within either single quotes
+So, what are strings? In Python anything within either single quotes
 or double quotes or triple single quotes or triple double quotes are
-strings. This is true whatsoever, even if there is only one character
-within the quotes
+strings. 
 
 {{{ Type in ipython the following and read them as you type }}}::
 
@@ -54,19 +53,21 @@
   '''This is a string as well'''
   """This is also a string"""
   'p'
+  ""
 
-Having more than one control character to define strings come as very
-handy when one of the control characters itself is part of the
-string. For example::
+Note that it really doesn't matter how many characters are present in
+the string. The last example is a null string or an empty string. 
+
+Having more than one control character to define strings is handy when
+one of the control characters itself is part of the string. For
+example::
 
   "Python's string manipulation functions are very useful"
 
-In this case we use single quote for apostrophe. If we had only single
-quote to define strings we should have a clumsy way of escaping the
-single quote character to make it part of the string. Hence this is a
-very handy feature.
+By having multiple control characters, we avoid the need for
+escaping characters -- in this case the apostrophe. 
 
-The triple quoted strings let us define multi-lines strings without
+The triple quoted strings let us define multi-line strings without
 using any escaping. Everything within the triple quotes is a single
 string no matter how many lines it extends::
 
@@ -99,19 +100,63 @@
 gives another string in which the original string 'Hello' is repeated
 5 times.
 
-Since strings are collections we can access individual items in the
-string using the subscripts::
+Following is an exercise that you must do. 
+
+%% %% Obtain the string ``%% -------------------- %%`` (20 hyphens)
+      without typing out all the twenty hyphens. 
+
+Please, pause the video here. Do the exercise and then continue. 
+
+::
+
+  s = "%% " + "-"*20 + " %%"
+
+Let's now look at accessing individual elements of strings. Since,
+strings are collections we can access individual items in the string
+using the subscripts::
 
   a[0]
 
 gives us the first character in the string. The indexing starts from 0
-for the first character up to n-1 for the last character. We can
-access the strings from the end using negative indices::
+for the first character and goes up to n-1 for the last character. We
+can access the strings from the end using negative indices::
+
+  a[-1]
 
-  a[-2]
+gives us the last element of the string and 
+::
+
+    a[-2]
 
 gives us second element from the end of the string
 
+Following is an exercise that you must do. 
+
+%% %% Given a string, ``s = "Hello World"``, what is the output of::
+
+      s[-5] 
+      s[-10]
+      s[-15]
+
+Please, pause the video here. Do the exercise and then continue. 
+
+::
+
+  s[-5] 
+
+gives us 'W'
+::
+
+  s[-10] 
+
+gives us 'e' and 
+::
+
+  s[-15] 
+
+gives us an ``IndexError``, as should be expected, since the string
+given to us is only 11 characters long. 
+
 Let us attempt to change one of the characters in a string::
 
   a = 'hello'
@@ -132,7 +177,7 @@
 
   * How to define strings
   * Different ways of defining a string
-  * String concatenation and repeatition
+  * String concatenation and repetition
   * Accessing individual elements of the string
   * Immutability of strings
 
--- a/getting-started-strings/slides.org	Wed Nov 10 17:19:54 2010 +0530
+++ b/getting-started-strings/slides.org	Wed Nov 10 17:25:18 2010 +0530
@@ -18,7 +18,7 @@
 #+LaTeX_HEADER:  commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
 #+LaTeX_HEADER:  showstringspaces=false, keywordstyle=\color{blue}\bfseries}
 
-#+TITLE:    Accessing parts of arrays
+#+TITLE:    
 #+AUTHOR:    FOSSEE
 #+EMAIL:     
 #+DATE:    
@@ -30,81 +30,38 @@
 #+OPTIONS:   TeX:t LaTeX:nil skip:nil d:nil todo:nil pri:nil tags:not-in-toc
 
 * Outline
-  - Manipulating one and multi dimensional arrays
-  - Access and change individual elements 
-  - Access and change rows and columns 
-  - Slicing and striding on arrays to access chunks 
-  - Read images into arrays and manipulations
-* Sample Arrays
-  #+begin_src python
-    In []: A = array([12, 23, 34, 45, 56])
-    
-    In []: C = array([[11, 12, 13, 14, 15],
-                      [21, 22, 23, 24, 25],
-                      [31, 32, 33, 34, 35],
-                      [41, 42, 43, 44, 45],
-                      [51, 52, 53, 54, 55]])
-    
-  #+end_src
+*** Defining strings
+*** Concatenation
+*** Accessing individual elements
+*** Immutability of strings
 * Question 1
-  Change the last column of ~C~ to zeroes. 
+  Obtain the string ~%% -------------------- %%~ (20 hyphens) without
+  typing out all the twenty hyphens.
 * Solution 1
   #+begin_src python
-    In []:  C[:, -1] = 0
+    s = "%% " + "-"*20 + " %%"
   #+end_src
 * Question 2
-  Change ~A~ to ~[11, 12, 13, 14, 15]~. 
+  Given a string, ~s~ which is ~Hello World~ , what is the output of::
+  #+begin_src python
+    s[-5] 
+    s[-10]
+    s[-15]
+  #+end_src
 * Solution 2
   #+begin_src python
-    In []:  A[:] = [11, 12, 13, 14, 15]
-  #+end_src
-* squares.png
-  #+begin_latex
-    \begin{center}
-      \includegraphics[scale=0.6]{squares}    
-    \end{center}
-  #+end_latex
-* Question 3
-  - obtain ~[22, 23]~ from ~C~. 
-  - obtain ~[11, 21, 31, 41]~ from ~C~. 
-  - obtain ~[21, 31, 41, 0]~.   
-* Solution 3
-  #+begin_src python
-    In []:  C[1, 1:3]
-    In []:  C[0:4, 0]
-    In []:  C[1:5, 0]
-  #+end_src
-* Question 4
-  Obtain ~[[23, 24], [33, -34]]~ from ~C~
-* Solution 4
-  #+begin_src python
-    In []:  C[1:3, 2:4]
-  #+end_src
-* Question 5
-  Obtain the square in the center of the image
-* Solution 5
-  #+begin_src python
-    In []: imshow(I[75:225, 75:225])
-  #+end_src
-* Question 6
-  Obtain the following
-  #+begin_src python
-    [[12, 0], [42, 0]]
-    [[12, 13, 14], [0, 0, 0]]
-  #+end_src
-
-* Solution 6
-  #+begin_src python
-    In []: C[::3, 1::3]
-    In []: C[::4, 1:4]
+    'W'
+    'e'
+    IndexError
   #+end_src
 * Summary
-  You should now be able to --
-  - Manipulate 1D \& Multi dimensional arrays
-      - Access and change individual elements 
-      - Access and change rows and columns 
-      - Slice and stride on arrays
-  - Read images into arrays and manipulate them.
+  In this tutorial we have learnt
+    + How to define strings
+    + Different ways of defining a string
+    + String concatenation and repetition
+    + Accessing individual elements of the string
+    + Immutability of strings
+  
 * Thank you!
 #+begin_latex
   \begin{block}{}
--- a/getting-started-strings/slides.tex	Wed Nov 10 17:19:54 2010 +0530
+++ b/getting-started-strings/slides.tex	Wed Nov 10 17:25:18 2010 +0530
@@ -1,95 +1,118 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%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<presentation>
-{
-  \usetheme{Warsaw}
-  \useoutertheme{infolines}
-  \setbeamercovered{transparent}
-}
-
-\usepackage[english]{babel}
+% Created 2010-11-10 Wed 10:46
+\documentclass[presentation]{beamer}
 \usepackage[latin1]{inputenc}
-%\usepackage{times}
 \usepackage[T1]{fontenc}
-
-\usepackage{ae,aecompl}
-\usepackage{mathpazo,courier,euler}
-\usepackage[scaled=.95]{helvet}
+\usepackage{fixltx2e}
+\usepackage{graphicx}
+\usepackage{longtable}
+\usepackage{float}
+\usepackage{wrapfig}
+\usepackage{soul}
+\usepackage{textcomp}
+\usepackage{marvosym}
+\usepackage{wasysym}
+\usepackage{latexsym}
+\usepackage{amssymb}
+\usepackage{hyperref}
+\tolerance=1000
+\usepackage[english]{babel} \usepackage{ae,aecompl}
+\usepackage{mathpazo,courier,euler} \usepackage[scaled=.95]{helvet}
+\usepackage{listings}
+\lstset{language=Python, basicstyle=\ttfamily\bfseries,
+commentstyle=\color{red}\itshape, stringstyle=\color{darkgreen},
+showstringspaces=false, keywordstyle=\color{blue}\bfseries}
+\providecommand{\alert}[1]{\textbf{#1}}
 
-\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}}}  }
-
-% Title page
-\title{Your Title Here}
-
-\author[FOSSEE] {FOSSEE}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
+\title{}
+\author{FOSSEE}
 \date{}
 
-% DOCUMENT STARTS
+\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
 \begin{document}
 
+
+
+
+
+
+
+
+
+
+
 \begin{frame}
-  \maketitle
+\frametitle{Outline}
+\label{sec-1}
+\begin{itemize}
+
+\item Defining strings\\
+\label{sec-1_1}%
+\item Concatenation\\
+\label{sec-1_2}%
+\item Accessing individual elements\\
+\label{sec-1_3}%
+\item Immutability of strings\\
+\label{sec-1_4}%
+\end{itemize} % ends low level
 \end{frame}
+\begin{frame}
+\frametitle{Question 1}
+\label{sec-2}
 
+  Obtain the string \texttt{\%\% -------------------- \%\%} (20 hyphens) without
+  typing out all the twenty hyphens.
+\end{frame}
 \begin{frame}[fragile]
-  \frametitle{Outline}
-  \begin{itemize}
-    \item 
-  \end{itemize}
+\frametitle{Solution 1}
+\label{sec-3}
+
+\lstset{language=Python}
+\begin{lstlisting}
+s = "%% " + "-"*20 + " %%"
+\end{lstlisting}
 \end{frame}
+\begin{frame}[fragile]
+\frametitle{Question 2}
+\label{sec-4}
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%              All other slides here.                  %%
-%% The same slides will be used in a classroom setting. %% 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+  Given a string, \texttt{s} which is \texttt{Hello World} , what is the output of::
+\lstset{language=Python}
+\begin{lstlisting}
+s[-5] 
+s[-10]
+s[-15]
+\end{lstlisting}
+\end{frame}
 \begin{frame}[fragile]
-  \frametitle{Summary}
-  \begin{itemize}
-    \item 
-  \end{itemize}
+\frametitle{Solution 2}
+\label{sec-5}
+
+\lstset{language=Python}
+\begin{lstlisting}
+'W'
+'e'
+IndexError
+\end{lstlisting}
 \end{frame}
-
 \begin{frame}
-  \frametitle{Thank you!}  
+\frametitle{Summary}
+\label{sec-6}
+
+  In this tutorial we have learnt
+\begin{itemize}
+\item How to define strings
+\item Different ways of defining a string
+\item String concatenation and repetition
+\item Accessing individual elements of the string
+\item Immutability of strings
+\end{itemize}
+
+  
+\end{frame}
+\begin{frame}
+\frametitle{Thank you!}
+\label{sec-7}
+
   \begin{block}{}
   \begin{center}
   This spoken tutorial has been produced by the
--- a/progress.org	Wed Nov 10 17:19:54 2010 +0530
+++ b/progress.org	Wed Nov 10 17:25:18 2010 +0530
@@ -15,7 +15,7 @@
 |---------+----------------------------------------+-------+----------+-----------------+-----------|
 | 3.1 LO: | getting started with lists             |     2 | Amit     | Anoop(Done)     |           |
 | 3.2 LO: | getting started with =for=             |     2 | Anoop    | Nishanth (Done) |           |
-| 3.3 LO: | getting started with strings           |     2 | Madhu    |                 |           |
+| 3.3 LO: | getting started with strings           |     2 | Madhu    | Punch (Done)    |           |
 | 3.4 LO: | getting started with files             |     3 | Punch    | Anoop(Done)     |           |
 | 3.5 LO: | parsing data                           |     3 | Nishanth | Amit (Done)     |           |
 | 3.6 LO: | statistics                             |     2 | Amit     | Punch (Done)    |           |
@@ -34,8 +34,8 @@
 | 5.5 LO: | Assessment                             |     3 | Anoop    |                 |           |
 |---------+----------------------------------------+-------+----------+-----------------+-----------|
 | 6.1 LO: | basic datatypes & operators            |     4 | Amit     | Punch (Done)    |           |
-| 6.2 LO: | I/O                                    |     1 | Nishanth | Amit(Done)      |           |
-| 6.3 LO: | conditionals                           |     2 | Madhu    |                 |           |
+| 6.2 LO: | I/O                                    |     1 | Nishanth | Amit (Done)     |           |
+| 6.3 LO: | conditionals                           |     2 | Madhu    | Punch (Pending) |           |
 | 6.4 LO: | loops                                  |     2 | Punch    | Anoop (Done)    |           |
 | 6.5 LO: | Assessment                             |     3 | Anoop    |                 |           |
 |---------+----------------------------------------+-------+----------+-----------------+-----------|
--- a/progress.org.orig	Wed Nov 10 17:19:54 2010 +0530
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-| S.No    | Name                                   | Units | Author   | Review                                | Checklist |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 1.2 LO: | getting started with =ipython=         |     2 | Punch    | Anoop (Done)                          |           |
-| 1.3 LO: | using the =plot= command interactively |     2 | Amit     |                                       |           |
-| 1.4 LO: | embellishing a plot                    |     2 | Nishanth | Anoop (Done)                          |           |
-| 1.5 LO: | saving plots                           |     2 | Anoop    |                                       |           |
-| 1.6 LO: | multiple plots                         |     3 | Madhu    | Nishanth (Done)                       |           |
-| 1.7 LO: | additional features of IPython         |     2 | Nishanth | Amit (Pending)                        |           |
-| 1.8 LO: | module level assessment                |     3 | Madhu    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 2.2 LO: | loading data from files                |     3 | Punch    | Nishanth (Done)                       |           |
-| 2.3 LO: | plotting the data                      |     3 | Amit     |                                       |           |
-| 2.4 LO: | other types of plots                   |     3 | Anoop    | Pending                               |           |
-| 2.5 LO: | module level assessment                |     3 | Nishanth |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 3.1 LO: | getting started with lists             |     2 | Amit     |                                       |           |
-| 3.2 LO: | getting started with =for=             |     2 | Anoop    | Nishanth (Done)                       |           |
-| 3.3 LO: | getting started with strings           |     2 | Madhu    |                                       |           |
-| 3.4 LO: | getting started with files             |     3 | Punch    | Anoop(Done)                           |           |
-| 3.5 LO: | parsing data                           |     3 | Nishanth | Amit (Done)                           |           |
-| 3.6 LO: | statistics                             |     2 | Amit     |                                       |           |
-| 3.7 LO: | module level assessment                |     3 | Madhu    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 4.1 LO: | getting started with arrays            |     2 | Anoop    | Punch (Done)                          |           |
-| 4.2 LO: | accessing parts of arrays              |     4 | Punch    | Anoop (Done)                          |           |
-| 4.3 LO: | Matrices                               |     3 | Anoop    | Punch (changes before further review) |           |
-| 4.4 LO: | Least square fit                       |     2 | Nishanth | Punch (Done)                          |           |
-| 4.5 LO: | Assessment                             |     3 | Punch    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 5.1 LO: | getting started with sage notebook     |     3 | Madhu    |                                       |           |
-| 5.2 LO: | getting started with symbolics         |     3 | Amit     |                                       |           |
-| 5.3 LO: | using Sage                             |     4 | Punch    | Anoop (Pending)                       |           |
-| 5.4 LO: | using sage to teach                    |     3 | Nishanth |                                       |           |
-| 5.5 LO: | Assessment                             |     3 | Anoop    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 6.1 LO: | basic datatypes & operators            |     4 | Amit     | Punch (Done)                          |           |
-| 6.2 LO: | I/O                                    |     1 | Nishanth |                                       |           |
-| 6.3 LO: | conditionals                           |     2 | Madhu    |                                       |           |
-| 6.4 LO: | loops                                  |     2 | Puneeth  | Anoop(Pending)                        |           |
-| 6.5 LO: | Assessment                             |     3 | Anoop    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 7.1 LO: | manipulating lists                     |     3 | Madhu    |                                       |           |
-| 7.2 LO: | manipulating strings                   |     2 | Punch    | Anoop                                 | Amit      |
-| 7.3 LO: | getting started with tuples            |     2 | Nishanth |                                       |           |
-| 7.4 LO: | dictionaries                           |     2 | Anoop    | Pending                               |           |
-| 7.5 LO: | sets                                   |     2 | Nishanth |                                       |           |
-| 7.6 LO: | Assessment                             |     3 | Amit     |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
-| 8.1 LO: | getting started with functions         |     3 | Nishanth |                                       |           |
-| 8.2 LO: | advanced features of functions         |     3 | Punch    | Anoop (Pending)                       |           |
-| 8.3 LO: | using python modules                   |     3 | Anoop    | Pending                               |           |
-| 8.4 LO: | writing python scripts                 |     2 | Nishanth |                                       |           |
-| 8.5 LO: | testing and debugging                  |     2 | Amit     |                                       |           |
-| 8.6 LO: | Assessment                             |     3 | Madhu    |                                       |           |
-|---------+----------------------------------------+-------+----------+---------------------------------------+-----------|
--- a/using python modules/script.rst	Wed Nov 10 17:19:54 2010 +0530
+++ b/using python modules/script.rst	Wed Nov 10 17:25:18 2010 +0530
@@ -28,15 +28,13 @@
 ====================
 {{{ show the welcome slide }}}
 
-Welcome to the spoken tutorial on using python modules.
+Welcome to the spoken tutorial on Using Python Modules.
 
 {{{ switch to next slide, outline slide }}}
 
 In this tutorial, we will see how to run python scripts from command
-line. See importing modules, importing scipy and pylab modules. And
-also see the Python standard library.
-
-.. #[Punch: the sentence seems discontinuous.]
+line. We'll see how to import modules, importing scipy and pylab
+modules and have a look at the Python standard library.
 
 {{{ switch to next slide on executing python scripts from command line }}}
 
@@ -49,7 +47,7 @@
     print "Hello world!"
     print
 
-and save the script as hello.py,
+and save the script as ``hello.py``,
 
 {{{ save the script as hello.py }}}
 
@@ -187,7 +185,7 @@
 
 {{{ switch to next slide, problem statement }}}
 
-Write a script to plot a sine wave from minus two pi to two pi.
+%% %% Write a script to plot a sine wave from minus two pi to two pi.
 
 Pause here and try to solve the problem yourself before looking at the
 solution.
@@ -234,8 +232,8 @@
 Find more information at Python Library reference,
 ``http://docs.python.org/library/``
 
-The modules pylab, scipy, Mayavi are not part of the standard python
-library.
+There are a lot of other modules like pylab, scipy, Mayavi, etc which
+are not part of the standard python library.
 
 {{{ switch to next slide, summary }}}