Computer Programming is a core subject of almost all degrees of Engineering that is perceived as a very complex matter for the students, because it is very different from the other core subjects (Physics, Calculus, Algebra, Chemistry, Graphics Expression) that are more familiar to students. Programming combines in a balanced way the two fundamental steps when developing an Engineering product, design and implementation (coding), but with the important difference in the lower costs of the implementation phase, which permits students building and testing the proposed designs. Besides, the new European Higher Education Area (EHEA) is based both in the acquisition of competencies and skills by the student rather than in the accumulation of knowledge, and in the use of the European Credit Transfer and Accumulation System (ECTS), which supposes an important challenge for the teaching model. In this paper we show our eight years experience in developing a hybrid methodology for teaching Computer Programming in the degrees of Mechanical, Electrical, Electronic and Chemistry Engineering at the University of Almeria (Spain). We integrate traditional teaching methods (participative master class for transmission of information) with modern methods (problem-based learning, collaborative-team working, autonomous working, or tutoring). The different methods of teaching are supported by a hardware-software infrastructure of virtual teaching (Blackboard platform) and a very detailed planning where activities are highly focused and weekly organized. It includes periodical tests for the evaluation of the progress of the student. We think that the adoption and tuning of these learning methods will enhance the skills of the future engineers in the computer programming area.