When helping students transition from concrete arithmetic to abstract algebra, I try to do things many of you have mentioned: manipulative, drawing pictures, relating new learning to old learning and/or use stories to help students imagine the situation, etc. Manipulatives can be limited at times so I often have students work together or I model to the class. This can be somewhat limiting in a large class as sometimes the learner who needs the kinesthetic option the most, might not get ample time or his/her hands-on the materials to create a more concrete experience. Some students are not quite developmentally ready for this transition, especially if they are in an advanced math class when they shouldn't be. Our district believes that all students must take Algebra by 8th grade so the need for this jump from concrete to abstract happens way too quickly. Couple this with the pacing, I don't feel like I get to spend even a fraction of the time needed to make this transition successful.
I'm hoping students will find programming to be another way to see the relationship between different representations of the same thing. My goal is for students to make the connection between the real world and mathematics; programming will hopefully be the tool to do this!