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

January 11, 2007,
Undergraduate Math Sciences Seminar\\

\includegraphics[width=22em]{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{SAGE: The Goal}

{\Large
\begin{enumerate}
\item
 Create a free open source {\dblue viable alternative} to
 the {\dred proprietary expensive} systems Maple, Mathematica, MATLAB, and Magma.
 \end{enumerate}
}
\vfill
Nobody has figured out how to do this and not sold out.

\vfill
I intend to do this or die trying.  Soon.  {\dred You can help.}

\vfill
{\small (Remind me to record this lecture if I'm not already!)}

\end{frame}

\section{Historical Background}
\begin{frame}
\frametitle{The Typical Math Software Lifecycle}
The big math software MATLAB, Maple, Mathematica, MuPad, REDUCE, Axiom, and Macsyma
have mostly followed this lifecycle:
\begin{enumerate}
\item Government or public supported {\dblue academic research project}.
\item Form a {\dblue commercial company} (lawsuits).
\item {\dblue Annoy} mathematicians (software patents, lawsuits, etc.): 
\begin{quote}
When Mathematica first came out, academics were used to the idea that any software they cared about was free--at least to them.I thought there was a serious market for Mathematica in the academic market. We had to dig in our heels and say this is going to cost you real money. People got very upset about that.\\
 -- Stephen Wolfram (1996)
\end{quote}%http://www.stephenwolfram.com/interviews/96-latimes/
\item {\dblue Profit!!!} Take a lot of money from universities and students -- tens 
of millions per year; enough to support a serious
company...
\end{enumerate}
Macsyma, REDUCE and MuPad not so healthy;
 sometimes {\em old} academic version emerges as open source.
\end{frame}

\begin{frame}
\frametitle{The GPL and ``open source''}
\begin{enumerate}
\item Mathematicians became {\dblue aware} of the GPL software license
after MATLAB, Maple, Mathematica, MuPad, REDUCE, Axiom, and Macsyma were
all well into production. 
\item PARI, GAP, Maxima, Singular, and Macaulay2 are all very {\dblue original
exciting math software projects} that are developed
at universities and available for {\dgreen free}. 
\item All are licensed under the {\dblue GPL: Gnu Public License}.
\item They will {\dblue never be proprietary} expensive software
because their license forbids it and their copyright is 
widely distributed.
\item They are {\dblue the foundation 
for SAGE}, along with Python and some libraries.
\end{enumerate}

\end{frame}



\begin{frame}[fragile]
\frametitle{Does Open Source Matter for Math Research?}

``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{1ex}

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{1ex}

-- J. Neub\"user (1993) (he started GAP in 1986).
\vspace{-.5ex}

{\tiny By the way, you can find Huppert's book {\em Endliche Gruppen I}
on Amazon.com -- it costs {\dred \$158} from Springer.}
%http://www.amazon.com/Endliche-Gruppen-Grundlehren-mathematischen-Wissenschaften/dp/3540038256/sr=1-1/qid=1168540240/ref=sr_1_1/105-9366320-5721257?ie=UTF8&s=books
\end{frame}

\begin{frame}[fragile]
\frametitle{Example: Maple}


There is a new PDE solver that will be in
{\dblue Maple}, written for free by a mathematician.  
My student found out about
it at a conference, and wanted to create something similar for SAGE.
Someone remarked {\em ``I imagine this would be 
quite difficult but don't see that "copying" would be an issue.''}
{\dblue This opinion about Maple is common...}
\vspace{0.5ex}
We wrote to Maple to be sure; they said that once anyone
includes their routines in Maple it becomes {\dred illegal to 
use them as a basis for doing anything anywhere else ever}.

{\small
\begin{verbatim}
Reproducing and redistribution of Maple code is a violation of 
the license agreement.  this is a direct violation of the EULA.
[...] Without the express written permission of Maplesoft, 
Licensee shall not, and shall not permit any Third Party to:
(a) reproduce, transmit, modify, adapt, translate or create 
any derivative work of, any part of the Software, in whole 
or in part ...
(b) reverse engineer, disassemble, or decompile the Software, 
create derivative works based on the Software, or otherwise 
attempt to gain access to its method of operation or source;
Sincerely, Maplesoft Technical Support
\end{verbatim}}



\end{frame}


\begin{frame}
\frametitle{SAGE makes new things possible}

The {\dblue free} and very {\dblue web-browser friendly} nature of 
SAGE is creating new possibility for mathematical education.

\begin{enumerate}
\item Web sites can use SAGE as a backend for arbitrary
mathematics calculations.
\item Licenses for all the commercial programs forbid this,
no matter how much you pay them. 
\end{enumerate}

\end{frame}

\begin{frame}[fragile]
\frametitle{For example...}
\small
\begin{verbatim}
Date: Mon, 19 Dec 2005 16:54:09 -0800From: "John Cannon" <john@maths.usyd.edu.au>Subject: Magma calculator
William,

This is to formally advise you that your permission to run ageneral-purpose calculator based on Magma ends on Dec 31, 
2005. This was originally set up at your request so students 
in your courses at Harvard could have easy access to Magma. Your making a calculator available has been an interesting 
experiment and we plan to continue it in modified form out 
of Sydney (at least for for the time being). 
 Please confirm receipt of this letter.Wishing you a happy Christmas,
 John
\end{verbatim}
\end{frame}


\begin{frame}
\frametitle{Background: From HECKE 0.1 to SAGE 2.0}
\large
\begin{itemize}
\item {\dblue 1997--1999:} HECKE -- my free C++ program for {\dred modular
forms} (I wrote an interpreter for it). 
\item {\dblue 1999--2004:} I wrote $>25,000$ lines of Magma code.
\item {\dblue Feb 2004:} Wanted something with a broader scope (not just algebraic research mathematics), a modern interpreter, and {\dblue open source} (!).
  \item {\dblue Feb 2005:} I got job offers with {\dgreen tenure} -- {\dred SAGE 0.1}. 
\item {\dblue Feb 2006:} {\dred SAGE Days 1} workshop -- {\dred SAGE 1.0}.
\item {\dblue June 2006:} {\dred High school} workshop -- Notebook.
\item {\dblue August 2006:} {\dred MSRI Grad student} workshop.
\item {\dblue October 2006:} {\dred SAGE Days 2} workshop.
\item {\dblue Now:} Push for SAGE 2.0 by end of month!
\end{itemize}

\end{frame}

\section{What is SAGE?}

\begin{frame}
\frametitle{What is SAGE?}
{\Large SAGE is:}
\vfill
{\Large
\begin{enumerate}
\item {\dred A Distribution} of free open source math software. 
75MB source tarball that builds self-contained.
\item {\dred New Readable Code} that fill in gaps in functionality; implement
new algorithms.
\item {\dred A Unified Mainstream Interface} to
math software: to {\dblue Magma}, {\dblue Macaulay2}, 
Singular, {\dblue Maple}, MATLAB, Mathematica, Axiom, etc.
\end{enumerate}
} 
\end{frame}

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


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

\vfill 

\begin{itemize}
\item {\dred Undergraduates}:
have many {\dblue extremely interesting} ideas;
superb at researching available free software;
good programmers.

\item {\dred Many graduate students}:
 excellent at implementing optimized code and finding
fast algorithms.

\item {\dred Faculty and computer professionals}: 
general direction, great writing, and quality control.


\end{itemize}

\end{frame}

\begin{frame}\frametitle{SAGE Days 2 at UW: Coding Sprints...}
\includegraphics[width=\textwidth]{sagedays2moment.png}
\vfill
{\small Bobby Moretti (UW undergrad), Robert Miller (UW grad),
David Harvey (Harvard grad), Joel Mohler (grad),
David Joyner (USNA), Bill page (Axiom).}
\end{frame}

\begin{frame}
\frametitle{Upcoming SAGE-related Workshops I'm Organizing}
\begin{itemize}

\item {\dred Sage Days 2.5 -- Parallel Computation Workshop} at MSRI, Jan 29--Feb 2, 2007.  Yi Qiang (UW undergrad!) is an invited speaker.


\item {\dred SAGE Days 3} at IPAM (in LA) Feb 17--21, 2007.


\begin{center}
\includegraphics[width=0.4\textwidth]{sd3-motivator-mozaic.jpg}
\end{center}

\item {\dred AIM} workshop, databases
in SAGE, July 30-Aug 3, 2007.
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{The SAGE Website}
\begin{center}
{\dblue\LARGE The SAGE Website}
\end{center}
\begin{enumerate}
\item {\dred Website:} \url{http://modular.math.washington.edu/sage}
\item {\dred Free online SAGE notebook:} 
  \url{http://sage.math.washington.edu:8100}
\item {\dred Documentation:} Tutorial, Install Guide, Programming
Guide, Reference Manual, Constructions.
\item {\dred Targeted Platforms:} OS X, Linux, and
Windows (Cygwin).
\item {\dred Mailing Lists:} sage-devel (hundreds
of messages/month),  sage-announce, sage-forum, sage-support, and
{\dblue sage-uw}. 
\item {\dred Wiki:} \url{http://sage.math.washington.edu:9001/}
\item {\dred Bug Tracker:} \url{http://sage.math.washington.edu:9002/sage_trac}
\item {\dred IRC Chatroom:} {\tt \#sage-dev} on irc.freenode.net
\end{enumerate}
\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}  (libcf, libfactory) \\\hline
Database & {\dred ZODB}, Python Pickles \\\hline
Graphical Interface & {\dred SAGE Notebook, jsmath} \\\hline
Graphics &	{\dred Matplotlib, Tachyon, GD}   \\\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, Numpy, etc.} \\\hline
Symbolic computation, calculus  &	{\dred Maxima}  \\\hline
\end{tabular}
\end{center}
\vfill
All core components are {\dred free and open source} (mostly GPL'd).  You may
{\dred read the code} and {\dred change
anything} in SAGE or any of the core libraries
it includes, 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}

Python and Pyrex code --- {\dred designed to be readable}:
\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

99500 UNIQUE Source Code Lines (including docstrings):
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
                */*/*.pyx */*/*.pyx |sort |uniq | wc -l
99500
11567 UNIQUE Input Documentation Examples:
$ cat */*.py */*/*.py */*/*/*.py */*.pyx \
          */*/*.pyx */*/*.pyx |sort|uniq|grep "sage:" | wc -l
11567
\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 {\dred interfaces to}:
Axiom, GAP, GP/PARI, Kash, Macaulay2,
Magma, Maple, Mathematica, MATLAB, Maxima, Octave, Singular, etc.

\vfill
\item  Wide range of {\dred functionality}.
\vfill
\item Unified {\dred command completion and help}.
\vfill
\end{itemize}

\end{frame}

\begin{frame}
\frametitle{Some UW Undergraduates Who Have Contributed
Substantially to SAGE}
\begin{enumerate}
\item {\dblue Tom Boothby} -- The SAGE Notebook, powering algorithms,
elliptic curves 
\vfill
\item   {\dblue Emily Kirkman} -- some linear algebra; lots of work
on the SAGE graph theory package.
\vfill
\item   {\dblue Bobby Moretti} -- SAGE Calculus, some group theory, packaging,
chroot jails.
\vfill
\item   {\dblue Yi Qiang}  -- Distributed SAGE
\vfill

\end{enumerate}

\end{frame}

\begin{frame}
\frametitle{How You Can Help}

 \begin{enumerate}
 \item Become a {\dblue SAGE Developer}:
 \begin{itemize}
 \item There are employment and research opportunities with me. (Apply for
 VIGRE or Mary Gates funding, use my grant, volunteer, etc.)
 \item Apply to the UW summer REU -- I will advise some SAGE development.
 \end{itemize}
 \vfill

 \item {\dblue Use SAGE} (and report any bugs you find). 
 \vfill

 \item {\dblue Tell people} about SAGE.  Put a link on {\dblue your website}. 
\vfill
 \item Take {\dblue my undergrad number theory course} this spring.
\vfill
 \item I am working on creating a general math software course
 for next year. 
 {\dblue Express interest} in the creation of such a course.
 \vfill
 \item Come by my office (423) with your laptop and {\dblue install SAGE}.
\end{enumerate}
\end{frame}


\end{document}


