**Lecturer:** Dr. Johannes Schmitt

**Time and Place:** Thursday, 8:00 - 9:45, Room Y27H52 or via the following zoom link

Further information can be found in the UZH Course Catalogue, or you can look at the overview video of the course.

Computer algebra systems (CAS) are computer programs that allow both symbolic and numerical computations in many areas of mathematics. This includes both basic operations in Linear Algebra or Analysis, but also highly specialized functions to manipulate groups, graphs, representations, to name but a few.

Using a CAS, one can explore a mathematical problem by computing examples, testing conjectures and looking for structures and patterns in the resulting output. Moreover, when studying areas of mathematics not covered by standard software, it can actually be helpful to write new code and specialized functions for the CAS.

Our course will be an introduction to SageMath, an open source mathematics software system with a broad range of capabilities. On the one hand, we will learn how to apply SageMath in concrete computations (e.g. to compute the rank of a matrix, the limit of a given sequence, the solutions of a system of equations, etc). On the other hand we are going to see how to write new code, or even a software package (e.g. for solving a Rubik's cube or interpolating a set of data points).

It turns out that there are currently many more students registered for the course than places in the room Y27H52. Thus, each week only some students can come to the lecture, while others will have to watch the stream. Below is a list of doodles where you can register for attending in person. Sorry for the inconvenience!

The doodles will be published one week in advance. If you attended in one week, please wait until Monday of the next week before filling in your name in the doodle, to give other students a chance to participate. Also, if you cannot come please remove your name again to free up the space, thanks!

Lecture 1 (24 Feb), Lecture 2 (03 Mar), Lecture 3 (10 Mar)

The lectures will go back and forth between presentation of course material by myself followed by short exercises that you have a few minutes to work on, before the solution is presented. To be able to participate in these exercises, you need a computer and you should have a look at this guide explaining how to use SageMath on that computer. We will also discuss this in the first lecture(s), but if you plan to install SageMath on your own computer, you better do so before.

Below you find the files we use in class, which you should download before the lecture (with right-click and "Save file as"). Alternatively, you can click on the CoCalc link and choose

Edit -> Use CoCalc Anonymously -> Create Project -> Copy * to ** -> Open your copy of **to open and modify the file in your browser without installation.

Topic | CoCalc | Recording | Content |
---|---|---|---|

01 Introduction | link | video | Motivation, plan of the course, overview of SageMath, some first computations |

02 Linear Algebra | link | video | Python warmup: lists; matrices, linear spaces |

03 Numbers and symbolic expressions | link | v1 v2 v3 v4 | Python warmup: conditional execution (if/else), loops (for), dictionaries; numbers (integers, rationals, algebraic numbers, ...), symbolic expressions |

04 Analysis and power series | link | v1 v2 | Python warmup: functions; plots, limits, derivatives, integrals, power series |

05 Algebra | link | v1 v2 | Python warmup: sum and prod, more iterators; group theory, polynomial rings and field extensions |

06 Combinatorics | link | video | Python warmup: sets, finding extreme values; enumerating cartesian products, subsets, partitions, integer vectors, etc |

07 Classes and algebraic structures | link | v1 v2 | Classes in Python and SageMath, methods, inheritance, arithmetic operations, algebraic structures in SageMath |

08 Tools and best practices for mathematical programming | link | video | Code formats and coding style, debugging, documentation and tests, profiling and optimization |

09 Modules, packages and SageMath core development | link | v1 v2 | Python modules and packages, installation with pip, contributing code to SageMath itself |

Here you find information about the software projects, which are one of the ways to get credit for this course: Projects.ipynb

LaTeX formulas on this site powered by MathJax

Back to Johannes Schmitt's homepage