How to teach programming to first timers at a college level? I am currently teaching at a local college an Introduction to programming using C#. Most of these students have never had any programming experience. The only prerequisite is an ICT course that teaches basics of computing. 

I am finding that the students are facing issues with comprehending the concept of program structure and execution. I tried explaining with flow charts however they still face issues linking the flow of the code to the flow of the solution of to the problem being solved. 

Those who are more experienced probably know of techniques or ways to structure the lesson or even curriculum to teach programming in a much better way (I am even guessing there might have even been studies about teaching programming).

What known techniques are there for teaching students at a college level programming? Especially those who have had no prior experience before?
We've had pretty good success through the Software Carpentry initiative.

There are software carpentry bootcamps happening around the world: I'd advise going on one yourself, before hosting them.

They offer a well-rehearsed pattern of training, with lots of hands-on exercises, using open-source training materials.

You can mix and match bits of the syllabus to suit: databases, particular languages, using the shell command line, source-code version control, OOP, and so on.

Once you've put one cohort through a Software Carpentry bootcamp, get them to be the helpers on the next software carpentry bootcamp, for the next cohort of students. That way, they get to copy the successful "see one, do one, teach one" method used in medical training: they learn at least as much again when they're teaching the material, as they did when being taught it.