Summary
The course surveys applications of mathematics in various areas of computer science. The course consists of six biweekly two-hour lectures. During each lecture, we raise a problem in computer science, review a mathematical concept relevant for a solution of the problem, and finally see how mathematics is used to solve the problem in practice. There are five graded homework assignments. In homework assignments, the students apply mathematical concepts reviewed in class to computer science tasks. The assignments are implemented in Python, in Google Colab.
How we learn
We meet biweekly (every over week) for two hours. Assignments are published in the Homework section. There will be 5 graded homework assigments (first assignment will not be graded). Homework assignments are done individually.
We use Slack as the platform for questions and
discussions of class material and homework. Sign up
with your BGU e-mail address (e.g. almonip@post.bgu.ac.il).
Lectures
Introduction of course’s resources and orgranization: website, Slack, Zoom, Google Colab, Python. Logarithm and exponent as mathematical functions, and their role in performing stable floating point computations in computer science.
- Taylor series, optimal polynomials, and Remez algorithm for approximate function computation; recording; notebook.
Computations involve obtaining values of library functions, such as exp, log, sin, cos, erf etc. These functions are not ‘built-in’ into the computer and must be approximated using primitive operations (+, -, *, /). We will discuss options for polynomial approximations of functions using different approaches and see how functions are computed in the standard library of a computer language.
Modular arithmetics is a seemingly basic idea of returning both quotient and remainder as the results of integer division. Quite surprisingly, modular arithmetic has important applications in computer science. We will look at two applications: hashing and integrity checking.
Linear algebra deals with linear equations and with related mathematical problems. Linear algebra operates on matrices and vectors, representing coefficients and unknowns in linear expressions. Square matrices have many interesting features, one of them is the existence of eigenvectors and eigenvalues. Despite pure mathematical uses, eigenvalues find many applications in computer science. We will explore one of them, Google PageRank, the original algorithm behind Google’s revolutionary search engine.
Calculus is in the core of many scientific methods in natural sciences. Differential calculus is concerned with finding and computing derivatives of functions. Derivatives are important for efficient optimization algorithms. We will learn about algorithmic differentiation, a universal method for computing derivatives of program code, and see examples of its use in modern computation.
Complex numbers are an extension of real numbers, and take the form a + ib where i, the imaginary number, satisfies i² = -1. Complex numbers have many exciting purely mathematical features. However, they also have wide practical uses in computer science, such as signal processing and noise reduction. We will discuss some of the uses.
Homework
Assignments must be submitted via Moodle. To submit the assignment, download (File → Download .ipynb in Google Colab) the notebook, then upload the downloaded notebook to Moodle.
- Assignment 1: logarithm and exponent, submission deadline Oct 20th, 2021, 23:59. This assignment will not be graded — use it to become familiar with the routine.
- Assignment 2: approximating mathematical functions — deadline Nov 3rd, 2021, 23.59.
- Assignment 3: applications of modular arithmetics — deadline Nov 17th, 2021. 23:59.
- Assignment 4: matrices, eigenvectors, Google PageRank — deadline Dec 1st, 2021, 23:59.
- Assignment 5: differentiation and optimization — deadline Dec 18th, 2021, 23:59.
- Assignment 6: Fourier transform — deadline Jan 5th, 2022, 23:59.
Links
- Google Colab — Google online development environment, based on Jupyter Notebooks. No installation required.
- Introduction to Python — interactive Python tutorial, in Google Colab.
- Slack space — slack workspace for the course. We will use Slack as the platform for questions and discussions of class material and homework (sign-up link).
About
Taught and maintained by David Tolpin.