How to implement flipped classroom for 18 year olds? I teach an introductory programming course at university where 99% of my students are 18-20 years old. They are used to the old and boring education system they know from high school, so they are not precisely "motivated" about learning. And since we have to have exams (I'm with a team of teachers where most of them tend to "keep things as they are and don't make me work extra") the kids' goal is usually to pass that exam with the least effort, regardless of whether they learn to code or not.

Our teaching materials are organized so that one teacher presents the theory to students and then I explain whatever they didn't understand and present them with exercises.

As they are just beginners, they don't know enough to create cool programs yet (I'm teaching the very basics of control flows, some data storage in memory and command line programming). So I'm trying to make them motivated and would like to try flipped classroom methodologies.

However, I'm not sure about how to implement it. Let's say I make videos explaining the topics so they can dedicate my whole class to practice their coding skills. I've tried making videos before (both short and longer ones) and about 5% of the students watch them, as they feel they don't have time to waste given that there are so many other exams they need to pass (other subjects). Also, since this is about programming, there isn't much to be discussed, it's like math: you sit down and get your hands onto code.

How can I best bring in any new motivational tools like flipping my classroom?
The underlying idea of a flipped classroom is that you use face to face time for things that require it and nothing else. You don't "present" or "cover" material when face to face. This requires a number of things, but it will probably require buy-in from your colleagues as well. 

I used to teach an entire degree program with these ideas. As you note, you need a way to keep the students engaged in the course when not face to face. There are a number of ideas for that, some of which require you to change work habits a bit. 

It is possible to make the course "round the clock" so that a student can always get a question answered. One vehicle for this is a class wide email list to which everyone, teachers and students, is subscribed. People submit questions to the list and other people, including students, answer the questions. Teachers need to at least monitor to make sure that incorrect information isn't passed around. When I did it, no questions were off limits as long as they were course related. Code couldn't be submitted to the list under our rules, however. I've also used wiki software to the same end, with the advantage that wiki posts can be preserved for future offerings of the course. 

To do the above, however, requires that you teach the students that their learning is a group and cooperative effort, not something done in isolation. The core of this idea is that the facts and skills don't flow from teacher to student, but all around the group. 

For the content of the course, you can use readings (preferably short) and videos (also short). Don't rely on just video, however, as it has a down side that the audio quality can disadvantage certain students. And if the video is more than a couple of minutes it is easy to lose track an/or miss some things. 

But you also need to assure, at least a bit, that students actually do what you expect when not face to face. For this you can include a few fairly easy questions that students must submit to you as their "admission ticket" to the next face to face. You don't need to have a "pop quiz" in the classroom for this, but just a hand in "homework." 

You also need to run the course expecting that, at least at the beginning, students won't do the readings very faithfully. So expect a lot of questions, perhaps on the mailing list, to which the answer is "go watch video 83".

The face to face "classroom" sessions should also be cooperative. Teams are good. Pair programming is one of the best ways for beginners to learn to program, but you have to use it properly and faithfully. It isn't just one person programming and one watching. There are other questions on CSEducators that have resulted in detailed descriptions of Pairing. Two people participate in creating a program, but in slightly different ways, with roles switching frequently (minutes). Test first development also integrates well with pairing. 

If you use a cooperative learning environment then grading is an issue that you can solve with peer assessment. There are ways to make this valid and non-threatening, largely by making it positive. Partners and team members detail both their own contributions and the positive contributions of peers. You can ask "who were the top contributors and why?" for example. You can ask for the main contribution of yourself and your partner to a pair project. 

Note also that short quick questions can be answered on the mailing list. An advantage of this is that every student sees any student's question as well as the answer. During face to face sessions you can also have longer discussion, say about testing strategy or the difference between for and while if many are confused. But try to spend as little time as possible on such low level things, deferring them to the readings/videos and the mailing list. Use the face time for active, rather than passive endeavors. 



Don't lose track of the fact that people learn by repetition and reinforcement. In a normal classroom that is usually provided via homework. With a flipped classroom that flips also. The little quizzes (tickets to play) are a minor part of the learning, though they should be a (small) part of grading. The repetition and reinforcement comes in the face session.