--- a/day2/tda.tex Wed Oct 14 11:02:18 2009 +0530
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Tutorial slides on Python.
-%
-% Author: Prabhu Ramachandran <prabhu at aero.iitb.ac.in>
-% Copyright (c) 2005-2009, Prabhu Ramachandran
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\documentclass[compress,14pt]{beamer}
-% \documentclass[handout]{beamer}
-% \usepackage{pgfpages}
-% \pgfpagesuselayout{4 on 1}[a4paper,border, shrink=5mm,landscape]
-\usepackage{tikz}
-\newcommand{\hyperlinkmovie}{}
-%\usepackage{movie15}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Note that in presentation mode
-% \paperwidth 364.19536pt
-% \paperheight 273.14662pt
-% h/w = 0.888
-
-
-\mode<presentation>
-{
- \usetheme{Warsaw}
- %\usetheme{Boadilla}
- %\usetheme{default}
- \useoutertheme{split}
- \setbeamercovered{transparent}
-}
-
-% To remove navigation symbols
-\setbeamertemplate{navigation symbols}{}
-
-\usepackage{amsmath}
-\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}
-\usepackage{pgf}
-
-\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}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% My Macros
-\setbeamercolor{postit}{bg=yellow,fg=black}
-\setbeamercolor{emphbar}{bg=blue!20, fg=black}
-\newcommand{\emphbar}[1]
-{\begin{beamercolorbox}[rounded=true]{emphbar}
- {#1}
- \end{beamercolorbox}
-}
-%{\centerline{\fcolorbox{gray!50} {blue!10}{
-%\begin{minipage}{0.9\linewidth}
-% {#1}
-%\end{minipage}
-% }}}
-
-\newcommand{\myemph}[1]{\structure{\emph{#1}}}
-\newcommand{\PythonCode}[1]{\lstinline{#1}}
-
-\newcommand{\tvtk}{\texttt{tvtk}}
-\newcommand{\mlab}{\texttt{mlab}}
-
-\newcounter{time}
-\setcounter{time}{0}
-\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\vspace*{0.1in}\tiny \thetime\ m}}
-
-\newcommand\BackgroundPicture[1]{%
- \setbeamertemplate{background}{%
- \parbox[c][\paperheight]{\paperwidth}{%
- \vfill \hfill
- \hfill \vfill
-}}}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Configuring the theme
-%\setbeamercolor{normal text}{fg=white}
-%\setbeamercolor{background canvas}{bg=black}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% Title page
-\title[]{Test Driven Approach}
-
-\author[FOSSEE Team] {FOSSEE}
-
-\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay}
-\date[] {11, October 2009}
-\date[] % (optional)
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%\pgfdeclareimage[height=0.75cm]{iitblogo}{iitblogo}
-%\logo{\pgfuseimage{iitblogo}}
-
-\AtBeginSection[]
-{
- \begin{frame}<beamer>
- \frametitle{Outline}
- \Large
- \tableofcontents[currentsection,currentsubsection]
- \end{frame}
-}
-
-%% 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}
-}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-% DOCUMENT STARTS
-\begin{document}
-
-\begin{frame}
- \maketitle
-\end{frame}
-
-\section{Test Driven Approach}
-
-\begin{frame}
- \frametitle{Testing code with nosetests}
-
- \begin{itemize}
- \item Writing tests is really simple!
-
- \item Using nose.
-
- \item Example!
- \end{itemize}
-\end{frame}
-
-\begin{frame}
- \frametitle{Need of Testing!}
-
- \begin{itemize}
- \item Quality
-
- \item Regression
-
- \item Documentation
- \end{itemize}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Nosetest}
- \begin{lstlisting}
-def gcd(a, b):
- """Returns gcd of a and b,
- handles only positive numbers."""
- if a%b == 0: return b
- return gcd(b, a%b)
-def lcm(a, b):
- return a*b/gcd(a, b)
-
-if __name__ == '__main__':
- import nose
- nose.main()
- \end{lstlisting}
-\inctime{10}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Example}
- \begin{block}{Problem Statement:}
- Write a function to check whether a given input
- string is a palindrome.
- \end{block}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Function: palindrome.py}
-\begin{lstlisting}
-def is_palindrome(input_str):
- return input_str == input_str[::-1]
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Test for the palindrome: palindrome.py}
-\begin{lstlisting}
-from plaindrome import is_palindrome
-def test_function_normal_words():
- input = "noon"
- assert is_palindrome(input) == True
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Running the tests.}
-\begin{lstlisting}
-$ nosetests test.py
-.
-----------------------------------------------
-Ran 1 test in 0.001s
-
-OK
-\end{lstlisting}
-\end{frame}
-
-\begin{frame}[fragile]
- \frametitle{Exercise: Including new tests.}
-\begin{lstlisting}
-def test_function_ignore_cases_words():
- input = "Noon"
- assert is_palindrome(input) == True
-\end{lstlisting}
- \vspace*{0.25in}
- Check\\
- \PythonCode{$ nosetests test.py} \\
- \begin{block}{Task}
- Tweak the code to pass this test.
- \end{block}
-\end{frame}
-
-%\begin{frame}[fragile]
-% \frametitle{Lets write some test!}
-%\begin{lstlisting}
-%#for form of equation y=mx+c
-%#given m and c for two equation,
-%#finding the intersection point.
-%def intersect(m1,c1,m2,c2):
-% x = (c2-c1)/(m1-m2)
-% y = m1*x+c1
-% return (x,y)
-%\end{lstlisting}
-%
-%Create a simple test for this
-%
-%function which will make it fail.
-%
-%\inctime{15}
-%\end{frame}
-%
-
-\begin{frame}[fragile]
- \frametitle{Exercise}
- Based on Euclid's algorithm:
- $gcd(a,b)=gcd(b,b\%a)$\\
- gcd function can be written as:
- \begin{lstlisting}
- def gcd(a, b):
- if a%b == 0: return b
- return gcd(b, a%b)
- \end{lstlisting}
- \vspace*{-0.15in}
- \begin{block}{Task}
- \begin{itemize}
- \item Write at least
- two tests for above mentioned function.
- \item Write a non recursive implementation
- of gcd(), and test it using already
- written tests.
- \end{itemize}
- \end{block}
-
-\inctime{15}
-\end{frame}
-
-\begin{frame}{In this session we have covered:}
- \begin{itemize}
- \item Need for visualization.
- \item Tools available.
- \item How to follow Test Driven Approach.
- \end{itemize}
-\end{frame}
-\begin{frame}
- \begin{center}
- \Huge
- Thank you!
- \end{center}
-\end{frame}
-
-\end{document}