How Can I Apply Spaced Repetition To Teaching CS? Lately I've been seeing quite a bit on the importance of spaced repetition in retention of skills.  My job is to level up a group of C# developers and I'm trying to figure out how to apply the idea of spaced repetition to what they do.

I've got some ideas--in no particular order:

1.) Periodic reinforcement via syntax flashcards

2.) Weekly/monthly coding contests of some sort (possibly vary this with minimum information puzzles as well since problem solving is such an essential skill in software development).

3.) Using Exercism.io and other such online academies to reinforce as well.

I would love to hear the thoughts of other educators on this subject.  I'm specifically looking for these answers: does one or any of those strategies seem better than others in terms of teaching software development? Are there articles on the application of spaced repetition to teaching software development? 

I'm sorry--I know this is a fairly broad question so if others can suggest ways for me to narrow the question please do.  I just can't think of another way to ask this.
This is also called Spiral education. There is a pattern devoted to it in Pedagogical Patterns: Advice for Educators. But it is more than just repetition. The basic idea is that one introduces an idea early in the course, but in a basic way. Possibly nothing more than its name if the idea is applied early. There can be a lot of such ideas in any given course. 

Then, the instructor returns to the idea repeatedly, each time with a deeper explanation requiring deeper understanding. Both the lectures and the student work need to reinforce this. 

Students are unlikely to learn much the first time they see an idea, especially if it has deep implications for which they don't already have the background. Ideas are interrelated, not stand-alone. So, on each loop around the spiral the whole set of ideas gets a deeper understanding. Some curricula actually recognize this. Advanced Calculus in some mathematics programs covers the same material as basic Calculus, but in a deeper way. But you can apply the same concept at a smaller level with short iterations. 

The final work of the students, perhaps a project, can bring all of the ideas together in a fusion. 

However, repetition itself, independent of the Spiral deepening idea is also needed, even for simple things. This is a result of the way the brain works. To move something into deep, long term, memory and especially to make it available for use, the brain needs to re-wire itself, making new synapse connections. This requires repetition.