summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJovina2012-08-27 17:49:15 +0530
committerJovina2012-08-27 17:49:15 +0530
commit0b3a72638f909ff58835e3435d4a5d33c4b8f54a (patch)
tree995bda0599ce129ab920451345cc938cd67a92ff
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
-rw-r--r--Latex/Latex3/latex_basics.tex209
-rw-r--r--Latex/Latex3/latex_basics_and_structure_script.rst306
-rw-r--r--TDD/getting_started_with_tdd/tdd1.tex273
-rwxr-xr-xTDD/getting_started_with_tdd/tdd1_script.rst280
-rw-r--r--script2col.rst205
5 files changed, 755 insertions, 518 deletions
diff --git a/Latex/Latex3/latex_basics.tex b/Latex/Latex3/latex_basics.tex
index 4d66ddb..4f97004 100644
--- a/Latex/Latex3/latex_basics.tex
+++ b/Latex/Latex3/latex_basics.tex
@@ -154,28 +154,18 @@
\begin{frame}[fragile]
\frametitle{\typ{Top Matter}}
- Let's add the title, author's name and the date.
- \begin{itemize}
- \item Add title, author and date.
- \item Compile.
- \item Nothing changes.
- \item use \lstinline$\date{}$, to insert todays date.
+ Adding Title, Author name \& Date to our document,
+ \begin{itemize}
+ \item \lstinline$\title{}$, to add title
+ \item \lstinline$\author{}$, to add author name
+ \item \lstinline$\date{}$, to insert todays date
+ \item Compile
+ \item Nothing changes
\end{itemize}
- {\tiny
- \begin{verbatim}
- \documentclass{article}
- \title{A Glimpse at Scipy}
- \author{FOSSEE}
- \date{June 2010}
- \begin{document}
- SciPy is open-source software for mathematics, science, and engineering.
- \end{document}
- \end{verbatim}
- }
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{Top Matter}\ \ldots}
+ \frametitle{\typ{Top Matter}..}
Now we add \alert{maketitle} command, which inserts the top-matter
{\tiny
\begin{verbatim}
@@ -185,7 +175,8 @@
\date{June 2010}
\begin{document}
\maketitle
- SciPy is open-source software for mathematics, science, and engineering.
+ SciPy is open-source software for mathematics, science,
+ and engineering.
\end{document}
\end{verbatim}
}
@@ -194,10 +185,16 @@
\begin{frame}[fragile]
\frametitle{\typ{abstract command}}
\begin{itemize}
- \item \typ{abstract} environment inserts abstract.
- \item Place it at the location where you want your abstract.
+ \item \typ{abstract} environment inserts abstract
+ \item \lstinline$\begin{abstract}$
+ \item \lstinline$\end{abstract}$
+ \item Place it at the location where you want your abstract
\end{itemize}
- {\tiny
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{\typ{abstract command}..}
+{\tiny
\begin{verbatim}
\documentclass{article}
\title{A Glimpse at Scipy}
@@ -206,9 +203,10 @@
\begin{document}
\maketitle
\begin{abstract}
- This document shows a glimpse of the features of Scipy that will be explored during this course.
+ This document shows a glimpse of the features of Scipy.
\end{abstract}
- SciPy is open-source software for mathematics, science, and engineering.
+ SciPy is open-source software for mathematics, science,
+ and engineering.
\end{document}
\end{verbatim}
}
@@ -222,9 +220,14 @@
\item Auto numbered sections!
\item \typ{*} to prevent numbering of a section
\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{\typ{Sectioning}..}
{\tiny
\begin{verbatim}
\documentclass{article}
+ \title{Sectioning}
\author{FOSSEE}
\date{31-February-2012}
\begin{document}
@@ -243,6 +246,7 @@
}
\end{frame}
+
\begin{frame}[fragile]
\frametitle{\typ{Creating Chapters}}
\begin{itemize}
@@ -251,6 +255,10 @@
\item Chapter can be added using \lstinline{\chapter} command
\item Books \alert{do not} have the abstract environment.
\end{itemize}
+\end{frame}
+
+\begin{frame}[fragile]
+ \frametitle{\typ{Creating Chapters}..}
{\tiny
\begin{verbatim}
\documentclass{book}
@@ -275,16 +283,6 @@
}
\end{frame}
-\begin{frame}[fragile]
- \frametitle{\typ{Sectioning and numbering}}
- \begin{itemize}
- \item subsections do not get numbering
- \item Change \lstinline{secnumdepth}
- \end{itemize}
- \begin{lstlisting}
- \setcounter{secnumdepth}{3}
- \end{lstlisting}
-\end{frame}
\begin{frame}[fragile]
\frametitle{Appendices}
@@ -299,60 +297,60 @@
\begin{frame}[fragile]
\frametitle{\typ{Table of Contents [TOC]}}
\begin{itemize}
- \item Our document is short, but let's learn to add a TOC
\item Add \lstinline{\tableofcontents} where you want TOC to
appear
\item Compile
\item Only headings appear. No page numbers
\item A \lstinline{.toc} file is generated
\item Re-compile
- \item Any numbered section/block automatically appears
\end{itemize}
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{TOC}\ \ldots}
+ \frametitle{\typ{TOC}..}
\begin{itemize}
+ \item Any numbered section/block automatically appears
\item Un-numbered sections are added to TOC using
\lstinline{\addcontentsline}
- \item For instance, \lstinline+\addcontentsline{toc}{section}{Intro}+
+ \item For instance,
+ \lstinline+\addcontentsline{toc}{section}+
+ \lstinline+{intro}+
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{\typ{Exercise 1}}
\begin{center}
- Write a LaTeX script that creates a document of type article, which contains both a table of content and an appendix. The table of content should be at the beginning of the document and the appendix at the end.
- The book should contain two chapters, with the first chapter containing two numbered and two un-numbered sections. The first un-numbered section should be present in the table of content.
+ Write a LaTeX script that creates a document of type book,
+ containing both a TOC at the beginning and an appendix at the end
+ of document. The book should contain two chapters with numbered \&
+ un-numbered sections \& these chapters should appear in the TOC.
\end{center}
\end{frame}
\begin{frame}[fragile]
\frametitle{\typ{Excercise 1: Solution}}
- \begin{center}
- Note - This File needs to be compiled twice
- \end{center}
{\tiny
\begin{center}
\begin{verbatim}
- \documentclass{article}
- \title{article with an appendix}
- \begin{document}
- \tableofcontents
- \pagebreak
- Main content
- \section{Numbered Section1}
- Section 1 Text
- \subsection{Numbered Subsection1}
- Numbered-Section 1’s Subsection Text.
- \section{Numbered Section2}
- Numbered-Section 2 Text
- \section*{Un-numbered Section3}
- \addcontentsline{toc}{section}{Numbered Subsection1}
- First un-numbered Section Text.\\This appears in the table of content
- \section*{Un-numbered Section4}
- Second un-numbered Section Text
- \appendix
+ \documentclass{book}
+ \title{My first book}
+ \begin{document}
+ \tableofcontents
+ \addcontentsline{toc}{section}{Chapter}
+ \chapter{My First Chapter}
+ Main
+ \section{Section1}
+ Section 1 Text
+ \subsubsection{My First Subsection}
+ Numbered-Section 1's Subsection Text
+ \section*{Section3}
+ First un-numbered Section Text
+ \chapter{So We say goodbye}
+ Thank you for reading dear reader
+ \section*{Section3}
+ First un-numbered Section Text
+ \appendix
\section{Appendix - 1}
\end{document}
\end{verbatim}
@@ -366,21 +364,32 @@
\label{sec-8}
In this tutorial, we have,
\begin{itemize}
- \item Gained an understanding of the basic structure of a LaTeX document, its various document classes and loading packages that add new features to
- \item the LaTeX system.
+ \item Understood the basic structure of a LaTeX document,
+ its various document classes and loading packages that add new features to
+ the LaTeX system
\item Created a LaTeX document with a title and an abstract.
- \item Created both numbered and non-numbered sections and subsections in a LaTeX document.
- \item Created an appendix in a LaTeX document.
- \item Created a table of content in a LaTeX document.
\end{itemize}
\end{frame}
\begin{frame}[fragile]
- \frametitle{\typ{Self assessment questions}}
+ \frametitle{\typ{Summary}..}
+ \begin{itemize}
+ \item Created both numbered and non-numbered sections and subsections in a
+ LaTeX document
+ \item Created an appendix in a LaTeX document
+ \item Created a table of content in a LaTeX document
+ \end{itemize}
+\end{frame}
+
+
+\begin{frame}[fragile]
+ \frametitle{\typ{Self assessment}}
\label{sec-9}
{\footnotesize
\begin{enumerate}
- \item Is the LaTeX code given below a valid input file (File compiles successfully and produces the intended result, that is to produce a book with two chapters and an appendix.
+ \item Is the LaTeX code given below a valid input file
+ (File compiles successfully and produces the intended result,
+ that is to produce a book with two chapters and an appendix)
{\tiny
\begin{center}
\begin{verbatim}
@@ -400,23 +409,76 @@
\end{verbatim}
\end{center}
}
- \item subsection command can be placed at any arbitrary level. If they get numbered by default using the appropriate setcounter command and secnumdepth parameter, do they automatically appear in the table of content ??
- \end{enumerate}
+ \end{enumerate}
}
\end{frame}
\begin{frame}[fragile]
-\frametitle{\typ{Solutions}}
+\frametitle{\typ{Solution}}
\label{sec-10}
\begin{enumerate}
-\item Although the given file looks syntactically valid, the output file is not what we expected. This is mainly because we are trying to use the section command to create sections in the appendix, for a document whose type is given as a book.
+\item Although the given file looks syntactically valid, the output file is not
+ what we expected. This is mainly because we are trying to use the section
+ command to create sections in the appendix, for a document whose type is
+ given as a book.
\vspace{15pt}
-\item No, the \textbackslash tableofcontents command normally shows only numbered section headings, and only down to the level defined by the tocdepth counter.
\end{enumerate}
\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}
{\Large THANK YOU!}
@@ -429,7 +491,6 @@
\end{center}
\end{block}
\end{frame}
-
\end{document}
diff --git a/Latex/Latex3/latex_basics_and_structure_script.rst b/Latex/Latex3/latex_basics_and_structure_script.rst
index 68aa33d..23d4688 100644
--- a/Latex/Latex3/latex_basics_and_structure_script.rst
+++ b/Latex/Latex3/latex_basics_and_structure_script.rst
@@ -19,37 +19,35 @@ Hello friends and welcome to the tutorial on "LaTeX: Basics & Structure".
At the end of this tutorial, you will be able to,
1. Understand basic structure of a LaTeX document, its various document
- classes and loading packages that add new features to the LaTeX system.
-#. Create a LaTeX document with a title and an abstract.
+ classes and loading packages that add new features to the LaTeX system
+#. Create a LaTeX document with a title and an abstract
-.. L2
+.. L3
{{{ Show the "Objectives.." slide }}}
-.. R2
-
-At the end of this tutorial, you will be able to
+.. R3
3. Create numbered and non-numbered, sections and subsections in a LaTeX
- document.
-#. Create an appendix in a LaTeX document.
-#. Create a table of content in a LaTeX document.
+ document
+#. Create an appendix in a LaTeX document
+#. Create a table of content in a LaTeX document
-.. L3
+.. L4
{{{ Show the "Pre-requisite" slide }}}
-.. R3
+.. R4
Before beginning this tutorial, we would suggest having a working installation
of LaTeX and also complete the tutorial "Introduction to LaTeX".
-.. L4
+.. L5
{{{ Show the "A Very Basic LaTeX document" slide }}}
-.. R4
+.. R5
We begin this tutorial with an example introduced in the previous tutorial.
The text in the document is illustrative and can be replaced by a
@@ -60,7 +58,7 @@ of text.
In our minimal example, document is an environment. Only the text enclosed by
the begin and end commands is effected by the environment. The part of the file
-before the \begin{document} command is called the preamble, and is used to
+before the <\\begin{document}> command is called the preamble, and is used to
"configure" the LaTeX typesetter and change various parameters for typesetting.
In our current example, the preamble is empty. We will add preamble content
in the later part of the tutorial.
@@ -68,46 +66,43 @@ in the later part of the tutorial.
We will now see in the first line of the example we just showed,
the <\\documentclass{article}> command.
-.. L5
-
-{{{ Show the "documentclass command" slide }}}
-
-.. R5
-
-documentclass article, which more generally can be written as
-
.. L6
-{{{ Show the "documentclass command ..." slide }}}
+{{{ Show the "documentclass command" slide }}}
.. R6
-documentclass parameters DocumentClass.
-Where documentclass is a LaTeX command.
+A LaTeX document starts with the command <\\documentclass[option]{type}>.
+It is used to select the class of our document. The various classes that we can
+select for our document are "article", "proc", "report", "book", "slides",
+"letter". The supported classes have a few differences, in how the content
+of the document is typeset.
+<\\documentclass> command can take various parameters also.
Parameters specify if you want to use a non default font size, for example.
More specifically the parameters can be used to alter things like font size of
the document, paper size, two sided or single sided printing, etc, for each
class, that is supported by LaTeX.
-The supported classes have a few differences, in how the content of the document
-is typeset.
.. L7
-{{{ Show the "documentclass command: A Closer look" slide }}}
+{{{ Show the "documentclass command.." slide }}}
.. R7
We now look at a hypothetical documentclass command.
-The command being shown on the screen, instructs LaTeX to
-Create a new document of class report. The available classes are article, proc,
-report, book, slides and letter.
-12 pt: sets the font size of main font. Other are relatively adjusted. 10pt is
+The command being shown on the screen, instructs LaTeX to Create a new
+document of class report.
+Optional Parameters,
+"12 pt" sets the font size of main font. Other are relatively adjusted. 10pt is
the default.
-a4paper: specifies the paper size
-draft: marks hyphenation and justification problems in typesetting
-with a square in the margin.
-makes LaTeX indicate hyphenation and justification problems with a small square in the right-hand margin of the problem line so they can be located quickly by a human. It also suppresses the inclusion of images and shows only a frame where they would normally occur.
+"a4paper" specifies the paper size.
+"draft" marks hyphenation and justification problems in typesetting with a
+square in the margin & makes LaTeX indicate hyphenation and justification
+problems with a small square in the right-hand margin of the problem line so
+they can be located quickly by a human.
+It also suppresses the inclusion of images and shows only a frame where
+they would normally occur.
.. L8
@@ -115,11 +110,11 @@ makes LaTeX indicate hyphenation and justification problems with a small square
.. R8
-The usepackage command is called with package name argument, prepended with
+The <\\usepackage> command is called with package name argument, prepended with
optional parameters. It is included optionally in a LaTeX document, to include
packages, which further extend the LaTeX's capabilities. There are a number of
-packages that are included by default with LaTeX2 base distribution. You can use
-the texdoc command for accessing package documentation.
+packages that are included by default with LaTeX2 base distribution. You can
+use the <texdoc> command for accessing package documentation.
.. L9
@@ -127,21 +122,25 @@ the texdoc command for accessing package documentation.
.. R9
-We add the title, the author and the date to the document before the
-\begin{document} directive. We compile the document to see if the details
-appear in the document, but they do not.
+Now let us see how to add top matter like title, author name and the date to
+the document. We add these before the <\\begin{document}> directive.
+<\\title{}> command is used to add title to our document, similarly,
+<\\author{}> is used to add the author name & <\\date{}> command adds the
+current date to our document. We then compile the document to see if the
+details appear in the document, but they do not.
.. L10
-{{{ Show the "Top Matter ..." slide }}}
+{{{ Show the "Top Matter.." slide }}}
.. R10
-The command \maketitle adds title, authors name and date to the output file.
-Of these only the date is optional. The date command can be called with an
+The command <\\maketitle> adds title, author name and date to the output file.
+Of these, only the date is optional. The date command can be called with an
optional parameter. If the optional parameter is not provided, the date of
compilation of the LaTeX document is used. The parameter, if specified is used
-to override this value.
+to override this value. The given example here will create a very simple
+document with title, author name & date along with the written content.
.. L11
@@ -149,167 +148,234 @@ to override this value.
.. R11
-The abstract command is used to insert the abstract of a document, into the
-output file.Place it in the location, where you want your abstract to present
-in the document. It is available for the document classes article and report,
+The abstract environment is used to insert the abstract of a document, into the
+output file. The content that we require as the abstract is placed between
+<\\begin{abstract}> & <\\end{abstract}> command.
+Place it in the location, where you want your abstract to present in the
+document. It is available for the document classes article and report,
but not for the book class.
.. L12
-{{{ Show the "Sectioning" slide }}}
+{{{ Show the "abstract command".. slide }}}
.. R12
-Titles chapters and sections are used to help the user find his or her way
-through your work. The following commands are available in the article class:
-section, subsection, subsubsection, paragraph and sub paragraph. The default
-behavior is to use numbered sections. We can use un-numbered sections by
-appending * to section command. If you want to split your document without
-influencing the section or chapter numbering, use the part command.
+Given here is a simple latex document with abstract and other top matter.
.. L13
-{{{ Show the "Creating Chapters" slide }}}
+{{{ Show the "Sectioning" slide }}}
.. R13
-Longer documents can use report or book class. We can add a new chapter using
-the chapter command, provided by the report or book class. After compiling the
-file shown in the slide we notice that subsections are not numbered.
+Titles, chapters and sections are used to help the user find his or her way
+through your work. The following commands are available in the article class:
+<\\section>, <\\subsection>, <\\subsubsection>. We can create either numbered
+sections or un-numbered sections based on requirement. The default behavior is
+to use numbered sections. We can use un-numbered sections by appending '*'
+(star) to section command. If you want to split your document without
+influencing the section or chapter numbering, use the part command.
.. L14
-{{{ Show the "Sectioning and numbering" slide }}}
+{{{ Show the "Sectioning".. slide }}}
.. R14
-We can change this behavior with the setcounter command, calling it with
-parameters shown on the slide.
+Given here is an example of sectioning in Latex document.
+
.. L15
-{{{ Show the "Appendix" slide }}}
+{{{ Show the "Creating Chapters" slide }}}
.. R15
-Appendix can be added to the document using \appendix command. Any content
-after the \appendix command will be added to the appendix. In the report or
-book class, we have to use \chapter command to indicate that the chapters are
-to be numbered as appendices.
-
-Similarly for the article class, we have to use the \section command to indicate
-the sections that are to be numbered as appendices.
+Longer documents can use report or book class. We can add a new chapter using
+the <\\chapter> command, provided by the report or book class. Please keep in
+mind that 'books' class in Latex do not have abstract environment.
.. L16
-{{{ Show the "Table of Contents [TOC]" slide }}}
+{{{ Show the "Creating Chapters".. slide }}}
.. R16
-We use the \tableofcontents command to add a TOC to a document is and is placed
-at the point at which the table of content is to be placed. It must be noted
-that \tableofcontents command requires the LaTeX input file to be compiled
-twice. On the first compilation only the "Contents" heading appears in the
-document, but the actual table does not appear. LaTeX has now gone through
-the input document and generated a temporary file (.toc), with the entries that
-should go into the table of contents. When the input document is compiled for
-the second time, these entries are made and the actual table will appear in
-your output document.
+Given here is as example to create chapters in our Latex document.
+.. L17
+
+{{{ Show the "Appendix" slide }}}
+
+.. R17
+
+Appendix can be added to the document using <\\appendix> command. Any content
+after the <\\appendix> command will be added to the appendix. In the report or
+book class, we have to use <\\chapter> command to indicate that the chapters
+are to be numbered as appendices.
+Similarly for the article class, we have to use the <\\section> command to
+indicate the sections that are to be numbered as appendices.
+
+.. L18
+
+{{{ Show the "Table of Contents [TOC]" slide }}}
+
+.. R18
+
+Now let us see how to add table of content in our document.
+We use the <\\tableofcontents> command to add a TOC to a document is and is
+placed at the point at which the table of content is to be placed.
+It must be noted that <\\tableofcontents> command requires the LaTeX input file
+to be compiled twice. On the first compilation only the "Contents" heading
+appears in the document, but the actual table does not appear.
+LaTeX has now gone through the input document and generated a temporary file
+(.toc), with the entries that should go into the table of contents.
+When the input document is compiled for the second time, these entries are made
+and the actual table will appear in your output document.
Note that any section/block that has been numbered automatically appears in the
table of contents. It is possible to get un-numbered sections, for instance a
Preface or a Foreword section to appear in the Table of Contents.
-.. L17
+.. L19
-{{{ Show the "TOC ..." slide }}}
+{{{ Show the "TOC.." slide }}}
-.. R17
+.. R19
-Un-numbered sections are added to TOC using \addcontentsline command.
-For example we use the addcontentsline command called with the parameters
+Un-numbered sections are added to TOC using <\\addcontentsline> command.
+For example we use the <\\addcontentsline> command called with the parameters
"{toc}{section}{Intro}", for the text "Intro" to appear in the Table of
contents.
-.. L18
+.. L20
{{{ Show the "Exercise 1" slide }}}
-.. R18
-
-Write a LaTeX script that creates a document of type article, which contains
-an appendix and a table of contents. The table of content should be at the
-beginning of the document and the appendix at the end.
+.. R20
-The book should contain two chapters, with the first chapter containing two
-numbered and two un-numbered sections. The first un-numbered section should be
-present in the table of content.
+We have seen the structure & basics of a Latex document, here is an exercise
+for you to perform.
-Please pause the tutorial and check back for a possible solution
+Write a LaTeX script that creates a document of type book, containing both a
+TOC at the beginning and an appendix at the end of document.
+The book should contain two chapters with numbered and un-numbered sections
+these chapters should appear in the TOC.
+Please pause the tutorial try out the excercise & resume for the solution.
-.. L19
+.. L21
{{{continue from paused state}}}
{{{ Show the "Excercise 1: Solution" slide }}}
-.. R19
+.. R21
This slide on screen shows a possible valid solution to the given exercise.
+Note that this file has to be compiled twice for the TOC contents to appear.
-.. L20
+
+.. L22
{{{ Show the "Summary" slide }}}
-.. R20
+.. R22
This brings us to the end of this tutorial. In this tutorial, we have,
-1. Gained an understanding of the basic structure of a LaTeX document, its
+1. Understood the basic structure of a LaTeX document, its
various document classes and loading packages that add new features to
the LaTeX system.
#. Created a LaTeX document with a title and an abstract.
+
+
+.. L23
+
+{{{ Show the "Summary.." slide }}}
+
+.. R23
+
#. Created both numbered and non-numbered sections and subsections in a
LaTeX document.
#. Created an appendix in a LaTeX document.
#. Created a table of content in a LaTeX document.
-.. L21
-{{{ Show the "Self assessment questions" slide }}}
+.. L24
-.. R21
+{{{ Show the "Self assessment" slide }}}
-Here are some self assessment questions for you to solve
+.. R24
- 1. Is the LaTeX code given below a valid input file (File compiles successfully
-and produces the intended result, that is to produce a book with two chapters
-and an appendix.
+Here's a self assessment question for you to solve,
- 2. subsection command can be placed at any arbitrary level. If they get
-numbered by default using the appropriate setcounter command and secnumdepth
-parameter, do they automatically appear in the table of content ??
+Is the LaTeX code given below a valid input file ? (File compiles successfully
+and produces the intended result, that is to produce a book with two chapters
+and an appendix)
-.. L22
+.. L25
-{{{ Show the "Solutions" slide }}}
+{{{ Show the "Solution" slide }}}
-.. R22
+.. R25
-And the answers,
+And the answer,
1. Although the given file looks syntactically valid, the output file is not
what we expected. This is mainly because we are trying to use the section
command to create sections in the appendix, for a document whose type is given
as a book.
-2. No, the \tableofcontents command normally shows only numbered section
-headings, and only down to the level defined by the tocdepth counter.
-.. L23
+.. L26
-{{{ Show the "Thank you" slide }}}
+{{{ Show the SDES & FOSSEE slide }}}
-.. R23
+.. R26
+
+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.
+
+.. L27
+
+{{{ Show the ``About the Spoken Tutorial Project'' slide }}}
+
+.. R27
+
+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.
+
+.. L28
+
+{{{ Show the `` Spoken Tutorial Workshops'' slide }}}
+
+.. R28
+
+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
+
+.. L29
+
+{{{ Show the Acknowledgements slide }}}
+
+.. R29
+
+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.
+
+.. L30
+
+{{{ Show the Thankyou slide }}}
+
+.. R30
Hope you have enjoyed this tutorial and found it useful.
Thank you!
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!
diff --git a/script2col.rst b/script2col.rst
index d7f8dd5..cb4bf71 100644
--- a/script2col.rst
+++ b/script2col.rst
@@ -1,156 +1,109 @@
---------
+------
Script
---------
+------
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{ Show the title slide}}} | Hello friends and welcome to the tutorial on Latex: Tables & Figures. |
+| {{{ Show the "Title" slide }}} | Hello friends and welcome to the tutorial on, |
+| | 'Getting started with TDD' |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide containing the objectives}}} | In this tutorial we will learn how to: |
+| {{{ Show "Objectives" slide }}} | At the end of this tutorial, you will be able to, |
| | |
-| | 1. Add figures in Latex document. |
-| | |
-| | #. Include tabular environments in Latex document. |
+| | 1. Understand basics of Test Driven Development. |
+| | #. Understand the use test cases. |
+| | #. Write simple tests for a function. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'Prerequisites'}}} | Please make sure that you have gone through the following tutorials before you |
-| | continue on this tutorial: |
-| | |
-| | 1. Latex Installation |
-| | #. Latex Introduction |
-| | #. Latex Basics & Structuring |
-| | #. Latex Typesetting Text |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'Figures'}}} | Let us start with seeing how to include 'figures' in a Latex document. |
-| | To include graphics in a LaTeX document, we need to use the <graphicx> package. |
-| | To use this package, we have to add the <\\usepackage{graphicx}> directive |
-| | to the preamble of the document. |
-| | |
-| | Then, to add a graphic, use the <\\includegraphics> command. |
-| | The relative path of the image that we wish to include is passed as an |
-| | argument to includegraphics. You can see two images in each slide of this |
-| | presentation, these images are included using <\\includegraphics> command. |
-| | It takes an optional argument, to scale an image. For our images a scale |
-| | of 0.80 is used. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show slide 'includegraphics'}}} | <\\includegraphics> command also takes other optional arguments such as: |
-| | |
-| | 1. <width=x, height=x> |
-| | |
-| | If only the height or width is specified, the image is scaled, |
-| | maintaining the aspect ratio. |
-| | |
-| | #. <keepaspectratio> |
-| | |
-| | This parameter can either be set to true or false. |
-| | When set to true, the image is scaled according to both width and height, |
-| | without changing the aspect ratio, so that it does not exceed both the |
-| | width and the height dimensions. |
-| | |
-| | #. <angle=x> |
-| | |
-| | This option can be used to rotate the image by x degrees, counter-clockwise. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show slide 'includegraphics..'}}} | Here is the complete syntax for <\\includegraphics> command with |
-| | the optional arguments we just talked about and the relative path |
-| | to the image. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'Floats'}}} | Graphics (and tables) are treated specially because, |
-| | they cannot be split into pages. |
-| | They are "floated" across to the next page, |
-| | if they do not fit on the current page, filling the current page with text. |
-| | To make our graphic into a float, we should enlose it within |
-| | a figure environment. The figure environment takes an additional parameter |
-| | for the location of the float. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'Floats..'}}} | The specifiers 't','b','p','h' & '!' are permissions to place the float at |
-| | various locations. |
-| | 't' for top of page, 'b' for bottom of page, 'p' for a separate page for |
-| | floats and 'h' for here, as in pproximately at the same point it occurs in |
-| | the source text. '!' mark overrides few of LaTeX's internal parameters |
-| | for good position of floats. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide Captions and References}}} | The figure environment also, allows us to add a caption to the graphic |
-| | using the <\\caption> command. This command will be placed within the figure |
-| | environment. |
-| | To keep the graphic center aligned in the page, |
-| | we use the center environment within the figure environment. |
-| | To label a figure, we just add a <\\label> command within the |
-| | figure environment. |
-| | Note that the label to a figure should be added after the caption command. |
-| | Figures are auto numbered. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide Captions and References..}}} | Here, you can see a sample code that shows the use of figure environment |
-| | with caption & label. |
-| | It explains how to include image, how to center align it. |
-| | Also shows, how to add caption and label to an image. |
-| | You can note that the label is added after the caption, as we mentioned |
-| | earlier. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'Tables'}}} | Now, let us look at how to include Tables in our document. |
-| | To typeset content in a tabular format, we use the tabular environment. |
-| | And to make it a float, it is enclosed in the table environment. |
-| | The table environment also allows us to add captions & labels to the table, |
-| | just as we added in the figure environment. |
-| | Tables are also auto numbered. |
-+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'tabular'}}} | The tabular environment takes the columns, and the formatting of each column, |
-| | as arguments. The possible arguments to the tabular environment are |
-| | |
-| | 1. l for left justified column content |
-| | |
-| | #. r for right justified column content |
+| {{{ Switch the "Pre-requisite" slide }}} | Before beginning this tutorial, we would suggest you to complete the |
+| | tutorial on "Getting started with functions". |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show "What is TDD?" slide }}} | Test-driven development is a software development process that relies on the |
+| | repetition of a very short development cycle. |
| | |
-| | #. c for centered column content |
+| | The basics of Test Driven Development are, |
| | |
-| | #. | (pipe) produces a vertical line. |
+| | 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'tabular..'}}} | Tabular also takes an optional parameter that specifies the position |
-| | of the table; 't' for top, 'b' for bottom, or 'c' for center. |
-| | Each column of a table is separated by an '&' (ampersand) symbol and |
-| | each row is separated by a new line. |
-| | |
-| | The <\\hline> command allows you to draw horizontal lines between |
-| | two rows of the table. |
+| {{{ show "What is TDD?.." slide }}} | #. 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'tabular..'}}} | A sample code that shows the complete use of the tabular |
-| | environment with all arguments and options. |
+| {{{ show "First test - fibonacci" slide }}} | 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). |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the slide 'List of Tables, Figures'}}} | You could also add a list of tables or list of figures to the document, |
-| | using <\\listoftables> & <\\listoffigures> commands respectively. |
+| {{{ show "Test Cases" slide }}} | 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the 'summary' slide'}}} | This brings us to the end of the tutorial. In this tutorial, we have |
-| | learnt to, |
-| | |
-| | 1. Add graphics to a LateX document |
-| | |
-| | #. Include tabular environments in a LateX document |
+| {{{ show "Test cases-Code" slide }}} | The sample code for test cases is shown here. Observe that if any "if" |
+| | statement is executed, test aborts after printing the error message. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show the "Stubs" slide }}} | Now, the fibonacci function is written just enough so that the tests can run. |
+| | But, obviously the tests are going to fail. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show "fibonacci.py" slide }}} | 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. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show the "first run" slide }}} | Now, let us run the fibonacci.py file. To do this, switch to the terminal & |
+| {{{ Run the fibonacci.py in terminal and show the error output & switch back to | type "python fibonacci.py". |
+| slide }}} | |
+| >>> 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show self assessment questions slide}}} | Here are some self assessment questions for you to solve, |
+| {{{ show "Fibonnaci" slide }}} | Modify the fibonacci stub function with given code & save the file. Now, switch |
+| {{{ switch to terminal }}} | to terminal and run it again as "python fibonacci.py". |
+| >>> python fibonacci.py | |
+| | {{{ pause }}} |
+| | Observe that, there will be no errors, as the test passes successfully. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ Show "Fibonacci - Recursive" slide }}} | 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. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show "Summary" slide }}} | This brings us to the end of the tutorial. In this tutorial, we have learnt, |
| | |
-| | 1. Which input parameter is used in the figure environment to make it float |
-| | to the bottom of the page ? |
-| | #. What is the mandatory argument in tabular environment specification ? |
+| | 1. The basic steps involved in Test driven development. |
+| | #. How to use test cases. |
+| | #. How to write simple tests for a function. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{Show the solutions slide to self assessment questions }}} | And the answers, |
+| {{{ show "Evaluation" slide }}} | Here are some self assessment questions for you to solve, |
+| | |
+| | 1. Design a TDD approach for a factorial function. |
+| | 2. Design a TDD approach for an armstrong function. |
| | |
-| | 1. Input parameter `b' is passed as argument, to make it float to the bottom |
-| | of the page. |
-| | #. It is mandatory to specify alignment of each column in tabular |
-| | environment. |
+| | Try out the excercises for yourself & resume the video for solutions. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show "Factorial" slide}}} | Given here is a TDD approach to a factorial function. |
++----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
+| {{{ show "Armstrong" slide}}} | Given here is a TDD approach to an armstrong function. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
| {{{ Show the SDES & FOSSEE slide }}} | 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 |
+| | 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{ Show the About the Spoken Tutorial Project slide }}} | Watch the video available at the following link. It summarises the Spoken |
+| {{{ Show the ``About the Spoken Tutorial Project'' slide }}} | 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. |
+----------------------------------------------------------------------------------+----------------------------------------------------------------------------------+
-| {{{ Show the Spoken Tutorial Workshops slide }}} | The Spoken Tutorial Project Team conducts workshops using spoken tutorials, |
+| {{{ Show the `` Spoken Tutorial Workshops'' slide }}} | 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 |