SciPy 2017 Tutorial Proposal - sympy/sympy GitHub Wiki

Information

SciPy 2017, Austin, Texas • July 10-16, 2017

Title

Symbolic Computation with Python using SymPy

Tutorial Topic

SymPy

Student's Python Knowledge Level *

  • Beginner
  • Intermediate
  • Advanced

Please provide a detailed abstract of your tutorial:

SymPy is a pure Python library for symbolic mathematics. It aims to become a full-featured computer algebra system (CAS) while keeping the code as simple as possible in order to be comprehensible and easily extensible. SymPy is written entirely in Python.

This tutorial is intended to cover the basics as well as touch on more advanced topics. We will start by showing how to install and configure this Python module. Then we will proceed to the basics of constructing and manipulating mathematical expressions in SymPy. We will also discuss the most common issues and differences from other computer algebra systems, and how to deal with them. In the remaining part of this tutorial we will show how to solve mathematical problems with SymPy.

This knowledge should be enough for attendees to start using SymPy for solving mathematical problems and hacking SymPy's internals (though hacking core modules may require additional expertise).

We expect attendees of this tutorial to have basic knowledge of Python and mathematics. However, many more advanced topics will be explained during presentation.

Give us a short bio of presenters

including relevant teaching experience. If you have recorded talks or tutorials available online, please include links. *

Ondřej Čertík

Ondřej is the original author of SymPy, that he started in 2007. He earned his Ph.D. in Chemical Physics from University of Nevada, Reno in 2012, then he started as a PostDoc at Los Alamos National Laboratory (LANL) and was converted to a staff scientist there a year later. Ondřej uses Fortran and C++ for high performance production codes and Python for visualization, symbolic and numeric computation, and other tasks. He has co-taught a tutorial on SymPy at the SciPy 2013 conference.

Aaron Meurer

Aaron is the lead developer of SymPy. He works with Anthony Scopatz at ERGS. He used to work at Continuum Analytics on Anaconda and the conda package manager. He has co-taught tutorials on SymPy as previous SciPy conferences (2011, 2013, 2014 and 2016).

Gaurav Dhingra

Gaurav is a SymPy developer and a student of IIT Roorkee. He worked on Computational Group Theory as a part of his Google Summer of Code project with SymPy in 2016. Gaurav also assisted with the SymPy workshop in his college. He is interested in idea of free knowledge and often edits and creates new wikipedia articles.

Sumith Kulal

Sumith is currently a third year computer science undergraduate student at IIT Bombay. He is a contributor to SymPy as well as SymEngine. He is primarily interested in Programming Languages research and related areas. He has also collaborated research at EPFL, birthplace of the Scala functional programming language. He has delivered talks and co-taught tutorials on SymPy as well as SymEngine at PyCon India 2015 and SciPy India 2015.

Shekhar Prasad Rajak

Shekhar is a SymPy developer (GSoC 2016) and currently a final year Computer Science and Engineering undergraduate student at NIT Warangal, India. His most of the works are related to Solvers, Solveset and Set module in SymPy. Shekhar has given presentation on his GSoC'16 project work in his college. He has contributed open source projects, written in Python or Ruby. He has very much interested in programming, computer technologies.

Links to previous tutorials/talks

Please provide detailed setup instructions for all necessary software. *

We recommend that the attendees install the Anaconda Python distribution which includes SymPy, NumPy, and IPython. Once Anaconda is installed simply type the following in a terminal to install the necessary packages:

$ conda install numpy ipython-notebook sympy

Other alternative installation instructions can be found here: http://docs.sympy.org/dev/install.html

What skills are needed to successfully participate in your tutorial

Please select one:

  • None
  • Numpy basics
  • Numpy advanced
  • SciPy
  • Scikit Learn
  • Pandas
  • Matplotlib
  • C++

If other topics are a prerequisite, please explain further.

The tutorial will only assume a basic knowledge of Python. No prior knowledge of SymPy or other Python libraries is required, although it is suggested that attendees be familiar with the jupyter notebook. A mathematical knowledge of calculus is recommended.

Please provide a short Python program that can be used to verify whether a participants environment is set up correctly.

#!/usr/bin/env python

try:
    import sympy
except ImportError:
    print("sympy is required")
else:

    if sympy.__version__ < '1.0':
        print("SymPy version 1.0 or newer is required. You have", sympy.__version__)

    if sympy.__version__ != '1.0':
        print("The stable SymPy version 1.0 is recommended. You have", sympy.__version__)

try:
    import matplotlib
except ImportError:
    print("matplotlib is required for the plotting section of the tutorial")

try:
    import IPython
except ImportError:
    print("IPython notebook is required.")
else:
    if IPython.__version__ < '4.1.2':
        print("The latest version of IPython is recommended. You have", IPython.__version__)

print("""A fortran and/or C compiler is required for the code generation portion
of the tutorial. However, if you do not have one, you should not worry, as it
will not be a large part of the tutorial.""")

All tutorials will be reviewed for completeness a week prior to the conference. Do you foresee any problems meeting that deadline? *

No

Will you be available to help with setup instructions to your pre-tutorial email list in the week prior to your tutorial?

Yes

Would you like to be a member of the Program Committee?

  • Yes
  • No

Which domain would you like to review?

  • General Track
  • Data Science
  • HPC
  • Earth & Space Sciences
  • Biology & Medicine
  • Engineering
  • Social Sciences
  • Special Purpose Databases
  • Education
  • Reproducibility

Reviews received

This proposal was not selected but we received feedback from the reviewers, the names of reviewers have been removed.

Reviewer 1: 4

I know this tutorial has been successfully delivered in the past, but I would have liked to see a more detailed outline, with an exercise plan and timing information.

Reviewer 2: 5

This is a well organized tutorial consisting of introduction and use cases for beginners. Advanced user can also benefit from this tutorial.

Reviewer 3: 4

A somewhat popular topic, and builds upon previously successful tutorials. The submitter is new, but I am presuming will have the assistance of successful co-presenters, which is a plus.

Reviewer 4: 4

The team seems extremely experienced when it comes to both the underlying material and presenting it. I would suggest that the abstract be a bit more detailed so that it is clear what exactly will be covered in the talk, but given that it has been successfully presented in the past this seems sufficient.

Reviewer 5: 3

It is not clear exactly who the instructor would be. Some people are much more qualified to teach than others. I don't see exactly what audience this tutorial would like to target. Education settings? Industrial applications of symbolic math? I think that this would make the tutorial more interesting.

Reviewer 6: 4

This seems like a good choice if we want a beginner level introduction to SymPy.