From my personal experiences with taking programming courses, there's one major area that most teachers seem to neglect: program design.
You can teach your students how to do any number of sorting algorithms, implement data structures, etc, but if they don't know how to design a solution to the problem at hand, they're going to struggle with it.
I know quite a few people who are presented with a problem and the first thing they do is sit down in front of a computer and start hacking away at the code. This may be fine for simpler programs where there is only a few minor tasks to complete, but as programs get more and more complex, it will cause problems if they don't learn proper design.
When you explain functions, make sure you explain why we use functions, and not just how. This will be a nice precursor to the concepts of OOP (i.e. break the program down into logical sections) and should make explaining the semantics of OOP a bit easier to comprehend when the time comes.
OOP was something that was briefly gone over in my high school programming courses, but it was basically along the lines of "Here's how you make your own class and instantiate it". I had no idea what purpose it served or when to ever use it, so I always just used functions and nothing else. It's only now, a year before I'm about to graduate college that I fully grasp the importance of object oriented design and program design in general.
I would have been in a much better position if these were concepts I learned from the start (possibly even before ANY code).
Side note: I have no experience with teaching programming concepts besides helping a few friends occasionally. This big rant was just what I've seen in my personal experience and what I think could have been done to make things a bit easier to comprehend.
Good luck! Don't teach them too much. I don't want to have to worry about job security before I even get one.
"May your future be limited only by your dreams." -- Christa McAuliffe