# Learn Mini-CP¶

This tutorial is based on the course “LINGI2365 Constraint Programming” given at UCLouvain by Pierre Schaus.

- Part 1: Overview of CP, Filtering, Search, Consistency, Fix-point
- Part 2: Domains, Variables, Constraints
- Part 3: Memory Management (Trail + Copy) and Search
- Part 4: Sum and Element Constraints
- Part 5: Circuit Constraint, TSP and LNS
- Part 6: AllDifferent Constraint
- Part 7: Table Constraints
- Part 8: Search
- Part 9: Cumulative Scheduling
- Part 10: Disjunctive Scheduling
- Part 11: Modeling

## Outcomes¶

Learning outcomes by studying Mini-CP:

From a state and inference prospective, specific learning outcomes include:

- Trailing and state reversion
- Domain and variable implementation – Propagation queue
- Arithmetic Constraints
- Logical Constraints
- Reified Constraints
- Global Constraints (including for scheduling)
- Views

From a search prospective, the outcomes include:

- Backtracking algorithms and depth first search
- Branch and Bound for Constraint Optimization
- Incremental Computation
- Variable and Value Heuristics implementation
- Searching with phases
- Large Neighborhood Search

While, from a modeling perspective, the outcomes include:

- Redundant constraints
- Bad smells and good smells: model preferably with element constraints instead of 0/1 variables
- Breaking symmetries
- Scheduling: producer consumer problems, etc.
- Design problem specific heuristics and search

## Mini-CP XCSP3 Mini Solver¶

We provide under the form of a student project the possibility to participate to the XCSP3 MiniSolver Competition with Mini-CP. All the interfacing with XCSP3 tools and the parsing of XCSP3 format is done for you. You can focus on the only interesting part: make your solver as efficient as possible.