\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: Current Project Status Report}

\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[November 8] % (optional)
{\vspace{-6ex}

November 8, 2006, San Diego}

\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}
\tableofcontents
\end{frame}

\begin{frame}
This talk is an (incomplete) overview of several {\bf current} SAGE development projects, many
of which started as coding sprints at SAGE Days 2. 
\end{frame}

\section{Overall Structure of SAGE}
\begin{frame}
\frametitle{Review: The Overall Structure of SAGE}
\vfill
\begin{itemize}
\item {\dred Custom package management system } -- 42 standard
packages, and 29 optional ones.  Automated upgrades.  
\vfill
\item {\dred Interactive command-line} interface -- IPython.
\vfill
\item {\dred Graphical user interface} -- SAGE Notebook via web browser.
\vfill
\item {\dred Fast underlying arithmetic} -- built on 
mature robust C libraries (GMP, NTL, PARI, GSL).  
New code in SageX\footnote{A variant of Pyrex} and Python.
\vfill
\item {\dred Interfaces with other software} using buffered
{\dred psuedo-tty}'s.
\vfill
\item {\dred Special purpose components} -- e.g., 
{\dred genus2reduction}, {\dred GMP-ECM}, {\dred Sympow} ($L$ functions),
{\dred Givaro} (finite fields), etc.
\item {\dred Mercurial revision control system} -- included
standard; makes it very easy for users to make changes, add
docs, etc., and give them to me.
\end{itemize}

\end{frame}

\begin{frame}[fragile]
\small
\begin{verbatim}
cddlib-094b.spkg                   mercurial-0.9.1.p2.spkg
clisp-2.40.spkg                    mpfr-20061015.spkg
conway_polynomials-0.1.spkg        mwrank-20061107.spkg
cremona_mini-0.1.spkg              networkx-0.32.spkg
doc-1.4.3.alpha2.spkg              ntl-5.4.1.spkg
ecm-6.0.1.p0.spkg                  numeric-24.2.spkg
examples-1.4.3.alpha2.spkg         pari-2.3.1.spkg
extcode-1.4.3.alpha2.spkg          pexpect-2.0.spkg
freetype-2.1.10.spkg               pyrexembed-0.1.1.2006-05-17.spkg
gap-4.4.8.spkg                     python-2.5.p2.spkg
genus2reduction-0.3.spkg           readline-5.0.1.spkg
gfan-0.2.2.spkg                    sage-1.4.3.alpha2.spkg
givaro-3.2.1.spkg                  sage_scripts-1.4.3.alpha2.spkg
gmp-4.2.1.p1.spkg                  sagex-20061103.spkg
gnuplotpy-1.7.p1.spkg              singular-3-0-2-20061014.spkg
gsl-1.8.spkg                       sympow-1.018.1.spkg
ipython-20061028.spkg              tachyon-0.97.spkg
lcalc-2006.09.19.spkg              termcap-1.3.1.spkg
libpng-1.2.8.p0.spkg               twisted-2.4.0.p1.spkg
matplotlib-0.87.6.spkg             zlib-1.2.3.p1.spkg
maxima-5.10.0.spkg                 zodb3-3.6.0.spkg
\end{verbatim}
\end{frame}

\begin{frame}
\frametitle{Some Components of SAGE (by category)}
\begin{center}
\begin{tabular}{|l|l|}\hline
Basic Arithmetic &	{\dred GMP, NTL, MPFR, PARI}  \\\hline
Command Line &	{\dred IPython}   \\\hline
Commutative algebra &	{\dred Singular}  
(libcf, libfactory) \\\hline
Database & {\dred ZODB}, Python Pickles \\\hline
Graphical Interface & {\dred jsmath, SAGE Notebook} \\\hline
Graphics &	{\dred Matplotlib, Tachyon}   \\\hline
Group theory and combinatorics  &	{\dred GAP} \\\hline
Graph theory &	{\dred Networkx} \\\hline
Interactive programming language & {\dred	Python } (mainstream !!!) \\\hline
Networking & 	{\dred Twisted}  \\\hline
Numerical computation & {\dred GSL, Numeric, etc.} \\\hline
Symbolic computation, calculus  &	{\dred Maxima}  \\\hline
\end{tabular}
\end{center}
\end{frame}

\section{Interfaces}
\begin{frame}
\frametitle{Interfaces}
\vfill\large
\begin{itemize}
\item SAGE {\dred interfaces to}:
Axiom, GAP, GP/PARI, Kash, Macaulay2,
Magma, Maple, Mathematica, MATLAB, Maxima, Octave, Singular, etc.

\vfill

\item In progress: REDUCE (Bill Page), 4ti2 (Stein and Tristram Bogart), 
PHCpack (Stein).  

\end{itemize}

\end{frame}

\section{Generator Names and Global Uniqueness}
\begin{frame}
\frametitle{Generator Names and Global Uniqueness}

William Stein

\begin{itemize}
\item In SAGE all {\dred parent structures} will (generally speaking) be {\dred immutable}.
In particular, variable names of polynomial rings, finite fields, 
power series rings, etc, must be specified at creation time and can't
be changed later.
\item Most {\dred ring elements} are now immutable (e.g., integers, polynomials, power series, etc.)
\item There is exactly one instance of each parent object.  
\item This and other low-level optimization helps {\dred makes basic arithmetic much more efficient}. 
\end{itemize}
\end{frame}

\section{Arithmetic architecture and Coercion}
\begin{frame}[fragile]
\frametitle{Arithmetic architecture and Coercion}
William Stein, D. Harvey, M. Albrecht (Bremen grad)

\begin{itemize} 
\item {\bf\dred OBJECT COERCION {\tt \_coerce\_}:}
 Suppose a {\tt\_coerce\_} map $R \to S$ is defined.  Then:
 \begin{enumerate}
\item {\tt R.category()} must be a {\dblue subcategory} of {\tt S.category()}.
\item The map $R \to S$ defined by coerce must
    define a {\dblue morphism} in {\tt S.category()}.
\item If {\tt \_coerce\_} is defined in {\dblue both direction}, then the composition in both 
      directions must be the identity maps.
\item {\dblue Reflexive:} If {\tt R is S} is True, then {\tt \_coerce\_} must be the identity map.
\item {\dblue Transitive:} If coercion from $R$ to $S$ is defined and
  coercion from $S$ to $T$ is defined, then coercion from $R$ to $T$
  must also be defined, and must agree with the composition of the coercion
  from $R$ to $S$ with the one from $S$ to $T$.
\end{enumerate}
 
\item {\bf ARITHMETIC {\tt \_\_add\_\_}, {\tt \_\_mul\_\_}, ...:}:
       When doing a binary operation, if the parents are not identical
       (in the sense of is), determine if {\dblue precisely one} {\tt \_coerce\_} map is defined;
       if so, apply it and do the arithmetic operation.  If {\dblue both} are defined,
       the parents are canonically isomorphic, so use the left one.
       If {\dblue neither} are defined, raise
       a TypeError. 
\end{itemize}

\end{frame}

\section{Matrix algebra}
\begin{frame}
\frametitle{Matrix algebra}
W. Stein, R. Bradshaw (UW grad), D. Harvey

\begin{itemize}

\item Matrix classes {\dblue systematically structured} and completely {\dblue implemented
in SageX}.

\item Easy to create new optimized matrix classes (over specific rings).

\item Much work is about organization and providing a wide range of functionality
that is built on a couple of basic algorithms.


\item Robert Bradshaw and David Harvey came up with and completely implemented
optimized {\dblue asymptotically fast algorithms} for matrix multiplication and echelon
forms in the general case (arbitrary size matrices).  Tuning still needed.
\end{itemize}

\end{frame}

\section{Numerical mathematics}
\begin{frame}
\frametitle{Numerical mathematics}
W. Stein, Josh Kantor (UW grad), Tom Boothby (UW undergrad)

\begin{itemize}
\item {\dblue Numerical computation} is {\dred extremely important} for SAGE:
\begin{itemize}
\item Numerical algorithms are deeply relevant to algebraic and geometry
computation (it's a major current research trend),
\item There is a large numerical applied group at UW.
\item The Python community has a large  
mature package of numerical software (numpy, scipy). 
\end{itemize}

\item One can use {\dred numpy and scipy} from SAGE easily now.

\item We are creating native SAGE classes for numerical objects (e.g., matrices,
vectors, ODE's, double precision real and complex numbers, etc.) built on top
of {\dred GSL} -- the GNU Scientific Library.

\end{itemize}


\end{frame}

\section{Graph theory}
\begin{frame}
\frametitle{Graph theory}
Emily Kirkman (UW undergrad), Robert Miller (UW grad), 
Bobby Moretti (UW undergrad)

\begin{itemize}
\item Emily, Robert, and Bobby did a massive survey of all graph theory software
they could find (both free and commercial).  
\item {\dred Their rough conclusions}: 
\begin{itemize}
\item The {\dblue Maple} and {\dblue Mathematica} graph theory packages are 
 slow.  
\item {\dblue MAGMA} is {\em incredibly fast} at graph theory,
 and has a wide range of computational functionality.  No visualization.
\item The best ``all around'' free package, at least for what most of our
users wanted, is {\dblue NetworkX}, which is a Los Alamos project that is
conveniently written in Python. 
 \end{itemize}
\item The students are working on making Networkx {\dblue integrate nicely} with the 
rest of SAGE, e.g., graphs attached to matrices, groups, combinatorial
structures, Hecke operators, etc. 
\end{itemize}
\end{frame}

\section{Integer Factorization}
\begin{frame}
\frametitle{Integer Factorization}
William Hart, Robert Bradshaw (UW grad), Yi Qiang (UW undergrad)

\begin{itemize}
\item {\dblue Bill Hart} (a young Australian number theorist
working in England) just finished 
writing an optimized quadratic sieve for integer
factorization.   He {\dblue GPL'd} it and is helping us {\dblue include
it in SAGE}. (He is now working on core arithmetic optimization
for SAGE, e.g., very fast polynomial arithmetic.)
\begin{quote}
   ``It takes {\dred 15s} on SAGE.math [with my sieve] for a C61. Note 
   that PARI on SAGE.math compiled 
   against the latest 64 bit GMP takes {\dred 54s} for the same computation.
   MAGMA takes around {\dred 72s}, but I forgot, it spends some time in
  GMP-ECM. Around {\dred 63s} is spent in MPQS, which is not that
  far behind Pari I guess.''
\end{quote}
\item Robert Bradshaw and Yi Qiang: Improve integration of {\dred GMP-ECM}
into SAGE; make distributed computation using GMP-ECM from SAGE easy.
\end{itemize}
\end{frame}

\section{Modular Forms}
\begin{frame}
\frametitle{Modular Forms}
Me, Ifti B. (USC), David K. (Sydney), Jordi Q. (sabbatical at UW)
\begin{itemize}
\item Ifti Burhanuddin, David Kohel, and I -- implemented the {\dblue Mestre method
of graphs}; need to optimize.
\item Jordi Quer is visiting me at UW this quarter -- will implement
general congruence subgroups; extend {\dblue modular symbols computations}. 

\end{itemize}

\end{frame}


\section{The SAGE Notebook}
\begin{frame}
\frametitle{The SAGE Notebook}
Alex Clemesha (was a UCSD undergrad), Tom Boothby (UW undergrad), 
Dorian Raymer (UCSD physics), Bobby Moretti (UW undergrad)
\begin{itemize}
\item {\dred Automated testing} (Alex C.) -- he just implemented a system that
records all input to the notebook, can play it back, check that results
agree. 
\item {\dred Security} (Tom B.) -- plan to move to SSL and/or Twisted. 
\item {\dred More Wiki-like functionality} (Tom, Alex, Dorian) -- easier editing of pages, markup
between compute cells, tracking of all versions of a worksheet.
\item {\dred Special purposes apps} -- online quiz system for college teachers,
specialized web sites that run SAGE behind the scenes.
\end{itemize}
\end{frame}

\section{The SAGE Foundation}

\begin{frame}
\frametitle{SAGE Foundation: What is the purpose of SAGE?}
\begin{itemize}
\item
Be a comprehensive mainstream high quality open source free mathematics software system. 
\item Unify free open source mathematics software. 
\item To provide everyone (students, computer scientists, professional, ...), with stimulating, educational, high quality, open source, mathematical software for learning about and producing research in mathematics, at no cost. 
\end{itemize}
\end{frame}
\begin{frame}
\frametitle{Why does the SAGE Mathematics Foundation exist?}
\begin{itemize}
\item Be a {\dblue not-for-profit} tax-exempt organization under {\dblue Section 501(c)(3)} 
of the IRS tax code. Can receive donations, license fees, payment for technical support, etc. Resulting money can then be used to support students, visitors, purchase of equipment, workshops, and give grants to applicants for SAGE development. 
\item Provide an {\dblue advisory board} to help people applying for grants (e.g., from NSF), for conferences, and deciding how to use funds they have.  (First board: 
David Joyner, William Stein, A grad student (to be determined),
Tom Boothby (UW undergrad).)

\item Protect SAGE developer's {\dblue intellectual property rights}. 
{\dred Copyright will stay with authors}; all coded submitted must be under the 
{\dred GPL} (or compatible) license. 
\item {\dblue Trademark} and protect the SAGE name. 
\item To improve the {\dblue accessibility of mathematics} for everyone with a computer. 
\item To constantly improve the {\dblue interactive exploratory experience} available for anyone to learn about or perform research in mathematics using the SAGE program. 
\end{itemize}
\end{frame}

\begin{frame}
\frametitle{What is the Foundation going to do to achieve this purpose?}
\begin{itemize}
\item Run {\dblue workshops}. 
\item Create an {\dblue advisory board} of directors. 
\item {\dblue Make available} on the internet, at no cost to the user, the SAGE program and extensive documentation. 
\item {\dblue Strongly encourage} SAGE developers, {\dblue funding}
 and/or training them if fiscally possible. 
\item Support SAGE end users by {\dblue hiring user support staff} which 
fixes reported bugs as soon as possible or offering work-arounds, 
offers programming advice, 
provides requested functionality, when possible. 
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{What are our guiding principles?}
\begin{itemize}
\item {\dblue All software} included in the SAGE core distribution must be 
{\dblue free and open source}, and arbitrary modifications and 
redistribution of every single line must be allowed. 

\item We should provide a {\dblue model for the mathematical community} of 
software development with a strong emphasis on 
{\dblue openness, community, cooperation, and collaboration}. 

\item We should always strive to create {\dblue professional quality 
software} and documentation that is available to everyone. 
That software must be {\dblue high quality, accessible, open source, and free}
for everyone to download and use at no cost. 
\item We strive to provide an {\dblue encouraging, stable, productive, programming environment}
 for developing future mathematical programming projects.
\end{itemize}
\end{frame}


\end{document}


