The Flipped Classroom Method: Lessons Learned from Flipping Two Programming Courses