CoCalc Public Fileswww / wiki / edu(2f)2010(2f)581d.htmlOpen with one click!
Author: William A. Stein
Compute Environment: Ubuntu 18.04 (Deprecated)
 [top] [TitleIndex] [WordIndex]


Math 581d: Computer Programming for Pure Mathematicians

This course is about the use of computers to help with pure research mathematics. It will not discuss applied mathematics, for which there are many existing courses in the UW applied mathematics department (e.g., by Randy Leveque, and others).

Papers to read

Related Sage Courses

I taught an undergraduate course on Sage three times:

Relevant software links

General purpose mathematics software

These are general purpose math software environments that are useful for research mathematics.

  • Sage -- open source, developed by academics, not for profit

  • Magma -- closed source, developed by academics, not for profit (try it here)

  • Mathematica -- closed source, developed by an American company for profit

  • Maple -- closed source, developed by a Canadian company (that is owned by a Japanese company) for profit

Special purpose math software systems and libraries

  • Pari -- number theory, open source

  • GAP -- group theory and combinatorics, open source

  • Singular -- commutative and non-commutative algebra, open source

  • Macaulay2 -- commutative algebra, open source

  • FLINT -- number theory C library, open source

  • MPIR and GMP -- basic integer and rational arithmetic C library, open source

  • Pynac and Ginac -- C++ libraries for symbolic manipulation

  • Maxima -- symbolic calculus and more (in Lisp)

General purpose programming languages

In this course we will focus mostly on Python, Cython and C++, which provide a nice range of capabilities, which illustrate various approaches to programming with different pros and cons.

  • Python -- a popular general purpose interpreted programming language (user language of Sage)

  • Cython -- compiled variant of Python, which supports using C/C++ functions and data types directly

  • C/C++ -- a fast and popular compiled language that has been around for quite some time; a massive amount of useful research mathematics code is written in C or C++.

Though Java, C#, and Perl are popular languages, I've personally encountered little pure mathematics research code written in them (e.g., none of the above systems use Java, C# or Perl, as far as I know). All the systems listed above (except Maxima) are written in C/C++ and a special-purpose interpreter, or Python, in the case of Sage. In fact, Python itself is "just" a big C program.


2013-05-11 18:33