CP2014: Teaching CP
description
Transcript of CP2014: Teaching CP
![Page 1: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/1.jpg)
CP2014: Teaching CP
![Page 2: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/2.jpg)
![Page 3: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/3.jpg)
![Page 4: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/4.jpg)
![Page 5: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/5.jpg)
Context
• Final Year• 120 credits (1 credit approx 10 hours)
• 30 credit project• 4 modules in semester 1 • 4 modules in semester 2
• A module is 10 credits• 1 compulsory module on Prof Issues
• Students select 4 modules from 8 in each semester• There is competition between staff for students• Students make choice after 2nd week• First lectures have to be as attractive as possible• CP(M)
• 30 lectures• 1 short assessed exercise (5%)• 1 long(ish) assessed exercise (15%)• Exam (80%)
• Students are motivated by “marks”
![Page 6: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/6.jpg)
How not to do it
![Page 7: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/7.jpg)
Course outlineLecture 1
![Page 8: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/8.jpg)
Variables and constraints, and how to represent themLecture 2
![Page 9: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/9.jpg)
Backtracking search, implementationLectures 3 to 5
![Page 10: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/10.jpg)
A bit on heuristicsLecture 6
![Page 11: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/11.jpg)
A wee bit of theory (levels of consistency etc)Lecture 7
![Page 12: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/12.jpg)
A tiny wee bit more theory (dual and hidden variables)Lecture 8
![Page 13: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/13.jpg)
Ready to write our 1st constraint programWeek 4
![Page 14: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/14.jpg)
Wooooosh!
![Page 15: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/15.jpg)
… how I do it now
![Page 16: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/16.jpg)
Lecture 1
![Page 17: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/17.jpg)
Lecture 1
Stolen: BMS, TW, JCB
![Page 18: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/18.jpg)
Lecture 1
Handed out on paper, given 8 minutes, discussion …
![Page 19: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/19.jpg)
Lecture 2
Just do it!
![Page 20: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/20.jpg)
How many dominos are there?Lecture 2
![Page 21: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/21.jpg)
How many dominos are there?
How many pairs of numbers are there of the form
0 ≤ x ≤ y ≤ 6
Lecture 2
![Page 22: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/22.jpg)
Lecture 2
![Page 23: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/23.jpg)
Compile & Run
Lecture 2
![Page 24: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/24.jpg)
Lecture 2
![Page 25: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/25.jpg)
Stolen: BMS
Lecture 2
![Page 26: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/26.jpg)
Lecture 2
![Page 27: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/27.jpg)
Compile & Run
Lecture 2
![Page 28: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/28.jpg)
An exam question from AF2
Lecture 2
![Page 29: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/29.jpg)
Lecture 2
![Page 30: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/30.jpg)
Compile & Run
Lecture 2
![Page 31: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/31.jpg)
1st observations & questions
• How do you know “How not to do it”?• Why are you using choco (jchoco I call it)?• Do you steal everything?
• do you tell the students you deal in stolen goods?• have you no sense of shame?
• You get students to use technology they don’t understand!• We would NEVER EVER do that!
• You write code in the lecture? Edit compile AND run?• what if something goes wrong? You’d look stupid, right?
• You put all of the code on the web?
![Page 32: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/32.jpg)
CPM!
![Page 33: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/33.jpg)
![Page 34: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/34.jpg)
search
![Page 35: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/35.jpg)
![Page 36: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/36.jpg)
Opening up the hood: part 1, search
So how does CP work?
BT: Chronological BackTracking
Thrashing!
FC: forward checking
Thrashing!
CBJ: Conflict-directed BackJumping
Thrashing!
![Page 37: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/37.jpg)
consistency
![Page 38: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/38.jpg)
![Page 39: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/39.jpg)
Opening up the hood: part 2, arc-consistency
So how does CP work?
Arc-consistency Definition (aka 2-consistency) Covered 1-2-3-Consistency
Algorithms AC3 AC4/6/2001 AC5
Is AC a decision procedure?
![Page 40: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/40.jpg)
modelling
![Page 41: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/41.jpg)
We modelled some problems
number partitioning
jobshop scheduling
magic square
n-queens
bin packing
knight’s tour
Ramsey number
Orthogonal Latin Squares
Crystal Maze
graph colouring
m-queens
Talent Scheduling
Crossword Puzzle
![Page 42: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/42.jpg)
What a
re th
e decision varia
bles?
Are there any symmetries?
Is there a variable/value ordering heuristic?
Is there another model?
We modelled some problems
How does search go?
Redundant constr
aints?
Dual or Hidden Variable encoding?
![Page 43: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/43.jpg)
phase transition phenomena
![Page 44: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/44.jpg)
Where are the hard problems?
Constrainedness? Who cares?
In optimisation, as a heuristic, in solving problems
![Page 45: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/45.jpg)
heuristics
![Page 46: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/46.jpg)
Variable and value ordering heuristics
Static, topological properties
Fail-first, and it’s realisation
Constrainedness
Dual viewpoint heuristics
Promise
Regret
Domain Specific (example JSSP slack-based, Warnsdorff)
![Page 47: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/47.jpg)
specialised constraints
![Page 48: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/48.jpg)
specialised constraints
• max• sub-tour elimination• Knight’s tour• …• the glass box
![Page 49: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/49.jpg)
local search
![Page 50: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/50.jpg)
Search againLocal search (aka neighbourhood search)
HC, SA, TS, GLS, GA, ACO, …
Why we need them
Problems in using them incompleteness, move operators, evaluation/fitness functions, tuning parameters,
Problems in using them in CP
aka meta-heuristics
![Page 51: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/51.jpg)
Search againLimited Discrepancy Search
lds
• motivation for LDS• when might we use it?• when should we not use it?
![Page 52: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/52.jpg)
change of representation
![Page 53: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/53.jpg)
dual and hidden variable encoding
change of representation
![Page 54: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/54.jpg)
Levels of consistency
![Page 55: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/55.jpg)
• Node Consistency (NC)• Arc-consistency (AC)• Path Consistency (PC)• Generalised arc-consistency (GAC)• Bounds consistency• Inverse Path Consistency (IPC aka PIC)• Singleton Arc-consistency (SAC)• … and others
consistency
![Page 56: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/56.jpg)
Mechanics of choco
![Page 57: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/57.jpg)
Mechanics of choco
![Page 58: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/58.jpg)
Mechanics of choco
![Page 59: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/59.jpg)
CP for a design problem
Using CP as an intelligent data base
Not solving a problem, but using CP as an “active” representation
Explanations via quickXplain
![Page 60: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/60.jpg)
theory
• csp <v,c,d> and it’s complexity• search (bt, fc, cbj, …)• thrashing• arc-consistency• levels of consistency• heuristics• local search & lds• dual & hidden variables• sat• phase transition phenomena & constrainedness
summary
![Page 61: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/61.jpg)
practice
number partitioning
jobshop scheduling
magic square
n-queens
bin packing
knight’s tour
Talent Scheduling Orthogonal Latin Squares
Crystal Maze
graph colouring
Modelling & Solving Problemssummary
![Page 62: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/62.jpg)
practice
• variables (enumerated/bound/setsVar) and their domains• constraints (neq, allDiff, ifOnlyIf, …)• decision variables• what propagation might take place• size of the encoding/model (how it scales with problem size)• heuristics (dynamic/static, variable/value)• size of the search/state space• how search goes (example was knight’s tour)• alternative models (dual? hidden? values as variables?)• optimisation (with maximise/minimise, seqn of decision problems)• dealing with conflicts (soft constraints & penalties)• symmetry breaking (ramsey, bin packing, …)• redundant constraints (magic square, MOLS …)• what will make problems hard to solve and what will make them easy?
Modelling & Solving Problemssummary
![Page 63: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/63.jpg)
Rhythm
Once we are up to speed, an ideal week goes like this
• lecture on new theory• a new problem• Model and solve
• “Performance CP”• Consider alternative models• Symmetry breaking• When do problems get hard
![Page 64: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/64.jpg)
Where are the really hard problems
![Page 65: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/65.jpg)
Where are the really hard problems
The usual stuffint x = 3;int y = 5;int z = Math.max(x,y);
![Page 66: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/66.jpg)
Where are the really hard problems
The usual stuffint x = 3;int y = 5;int z = Math.max(x,y);
Our stuffModel model = new CPModel();IntegerVariable x = makeIntVar(“x”,0,3);IntegerVariable y = makeIntVar(“y”,0,5);IntegerVariable z = makeIntVar(“z”,0,4);model.addConstraint(eq(z,max(x,y)));
![Page 67: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/67.jpg)
Where are the really hard problems
The usual stuffint x = 3;int y = 5;int z = Math.max(x,y);
Our stuffModel model = new CPModel();IntegerVariable x = makeIntVar(“x”,0,3);IntegerVariable y = makeIntVar(“y”,0,5);IntegerVariable z = makeIntVar(“z”,0,4);model.addConstraint(eq(z,max(x,y)));
Breaking the mental model of variables in a programming language
![Page 68: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/68.jpg)
Where are the really hard problems
The usual stuffint x = 3;int y = 5;int z = Math.max(x,y);
Our stuffModel model = new CPModel();IntegerVariable x = makeIntVar(“x”,0,3);IntegerVariable y = makeIntVar(“y”,0,5);IntegerVariable z = makeIntVar(“z”,0,4);model.addConstraint(eq(z,max(x,y)));
• Post x > 0 and propagate• Post z > 0 and propagate• Post z < 3 and propagate
![Page 69: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/69.jpg)
Where are the really hard problems
Almost anything to do with implication is mind blowing (or maybe I am a bad teacher)
![Page 70: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/70.jpg)
Where are the really hard problemsarrays
![Page 71: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/71.jpg)
Where are the really hard problemsarrays
Pick off the ith row: easy
![Page 72: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/72.jpg)
Where are the really hard problemsarrays
Pick off the diagonal: easy
![Page 73: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/73.jpg)
Where are the really hard problemsarrays
Pick off the ith column: hard
![Page 74: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/74.jpg)
Where are the really hard problemsarrays
Pick off the diagonal: hard
![Page 75: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/75.jpg)
Where are the really hard problems
Code comprehension
![Page 76: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/76.jpg)
Where are the really hard problemsCode comprehension
Given n, what does f1 return?Suggest a name for f1.
![Page 77: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/77.jpg)
Where are the really hard problemsCode comprehension
Given n and r, what does f2 return?Suggest a name for f2?
![Page 78: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/78.jpg)
Assessed exercises
![Page 79: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/79.jpg)
Assessed exercises
• 1st exercise is sudoku (5%)• To get them to download and use choco
![Page 80: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/80.jpg)
![Page 81: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/81.jpg)
![Page 82: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/82.jpg)
1D Sudoku!
![Page 83: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/83.jpg)
![Page 84: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/84.jpg)
![Page 85: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/85.jpg)
Read in 9 rows of 9 numbersJeez. If I knew it was this hardI never would have attempted it
![Page 86: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/86.jpg)
![Page 87: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/87.jpg)
The floggings will continue until morale
improves
![Page 88: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/88.jpg)
Assessed exercises
Exercise 2 (15%) has been
• Car sequencing• Talent scheduling• Meeting Scheduling• Maximum Clique
![Page 89: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/89.jpg)
Assessed exercises
Exercise 2 (15%) has been
• Car sequencing• Talent scheduling• Meeting Scheduling• Maximum Clique
I think that was the best
![Page 90: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/90.jpg)
So?
![Page 91: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/91.jpg)
Jump in!
![Page 92: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/92.jpg)
Steal
![Page 93: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/93.jpg)
You can’t teach it all
![Page 94: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/94.jpg)
The hard bits might not be where you expect them to be.
![Page 95: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/95.jpg)
Have fun
![Page 96: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/96.jpg)
… and remember,
your students are not just your students
CP(M)CP(M)
CP(M)
CP(M
)
![Page 97: CP2014: Teaching CP](https://reader035.fdocuments.net/reader035/viewer/2022070405/56813f29550346895da9c7f5/html5/thumbnails/97.jpg)