diff options
author | Puneeth Chaganti | 2009-10-08 19:06:57 +0530 |
---|---|---|
committer | Puneeth Chaganti | 2009-10-08 19:06:57 +0530 |
commit | 21a1eddc98654bd18e6a9d7753a45e83918f7b1a (patch) | |
tree | 2a86b486e677819b4582d64ba30babb0955bea75 /day2 | |
parent | 3f0f51a15935e93c6c251e8439ee268b2778de5c (diff) | |
parent | adb321ed1261252ebdf52c4dd3b5699365f7daea (diff) | |
download | workshops-21a1eddc98654bd18e6a9d7753a45e83918f7b1a.tar.gz workshops-21a1eddc98654bd18e6a9d7753a45e83918f7b1a.tar.bz2 workshops-21a1eddc98654bd18e6a9d7753a45e83918f7b1a.zip |
Merged Mainline and my branch.
Diffstat (limited to 'day2')
-rw-r--r-- | day2/session3.tex | 257 | ||||
-rw-r--r-- | day2/tda.tex | 299 |
2 files changed, 363 insertions, 193 deletions
diff --git a/day2/session3.tex b/day2/session3.tex index 5d0f6ef..02caa0b 100644 --- a/day2/session3.tex +++ b/day2/session3.tex @@ -95,7 +95,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Title page -\title[]{3D data Vizualization\\ \& \\Test Driven Approach} +\title[]{3D data Visualization} \author[FOSSEE Team] {Asokan Pichai\\Prabhu Ramachandran} @@ -194,6 +194,66 @@ \section{Tools at your disposal:} +\subsection{Mayavi2.0} + +\begin{frame} + \frametitle{Introduction to Mayavi} + \begin{itemize} + \item Most scientists not interested in details of visualization + \item Visualization of data files with a nice UI + \item Interactive visualization of data (think Matlab) + \item Embedding visualizations in applications + \item Customization + \end{itemize} + \pause + \begin{block}{The Goal} + Provide a \alert{flexible} library/app for every one of these needs! + \end{block} +\end{frame} + +\begin{frame} + {Overview of features} + \vspace*{-0.3in} + \begin{center} + \hspace*{-0.2in}\pgfimage[width=5in]{MEDIA/m2/m2_app3_3} + \end{center} +\end{frame} + + +\begin{frame} + \frametitle{Mayavi in applications} + \vspace*{-0.3in} + \begin{center} + \hspace*{-0.2in}\pgfimage[width=4.5in]{MEDIA/m2/m2_envisage} + \end{center} +\end{frame} + +\begin{frame} + {Exploring the documentation} + \begin{center} + \pgfimage[width=4in]{MEDIA/m2/m2_ug_doc} + \end{center} +\end{frame} + + +\begin{frame} + \frametitle{Summary} + \begin{itemize} + \item \url{http://code.enthought.com/projects/mayavi} + \item Uses VTK (\url{www.vtk.org}) + \item BSD license + \item Linux, win32 and Mac OS X + \item Highly scriptable + \item Embed in Traits UIs (wxPython and PyQt4) + \item Envisage Plugins + \item Debian/Ubuntu/Fedora + \item \alert{Pythonic} + \end{itemize} + + \inctime{10} + +\end{frame} + \subsection{mlab} \begin{frame} @@ -249,7 +309,7 @@ \item Mouse \item Keyboard \item Toolbar - \item Mayavi icon(wait for it...) \pgfimage[width=0.2in]{MEDIA/m2/m2_icon} + \item Mayavi icon\pgfimage[width=0.2in]{MEDIA/m2/m2_icon} \end{itemize} \end{columns} \end{frame} @@ -319,7 +379,8 @@ >>> y = sin(phi)*sin(theta) >>> z = cos(phi) >>> mlab.mesh(x, y, z, -... representation='wireframe') +... representation= +... 'wireframe') \end{lstlisting} \end{frame} @@ -356,66 +417,6 @@ \inctime{20} \end{frame} -\subsection{Mayavi2.0} - -\begin{frame} - \frametitle{Introduction to Mayavi} - \begin{itemize} - \item Most scientists not interested in details of visualization - \item Visualization of data files with a nice UI - \item Interactive visualization of data (think Matlab) - \item Embedding visualizations in applications - \item Customization - \end{itemize} - \pause - \begin{block}{The Goal} - Provide a \alert{flexible} library/app for every one of these needs! - \end{block} -\end{frame} - -\begin{frame} - {Overview of features} - \vspace*{-0.3in} - \begin{center} - \hspace*{-0.2in}\pgfimage[width=5in]{MEDIA/m2/m2_app3_3} - \end{center} -\end{frame} - - -\begin{frame} - \frametitle{Mayavi in applications} - \vspace*{-0.3in} - \begin{center} - \hspace*{0.2in}\pgfimage[width=4.5in]{MEDIA/m2/m2_envisage} - \end{center} -\end{frame} - -\begin{frame} - {Exploring the documentation} - \begin{center} - \pgfimage[width=4.5in]{MEDIA/m2/m2_ug_doc} - \end{center} -\end{frame} - - -\begin{frame} - \frametitle{Summary} - \begin{itemize} - \item \url{http://code.enthought.com/projects/mayavi} - \item Uses VTK (\url{www.vtk.org}) - \item BSD license - \item Linux, win32 and Mac OS X - \item Highly scriptable - \item Embed in Traits UIs (wxPython and PyQt4) - \item Envisage Plugins - \item Debian/Ubuntu/Fedora - \item \alert{Pythonic} - \end{itemize} - - \inctime{10} - -\end{frame} - \begin{frame} {Getting hands dirty!} @@ -468,136 +469,6 @@ x, y, z = mgrid[-50:50:20j,-50:50:20j, \end{lstlisting} \inctime{20} \end{frame} - -\section{Test Driven Approach} - -\begin{frame} - \frametitle{Testing code with \typ{nosetests}} - - \begin{itemize} - \item Writing tests is really simple! - - \item Using nose. - - \item Example! - \end{itemize} -\end{frame} - -\begin{frame} - \frametitle{Need of Testing!} - - \begin{itemize} - \item Quality - - \item Regression - - \item Documentation - \end{itemize} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Nosetest} - \begin{lstlisting} -def gcd(a, b): - """Returns gcd of a and b, - handles only positive numbers.""" - if a%b == 0: return b - return gcd(b, a%b) -def lcm(a, b): - return a*b/gcd(a, b) - -if __name__ == '__main__': - import nose - nose.main() - \end{lstlisting} -\inctime{10} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Example} - \begin{block}{Problem Statement:} - Write a function to check whether a given input - string is a palindrome. - \end{block} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Function: code.py} -\begin{lstlisting} -def is_palindrome(input_str): - return input_str == input_str[::-1] -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Test for the palindrome: code.py} -\begin{lstlisting} -from code import is_palindrome -def test_function_normal_words(): - input = "noon" - assert is_palindrome(input) == True -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Running the tests.} -\begin{lstlisting} -$ nosetests test.py -. ----------------------------------------------- -Ran 1 test in 0.001s - -OK -\end{lstlisting} -\end{frame} - -\begin{frame}[fragile] - \frametitle{Exercise: Including new tests.} -\begin{lstlisting} -def test_function_ignore_cases_words(): - input = "Noon" - assert is_palindrome(input) == True -\end{lstlisting} -Check - -\PythonCode{$ nosetests test.py} - -Tweak the code to pass this test. -\end{frame} - -\begin{frame}[fragile] - \frametitle{Lets write some test!} -\begin{lstlisting} -#for form of equation y=mx+c -#given m and c for two equation, -#finding the intersection point. -def intersect(m1,c1,m2,c2): - x = (c2-c1)/(m1-m2) - y = m1*x+c1 - return (x,y) -\end{lstlisting} - -Create a simple test for this - -function which will make it fail. - -\inctime{15} -\end{frame} - -\section{Summary} -\begin{frame}{So we have covered:} - \begin{itemize} - \item Need for vizualization. - \item Tools available. - \item How to follow Test Driven Approach. - \end{itemize} -\end{frame} -\begin{frame} - \begin{center} - \Huge - Thank you! - \end{center} -\end{frame} \end{document} diff --git a/day2/tda.tex b/day2/tda.tex new file mode 100644 index 0000000..ae39f4a --- /dev/null +++ b/day2/tda.tex @@ -0,0 +1,299 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Tutorial slides on Python. +% +% Author: Prabhu Ramachandran <prabhu at aero.iitb.ac.in> +% Copyright (c) 2005-2009, Prabhu Ramachandran +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\documentclass[compress,14pt]{beamer} +% \documentclass[handout]{beamer} +% \usepackage{pgfpages} +% \pgfpagesuselayout{4 on 1}[a4paper,border, shrink=5mm,landscape] +\usepackage{tikz} +\newcommand{\hyperlinkmovie}{} +%\usepackage{movie15} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Note that in presentation mode +% \paperwidth 364.19536pt +% \paperheight 273.14662pt +% h/w = 0.888 + + +\mode<presentation> +{ + \usetheme{Warsaw} + %\usetheme{Boadilla} + %\usetheme{default} + \useoutertheme{split} + \setbeamercovered{transparent} +} + +% To remove navigation symbols +\setbeamertemplate{navigation symbols}{} + +\usepackage{amsmath} +\usepackage[english]{babel} +\usepackage[latin1]{inputenc} +\usepackage{times} +\usepackage[T1]{fontenc} + +% Taken from Fernando's slides. +\usepackage{ae,aecompl} +\usepackage{mathpazo,courier,euler} +\usepackage[scaled=.95]{helvet} +\usepackage{pgf} + +\definecolor{darkgreen}{rgb}{0,0.5,0} + +\usepackage{listings} +\lstset{language=Python, + basicstyle=\ttfamily\bfseries, + commentstyle=\color{red}\itshape, + stringstyle=\color{darkgreen}, + showstringspaces=false, + keywordstyle=\color{blue}\bfseries} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% My Macros +\setbeamercolor{postit}{bg=yellow,fg=black} +\setbeamercolor{emphbar}{bg=blue!20, fg=black} +\newcommand{\emphbar}[1] +{\begin{beamercolorbox}[rounded=true]{emphbar} + {#1} + \end{beamercolorbox} +} +%{\centerline{\fcolorbox{gray!50} {blue!10}{ +%\begin{minipage}{0.9\linewidth} +% {#1} +%\end{minipage} +% }}} + +\newcommand{\myemph}[1]{\structure{\emph{#1}}} +\newcommand{\PythonCode}[1]{\lstinline{#1}} + +\newcommand{\tvtk}{\texttt{tvtk}} +\newcommand{\mlab}{\texttt{mlab}} + +\newcounter{time} +\setcounter{time}{0} +\newcommand{\inctime}[1]{\addtocounter{time}{#1}{\vspace*{0.1in}\tiny \thetime\ m}} + +\newcommand\BackgroundPicture[1]{% + \setbeamertemplate{background}{% + \parbox[c][\paperheight]{\paperwidth}{% + \vfill \hfill + \hfill \vfill +}}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Configuring the theme +%\setbeamercolor{normal text}{fg=white} +%\setbeamercolor{background canvas}{bg=black} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Title page +\title[]{Test Driven Approach} + +\author[FOSSEE Team] {Asokan Pichai\\Prabhu Ramachandran} + +\institute[IIT Bombay] {Department of Aerospace Engineering\\IIT Bombay} +\date[] {11, October 2009} +\date[] % (optional) +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\pgfdeclareimage[height=0.75cm]{iitblogo}{iitblogo} +%\logo{\pgfuseimage{iitblogo}} + +\AtBeginSection[] +{ + \begin{frame}<beamer> + \frametitle{Outline} + \Large + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +%% Delete this, if you do not want the table of contents to pop up at +%% the beginning of each subsection: +\AtBeginSubsection[] +{ + \begin{frame}<beamer> + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} + +\AtBeginSection[] +{ + \begin{frame}<beamer> + \frametitle{Outline} + \tableofcontents[currentsection,currentsubsection] + \end{frame} +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOCUMENT STARTS +\begin{document} + +\begin{frame} + \maketitle +\end{frame} + +\section{Test Driven Approach} + +\begin{frame} + \frametitle{Testing code with \typ{nosetests}} + + \begin{itemize} + \item Writing tests is really simple! + + \item Using nose. + + \item Example! + \end{itemize} +\end{frame} + +\begin{frame} + \frametitle{Need of Testing!} + + \begin{itemize} + \item Quality + + \item Regression + + \item Documentation + \end{itemize} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Nosetest} + \begin{lstlisting} +def gcd(a, b): + """Returns gcd of a and b, + handles only positive numbers.""" + if a%b == 0: return b + return gcd(b, a%b) +def lcm(a, b): + return a*b/gcd(a, b) + +if __name__ == '__main__': + import nose + nose.main() + \end{lstlisting} +\inctime{10} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Example} + \begin{block}{Problem Statement:} + Write a function to check whether a given input + string is a palindrome. + \end{block} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Function: palindrome.py} +\begin{lstlisting} +def is_palindrome(input_str): + return input_str == input_str[::-1] +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Test for the palindrome: palindrome.py} +\begin{lstlisting} +from plaindrome import is_palindrome +def test_function_normal_words(): + input = "noon" + assert is_palindrome(input) == True +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Running the tests.} +\begin{lstlisting} +$ nosetests test.py +. +---------------------------------------------- +Ran 1 test in 0.001s + +OK +\end{lstlisting} +\end{frame} + +\begin{frame}[fragile] + \frametitle{Exercise: Including new tests.} +\begin{lstlisting} +def test_function_ignore_cases_words(): + input = "Noon" + assert is_palindrome(input) == True +\end{lstlisting} + \vspace*{0.25in} + Check\\ + \PythonCode{$ nosetests test.py} \\ + \begin{block}{Task} + Tweak the code to pass this test. + \end{block} +\end{frame} + +%\begin{frame}[fragile] +% \frametitle{Lets write some test!} +%\begin{lstlisting} +%#for form of equation y=mx+c +%#given m and c for two equation, +%#finding the intersection point. +%def intersect(m1,c1,m2,c2): +% x = (c2-c1)/(m1-m2) +% y = m1*x+c1 +% return (x,y) +%\end{lstlisting} +% +%Create a simple test for this +% +%function which will make it fail. +% +%\inctime{15} +%\end{frame} +% + +\begin{frame}[fragile] + \frametitle{Exercise} + Based on Euclid's theorem: + $gcd(a,b)=gcd(b,b\%a)$\\ + gcd function can be written as: + \begin{lstlisting} + def gcd(a, b): + if a%b == 0: return b + return gcd(b, a%b) + \end{lstlisting} + \begin{block}{Task} + For given gcd implementation write + at least two tests. + \end{block} + \begin{block}{Task} + Write a non recursive implementation + of gcd(), and test it using already + written tests. + \end{block} + +\inctime{15} +\end{frame} + +\begin{frame}{In this session we have covered:} + \begin{itemize} + \item Need for visualization. + \item Tools available. + \item How to follow Test Driven Approach. + \end{itemize} +\end{frame} +\begin{frame} + \begin{center} + \Huge + Thank you! + \end{center} +\end{frame} + +\end{document} |