At Sudan University of Science and Technology (SUST), programming fundamentals is a core subject to computing students which is usually taught during their first year of study. Staff teaching programming subject realized that the course is time demanding and students required close follow up in and out of class. If diagnosis of learning difficulties and timely support to students is not provided; struggle and frustration will happen and this will eventually lead to students' disengagement. Disengagement results in students not utilizing all the possible time they can in performing programming learning related tasks. In this work an adaptive system was designed and built iteratively to help students in learning programming and to identify the engaging aspects of learning. Additional functionalities and improvements were added to the system after each system's iteration depending on the usage pattern derived from students log data. After running the system for three iterations the attributes that were used for modeling the students and hence adapt the system are: navigation pointer, language, quizzes Level, exercises level and learning style.