We use the MiniZinc modelling language and toolchain (free; open-source):
The MiniZinc toolchain and all backends that must be used in this course are installed on the ThinLinc Linux hosts of the IT department: this is explained in our warm-up for MiniZinc
We have prepared some exercises on comprehensions (no hand-in!) and strongly recommend you do them as soon as possible after the second lecture; solutions will appear in due time
For the assignments, you must use our experiment script described in our MiniZinc Cheatsheet: read this document after the warm-up session!
For your project (but not the assignments), consider using MiniZinc Python, a native Python interface for the MiniZinc toolchain, so that an approach with any combination of pre-processing, running MiniZinc, possibly on a pipeline of multiple models, and post-processing fits into a standalone code (but at the cost of not being able to use the experiment script of the previous item): see our instructions for a toy model
Our Contact, Help, Ethics, and FAQ page lists resources where you can get help on MiniZinc, provided ethics guidelines are followed
We unfortunately have no resources to provide any support for installing the MiniZinc toolchain or backends on your own computer
The MiniZinc Handbook includes installation instructions (in case you want to install on your own computer some of the backends we use in this course), a tutorial, the User Manual, and the Reference Manual
Try the nice MiniZinc IDE (Integrated Development Environment) (the free JetBrains Mono font makes the maths and logic operators look nice)
MiniZinc Python is a native Python interface for the MiniZinc toolchain
The MiniZinc models of the MiniZinc Benchmarks and the annual MiniZinc Challenge are published
The MiniZinc Team moderates a MiniZinc Discussion Group; do not ask for advice on modelling in general, or on how to solve an assignment
There are questions tagged with MiniZinc at Stack Overflow; do not ask for advice on how to solve an assignment
To report an issue to the MiniZinc Team, follow the relevant link at Downloads
The Coursera on-line courses Basic Modeling for Discrete Optimization and Advanced Modeling for Discrete Optimization are also based on MiniZinc, but have a less pronounced model-once-solve-everywhere focus than this course; see the advertisement for these courses on YouTube
Reference book by Mark Wallace: Building Decision Support Systems using MiniZinc, Springer, 2020, ISBN 9783030417321
CSPlib, a library of constraint problems, has MiniZinc models for some problems
HÃ¥kan Kjellerstrand's MiniZinc page has a lot of MiniZinc models and a MiniZinc mode for Emacs
LaTeX parameters for typesetting MiniZinc source code using the listings package
The FAdo toolkit has many algorithms (including conversion and minimisation) for working with a regular expression, NFA, or DFA
Another toolbox has converters (not checked by the instructors) for transforming a regular expression into an NFA or (minimised) DFA
We highly recommend you learn or use LaTeX for typesetting your assignment & project reports 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 this course or later, for example because of our experiment-running script. Here are some LaTeX resources:
See our warm-up for LaTeX
See the demo report for
assignments & project and the project report (LaTeX source),
with examples of all LaTeX commands you need for this course. From
the command line (or with Emacs or 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
Recommended text editors: Emacs, Aquamacs, and share-editing via Overleaf; we strongly recommend not to use WYSIWYG editors for LaTeX like LyX