summaryrefslogtreecommitdiff
path: root/TDD/getting_started_with_tdd/tdd1.tex
diff options
context:
space:
mode:
authorhardythe12012-08-24 12:49:39 +0530
committerhardythe12012-08-24 12:49:39 +0530
commit5dc254097176489bfd2834a66fe437fe62a36fb8 (patch)
treed7954f4c4496a45f0e5c73ea59056687754a6d20 /TDD/getting_started_with_tdd/tdd1.tex
parent7ee1718d5b9d6f8450cb5cdd023b8a067f8d06ec (diff)
downloadsdes-stscripts-5dc254097176489bfd2834a66fe437fe62a36fb8.tar.gz
sdes-stscripts-5dc254097176489bfd2834a66fe437fe62a36fb8.tar.bz2
sdes-stscripts-5dc254097176489bfd2834a66fe437fe62a36fb8.zip
modified script & slides according to the new checklist
Diffstat (limited to 'TDD/getting_started_with_tdd/tdd1.tex')
-rw-r--r--TDD/getting_started_with_tdd/tdd1.tex273
1 files changed, 186 insertions, 87 deletions
diff --git a/TDD/getting_started_with_tdd/tdd1.tex b/TDD/getting_started_with_tdd/tdd1.tex
index 042c5c4..8b499a6 100644
--- a/TDD/getting_started_with_tdd/tdd1.tex
+++ b/TDD/getting_started_with_tdd/tdd1.tex
@@ -1,4 +1,4 @@
-\documentclass[12pt,presentation]{beamer}
+\documentclass[17pt,compress]{beamer}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fixltx2e}
@@ -13,63 +13,98 @@
\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{green},
-showstringspaces=false, keywordstyle=\color{blue}\bfseries}
-\providecommand{\alert}[1]{\textbf{#1}}
-
-\title{SEES: Test Driven Development}
-\author{FOSSEE}
-
-\usetheme{Warsaw}\usecolortheme{default}\useoutertheme{infolines}\setbeamercovered{transparent}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
+\usepackage{beamerthemesplit}
+\mode<presentation>
+{
+ \usetheme{Warsaw}
+ \useoutertheme{infolines}
+ \setbeamercovered{transparent}
+ \setbeamertemplate{navigation symbols}{}
+}
+% Taken from Fernando's slides.
+\usepackage{ae,aecompl}
+\usepackage[scaled=.95]{helvet}
+\usepackage[english]{babel}
+%\usepackage[latin1]{inputenc}
+\usepackage[T1]{fontenc}
+% change the alerted colour to LimeGreen
+\definecolor{LimeGreen}{RGB}{50,205,50}
+\setbeamercolor{structure}{fg=LimeGreen}
+\author[FOSSEE]{}
+\institute[IIT Bombay]{}
+\date[]{}
+% \setbeamercovered{transparent}
+
+% theme split
+
+\newenvironment{colorverbatim}[1][]%
+{%
+\color{blue}
+\verbatim
+}%
+{%
+\endverbatim
+}%
+\usepackage{verbatim}
+\usepackage{mathpazo,courier,euler}
+\usepackage{listings}
+\lstset{language=sh,
+ basicstyle=\ttfamily\bfseries,
+ showstringspaces=false,
+ keywordstyle=\color{black}\bfseries}
+\newcommand{\typ}[1]{\lstinline{#1}}
+%\newcommand{\kwrd}[1]{ \texttt{\textbf{\color{blue}{#1}}} }
+% logo
+\logo{\includegraphics[height=1.30 cm]{../images/3t-logo.pdf}}
+\logo{\includegraphics[height=1.30 cm]{../images/fossee-logo.pdf}
+
+\hspace{7.5cm}
+\includegraphics[scale=0.99]{../images/fossee-logo.pdf}\\
+\hspace{281pt}
+\includegraphics[scale=0.80]{../images/3t-logo.pdf}}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% DOCUMENT STARTS
\begin{document}
+\sffamily \bfseries
+\title
+[Getting started with TDD]
+{Getting started with TDD}
+\author
+[FOSSEE]
+{\small Talk to a Teacher\\{\color{blue}\url{http://spoken-tutorial.org}}
+\\\vspace{0.25cm}National Mission on Education
+ through ICT\\{\color{blue}\url{ http://sakshat.ac.in}} \\ [1.65cm]
+ Contributed by FOSSEE Team \\IIT Bombay \\[0.3cm]
+}
+
+% slide 1
\begin{frame}
-\begin{center}
-\vspace{12pt}
-\textcolor{blue}{\huge Test Driven Development \\Part I}
-\end{center}
-\vspace{18pt}
-\begin{center}
-\vspace{10pt}
-\includegraphics[scale=0.95]{../images/fossee-logo.png}\\
-\vspace{5pt}
-\scriptsize Developed by FOSSEE Team, IIT-Bombay. \\
-\scriptsize Funded by National Mission on Education through ICT\\
-\scriptsize MHRD,Govt. of India\\
-\includegraphics[scale=0.30]{../images/iitb-logo.png}\\
-\end{center}
+ \titlepage
\end{frame}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Introduction}
+
\begin{frame}
\frametitle{Objectives}
At the end of this tutorial, you will be able to,
\begin{itemize}
- \item Know what is TDD.
- \item Understand the use of test cases.
- \item Write simple tests for a function.
+ \item Understand basics of Test Driven Development
+ \item Understand the use of test cases
+ \item Write simple tests for a function
\end{itemize}
\end{frame}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
\frametitle{Pre-requisite}
\label{sec-3}
-Spoken tutorial on -
+Spoken tutorial on,
\begin{itemize}
-\item Getting started with functions.
+\item Getting started with functions
\end{itemize}
\end{frame}
@@ -77,38 +112,41 @@ Spoken tutorial on -
\begin{frame}
\frametitle{What is TDD?}
- The basic steps of TDD are roughly as follows --
- \begin{enumerate}
+ The basic steps of TDD are,
+ \begin{itemize}
\item Decide upon the feature to implement and the methodology of
- testing it.
- \item Write the tests for the feature decided upon.
- \item Just write enough code, so that the test can be run, but it fails.
- \item Improve the code, to just pass the test and at the same time
- passing all previous tests.
- \item Run the tests to see, that all of them run successfully.
- \item Refactor the code you've just written -- optimize the algorithm,
- remove duplication, add documentation, etc.
- \item Run the tests again, to see that all the tests still pass.
-
- \end{enumerate}
+ testing it
+ \item Write the tests for the feature decided upon
+ \item Just write enough code, so that the test can be run, but it fails
+ \end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{First Test}
+
+\begin{frame}
+ \frametitle{What is TDD?..}
+ \begin{itemize}
+ \item Modify the code to pass all current tests \& previous tests
+ \item Run the tests to see if all tests pass
+ \item Refactor the code -- optimize the algorithm,
+ remove duplication, add documentation, etc.
+ \item Run the tests again
+ \end{itemize}
+\end{frame}
+
\begin{frame}[fragile]
\frametitle{First Test -- fibonacci}
\begin{itemize}
- \item simple program -- Returns nth fibonacci number
\item What are our code units?
\begin{itemize}
\item Only one function \texttt{fibonacci}
\item Takes one number as argument
- \item Returns one number, which is the nth number of fibonacci series.
+ \item Returns, nth number of fibonacci series
\end{itemize}
\begin{lstlisting}
c = fibonacci(3)
\end{lstlisting}
- \item c will contain 3rd number of fibonacci series,counting from 0.
+ \item c contains 3rd digit of the series, counting from 0.
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -116,18 +154,20 @@ c = fibonacci(3)
\begin{frame}[fragile]
\frametitle{Test Cases}
\begin{itemize}
- \item Important to have test cases and expected outputs even before
- writing the first test!
+ \item Important to have test cases and expected outputs before
+ writing tests
\item $n=3$, $fibonacci=2$
\item $n=4$, $fibonacci=3$
\item Tests are just a series of assertions
- \item True or False, depending on expected and actual behavior
+ \item True or False, depending on the behaviour
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]
\frametitle{Test Cases -- Code}
+\small
+{
\begin{lstlisting}
tc1 = fibonacci(3)
if tc1 != 2:
@@ -143,6 +183,7 @@ if tc2 != 3:
print "All tests passed!"
\end{lstlisting}
+}
\begin{itemize}
\item The function \texttt{fibonacci} doesn't even exist!
\end{itemize}
@@ -164,6 +205,8 @@ def fibonacci(a):
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]
\frametitle{\texttt{fibonacci.py}}
+\tiny
+{
\begin{lstlisting}
def fibonacci(n):
pass
@@ -181,10 +224,13 @@ if __name__ == '__main__':
exit(1)
print "All tests passed!"
\end{lstlisting}
+}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]
\frametitle{First run}
+\small
+{
\begin{lstlisting}
$ python fibonacci.py
Traceback (most recent call last):
@@ -194,19 +240,21 @@ Traceback (most recent call last):
TypeError: %d format:
a number is required, not NoneType
\end{lstlisting} %$
-
+}
\begin{itemize}
- \item We have our code unit stub, and a failing test.
- \item The next step is to write code, so that the test just passes.
+ \item We have our code unit stub, and a failing test
+ \item The next step is to write code, so that the test just passes
\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]
- \frametitle{Euclidean Algorithm}
+ \frametitle{Fibonacci}
\begin{itemize}
\item Modify the \texttt{fibonacci} stub function
\item Then, run the script to see if the tests pass.
\end{itemize}
+\small
+{
\begin{lstlisting}
def fibonacci(n):
a, b = 0, 1
@@ -216,20 +264,17 @@ def fibonacci(n):
\end{lstlisting}
\begin{lstlisting}
-$ python fibonacci.py
-All tests passed!
\end{lstlisting} %$
- \begin{itemize}
- \item \alert{Success!}
- \end{itemize}
+}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}[fragile]
- \frametitle{Euclidean Algorithm -- Recursive}
+ \frametitle{Fibonacci -- Recursive}
\begin{itemize}
\item Final improvement -- make \texttt{fibonacci} recursive
- \item More readable and easier to understand
+ \tiny
+{
\begin{lstlisting}
def fibonacci(n):
if n == 0:
@@ -240,6 +285,9 @@ def fibonacci(n):
return fibonacci(n-1) + fibonacci(n-2)
\end{lstlisting}
+}
+ \small
+ \item More readable and easier to understand
\item Check that the tests pass again
\end{itemize}
\end{frame}
@@ -250,12 +298,14 @@ def fibonacci(n):
\frametitle{Summary}
\label{sec-8}
- In this tutorial, we have learnt to,
+In this tutorial, we learnt,
\begin{itemize}
-\item Understand the basic steps involved in Test driven development.
-\item Design a TDD approach for a given \texttt{fibonacci} function.
+\item The basic steps involved in Test driven development
+\item How to use test cases
+\item How to write simple tests for a function
+
\end{itemize}
\end{frame}
@@ -267,17 +317,16 @@ def fibonacci(n):
\begin{enumerate}
-\item Design a TDD approach for a \texttt{factorial} function.
+\item Design a TDD approach for a \texttt{factorial} function
\vspace{8pt}
-\item Design a TDD approach for an \texttt{armstrong} function.
+\item Design a TDD approach for an \texttt{armstrong} function
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
-\frametitle{Solutions}
+\frametitle{Factorial}
\label{sec-10}
-\begin{enumerate}
-\vspace{15pt}
+\begin{itemize}
\item
{\tiny
\begin{lstlisting}
@@ -300,21 +349,18 @@ if __name__ == '__main__':
print 'All tests passed...'
\end{lstlisting}
}
-\end{enumerate}
+\end{itemize}
\end{frame}
\begin{frame}[fragile]
-\frametitle{Solutions}
+\frametitle{Armstrong}
\label{sec-10}
-\begin{enumerate}
-\vspace{15pt}
+\begin{itemize}
\item
{\tiny
\begin{lstlisting}
def armstrong(n):
- sum = 0
- temp = 0
- remainder = 0
+ sum, remainder = 0
temp = n
while temp > 0 :
remainder = temp % 10
@@ -336,24 +382,77 @@ if __name__ == '__main__':
print 'All tests passed...'
\end{lstlisting}
}
-\end{enumerate}
+\end{itemize}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{frame}
+\frametitle{SDES \& FOSSEE}
+\begin{center}
+\begin{itemize}
+\item \small{SDES}\\
+\small{\color{LimeGreen}Software Development techniques for
+Engineers and Scientists} \\
+\scriptsize An initiative by FOSSEE. \\
+\vspace{3pt}
+\scriptsize For more information on SDES, please visit
+{\color{blue}\url{http://fossee.in/sdes}}\\
+\vspace{12pt}
+\item \small{FOSSEE}\\
+\small {\color{LimeGreen}Free and Open-source Software for \\
+Science and Engineering Education} \\
+\scriptsize Based at IIT Bombay, Funded by MHRD.\\
+\vspace{3pt}
+\scriptsize Part of National Mission on Education through ICT (NME-ICT) \\
+\end{itemize}
+\end{center}
+\end{frame}
+\begin{frame}
+\frametitle{About the Spoken Tutorial Project}
+\begin{itemize}
+\item Watch the video available at {\color{blue}\url{http://spoken-tutorial.org
+ /What\_is\_a\_Spoken\_Tutorial}}
+\item It summarises the Spoken Tutorial project
+\item If you do not have good bandwidth, you can download and watch it
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Spoken Tutorial Workshops}The Spoken Tutorial Project Team
+\begin{itemize}
+\item Conducts workshops using spoken tutorials
+\item Gives certificates to those who pass an online test
+\item For more details, please write to \\ \hspace {0.5cm}
+{\color{blue}contact@spoken-tutorial.org}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
+\frametitle{Acknowledgements}
+\begin{itemize}
+\item Spoken Tutorial Project is a part of the Talk to a Teacher project
+\item It is supported by the National Mission on Education through ICT, MHRD,
+Government of India
+\item More information on this Mission is available at: \\
+{\color{blue}\url{http://spoken-tutorial.org/NMEICT-Intro}}
+\end{itemize}
+\end{frame}
+
+\begin{frame}
\begin{block}{}
\begin{center}
- \textcolor{blue}{\Large THANK YOU!}
+ {\Large THANK YOU!}
\end{center}
\end{block}
\begin{block}{}
\begin{center}
For more Information, visit our website\\
- \url{http://fossee.in/}
+ {\color{blue}\url{http://fossee.in/}}
\end{center}
\end{block}
\end{frame}
+
\end{document}