What goes wrong in the SAGE notebook interface for secondary school usage
Some of (nice) sage features are not well adapted at an elementary level. In particular:
- the oriented object syntax must be avoided: a student who see for the first time functions and derivation won't be able to understand f.derive(). The interface must be intuitive from the mathematic *standard* syntax point of vue;
- the algebra under polynoms must be hided. QQbar, Number fields must stay in backend;
- the namespace is huge (a general problem of SAGE)
- the help on elementary functions is not well adapted
Supplementary:
- do a french translation of commmands (?)
- write some help files
program of secondary school in France
In bracket are the corresponding levels.
- second degree polynom [1e S]
- sequences in particular recursive ones [1e S]
- sequences and approximations : pi, e, sqrt(2), ... [1e S]
- continuity and derivation [Tale S]
- functions study and graphics [Ta1e S]
- integration[Tale S]
- elementary graph theory [Tale ES]
Lycee interface
The sage lycee interface will be based on sage-4.2 (latest version on the 31rd of October). There is a running notebook server at : https://139.124.6.88:8001 and the corresponding applied patch is at: http://iml.univ-mrs.fr/~delecroi/lycee-vd.patch
For a quick overview:
demo file for polynoms at https://139.124.6.88:8001/home/pub/0 (in french) or at https://139.124.6.88:8001/home/pub/2/ (in english)
What will be available at initialization :
Variables and numbers
- t,x,y,z : are variables (in fact element of polynomial ring over QQ)
- var : use it to create new variables. var('t1,t2,t3') will create three variables in the global namespace.
- i, I : the well known complex number
- e, pi : well known real numbers
Rings and fields:
- ZZ, QQ, RR, CC : the integers, rationals, reals and complex (there are also more complicated Zmod, Zp, Qp, RDF, CDF, ...)
- real_part, imag_part : real and imaginary part of a complex
Functions:
- cos, sin, tan, arcos, ... : trigo
- cosh, sinh, arctanh, ... : hyperbolic trigo
- sqrt : the square root function
- log, exp : logarithm in any base and exponential
Dealing with polynoms:
- roots : compute the roots of a polynom (just a messy "def roots(p): return p.roots")
- derivative, integerate : compute the derivative and primitive
- factor : performs a factorization
Geometry:
- plot : plot functions or anyobject
- point, points, point2d : plot points
- line2d : lines
- text : some text (could have some latex expression between two '$')
- show : show a graphic object
Arithmetic:
- is_prime, gcd, lcm : standard arithmetic functions
- factor
- % : the modulo operator (rest of the euclidean division)
- Zmod(n) : the ring of integers modulo n
TODO
There is still a lot of problems:
- clearing the namespace causes some crashes (there are some general memory initialization). I make research to do it properly. For now, I use a "do it, if it works it's good" method.
- sqrt(n) (log(n), exp(n), ...) returns a symbolic expression which does not evaluate correctly as boolean expression.
- help topics in the rest documentation
latex rendering in plot is not easy to have : sage: text("$" + latex(my_object) + "$", (0,0)). Is there a better way ?
latex "bug" for rational fractions : http://groups.google.com/group/sage-devel/browse_thread/thread/9d58693356e11947 and the corresponding (minor) trac ticket http://trac.sagemath.org/sage_trac/ticket/7363