- 
The goal of these pain points is to get students to deeply understand the need for an abstraction or a programming language feature through fatigue of using less elegant instruments. 
- 
Example activity: 
- 
Provide students with a turn left method that turns 90 degrees counter-clockwise. 
- 
Ask students to implement turning right using the turn left method. 
- 
Students will eventually ask, "Can’t we just have a turn right function?" 
- 
By creating a pain point, students independently develop an understanding of the need for creating a method (a great example of abstraction!) 
- 
Other potential topics to create pain points for. 
- 
No looping construct: Have students repeat multiple lines of code without a looping construct. 
- 
This will be used to motivate the need for loops. 
- 
No function definition: Have students repeat common blocks of code without a function definition. 
- 
This is another way to motivate the need for creating a method. 
- 
Require a change to the common block of code change after it’s all over their program to really stress why having methods and not replicating code is a crucial feature. 
- 
No organized data structures: Give students unstructured data to motivate organized data structures. 
- This will motivate the need to having consistent, structured data types.