summaryrefslogtreecommitdiff
path: root/TDD/getting_started_with_tdd
diff options
context:
space:
mode:
authorJovina2012-08-27 17:49:15 +0530
committerJovina2012-08-27 17:49:15 +0530
commit0b3a72638f909ff58835e3435d4a5d33c4b8f54a (patch)
tree995bda0599ce129ab920451345cc938cd67a92ff /TDD/getting_started_with_tdd
parent60359fe58c5584d66e27be1e0e435bb0a0c1e2ca (diff)
parent6f281af9bde99a7ff6260593fc5faeb97194ac58 (diff)
downloadsdes-stscripts-0b3a72638f909ff58835e3435d4a5d33c4b8f54a.tar.gz
sdes-stscripts-0b3a72638f909ff58835e3435d4a5d33c4b8f54a.tar.bz2
sdes-stscripts-0b3a72638f909ff58835e3435d4a5d33c4b8f54a.zip
Merge branch 'master' of http://github.com/FOSSEE/sdes-stscripts
Diffstat (limited to 'TDD/getting_started_with_tdd')
-rw-r--r--TDD/getting_started_with_tdd/tdd1.tex273
-rwxr-xr-xTDD/getting_started_with_tdd/tdd1_script.rst280
2 files changed, 355 insertions, 198 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}
diff --git a/TDD/getting_started_with_tdd/tdd1_script.rst b/TDD/getting_started_with_tdd/tdd1_script.rst
index 88c1227..ebe5036 100755
--- a/TDD/getting_started_with_tdd/tdd1_script.rst
+++ b/TDD/getting_started_with_tdd/tdd1_script.rst
@@ -1,205 +1,263 @@
-.. Objectives
-.. ----------
-
- .. At the end of this tutorial, you will be able to:
-
- .. 1. Know what is TDD.
- .. 2. Understand the use of test cases.
- .. 3. Write simple tests for a function.
-
-.. Prerequisites
-.. -------------
-
-.. 1. Getting started with functions
-
-
+------
Script
------
.. L1
-{{{ Show the first slide containing title, name of the production
-team along with the logo of MHRD }}}
+{{{ Show the "Title" slide }}}
.. R1
-Hello friends and Welcome to the tutorial on
-'Test driven development - Part 1'.
+Hello friends and welcome to the tutorial on,
+'Getting started with TDD'
.. L2
-{{{ Show slide with objectives }}}
+{{{ Show "Objectives" slide }}}
.. R2
At the end of this tutorial, you will be able to,
- 1. understand basics of Test Driven Development.
- #. understand the use test cases.
- #. write simple tests for a function.
+ 1. Understand basics of Test Driven Development.
+ #. Understand the use test cases.
+ #. Write simple tests for a function.
.. L3
-{{{ Switch to the slide3, pre-requisite slide }}}
+{{{ Switch the "Pre-requisite" slide }}}
.. R3
-Before beginning this tutorial,we would suggest you to complete the
+Before beginning this tutorial, we would suggest you to complete the
tutorial on "Getting started with functions".
-.. R4
-
-Test-driven development is a software development
-process that relies on the repetition of a very short
-development cycle.
-In TDD,one writes a failing automated test case that
-defines a desired improvement or new function, then produces
-code to pass that test and finally refactors the new code to
-acceptable standards.
+.. L4
+{{{ show "What is TDD?" slide }}}
-.. L4
+.. R4
-{{{ Switch to slide4 ,What is TDD?}}}
+Test-driven development is a software development process that relies on the
+repetition of a very short development cycle.
+The basics of Test Driven Development are,
-.. R5
+1. Decide the new feature you want to implement & the methodology to test it.
+#. Write tests for the new feature decided upon.
+#. Just write enough code so that the test can run, but, it fails.
-To illustrate TDD, lets take a simple program. Consider a
-function ``fibonacci``, that takes one argument and returns
-the nth number of ``fibonacci`` series.
.. L5
-{{{ Switch to slide5, First test- fibonacci }}}
+{{{ show "What is TDD?.." slide }}}
-.. R6
+.. R5
-To test ``fibonacci`` function, we need test
-cases.
-As shown in this slide,
-test cases are expected outputs for a given set of inputs.
+#. Modify the code so that all the current tests & the previous tests pass.
+#. Run tests to see if all the tests pass successfully.
+#. Refactor the code - optimize the algorithm, remove duplication &
+ documentation, etc.
+#. And finally run the tests again to see if all the tests pass.
.. L6
-{{{ Switch to slide6, Test cases }}}
+{{{ show "First test - fibonacci" slide }}}
-.. R7
+.. R6
+
+To illustrate TDD, lets take a simple program. Consider a function "fibonacci",
+that takes one argument and returns the nth number of fibonacci series.
+As shown in the example, c will contain the 3rd digit of the fibonacci series
+that starts counting from 0(zero).
-The sample code for test cases is shown here. Observe that if
-any ``if`` statement is executed, test aborts after printing the
-error message.
.. L7
-
-{{{ Switch to slide7, Test cases-Code }}}
-.. R8
+{{{ show "Test Cases" slide }}}
+
+.. R7
-The ``fibonacci`` function is written just enough so that
-test can run.
+To test any function it is important to have enough test cases & their expected
+outputs before you start writing the test cases. Test cases are expected
+outputs for a given set of inputs. So, to test fibonacci function,
+we need test cases. As shown in this slide, our test cases are, when 'n=3', '2'
+is the expected output from the fibonnaci series. Similarly, when 'n=4', '3'
+is the expected output.
+Test cases can either be true or false depending on their actual behaviour
+against the expected behaviour.
.. L8
+
+{{{ show "Test cases-Code" slide }}}
-{{{ switch to slide8, Stubs }}}
+.. R8
-.. R9
+The sample code for test cases is shown here. Observe that if any "if"
+statement is executed, test aborts after printing the error message.
-Combine the function and test cases and put them together in
-``fibonacci.py`` file.Add the test cases after name=main idiom.
.. L9
-{{{ Switch to slide9, fibonacci.py }}}
+{{{ show the "Stubs" slide }}}
-.. R10
+.. R9
+
+Now, the fibonacci function is written just enough so that the tests can run.
+But, obviously the tests are going to fail.
-Lets run fibonacci.py by typing ``python fibonacci.py``.
-As we haven't written any meaningful code in our ``fibonacci``
-function, it fails immediately.
-Our next step is to write just minimum code to pass our tests.
.. L10
-{{{ Run the fibonacci.py in terminal and show the error output.}}}
-::
-
- python fibonacci.py
+{{{ show "fibonacci.py" slide }}}
-.. R11
+.. R10
-Modify the fibonacci stub function with given code.
-Save and run it again as `` python fibonacci.py``.
-{{{ pause }}}
-Observe that, there will be no errors, as
-the test passes successfully.
+We will now combine the fibonnaci stub function we just wrote & the test cases
+together in "fibonacci.py" file. Note that the test cases should be added
+after "name=main" idiom.
-.. L11
+.. L11
-{{{ switch to slide-11, Euclidean Algorithm }}}
-Switch to terminal and modify fibonacci function in ``nano``
-editor and run.
-::
+{{{ show the "first run" slide }}}
+{{{ Run the fibonacci.py in terminal and show the error output & switch back to
+slide }}}
+>>> python fibonacci.py
+
+.. R11
- python fibonacci.py
-
-.. R12
+Now, let us run the fibonacci.py file. To do this, switch to the terminal &
+type "python fibonacci.py".
+
+
+The tests fail as we just have a stub "fibonacci" function and no meaningful
+code in it. Our next step is to write just minimum code to pass our tests.
-The same ``fibonacci`` function is modified to make it more readable
-and easy to understand using recursion.
-Pause this video here.Replace the ``fibonacci`` function with recursive one.
-Run the modified ``fibonacci.py`` file. The test should pass again
-without any errors.
-After successfully achieving this result, you can resume the video.
.. L12
-{{{ Show slide12, Euclidean Algorithm- Recursive}}}
+{{{ show "Fibonnaci" slide }}}
+{{{ switch to terminal }}}
+>>> python fibonacci.py
-.. R13
+.. R12
-This brings us to the end of the tutorial.In this tutorial,
- we have learnt to,
+Modify the fibonacci stub function with given code & save the file. Now, switch
+to terminal and run it again as "python fibonacci.py".
- 1. Undestand the basic steps involved in Test driven development.
- #. Design a Test driven approach for a given ``fibonacci`` function.
+{{{ pause }}}
+Observe that, there will be no errors, as the test passes successfully.
.. L13
-{{{ switch to slide-13,Summary }}}
+{{{ Show "Fibonacci - Recursive" slide }}}
+
+.. R13
+
+Finally, the same "fibonacci" function is modified to make it more readable
+and easy to understand using recursion.
+Pause this video here. Replace the "fibonacci" function with recursive one.
+Run the modified "fibonacci.py" file. The test should pass again without any
+errors. After successfully achieving this result, you can resume the video.
+
+.. L14
+
+{{{ show "Summary" slide }}}
.. R14
-Here are some self assessment questions for you to solve
+This brings us to the end of the tutorial. In this tutorial, we have learnt,
+
+ 1. The basic steps involved in Test driven development.
+ #. How to use test cases.
+ #. How to write simple tests for a function.
- 1. Design a TDD approach for a factorial function.
- 2. Design a TDD approach for an armstrong function.
-.. L14
+.. L15
-{{{ switch to slide-14, Evaluation }}}
+{{{ show "Evaluation" slide }}}
.. R15
-And the answers are,
- 1. {{{ show answer slide-1 }}}
+Here are some self assessment questions for you to solve,
- 2. {{{ show answer slide-2 }}}
+ 1. Design a TDD approach for a factorial function.
+ 2. Design a TDD approach for an armstrong function.
-.. L15
+Try out the excercises for yourself & resume the video for solutions.
-{{{ switch to slide-15 ,Solutions}}}
+
+.. L16
+
+{{{ show "Factorial" slide}}}
.. R16
-Hope you have enjoyed this tutorial and found it useful.
-Thank you!
+Given here is a TDD approach to a factorial function.
-.. L16
+.. L17
+
+{{{ show "Armstrong" slide}}}
+
+.. R17
+
+Given here is a TDD approach to an armstrong function.
+
+
+.. L18
+
+{{{ Show the SDES & FOSSEE slide }}}
-{{{ Switch to slide-16, Thankyou}}}
+.. R18
+Software Development techniques for Engineers and Scientists - SDES, is an
+initiative by FOSSEE. For more information, please visit the given link.
+
+Free and Open-source Software for Science and Engineering Education - FOSSEE, is
+based at IIT Bombay which is funded by MHRD as part of National Mission on
+Education through ICT.
+
+.. L19
+
+{{{ Show the ``About the Spoken Tutorial Project'' slide }}}
+
+.. R19
+
+Watch the video available at the following link. It summarises the Spoken
+Tutorial project.If you do not have good bandwidth, you can download and
+watch it.
+
+.. L20
+
+{{{ Show the `` Spoken Tutorial Workshops'' slide }}}
+
+.. R20
+
+The Spoken Tutorial Project Team conducts workshops using spoken tutorials,
+gives certificates to those who pass an online test.
+
+For more details, contact contact@spoken-tutorial.org
+
+.. L21
+
+{{{ Show the Acknowledgements slide }}}
+
+.. R21
+
+Spoken Tutorial Project is a part of the "Talk to a Teacher" project.
+It is supported by the National Mission on Education through ICT, MHRD,
+Government of India. More information on this mission is available at the
+given link.
+
+.. L22
+
+{{{ Show the Thankyou slide }}}
+
+.. R22
+
+Hope you have enjoyed this tutorial and found it useful.
+Thank you!