CSE4500 Advanced Course in Algorithms
Spring 2018: Algorithms for Polynomials and Integers
This is an advancedlevel optional course that in spring 2018 explores algorithm designs for univariate polynomials and largeinteger arithmetic, with a threefold motivation:
 The toolbox of nearlineartime algorithms for univariate polynomials and large integers provides a practical showcase of recurrent mathematical ideas in algorithm design such as linearity, duality, divideandconquer, dynamic programming, iteration and invariants, approximation, parameterization, tradeoffs between resources and objectives, and randomization.
 We gain exposure to a number of classical and recent applications, such as secretsharing, errorcorrecting codes, probabilistically checkable proofs, and errortolerant computation.
 A tantalizing open problem in the study of computation is whether one can factor large integers efficiently. We will explore select factoring algorithms both for univariate polynomials (over a finite field) and integers.
Prerequisites:
Fundamentals of algorithm design and analysis (e.g. CSE3190). Mathematical maturity.
Teacher: Prof. Petteri Kaski.
First lecture: Tuesday 16 January 2018, 1214, hall T5 (Konemiehentie 2).
Grading:
Points awarded from weekly problem sets determine the course grade. No exam.
Learning objectives
 Terminology and objectives of modern algorithmics, including elements of algebraic, approximation, online, and randomised algorithms. Ways of coping with uncertainty in computation, including errorcorrection and proofs of correctness.
 The art of solving a large problem by reduction to one or more smaller instances of the same or a related problem.
 (Linear) independence, dependence, and their abstractions as enablers of efficient algorithms.
 Making use of duality. Often a problem has a corresponding dual problem that is obtainable from the original (the primal) problem by means of an easy transformation. The primal and dual control each other, enabling an algorithm designer to use the interplay between the two representations.
 Relaxation and tradeoffs between objectives and resources as design tools. Instead of computing the exact optimum solution at considerable cost, often a less costly but principled approximation suffices. Instead of the complete dual, often only a randomly chosen partial dual or other relaxation suffices to arrive at a solution with high probability.
Synopsis of lectures
Polynomials in one variable are among the most elementary and most useful mathematical objects, with broadranging applications from signal processing to errorcorrecting codes and advanced applications such as probabilistically checkable proofs. One of the main reasons why polynomials are useful in a myriad of applications is that highly efficient algorithms are known for computing with polynomials. These lectures introduce you to this nearlineartime toolbox and its select applications, with some algorithmic ideas dating back millennia, and some introduced only in the last few years.
By virtue of the positional number system, algorithms for computing with polynomials are closely related to algorithms for computing with integers. In most cases, algorithms for polynomials are conceptually easier and thus form our principal object of study during our weekly lectures, with the corresponding algorithms for integers left for the exercises or for further study.
A tantalizing case where the connection between polynomials and integers apparently breaks down occurs with factoring. Namely, it is known how to efficiently factor a given univariate polynomial over a finite field into its irreducible components, whereas no such algorithms are known for factoring a given integer into its prime factors. Indeed, the best known algorithms for factoring integers run in time that scales moderately exponentially in the number of digits in the input. These lectures introduce you both to efficient factoring algorithms for polynomials and to moderately exponential algorithms for factoring integers.
Lecture schedule (tentative)

Lecture 1 (Tue 16 Jan): Polynomials and integers.
We start with elementary computational tasks involving polynomials, such as polynomial addition, multiplication, division (quotient and remainder), greatest common divisor, evaluation, and interpolation. We observe that polynomials admit two natural representations: coefficient representation and evaluation representation. We encounter the morethan2000yearold algorithm of Euclid for computing a greatest common divisor. We observe the connection between polynomials in coefficient representation and integers represented in the positional number system. 
Lecture 2 (Tue 23 Jan): The fast Fourier transform and fast multiplication.
We derive one of the most fundamental and widely deployed algorithms in all of computing, namely the fast Fourier transform and its inverse. We explore the consequences of this nearlineartimecomputable duality between the coefficient and evaluation representations of a polynomial. A key consequence is that we can multiply two polynomials in nearlineartime. We obtain an algorithm for integer multiplication by reduction to polynomial multiplication. 
Lecture 3 (Tue 30 Jan): Quotient and remainder.
We continue the development of the fast polynomial toolbox with nearlineartime polynomial division (quotient and remainder). The methodological protagonist for this lecture is Newton iteration. We explore Newton iteration and its convergence both in the continuous and in the discrete settings, including fast quotient and remainder over the integers. 
Lecture 4 (Tue 6 Feb): Batch evaluation and interpolation.
We derive nearlineartime algorithms for batch evaluation and interpolation of polynomials using recursive remaindering along a subproduct tree. In terms of methodological principles, we encounter algebraic divideandconquer, dynamic programming, and spacetime tradeoffs. To generalize and obtain analogous concepts and fast algorithms for integers, we recall the Chinese Remainder Theorem and study its generalization to ideals in rings. As an application, we encounter secret sharing.  Tue 13 Feb: Exam week, no lecture.

Lecture 5 (Tue 20 Feb): Extended Euclidean algorithm and interpolation from erroneous data.
This lecture culminates our development of the nearlineartime toolbox for univariate polynomials. First, we develop a divideandconquer version of the extended Euclidean algorithm for polynomials that recursively truncates the inputs to achieve nearlinear running time. Second, we present a nearlineartime polynomial interpolation algorithm that is robust to errors in the input data up to the informationtheoretic maximum number of errors for correct recovery. As an application, we encounter ReedSolomon errorcorrecting codes together with nearlineartime encoding and decoding algorithms. 
Lecture 6 (Tue 27 Feb): Identity testing and probabilistically checkable proofs.
We investigate some further applications of the nearlineartime toolbox involving randomization in algorithm design and proof systems with probabilistic soundness. We find that the elementary fact that a lowdegree nonzero polynomial has only a small number of roots enables us to (probabilistically) verify the correctness of intricate computations substantially faster than running the computation from scratch. Furthermore, we observe that proof preparation intrinsically tolerates errors by virtue of ReedSolomon coding. 
Lecture 7 (Tue 6 Mar): Finite fields.
This lecture develops basic theory of finite fields to enable our subsequent treatment of factoring algorithms. We recall finite fields of prime order, and extend to primepower orders via irreducible polynomials. We establish Fermat's little theorem for finite fields and its extension to products of monic irreducible polynomials. We also revisit formal derivatives and taking roots of polynomials. 
Lecture 8 (Tue 13 Mar): Factoring polynomials over finite fields.
We develop an efficient factoring algorithm for univariate polynomials over a finite field by a sequence of reductions. First, we reduce to squarefree factorization via formal derivatives and greatest common divisors. Then, we perform distinctdegree factorization of a squarefree polynomial via the polynomial extension of Fermat's little theorem. Finally, we split to equaldegree irreducible factors using probabilistic splitting polynomials. 
Lecture 9 (Tue 20 Mar): Factoring integers.
While efficient factoring algorithms are known for polynomials, for integers the situation is more tantalizing in the sense that no efficient algorithms for factoring are known. This lecture looks at a selection of known algorithms with exponential and moderately exponential running times in the number of digits in the input. We start with elementary trial division, proceed to look at an algorithm of Pollard and Strassen that makes use of fast polynomial evaluation and interpolation, and finally develop Dixon's random squares method as an example of a randomized algorithm with moderately exponential expected running time.