 Students interested in puzzles, problem solving, and tinkering will ultimately be more likely to pursue CS.

Starting an intro course with students working on necessary problem solving skills helps students get comfortable with the class, especially students who are overwhelmed by the thought of jumping into programming on the first day.
 The Guide to Teaching Puzzle Based Learning textbook is a great resource for problem solving puzzles to give students.
 No matter what language students are working in, they need to have a strong grasp of problem solving skills.

Below is an example skill building puzzle taken directly from Guide to Teaching Puzzle Based Learning:

"Three toads and three frogs are sitting on rocks in a pond. The toads (brown) are on one side; the frogs (green) on the other. There is an empty rock between them. The critters have to change places using as few moves as possible. They can slide into an adjacent empty space, or hop over exactly one other critter onto an empty rock. The toads move only to the right; the frogs only to the left.
Can you swap the toads and frogs without letting any critter move backward? How many moves? How many hops? How many slides?
What about with 4 frogs and 4 toads? Can you generalize your solution for n frogs and n toads?"

"Three toads and three frogs are sitting on rocks in a pond. The toads (brown) are on one side; the frogs (green) on the other. There is an empty rock between them. The critters have to change places using as few moves as possible. They can slide into an adjacent empty space, or hop over exactly one other critter onto an empty rock. The toads move only to the right; the frogs only to the left.

Here is a sample activity you can give to students built form the resource above:
 Give students papers representing frogs, toads, and a little path.
 First, have students solve this puzzle using the paper figures.
 Next, ask students to write down their instructions for someone else to follow to solve this puzzle.

Now, ask students to solve the a modified version of this problem where there are four frogs and four toads on opposite sides of the bridge.

The goal of this modification is to help students move from the lowlevel to a highlevel abstraction.
 The lowlevel descriptions for solving the original problem tend to break down under this modification.

If students are still answering with lowlevel descriptions, have students try to generalize their answer so the number of frogs can continue to increase.
 This should help students see the general pattern and develop a highlevel abstraction for solving this problem.

The goal of this modification is to help students move from the lowlevel to a highlevel abstraction.