# Project Ideas for Math 480

- See Lecture 11 -- Combinatorics, Part 1. There is a notion of generalized Bernoulli numbers associated to Dirichlet characters and I co-authored an unfinished paper to efficiently compute them. Implementing that algorithm and/or helping finish that paper is possible student project. Another project would be just to reimplement in Cython the PARI algorithm Sage uses to compute bernoulli(n), since honestly the comments in that code do not inspire confidence. Contact William Stein for more details.
Do all the challenges at The Computer Language Benchmarks Game in Cython. See if we can get Cython listed with the other languages.

- Write a notebook-based *debugger*, i.e., an interface to the Python pdb debugger that is fully usable through the Sage notebook, and resembles the command line Python debugger:

sage: %pdb Automatic pdb calling has been turned ON sage: factor(0) --------------------------------------------------------------------------- <type 'exceptions.ArithmeticError'> Traceback (most recent call last) /Users/was/edu/2007-2008/sage/book/<ipython console> in <module>() ... <type 'exceptions.ArithmeticError'>: Prime factorization of 0 not defined. > /Users/was/build/sage-3.0.alpha1/local/lib/python2.5/site-packages/sage/rings/arith.py(1675)factor() 1674 if n == 0: -> 1675 raise ArithmeticError, "Prime factorization of 0 not defined." 1676 if n == 1: ipdb> [many cool commands are available]

Implement plotting of 2d graphs (you know "networks", with vertices and edges). Currently Sage uses networkx for this, but networkx plotting is ugly. One could do much better directly in Sage. Note -- the layout part is not needed -- we already have a fast "spring layout" implementation. All you have to do is draw vertices and edges (and loops and multiedges). If you wanted to go further, you could then pretty easily address the issues at http://trac.sagemath.org/sage_trac/ticket/2817 and http://trac.sagemath.org/sage_trac/ticket/2684/.

- Install and configure a minimal graphical interface in the vmware image. This is inspired by this question, which I got twice today:

> Hello, how do i copy and paste from the sage command line in Vmware? Thanks The command-line vmware image doesn't have copy and paste between Windows and Linux. However, you can use putty or some other ssh client to the virtual machine as explained in the readme then cut and paste would work. This is something somebody who knew linux could easily fix by installing a minimal graphical interface into the vmware image. Unfortunately, I haven't had time to do this and haven't found a volunteer.