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

\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{SAGE: Software for Algebra and 
Geometry Experimentation}

\author{William Stein}

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

\date[October 3] % (optional)
{\vspace{-6ex}

October 19, 2006,
Current Problems Seminar at UW\\

\includegraphics[width=20em]{sage-car.png}}

\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{Outline}
\Large
  \tableofcontents
  % You might wish to add the option [pausesections]
\end{frame}


\section{Introduction}

\begin{frame}
\vfill
{\bf\Huge Introduction}
\vfill
\end{frame}

\begin{frame}
\frametitle{Mathematics Software}
Price for one {\dblue non-academic non-government} copy:
\vfill
{\Large
\begin{itemize}
\item Mathematica -- {\dgreen \$\textbf{1880} (or \$3135)}
\item Maple -- {\dgreen \$\textbf{1995}}
\item MATLAB - {\dgreen \$\textbf{1900}} (plus thousands of dollars for optional package), 
\item Magma is {\dgreen \$\textbf{1150}} (educational
rate---the non-educational rate is much higher?).
\end{itemize}
}
\vfill
After you graduate, this is what your employer or
your student's employer might pay. These prices
unduly inhibit math education and 
research in poor countries or schools.
\end{frame}

\begin{frame}
\frametitle{The Problem}
{\dblue\LARGE A Current Problem:}
\vfill
{\LARGE
Create a powerful and free open source 
mathematics software package that beats the
big commercial systems.
}
\vfill
Create the ``firefox'' of math software.  Take back the night.
Statisticians did this with R.  We can too.
\vfill
{\dred This talk is about a project I initiated in
January 2005 to address this problem.}
\vfill
Funding: use grant money, startup money, volunteer work, and
{\bf graduate and undergraduate student research} support.
My ``IP portfolio'' is the existing world of free open source software.
 
\end{frame}


\begin{frame}
\frametitle{History: Hecke 0.1 to SAGE 1.4.1}
\large
\begin{itemize}
\item {\dblue 1997--1999:} Hecke -- C++ math code for my thesis.
\item {\dblue 1999--2004:} Much MAGMA code for research.
\item {\dblue Feb 2004:} Frustration with MAGMA.
\item {\dblue Feb 2005:} I got job offers with {\dred tenure} -- {\dred SAGE 0.1}
\item {\dblue April 2005:} {\dred Interfaces} to Mathematica, Magma, etc.
\item {\dblue Feb 2006:} SAGE Days 1 workshop -- {\dred SAGE 1.0}
\item {\dblue June 2006:} SIMUW workshop -- {\dred SAGE Notebook }
\item {\dblue August 2006:} Grad student workshop -- two week MSRI
 {\em graduate student} coding sprint.
\item {\dblue October 2006:} SAGE Days 2 -- workshop
at UW.
\item {\dblue Today:} SAGE now has a {\dred wide range of
    functionality}.  But 
  {\dred SAGE is not fast enough yet.}
\end{itemize}

\end{frame}

%
%\begin{frame}[fragile]
%\frametitle{Does Open Source Matter for Math Research?}
%\small
%``You can read Sylow's Theorem and its proof in Huppert's book in the
%library [...]  then you can use Sylow's Theorem for the rest of your
%life free of charge, but for many computer algebra systems license
%fees have to be paid regularly [...].  You press buttons and you get
%answers in the same way as you get the bright pictures from your
%television set but you cannot control how they were made in either
%case.
%\vspace{2ex}

%With this situation {\dred two of the most basic rules of conduct in
%  mathematics are violated}: In mathematics {\dblue information is passed on
%free of charge} and {\dblue everything is laid open for checking}. Not applying
%these rules to computer algebra systems that are made for mathematical
%research [...]  means {\dred moving in a most undesirable direction}.
%Most important: Can we expect somebody to believe a result of a
%program that he is not allowed to see? Moreover: Do we really want to
%charge colleagues in Moldava several years of their salary for a
%computer algebra system?''

%\vspace{2ex}

%-- J. Neub\"user in {\bf\LARGE 1993} (he started GAP in 1986).
%\end{frame}

\begin{frame}
\frametitle{Who is Writing SAGE?}

{\large I am a {\dblue number theorist} but SAGE has a {\dgreen much wider} target area: {\dred algebra, geometry, number 
theory, cryptography, numerical analysis, statistics, etc.}}


\vfill

{\dblue Contributors Include:}
Martin Albrecht,
{\dred Tom Boothby},
{\dred Robert Bradshaw},
Iftikhar Burhanuddin,
Craig Citro,
{\dred Alex Clemesha},
John Cremona,
Didier Deshommes,
David Harvey,
Naqi Jaffery,
David Joyner,
{\dred Josh Kantor},
Kiran Kedlaya,
David Kirkby,
{\dred Emily Kirkman},
David Kohel,
Jon Hanke,
{\dred Robert Miller},
{\dred Bobby Moretti},
Gregg Musiker,
Fernando Perez, 
{\dred Yi Qiang},
David Roe,
Nathan Ryan, 
Kyle Schalm,
Steven Sivek,
Jaap Spies,
Gonzalo Tornaria,
Justin Walker,
Mark Watkins,
Joe Weening,
Joe Wetherell

\vfill 

{\dgreen \LARGE Implement it and send me a patch.}

\end{frame}

\begin{frame}[fragile]
\frametitle{Some Fancy Hardware -- A Collaboration Environment}
\begin{center}
{\Large\dblue {\tt http://sage.math.washington.edu}}\\
\vfill
\includegraphics[width=0.6\textwidth]{sageserver.jpg}
\end{center}
\vfill
{\dred 64GB RAM}, {\dblue 16 processor} Opteron
server.  You can browse the developer working directories
over the web here!
\end{frame}


\section{What is SAGE?}


\begin{frame}
\vfill
{\bf\Huge What is SAGE?}
\vfill
\end{frame}


\begin{frame}
\frametitle{What is SAGE?}
{\Large
\begin{enumerate}
\item {\dred A Distribution} of free open source math software. 
64MB source tarball that builds self-contained.
\item {\dred New Code} that fill in gaps in functionality; implement
new algorithms.
\item {\dred A Unified Interfaces} to most
mathematics software: MATLAB, Mathematica, Maple, etc. 
\end{enumerate}
} 

\vfill
SAGE runs on {\dred Linux, OS X, and Windows}. 
\end{frame}


\begin{frame}
\frametitle{A Distribution}
\begin{center}
{\dblue\LARGE 1. A Distribution}
\end{center}
\begin{center}
\begin{tabular}{|l|l|}\hline
Basic Arithmetic &	{\dred GMP, NTL, MPFR, PARI}  \\\hline
Command Line &	{\dred IPython}   \\\hline
Commutative algebra &	{\dred Singular}  \\\hline
Database & {\dred ZODB} \\\hline
Graphical Interface & {\dred jsmath, SAGE Notebook} \\\hline
Graphics &	{\dred Matplotlib, Tachyon}   \\\hline
Group theory and combinatorics  &	{\dred GAP} \\\hline
Interactive programming language & {\dred	Python } \\\hline
Networking & 	{\dred Twisted}  \\\hline
Numerical computation & {\dred GSL, Numeric, etc.} \\\hline
Symbolic computation, calculus  &	{\dred Maxima}  \\\hline
\end{tabular}
\end{center}
\vfill
All core components are {\dred free and open source}.  You may change
absolutely anything in SAGE or any of the libraries
it relies on, build the new version and
 redistribute the result. 
\end{frame}


\begin{frame}[fragile]
\frametitle{The SAGE Library -- new code we've written}
\begin{center}
{\dblue\LARGE 2. New Code}
\end{center}

Over 100000 lines of Python and Pyrex code:
\small
\begin{verbatim}
algebras    edu         lfunctions  monoids         sets
categories  ext         libs        plot            structure
coding      functions   matrix      quadratic_forms tests
combinat    geometry    misc        rings
crypto      groups      modular     schemes
databases   interfaces  modules     server

UNIQUE Source Code Lines (including docstrings):
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
                */*/*.pyx */*/*.pyx |sort |uniq | wc -l
87513
UNIQUE Input Docstrings:
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
          */*/*.pyx */*/*.pyx |sort|uniq|grep "sage:" | wc -l
9759
\end{verbatim}
\end{frame}




\begin{frame}
\frametitle{A Unified Interface}
\begin{center}
{\dblue\LARGE 3. A Unified Interface}
\end{center}
\vfill\large
\begin{itemize}
\item SAGE interfaces to:
\begin{center}
Axiom, GAP, GP/PARI, Kash, Macaulay2,
Magma, Maple, Mathematica, MATLAB, Maxima, Octave, Singular, etc.
\end{center}

\vfill
\item Get access to the functionality of the other
systems via interfaces. 
\vfill
\item Get unified tab completion and online help even for 
many systems.
\end{itemize}

\end{frame}


\begin{frame}
\frametitle{Overall Structure of SAGE}
{\dblue\Large The Overall Structure of SAGE}
\vfill
\begin{itemize}
\item {\dred Custom package management system } -- 41 standard
packages, and 29 optional ones.  Automated upgrades.  
\vfill
\item {\dred Interactive command-line} interface -- Python and IPython.
\vfill
\item {\dred Graphical user interface} -- an AJAX application:
 {\tt http://sage.math.washington.edu:8100} or locally on your
 computer.
\vfill
\item {\dred Underlying arithmetic} -- from scratch; and built on top of standard libraries like GMP, PARI, GSL, etc.  New code is
written in Pyrex and Python.

\vfill
\item {\dred Interfaces with other software} use 
{\dred psuedo-tty}'s, which are extremely flexible.
\vfill
\item {\dred Special purpose components} -- e.g., Gfan (for computing
Groebner fans), genus2reduction, GMP-ECM (for integer factorization),
several $L$-functions programs. 
\end{itemize}

\end{frame}




\section{Long-term Plans}
\begin{frame}
\vfill
{\bf\LARGE Long-term Plans}
\vfill
\end{frame}



%\begin{frame}
%\frametitle{What is included in SAGE?}
%\begin{enumerate}
%\item {\dblue Standard packages:}\\
%cddlib, {\dred clisp}, conway\_polynomials, cremona\_mini,
%doc, ecm, freetype, gap,
%genus2reduction, gfan, givaro, {\dred gmp}, {\dred gnuplotpy},
%{\dred ipython}, lcalc, libpng, {\dred matplotlib}, {\dred maxima},
%{\dred mpfr}, mwrank, ntl, {\dred numeric}, pari, {\dred pexpect},
%{\dred pyrex}, {\dred pyrexembed}, {\dred python}, readline, 
%singular, sympow, tachyon, termcap, zlib, {\dred zodb3}
%\item {\dblue Optional Packages: {\tt sage -i package\_name}}\\
%darcs, database\_cremona\_ellcurve,
%database\_gap, database\_jones\_numfield,
%database\_kohel, database\_odlyzko\_zeta, database\_sloane\_oeis,
%database\_stein\_watkins\_mini, {\dred dvipng}, extra\_docs, gap\_packages,
%gd, {\dred gnuplot}, hermes, kash3\_linux, kash3\_osx, lie, linbox,
%macaulay2, {\dred mayavi}, {\dred moin (wiki)}, {\dred numarray}, 
%{\dred numpy}, nzmath, polymake, 
%pygtk, RealLib3, {\dred scipy}, {\dred soya}
%\end{enumerate}
%\end{frame}


\begin{frame}
\frametitle{Goals for SAGE 2.0}
{\Large Main Goals for SAGE 2.0 (January 2007) -- Speed up Arithmetic}
\vfill
See the trac server.
\vfill
\large
\begin{enumerate}
\item Make the {\dred basic arithmetic}, e.g., finite fields, polynomials, etc.,
 very fast.
 \vfill
\item Make the {\dred everyday {\em exact} linear algebra} very fast.
%\item Much better {\dred introspection} (e.g., Pyrex code,
%  hyperlinks to files, etc.).

\end{enumerate}
\vfill 

This mainly involves {\dred algorithm development}, because the
only math software that does these things well now  is 
{\dblue closed source}.


\end{frame}

\begin{frame}
\frametitle{Next Year (2007) -- SAGE 3.0: parallelism}
{\Large\dblue Parallelism}
\vfill
\large
\begin{enumerate}
\item Support for {\dblue parallelism} and use of
it for algorithms,
e.g., multimodular matrix multiply over $\Q$.
Yi Qiang here at UW is working on something like
GIMPS or Distributed.Net for SAGE.
\vfill
\item I'm co-organizing a {\dred workshop January 29--Feb 2} at MSRI on 
parallel computation.
%\item Fernando Perez et al., Yi Qiang, Jason Martin, etc. 
\end{enumerate}
\end{frame}

\begin{frame}
\vfill
\LARGE
\begin{center}
\includegraphics[width=.7\textwidth]{tag.png}

\vfill
\dgreen
Mathematics Software for Everybody
\vfill

\dblue 
Questions?
\end{center}

\end{frame}

\end{document}


