For the help sessions and in order to allow you to focus on the actual assignments (rather than dealing with installation difficulties and licenses), we provide links to pre-installed solvers that are accessible via web browsers:
Problem 1 (in Assignment 1): Effortless and free access to
MIP solvers is provided by the NEOS Server for
Optimisation (search for "mixed integer linear programming").
We then recommend you use the world-class commercial MIP solver Gurobi Optimizer (or, but only in
case of a temporary licensing issue with Gurobi at NEOS, the
open-source MIP solver HiGHS), via the AMPL modelling language: when using the
NEOS server, you do not need to install the AMPL integrated
development environment (IDE) or AMPL command-line interface (CLI)
or a MIP solver. Use a commands file with
option gurobi_options 'outlev=1';
solve;
# Write display commands here:
display ___;
in order to turn on verbose printing, which includes the optimality
gap.
The effort of installing the following free alternative is outside the course time budget (and we have no resources to help you with installation issues), since NEOS provides access to installed versions: If you have and prefer to use your own hardware, then you can install AMPL bundled with Gurobi Optimizer by following the instructions of the file installing-AMPL.txt in the Files section at the AD3 page of Studium: a course license was provided free-of-charge by AMPL.com: it expires on 15 July 2025 and can only be used for course purposes; use the AMPL command option solver gurobi; option gurobi_options 'outlev=1'; before you run solve in order to turn on verbose printing, which includes the optimality gap.
The AMPL book can be downloaded free of charge, but you normally do not need to read it, as the sample models on the lecture slides suffice.
Problem 3 (in Assignment 2): We recommend you use the SAT solver MiniSat. Use the DIMACS CNF format for SAT solvers, by DIMACS, the Center for Discrete Mathematics and Theoretical Computer Science.
Problem 4 (in Assignment 2): We recommend you use the SMT solver Z3 (possibly via its playground web interface). or the web interface to the SMT solver Princess. Use the SMT-LIB language for SMT solvers (tutorial; newer versions of SMT-LIB do not affect Assignment 2).
The Coursera on-line course Solving Algorithms for Discrete Optimization has lectures on mixed integer programming (MIP) and local search (SLS); see the advertisement for this course on YouTube.
The Coursera on-line course Discrete Optimization also has lectures on mixed integer programming (MIP) and local search (SLS); see the advertisement for this course on YouTube.
VisuAlgo, visualising data structures and algorithms through animation, a project led by Steven Halim
Data Structure Visualizations by David Galles
Dictionary of Algorithms and Data Structures by Paul E. Black
Algorithms, a textbook by Robert Sedgewick and Kevin Wayne, fourth edition, published by Addison Wesley in 2011
The Stony Brook Algorithm Repository by Steven Skiena, based on his textbook The Algorithm Design Manual, third edition, published by Springer-Verlag in 2020
Algorithms, a textbook by Sanjoy Dasgupta, Christos Papadimitriou, and Umesh Vazirani, published by McGraw-Hill in 2007
Algorithm Design: Foundations, Analysis, and Internet Examples, a textbook by Michael T. Goodrich and Roberto Tamassia, published by John Wiley & Sons in 2001
Algebraic Dynamic Programming (ADP), a method to design and implement, tune, test, and teach dynamic programming algorithms
MathWorld, allegedly the web's most extensive mathematics resource
We highly recommend you learn or use LaTeX for typesetting your assignment reports and presentation slides in a professional way, but this is optional. The learning of LaTeX is outside your time budget for this course, but very well-invested as you will find out during the course or later. Here are some LaTeX resources:
Our provided skeleton reports also contain examples of all
LaTeX commands you need for this course; from the command line (or
with Emacs/Aquamacs), compile with pdflatex
(once or twice, depending on whether cross-references need to be
recomputed), and run bibtex whenever the bibliography
was modified
The LaTeX wikibook: a gentle but thorough introduction
Don't know the LaTeX code for that mathematical symbol you need? Draw it by hand at Detexify, and the applet will find the code for you
clrscode4e (documentation) package for typesetting algorithms like in CLRS4
Recommended text editors: Emacs, Aquamacs, and share-editing via Overleaf; we strongly recommend not to use WYSIWYG editors for LaTeX like LyX