Shallow, broad and general introduction to programming I've planned a shallow and broad curriculum for a summer program (5 days a week for 2 weeks, 9:00 to 17:00) or sorts, and the flow of the subjects seems flawed.

The students are gifted (not a prerequisite, but most of them are) highschoolers with either no background in programming, or very little background. 

The purpose is to interest them in learning programming. More specifically, to give them a taste of some aspects of various languages, hoping that each will find something they like and, being naturally curious, they might pursue the subjects they liked a bit more.

The curriculum I have in mind is more or less:


Using C: 


Intro to the simplest of things
printf("Hello World!\n"); and the like
most importantly, introduction to types.

Using C++/Java:


very brief overview of OOP, just at the concept level
"Things" are described in classes which have properties etc.






Using JavaScript:


Intro to functional programming. Again, just at the concept level
"Things" are described with functions.  



and finally:


Using python:


finish with small tasks for them to get some hands on experience and things to show their friends



As I see it, the main issue is, for lack of a better word, synergy. Subjects 2 and 3 seem highly disconnected. Moreover, I fear that for the students, the things they learnt in C and C++ will seem "pointless", since most of them will think that they don't use those concepts and ideas in the tasks in part 4. 

How might I bridge between OOP in Java or C++, with functional programming in JavaScript? Personally, I thought using Java's functional interfaces could work, but that would require teaching about interfaces, making the course far less "shallow" than it should be. 

Might there be a simple or neat "trick" to connect the two subjects?



PS: Any other suggestions regarding the partial curriculum I outlined are also welcome. It's the first I've built from nothing
The purpose is to interest them in learning programming. More specifically, to give them a taste of some aspects of various languages, hoping that each will find something they like and, being naturally curious, they might pursue the subjects they liked a bit more.


Comparison of programming languages doesn't make sense until they've first mastered the basic concepts, so two weeks doesn't seem like enough time to get onto this. I think you'd be better off taking one language which supports functional and OOP styles, covering both, and then maybe doing a small Rosetta Code presentation in the last day or two, with a handout which they can refer to after the course has finished.

I'm also not convinced that the students' curiosity will work that way ("This idea of first class functions is fun: what can I do with it?"). I think that the hook should be that programming lets you do things which are fun and/or useful. The difficulty with coming up with examples is that no two students will agree 100% on what things are fun and/or useful. Games are a good bet for fun, although graphics tend to be complicated and you risk needing to dedicate lots of time to teaching/revising trigonometry and quadrature. I'm not sure whether today's youth would find text adventures fun. The concept of databases as useful is another reasonable bet: most people will collect something or follow a sport, and you can build and query structured data to enhance both of those. Pick a language which has easy serialisation and you don't need to bother with "real" databases (although maybe mention them in the handout).

Although I've never used it myself, Swift looks like a reasonable teaching language if you want compile-time typing. From looking at examples on Rosetta Code it seems to have clean syntax and support imperative, functional, or OOP styles.