\documentclass[10pt]{beamer}
\include{macros}
%\usepackage[active]{srcltx}
\usepackage{graphicx}
\mode
{
\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}
\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}