\documentclass[10pt]{beamer}
\include{macros}

%\usepackage[active]{srcltx}


\usepackage{graphicx}

\mode<presentation>
{
  \usetheme{Warsaw}
\usecolortheme{rose}
%\usecolortheme{seahorse}
  \setbeamercovered{transparent}
  % or whatever (possibly just delete it)
}


\usepackage[english]{babel}
% or whatever

\usepackage[latin1]{inputenc}
% or whatever

\usepackage{times}
\usepackage[T1]{fontenc}
% Or whatever. Note that the encoding and the font should match. If T1
% does not look nice, try deleting the line with the fontenc.


\title{Python and SAGE}

\author{{\tt http://www.sagemath.org}\\
William Stein\\
San Diego}

% - Use the \inst command only if there are several affiliations.
% - Keep it simple, no one is interested in your street address.

\date[August 17, 2007] % (optional)
{
August 17, 2007\\
\vspace{2ex}
\includegraphics[width=0.8in]{cube5-thumb}
}

\subject{Talks}

% 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}
}

% If you wish to uncover everything in a step-wise fashion, uncomment
% the following command: 

%\beamerdefaultoverlayspecification{<+->}

\begin{document}

\begin{frame}
  \titlepage
\end{frame}


\begin{frame}
\frametitle{Abstract}
\vfill
\Large

{\dblue Abstract:} Explain how using Python and SAGE is very likely to
{\dred improve your efficiency and ability} to do mathematical
research that involves computation.  {\small (This is an unabashed sales pitch -- {\em I really want you to use Python and SAGE.})}

\vfill

{\dblue Target Audience:} Mathematical researchers who {\dred demand the best
possible tools} for the job (even if they are expensive).
\end{frame}


\begin{frame}
\frametitle{The Python Programming Language}

\begin{center}
\includegraphics[width=1.1in]{python-logo}
\end{center}
\vfill

{\dblue Python} is a powerful modern interpreted programming language.

\begin{itemize}

\item ``Python is fast enough for our site and allows us to {\dblue produce maintainable features in record times}, with a minimum of developers,'' said Cuong Do, Software Architect, {\dred YouTube.com.}

\item ``Google has made no secret of the fact they use Python a lot
  for a number of internal projects. Even knowing that, once {\dblue I was an
  employee, I was amazed at how much Python code there actually is in
  the Google source code system}.'', said Guido van Rossum, {\dred
    Google}, creator of Python.

\item ``Python plays a key role in our production pipeline. Without it a project the size of {\dblue Star Wars: Episode II} would have been very difficult to pull off. From crowd rendering to batch processing to compositing, {\dblue Python binds all things together},'' said Tommy Burnette, Senior Technical Director, {\dred Industrial Light \& Magic.}
%\item {\dblue Scipy} -- {\dred MATLAB}-like Python library
%\item {\dblue RPY} -- Python interface to the R {\dred statistics} 
%item {\dblue SAGE} -- {\dred Magma} and {\dred Mathematica}-like Python library.
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{Python is...}
\begin{center}
  \includegraphics[width=1.1in]{python-logo}
\end{center}
\vfill

\begin{itemize}
    \item Easy for you to {\dblue define your own data types} and methods on it.
      {\dred bitstreams, ciphers, rings, whatever}

    \item Very clean language that results in {\dred easy to {\em read} code}.

\item {\dblue Easy to learn}:
   \begin{itemize}
      \item {\dgreen Free:} Dive into Python {\tt http://www.diveintopython.org/}
      \item {\dgreen Free:} Python Tutorial {\tt http://docs.python.org/tut/}
   \end{itemize}

    \item A {\dred huge number of libraries}: 
       statistics, networking, databases, bioinformatic, 
       physics, video games, 3d graphics, and serious mathematics (via SAGE)

    \item Very easy to {\dred use any C/C++ libraries} from Python.

    \item Excellent support for {\dblue
string manipulation and bit fiddling}. 

    \item Cython -- a {\dblue Python compiler} ({\tt http://www.cython.org}). 
\end{itemize}
\end{frame}


\begin{frame}
\frametitle{SAGE Event Timeline}
\begin{center}
\includegraphics[width=2in, height=0.35in]{sagelogo}
\end{center}
\begin{enumerate}
%\item {\dblue 1997--1999:} ({\dred Berkeley} grad student) {\dblue HECKE} -- my  C++ program for my thesis research.
\item {\dblue 1999--2005:} ({\dred Berkeley, Harvard}) I wrote over $25,\!000$ lines of {\dblue Magma} code.  {\dgreen I really really like Magma!}  
\item But the languages of {\grey Magma, Mathematica, and Maple} are {\dblue old-fashioned and painful} compared to Python.
\item And I {\dred need to} be able to {\dblue see inside
and change anything} in my software in order
to be the best in the world at my research. 
\item {\dred Magma is frustrating} and is a {\dred terrible
longterm investment}.
 \item {\dblue Feb 2005:} I released {\dblue SAGE-0.1} -- a Python math library.
  \item {\dblue Feb 2006:} {\dred UCSD SAGE Days 1} -- SAGE 1.0.
\item {\dblue October 2006:} {\dred U Washington SAGE Days 2} workshop.
\item {\dblue March 2007:} {\dred UCLA SAGE Days 3} workshop.
\item {\dblue June 2007:} {\dred U Washington SAGE Days 4} workshop.
\item {\dblue Now:} SAGE-2.8.1; about {\dblue 100 contributors to SAGE}. 
\item {\dblue October 2007:} {\dred Clay Math Institute SAGE Days 5} workshop.
\item {\dblue November 2007:} {\dred Heilbronn Institute SAGE Days 6}
\end{enumerate}
\end{frame}

\begin{frame}[fragile]
\frametitle{Welcome to SAGE!}
{\small
\begin{verbatim}
$ sage
--------------------------------------------------------------
| SAGE Version 2.8.1
| Type notebook() for the GUI, and license() for information.        
--------------------------------------------------------------
sage: 2 + 2
4
sage: notebook()
**************************************************
* Open your web browser to http://localhost:8000 *
**************************************************
....
\end{verbatim}}

\end{frame}

\begin{frame}[fragile]
\frametitle{The SAGE Notebook}
\mbox{}
\vspace{2em}
\vfill
\begin{tabular}{ll}
\includegraphics[width=.5\textwidth]{tutorial}
&
\begin{minipage}{0.5\textwidth}
\small
\begin{itemize}
\item Connect either to a program running on your computer, or a
  program running elsewhere.
\item Create {\dblue  embedded graphics}
\item {\dblue Typeset} mathematical expressions
\item Add and delete input
\item Start and interrupt {\dblue multiple  calculations} at once.
\item The notebook also works with {\dred Magma}, 
GAP, PARI, Singular, Macaulay2, Fortran, etc.!
\end{itemize}
\vfill
\vspace{15em}
\mbox{}
\end{minipage}
\\
\end{tabular}
\end{frame}

\begin{frame}
\frametitle{SAGE Makes Python Usable for Mathematics}
SAGE provides {\dblue\bf serious computing power} to make 
Python a truly usable tool for {\dblue your research}.

SAGE is {\dred over 100,000 lines of
new code} that ties together many 
libraries and programs and provides {\dblue much new functionality}:

\begin{itemize}
\item {\dblue Algebra} and {\dblue calculus}: {\grey Maxima}, {\grey Sympy}
\item {\dblue Arbitrary precision arithmetic}: {\grey GMP, MPFR, MPFI, NTL, quaddouble, Givaro}
\item  {\dblue Algebraic geometry}: {\grey Singular, Macaulay2}
\item {\dblue Arithmetic Geometry}: {\grey PARI, NTL, mwrank, ecm, FLINTQS}
\item  {\dblue Exact linear algebra}: {\grey Linbox, IML}
\item {\dblue Graphics} (2d and 3d): {\grey MatPlotLib, Tachyon3d, VTK (optional)}
\item {\dblue Group theory}: {\grey GAP}
\item {\dblue MATLAB-like functionality -- linear algebra,
optimization, etc.}: {\grey GSL, Scipy, Numpy}
\end{itemize}
\vfill
\begin{center}
{\red Chances are, you can do it using SAGE.}
\end{center}
\end{frame}

\begin{frame}
\frametitle{Use Most Mathematics Software from Within SAGE}
\large
SAGE makes it possible for you to {\dblue use most mathematics software together}.
\vfill
\begin{itemize}
\item SAGE includes {\dred interfaces to} Magma, Maple, Mathematica, MATLAB, and MuPAD ...
\vfill
\item and also the free programs Axiom, GAP, GP/PARI, Macaulay2, Maxima, Octave, and Singular. 
\vfill
\item This makes it {\dred easier to benefit from existing code}
you or others have already written.  
\end{itemize}
\end{frame}





%
%\begin{frame}
%\frametitle{Use a Standard Programming Language}

%You work with SAGE using:
%\begin{itemize}
%\item {\dred Python}: A highly regarded scripting language, instead of an obscure language designed for a particular mathematics program. 
%\item {\dred Cython:} Fast compiled Python
%\item {\dred Fortran:} Good support for using Fortran
%from SAGE.
%\item  You can write programs that {\dred combine} serious 
%mathematics with anything else.
%\end{itemize}
%\end{frame}


%\begin{frame}
%\frametitle{Be Curious}
%SAGE gives you easy access to {\dred documentation} 
%and {\dred source code}. 
%\vfill
%\begin{itemize}
%\item Type {\tt\dblue plot?} for help on the plot command and 
%{\tt plot??} to see the source code.
%\vfill
%\item If {\tt\dblue X} is anything, type {\tt\dblue X.[tab key]} to see all commands that apply to {\tt\dblue X}.
%\end{itemize}
%\vfill
%\begin{center}
%\includegraphics[width=1in]{plot}
%\hspace{6em}
%\includegraphics[width=1in]{interaction}
%\end{center}
%\end{frame}
%
%
%%\begin{frame}
%%\frametitle{SAGE sponsors}
%%\Large
%%\begin{itemize}
%%\item {\dgreen NSF} -- substantial hardware; two workshops, 
%%and a new 2007--2010 award for the first SAGE postdoctoral
%%Fellowship. 
%%\vfill
%\item The {\dgreen Clay Mathematics Institute}
%\vfill
%\item {\dgreen IPAM} (in UCLA)
%\vfill
%\item {\dgreen PIMS/VIGRE} (Sage Days 4)
%\end{itemize}
%\end{frame}

\begin{frame}
\frametitle{Some Shortcomings of SAGE}
\begin{enumerate}
\item There are currently probably {\dblue less than a thousand users}
  of SAGE (there are millions of Python users).\\
\vfill
\item {\dred Not robust enough} -- sometimes interrupt doesn't
interrupt, etc.  
\vfill
\item SAGE is {\dred sometimes much slower} than Magma or Mathematica
(and sometimes faster, to be fair). 
\vfill
\item SAGE is new -- there are {\dred too many bugs}. 
\vfill
\item The big problem -- {\dgreen MONEY}. {\dred Funding for work on
  SAGE minimal and we need much more funding}.  Like Python, SAGE is
  open source, so we can't charge per copy.
\end{enumerate}
However, if you think something is bad {\dred you can fix it
yourself}.  Example, {\tt number\_of\_partitions}...
\end{frame}

\begin{frame}[fragile]
\frametitle{Example: Number of Partitions}
\begin{verbatim}
sage: list(partitions(5))
[(1, 1, 1, 1, 1), (1, 1, 1, 2), (1, 2, 2), (1, 1, 3), (2, 3), (1, 4), (5,)]
sage: number_of_partitions(5)
7
\end{verbatim}
\begin{enumerate}
\item The beginning of the Mathematica tour has an assertion
that: {\dred ``Mathematica computes the number of partitions of 1 billion
in a few seconds -- a frontier number theory calculation''.}
\item {\dblue SAGE (and Magma!) would take years} to do that, so I posted on sage-devel; {\dred 72 posts} among {\dred 15 people} followed.
\item Now -- thanks to Jon Bobber (U Mich grad student) 
SAGE is faster at this than any other program in the world
on {\em my laptop}, and promises to be several times faster
soon:
\begin{verbatim}
sage: time len(str(number_of_partitions(10^9)))
CPU times: user 67.21 s, sys: 0.34 s, total: 67.56 s
35219
\end{verbatim}
Mathematica 6.0 takes 83s, and 6.1 takes 77s. 
\end{enumerate}
\vfill
%\begin{center}
%\red You want to be a part of this.
%\end{center}
\end{frame}

\begin{frame}
\frametitle{Some Advantages of SAGE}
\begin{enumerate}
\item SAGE is the {\dred only} serious general purpose mathematics software that
uses a {\dred mainstream programing language} (Python). 
\item SAGE is the {\dred only} program that allows you to use Maple, Mathematica,
Magma, etc., all {\dred together}.
\item SAGE has {\dred more functionality out of the box} than any other
open source mathematics software. 
\item SAGE has a {\dred Huge}, {\dred active}, and well rounded {\dred developer community}:
{\tt sage-devel} mailing list has {\dblue 180} subscribers, working
very hard on everything from highly optimized arithmetic,
to high school education, to computing modular forms. 
Usually about 30 people get patches accepting into SAGE every month.
\item SAGE {\dred development is done in the open}.  You can read
about why all decision are made, have input into decisions, see
a list of every change anybody has made, etc.   This is {\em\grey totally
different than the situation with Magma and Mathematica.}
\end{enumerate}
\end{frame}

\begin{frame}
\frametitle{Download SAGE for Windows, Mac OS X, and Linux}
\large
\begin{itemize}
\item {\dred Download} SAGE for free at {\tt http://sagemath.org}
\vfill
\item You can {\dred compile SAGE} yourself from source, 
and {\dgreen change anything} about SAGE.
\vfill

\end{itemize}

\end{frame}

%\begin{frame}
%\frametitle{SAGE Days Workshops}
%\Large
%\vfill
%\begin{itemize}
%\item SAGE Days 5: Sept 30 -- Oct 3 at the Clay Math Insitute in Cambridge, MA -- Computational Arithmetic Geometry

%\vfill

%\end{itemize}
%\vfill
%\end{frame}

\begin{frame}
\frametitle{Discussion}
\Large
\begin{enumerate}
\item {\dred Can} Python/SAGE do...?
\item {\dred How} does SAGE do...?
\item Funding:
\begin{itemize} 
\item I want the quality of SAGE to be better than Magma, Maple,
  Matlab, and Mathematica, and this is {\dblue impossible} without
  significant funding.  SAGE must be a truly professional tool.
\item SAGE is free open source software, so, like Python, Firefox,
  Linux, {\em\dred SAGE needs to be used by major organizations who
    will pay salaries of developers}.
\item Some components of SAGE (e.g., Scipy) already have commercial
support and developers.
\item Thoughts?
\end{itemize}
\item {\dblue Please use SAGE}.
\end{enumerate}

\end{frame}



\end{document}
