Programming courses’ outline and their pedagogy are as many other phenomena of evolutionary nature and even if computer science is a relatively young discipline several shifts has already been seen. When Generation X took programming courses at university level the older and more pragmatic programming languages were replaced in the 1990s by the more well-structured Java language and object-orientation became an integrated part of most Computer science curricula. But during the relatively short history of Computer science and system development education the pass rate has often been low in programming courses. Still in the 21th century novice students have had severe problems in the understanding of even basic programming techniques. This has not only been related to more theoretical concepts and there have been problems with the practical parts of programming as well. In the current situation at Swedish universities where the course batches often is a mix of Generation Y and Lifelong learners the approach to pedagogy and course content design is not an easy choice. The aim of this study is to describe and discuss the shift of heterogeneity in the student batches in university programming courses during the last decade. Which are the main challenges of the different generations and their learning styles and how could they be addressed? The study is a combination of a literature study and an analysis of 12 years of work with programming courses at university level. My observations and notes have been compared with students’ answers in about 25 online questionnaires for course evaluation and the assessment during the last decade. Findings show that there is a difference in learning styles and a need for updating the courses in an overloaded manner where students with different learning styles could chose to learn the same basic programming in different ways. Another idea discussed in this article is to omit object-orientation in the first programming course and introduce basic programming in a traditional straightforward imperative style. The tested approach where programming courses are given without object-orientation and with multi-modal content in a virtual learning environment seems to reduce the gap between Generation Y and Lifelong learners, but there are still a lot of challenges like plagiarism and lack of commitment amongst students. Feedforward instead of feedback and an iterative approach in the presentation of course material seem to support both the discussed student groups. If a high intake is the aim distance education will increase the enrolment. If a high pass rate is the measurement of success blended learning and overloading of multi-modal course content online could be the key to success but with an extra initial cost for the development of digital content.