\documentclass[10pt]{beamer}
\include{macros}
\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{SAGE: Software for Algebra and
Geometry Experimentation}
\author{William Stein}\vspace{-2ex}
% - Use the \inst command only if there are several affiliations.
% - Keep it simple, no one is interested in your street address.
\date[August 17] % (optional)
{August 17, 2006\\
SCIPY 2006\\
\includegraphics[width=8em]{icon-4.jpg}}
\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{Outline}
\Large
\tableofcontents
% You might wish to add the option [pausesections]
\end{frame}
\section{What is SAGE?}
\begin{frame}
\frametitle{The GOAL}
{\bf \large {\dblue GOAL:} Create the {\dred best available free software}
for algebra, number theory, and geometry. Very soon, since I have a lot
of interesting research to do.}\vspace{-1.2ex}
\begin{center}
\includegraphics[width=0.9\textwidth]{sage-car.jpg}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\includegraphics[width=\textwidth]{car.jpg}\vspace{1ex}
\includegraphics[width=0.9\textwidth,height=11em]{tire_pile.jpg}
\end{center}
\end{frame}
\begin{frame}[fragile]
\small
From the Axiom mailing list (yesterday):
\begin{verbatim}
From: "Page, Bill"
Date: Wed, 16 Aug 2006 07:48:48 -0400
You will find that Sage is quite different than any other
computer algebra system with which you might be familiar -
truly a "new generation".
I think the Sage developers were very bold - maybe
even audacious - to actually attempt this. And they
are doing it in a largely pragmatic way without
attempting to incorporate the more formal and
theoretical ideas developed by the OpenMath community.
One might have been tempted to predict an early
failure to this effort but on the contrary
Sage seems to be growing more rapidly than any
other computer algebra research and development effort.
\end{verbatim}
\end{frame}
\begin{frame}[fragile]
From Journal of Symbolic Computation (yesterday):
\begin{verbatim}
From: "Hoon Hong"
To:
Subject: SAGE project
Date: Wed, 16 Aug 2006 20:26:12 -0400
Dear William (call me Hoon),
I am writing in the capacity as the editor-in-chief
of Journal of Symbolic Computation (JSC).
I believe that the SAGE project is a very important
effort for symbolic computation, and that it should
be widely recognized and supported.
Therefore, I would like to invite you
to submit a paper on SAGE project to JSC
(say about up to 30 pages).
[...]
\end{verbatim}
\end{frame}
\begin{frame}
\frametitle{What is SAGE?}
{\Large
\begin{enumerate}
\item {\dred Distribution} of free open source math software. 52MB source
tarball that builds self-contained (``no'' dependencies).
A package system (by user demand).
\item {\dred A Python library:} algebraic analogue of the Enthought
scipy library?
\item {\dred A New Interface} to your mathematics software: Mathematica,
Maple, etc.
\end{enumerate}
}
SAGE supports {\dred Linux, OS X, and Windows}.
Some people use SAGE on Solaris.
\end{frame}
\begin{frame}
\frametitle{Who is Writing SAGE?}
{\large I am a {\dblue number theorist} in a ``pure mathematics'' department. }
\begin{center}
\large
Professors, Postdocs, Graduate students, Undergraduates,
High school teachers, Professionals, Retired techies, {\dred YOU!}
\end{center}
\vfill
{\dblue Contributors Include:}
{\em Tom Boothby},
Robert Bradshaw,
David Harvey,
Craig Citro,
Bobby Moretti,
Emily Kirkman,
Yi Qiang,
Josh Kantor,
{\em David Kohel},
{\em David Joyner},
Iftikhar Burhanuddin,
John Cremona,
{\em Martin Albrecht},
Wilson Cheung,
{\em Alex Clemesha},
Didier Deshommes,
Naqi Jaffery,
Kiran Kedlaya,
David Roe,
David Kirkby,
Jon Hanke,
Gregg Musiker,
Fernando Perez,
Nathan Ryan,
Kyle Schalm,
Steven Sivek,
Jaap Spies,
{\em Gonzalo Tornaria},
Justin Walker,
Mark Watkins,
Joe Weening,
Joe Wetherell
\vfill
{\dred We use DARCS (a Haskell program) for sharing code. It works.}
\end{frame}
\begin{frame}[fragile]
\frametitle{Where are they writing SAGE?}
{\Large\dblue {\tt http://sage.math.washington.edu}}\\
\vfill
\begin{center}
\includegraphics[width=0.6\textwidth]{sageserver.jpg}
\end{center}
\vfill
The SAGE ``sandbox'': {\dred 64GB RAM}, {\dblue 16 processor} Opteron
server. You can browse the developer working directories
over the web here!
\end{frame}
\section{Technology Overview}
\begin{frame}
\Huge
\vfill
\begin{center}
Technology Overview
\end{center}
\vfill
\end{frame}
\begin{frame}
\frametitle{The SAGE Notebook}
{\dred FACT}: Most people I've polled {\dred vastly
prefer} using a good GUI for interacting with math software, if
available.
\vfill
{\dblue So now SAGE has one.} Creating this was {\dred not easy} (for me).
\vfill
\begin{enumerate}
\item The SAGE Notebook -- An {\dred ``AJAX application''} like Google maps or
Gmail.
\item {\dred Written from scratch} recently by me, Alex C. and Tom B.\vfill
\item Uses Python's built-in {\dred BaseHTTPServer} web server (we may
soon switch to Twisted for a more robust security model).
\vfill
\item Works well with Firefox, Safari, and Opera.\vfill
\item Client/server model which works {\dred over network} or locally. \vfill
\item Current version is {\dred stable and usable}. There is a big
idea list that will influence the next version.
\item Try it: {\tt http://sage.math.washington.edu:8100}
\item {\dblue DO THE DEMO!}
\end{enumerate}
\end{frame}
\begin{frame}[fragile]
\frametitle{The SAGE Library}
\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
81128
UNIQUE Input Docstrings:
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
*/*/*.pyx */*/*.pyx |sort|uniq|grep "sage:" | wc -l
8867
\end{verbatim}
%Over 250 (of the about 1100) patches were not written by me.
\end{frame}
\begin{frame}
\frametitle{Some Components of the SAGE Distribution...}
\begin{tabular}{|l|l|}\hline
Group theory and combinatorics & {\dred GAP} \\\hline
Symbolic computation and Calculus & {\dred Maxima} \\\hline
Commutative algebra & {\dred Singular} \\\hline
Number theory & {\dred PARI, MWRANK, NTL} \\\hline
Graphics & {\dred Matplotlib} \\\hline
Numerical linear algebra & {\dred Numeric} \\\hline
Mainstream programming language & {\dred Python } \\\hline
Interactive Shell & {\dred IPython} \\\hline
Graphical Interface & {\dred Notebook (Javascript)} \\\hline
\end{tabular}
\vfill
{\dred And much more!!}
\end{frame}
\begin{frame}
\frametitle{Interfaces (mostly use pexpect)}
{\dblue Continue to use} your favorite programs and code
from within SAGE (but with a {\dblue Pythonic} interface!):
\vfill\large
\begin{itemize}
\item SAGE includes (mostly pseudo-tty) interfaces to
\begin{center}
{\em\dred GAP}, {\em\dred GP/PARI}, Kash, Macaulay2,
Magma, Maple, Mathematica,
{\em\dred Maxima}, Octave, {\em\dred Singular}, etc.
\end{center}
\vfill
\item Red systems are included standard with SAGE.
\vfill
\item Get access to all of the functionality of the other
systems via interfaces. (But there is some overhead.)
\vfill
\item Get tab completion and online help even for interfaces (demo this).
\end{itemize}
\end{frame}
\begin{frame}[fragile]
\frametitle{Pyrex: Fast compiled code}
\begin{itemize}
\item Is SAGE {\dred ``impossible''}???:
{\small \begin{verbatim}
Date: Mon, 14 Aug 2006 15:26:36 +0100 (BST)
I've never understood how you can think something that
sits on top of python can beat some custom code like
magma. How does SAGE multiply two numbers? Does it use
python to do it? I was trying to explain SAGE and failed
miserably.
\end{verbatim}}
\item SAGE can be very fast, since it is partly written in {\dred
Pyrex}, which is a Python-like language that is converted to C and
compiled: {\tt\small
http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/} My plan
is that all of SAGE's basic arithmetic types will be
(re-)written this way in the next few months.
\item Martin Albrecht and I have had to {\dred modify Pyrex}.
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Distribution Model}
All core components released in source form under a {\dred GPL-compatible license}.
\vfill
Platforms: Linux, OSX, Windows, Solaris
\vfill
\begin{itemize}
\item {\dblue Linux} -- Easy build from source; precompiled binaries (.deb and .rpm's will be forthcoming).
\vfill
\item {\dblue OS X} -- Easy build from source; precompiled binaries.
\vfill
\item {\dblue Windows} -- ``{\em impossible}'' to do a native build
(and Cygwin has issues). {\dred Colinux as kernel is a
reasonable solution}. \vfill
\item {\dblue Solaris} -- very difficult; can be built mostly...
\end{itemize}
\end{frame}
\section{History and Goals}
\begin{frame}
\Huge
\vfill
\begin{center}
History and Status Report
\end{center}
\vfill
\end{frame}
\begin{frame}
\frametitle{History: SAGE 0.1 to SAGE 1.3.6.3}
\large
\begin{itemize}
\item {\dblue 1997-2004:} Much C++ and MAGMA for research.
\item {\dblue Feb 2004:} Extreme frustration with MAGMA.
\item {\dblue Feb 2005:} I got job offers with {\dred tenure} -- {\em 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:} High school workshop -- {\dred SAGE Notebook }
\item {\dblue August 2006:} Grad student workshop -- two week super-intense {\em graduate
student} coding sprint.
\item {\dblue Today:} SAGE now has a {\dred huge range of
functionality}. It was the only system to do all the
math-polyglot problems. But
{\dred SAGE is not fast enough yet.}
\end{itemize}
\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 -- December 2006}
\vfill
\large
\begin{enumerate}
\item Make the {\dred basic arithmetic}, e.g., finite fields, polynomials, etc.,
very fast.
\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 system
that does these things well now is MAGMA, which is {\dblue closed source}.
\end{frame}
\begin{frame}
\frametitle{Next Year (2007) -- SAGE 3.0: parallelism}
\large
\begin{enumerate}
\item Support for {\dblue coarse grain parallelism} and use of
it for {\dred our algorithms},
e.g., multimodular matrix multiply over $\Q$.
(Serious thought about algorithms.)
\vfill
\item Hopefully a {\dred workshop in January} at MSRI on this.
\vfill
\item Hopefully followed by a series of {\dred intense 2-week coding
sprints}.
%\item Fernando Perez et al., Yi Qiang, Jason Martin, etc.
\end{enumerate}
\vfill
\LARGE
\begin{center}
\dblue Thank You.
\end{center}
\end{frame}
\end{document}