summer work on Sage

2 views
Skip to first unread message

William Stein

unread,
Mar 7, 2012, 12:18:55 PM3/7/12
to uw-sag...@googlegroups.com
Hi Students in 1062,

I'm curious if anybody in this class would be very highly interested
in working (for pay) on any of the following projects fulltime this
summer. If so, send me a private email.

* Write and deploy a version the Sage notebook on Google App Engine
and Amazon EC2 (etc.): https://github.com/williamstein/simplesage_gae

* Implement 3d graphics built on the three.js javascript library and
WebGL: http://trac.sagemath.org/sage_trac/ticket/12402

* Write highly optimized code for computation of p-adic L-functions
associated to cusp forms:
http://trac.sagemath.org/sage_trac/ticket/12545

* Code for computing with general L-functions given by Euler
products: http://trac.sagemath.org/sage_trac/ticket/12015

* Implement fast computation of Hilbert modular forms over more
quadratic fields in Sage:
http://trac.sagemath.org/sage_trac/ticket/12465

* Greatly improve the pseudo-tty interfaces between Sage and the big
Ma's: Mathematica, Maple, and Matlab.

* Finish creating and deploying a C library interface to GAP:
http://trac.sagemath.org/sage_trac/ticket/6391

* Make it so Python cache's module import locations on startup, thus
greatly improving startup time for large Python modules (Volker
Braun's project from a past Bug Days) -- could also be a PSF project:
http://trac.sagemath.org/sage_trac/ticket/11729

--
William Stein
Professor of Mathematics
University of Washington
http://wstein.org

matt wiebe

unread,
Mar 7, 2012, 5:53:57 PM3/7/12
to uw-sag...@googlegroups.com
I will most likely be taking classes over the summer but I would be interested in the three.js implementation.
matt

William Stein

unread,
Mar 8, 2012, 3:27:30 PM3/8/12
to uw-sag...@googlegroups.com
Hi,

I've updated the list I mentioned below, expanding on the projects
greatly and removing the ones that require advanced number theory
background:

* Write and deploy a version the Sage notebook on Google App Engine
and Amazon EC2 (etc.): https://github.com/williamstein/simplesage_gae

GENERAL CONTEXT: This is one strategy for making http://sagenb.org
scale to millions of users. Currently http://sagenb.org gets hammered
(there are 84168 users and it is running on a single computer in the
basement of the math building!). Rewriting the notebook for GAE+EC2
may make Sage available to a much wider range of people. This is a
top priority project for me (William Stein) for April-July, with some
personal NSF funding (for my salary), but I could use help!

PREREQUISITES: Python, Javascript, Jinja2 templates, jQuery, web
application programming, Google App Engine, Amazon EC2 (or other cloud
hosting), very basic use of Sage. No advanced mathematics knowledge
is needed.

MENTOR: William Stein

BACKUP MENTOR: Jason Grout

* Implement 3d graphics built on the three.js javascript library and
WebGL: http://trac.sagemath.org/sage_trac/ticket/12402

GENERAL CONTEXT: Currently, Sage by default uses JMOL
(http://jmol.sourceforge.net/) to display 3d graphics. This is a weak
link for Sage, because Jmol is a very complicated Java applet, so on
many platforms it crashes web browsers, won't run at all, is unstable,
etc. For example, Jmol doesn't work at all on iPhones and iPads, and
probably never will. Moreover, selecting objects and manipulating them
is very hard, as is evidenced by nobody ever having succeeded in doing
so for Sage, despite much demand. The future of 3d for the web is
WebGL, which has some support by modern browsers and hardware. The
three.js is a Javascript library that allows one to describe a 3d
scene and interact with it purely from Javascript. Moreover, the
scene can be rendered in any browser that supports HTML5's canvas2d,
which is essentially all modern browsers, though it will render more
quickly when WebGL is available. The goal of this project is to do a
complete reimplement of 3d rendering for Sage using three.js, which
fully replicates all functionality that Jmol offered, so that three.js
can instead be the default.

PREREQUISITES: Javascript. Python. Foundations of 3d computer
graphics. Familiarity with 3d plotting in Sage. Calculus. No
advanced mathematics knowledge is needed.

MENTOR: William Stein

BACKUP MENTOR: Jason Grout


* Finish creating and deploying a C library interface to GAP:
http://trac.sagemath.org/sage_trac/ticket/6391

GENERAL CONTEXT: GAP (http://www.gap-system.org/) is a free open
source system for computational discrete algebra, with extensive
support for computational group theory. It has its own command line
interpreter interface. It would be extremely valuable if GAP also had
a C library interface. Volker Braun and William Stein have written a
proof of concept C library interface to GAP, but it is not ready for
production use, since it does not behave well when certain errors
occur, is based on an old version of GAP, etc. The goal of this
project would be to create a high quality complete C library interface
to GAP, based on the existing work done in this direction. This would
drastically speed up certain parts of Sage that currently communicate
with GAP via a pseudo-tty interace. The C library interface would
also be contributed back to the GAP project, making GAP (independent
of Sage) easier to embed in C programs, which would make it much more
generally useful than it currently is. (Martin Albrecht did something
similar to this for Singular, and contributed it back; it is one of
the most important improvements to Singular in years.)

PREREQUISITES: Expert knowledge of the C programming language, and a
little bit of assembler. Medium knowledge of Python and Cython. Some
background in how interpreted programming languages are
implemented. No advanced mathematics knowledge is needed.

MENTOR: William Stein

BACKUP MENTOR: Volker Braun, Martin Albrecht


* Greatly improve the pseudo-tty interfaces between Sage and the big
Ma's: Mathematica, Maple, and Matlab.

GENERAL CONTEXT: A unique feature of Sage is that it is able to
communicate with essentially every other math software system out
there, and some of that communication is fairly sophisticated,
optimized, and debugged. However, the interfaces between Sage and the
most popular commercial mathematics software systems -- Mathematica,
Maple, and Matlab -- could all benefit from substantial additional
work. They are buggy on certain platforms, don't deal well in some
cases with large outputs, don't draw plots well, etc. Currently, the
interfaces are all pseudo-tty based, but it may be possible in some
cases to create alternative interaces (with exactly the same API) that
use proprietary socket-based protocols, e.g., MathLink
(http://www.wolfram.com/solutions/mathlink/) for Mathematica. Now
that the API of the Sage interfaces is very stable (after 7 years!),
the goal of this project is to investigate and implement the best
possible ways of implementing this API for each commercial math
software system.

PREREQUISITES: Very good knowledge of Python.

MENTOR: William Stein

BACKUP MENTOR: Mike Hansen


* Make it so Python cache's module import locations on startup, thus

greatly improving startup time for large Python modules.
http://trac.sagemath.org/sage_trac/ticket/11729

GENERAL CONTEXT: When people type "sage" to start Sage, it often takes
a long time for Sage to startup. This is incredibly annoying. The
main reason for this is that Python uses the stat system call to get
basic information about files well over 50,000 times every single time
Sage starts. This information is expensive to compute, and almost
never changes. Thus it should be cached. Volker Braun has written a
proof of concept patch that does such caching, but work remains. The
goal of this project would be to finish that patch and get it included
in Sage. Moreover, the project should go further and look at how to
make that caching approach generic so it could be used by other
projects outside Sage. This could have the potential impact of making
"Python + scientific library" startup time better for millions of
people.

PREREQUISITES: Very good knowledge of Python and C.

MENTOR: William Stein

BACKUP MENTOR: Volker Braun

On Wed, Mar 7, 2012 at 9:18 AM, William Stein <wst...@gmail.com> wrote:

William Stein

unread,
Mar 8, 2012, 3:27:50 PM3/8/12
to uw-sag...@googlegroups.com
On Wed, Mar 7, 2012 at 2:53 PM, matt wiebe <mattw...@gmail.com> wrote:
> I will most likely be taking classes over the summer but I would be
> interested in the three.js implementation.

OK -- please keep me posted when you know more about your summer plans.

Reply all
Reply to author
Forward
0 new messages