MAT007 Introduction to computer algebra and mathematical programming (FS22)

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).

Registration for attending in person

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

Software projects

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