summaryrefslogtreecommitdiff
path: root/day1/Session-4.tex
diff options
context:
space:
mode:
Diffstat (limited to 'day1/Session-4.tex')
-rwxr-xr-xday1/Session-4.tex70
1 files changed, 47 insertions, 23 deletions
diff --git a/day1/Session-4.tex b/day1/Session-4.tex
index 4dc586b..a4a25b0 100755
--- a/day1/Session-4.tex
+++ b/day1/Session-4.tex
@@ -89,11 +89,11 @@
%% Delete this, if you do not want the table of contents to pop up at
%% the beginning of each subsection:
-\AtBeginSubsection[]
+\AtBeginSection[]
{
\begin{frame}<beamer>
\frametitle{Outline}
- \tableofcontents[currentsection,currentsubsection]
+ \tableofcontents[currentsection,subsections]
\end{frame}
}
@@ -112,7 +112,7 @@
\titlepage
\end{frame}
-\section{Advanced Data structures, Functions and Debugging}
+\section{Advanced Data structures}
\subsection{Dictionary}
\begin{frame}{Dictionary}
@@ -120,7 +120,7 @@
\item lists and tuples index: 0 \ldots n
\item dictionaries index using strings
\item \typ{ d = \{ ``Hitchhiker's guide'' : 42, ``Terminator'' : ``I'll be back''\}}
- \item \typ{d[``Terminator'']\\``I'll be back''}
+ \item \typ{d[``Terminator''] => ``I'll be back''}
\item aka associative array, key-value pair, hashmap, hashtable \ldots
\item what can be keys?
\end{itemize}
@@ -131,7 +131,7 @@
\item \alert{Unordered}
\begin{block}{Standard usage}
for key in dict:\\
- <use> dict[key] \# => value
+ \ \ \ \ print dict[key]
\end{block}
\item \typ{d.keys()} returns a list
\item can we have duplicate keys?
@@ -189,7 +189,6 @@ False
\inctime{5}
\end{frame}
-
\begin{frame}
\frametitle{Problem set 6.2}
\begin{description}
@@ -199,7 +198,8 @@ False
\inctime{10}
\end{frame}
-\subsection{Functions Reloaded!}
+
+\section{Functions Reloaded!}
\begin{frame}[fragile]
\frametitle{Advanced functions}
\begin{itemize}
@@ -211,6 +211,7 @@ False
\end{itemize}
\end{frame}
+\subsection{Default arguments}
\begin{frame}[fragile]
\frametitle{Functions: default arguments}
\small
@@ -230,6 +231,7 @@ ask_ok('?', '[Y/N]')
\end{lstlisting}
\end{frame}
+\subsection{Keyword arguments}
\begin{frame}[fragile]
\frametitle{Functions: keyword arguments}
\small
@@ -251,16 +253,19 @@ ask_ok(complaint='[y/n]', prompt='?')
\inctime{15}
\end{frame}
-\subsection{Functional programming}
+\section{Functional programming}
\begin{frame}[fragile]
\frametitle{Functional programming}
-What is the basic idea?\\
-Why is it interesting?\\
-\typ{map, reduce, filter}\\
-list comprehension\\
-generators
+ \begin{itemize}
+ \item What is the basic idea?
+ \item Why is it interesting?
+ \item \typ{map, reduce, filter}
+ \item list comprehension
+ \item generators
+ \end{itemize}
\end{frame}
+\subsection{List comprehensions}
\begin{frame}[fragile]
\frametitle{List Comprehensions}
Lets say we want to squares of all the numbers from 1 to 100
@@ -295,8 +300,8 @@ Which is more readable?
\inctime{15}
\end{frame}
-
-\subsection{Debugging}
+\section{Debugging}
+\subsection{Errors and Exceptions}
\begin{frame}[fragile]
\frametitle{Errors}
\begin{lstlisting}
@@ -338,6 +343,7 @@ or modulo by zero
\end{lstlisting}
\end{frame}
+\subsection{Strategy}
\begin{frame}[fragile]
\frametitle{Debugging effectively}
\begin{itemize}
@@ -350,7 +356,7 @@ or modulo by zero
\begin{frame}[fragile]
\frametitle{Debugging effectively}
\begin{itemize}
- \item Using \typ{\%debug} and \typ{\%pdb} in IPython
+ \item Using \typ{\%debug} in IPython
\end{itemize}
\end{frame}
@@ -362,33 +368,51 @@ In [1]: import mymodule
In [2]: mymodule.test()
---------------------------------------------
NameError Traceback (most recent call last)
-/media/python/iitb/workshops/day1/<ipython console> in <module>()
-/media/python/iitb/workshops/day1/mymodule.py in test()
+<ipython console> in <module>()
+mymodule.py in test()
1 def test():
----> 2 print spam
NameError: global name 'spam' is not defined
+
In [3]: %debug
-> /media/python/iitb/workshops/day1/mymodule.py(2)test()
+> mymodule.py(2)test()
0 print spam
ipdb>
\end{lstlisting}
\inctime{15}
\end{frame}
+\subsection{Exercise}
\begin{frame}[fragile]
\frametitle{Debugging: Exercise}
+\small
+\begin{lstlisting}
+import keyword
+f = open('/path/to/file')
+
+freq = {}
+for line in f:
+ words = line.split()
+ for word in words:
+ key = word.strip(',.!;?()[]: ')
+ if keyword.iskeyword(key):
+ value = freq[key]
+ freq[key] = value + 1
+
+print freq
+\end{lstlisting}
\inctime{10}
\end{frame}
\begin{frame}
\frametitle{What did we learn?}
\begin{itemize}
- \item Creating and using Dictionaries
- \item Creating and using Sets
- \item Advances Functions: default arguments, keyword arguments
+ \item Dictionaries
+ \item Sets
+ \item Default and keyword arguments
\item Functional Programming, list comprehensions
\item Errors and Exceptions in Python
- \item Debugging: \%pdb and \%debug in IPython
+ \item Debugging: \%debug in IPython
\end{itemize}
\end{frame}
\end{document}