The minicourse deals with various computational problems associated with convex polyhedra in general dimension. Typical problems include the feasibility problem (is the convex polytope empty?), the representation conversion problem (between halfspace and vertex representations), the polytope volume computation, the construction of hyperplane arrangements and zonotopes, the computation of integrals and counting of lattice points. We aim to show some of the most important algorithms to solve such problems. All these essential algorithms have applications in a wide variety of topics including discrete optimization, game theory, algebraic and enumerative combinatorics, probability and statistics, cryptography and others.

- Lecture 1 ``What are convex polytopes and why you should care''
- Lecture 2 ``Basics on Convexity and Complexity''
- Lectures 3 and 4 ``Polyhedral Algorithms I: Feasibility and Computing Facets and Vertices''
- Lecture 5 ``Polyhedral Algorithms II: Optimization and Computing Faces''
- Lecture 5 1/2 ``Triangulations''
- Lecture 6 ``Computation with Lattice Points I''
- Lecture 7 ``Computation with Lattice Points II''
- Lecture 8 ``Volumes of Polytopes and Integration of Polynomials''
- Lecture 9a ``Applications I''
- Lecture 9b ``Applications I''
- Lecture 10 ``Applications II''

- ALL Homeworks and Labs:
- Polymake Mini-Reference: with just the commands we are using in this course!
- Polymake Wiki
- Most-useful sections (for this workshop) from Polymake online manual:

Polymake is designed to run on any linux system including MacOS X. It is a special ``perl-like'' language. Once you have that polytope in memory, you can ask Polymake to compute many more properties about it. For this, Polymake relies mostly on software written by others, these include CDD, LattE, LRS, JAVAVIEW, etc, etc.