Background: Challenges Associated with Learning Programming Programming is described as a highly cognitive task that challenges one’s ability to imagine, model and solve complex problems, it is an important component of the curriculum to be studied, not only in the field of Information Technology but also required in most of the field including Science, Mathematics, and Engineering at tertiary levels, However, the subject is considered difficult, complex and categorized as part of the seven grand challenges in computing education 1.A learner is required to acquire and use three interrelated types of knowledge of programming, first, the syntactic knowledge; second, the conceptual and third, the strategic 2. Syntactic knowledge or syntax for short is the understanding of a specific programming language and the rules for its use, it is required for a learner to be able to write code that will even be accepted by a compiler, at this stage a learner would most likely be unable to develop programs that solve problems. Conceptual knowledge deals with the constructs of computer programming along with the principles needed be followed, for learners this is the ability to develop mental models of data and the system along with the semantics of the program’s control flow. With Syntactic and conceptual knowledge, a learner would be able to design solutions to simple problems. Strategic knowledge concerns general problem-solving skills that are specific to programming such as when to use a switch statement instead of if statements, with syntactic, conceptual and strategic knowledge a learner would be able to solve most any programming problem. These areas of knowledge may seem separate enough to learn incrementally, but learning programming is much more complex than this, our knowledge on how learners learn to program is very limited, it is however accepted that the ability to create generalizations and abstractions is paramount. A programmer needs to be able to modularize a large and complex task into smaller more manageable tasks and choose appropriate data structures and algorithms, one of the difficulties in doing these tasks as a learner is that they have little to no prior experience to draw on in order to help them, which is often attributed to the abstractness 3 of programming and the students lack of concrete models to help mold their own way of creating mental models when approaching the tasks 4. The main problem learners and novice programmers have when programming is the gap between the representations the brain uses when thinking of a problem and the representations the computer will accept 5. D. Norman 5 argues that there are only two ways to bridge the said gap: first, move the user closer to the system; second: move the system closer to the user. Programming classes attempt the former, i.e., move the user closer to the system by teaching a programming language; this research attempts the latter by attempting to move the system closer to the user, by allowing the user to view in Realtime the storage of data as models and the flow of algorithms.Statement of the problem According to multi-national studies published in recent years, students have problems in writing program code 6, in reading and tracing skills 7, and in designing software 8, much of it stemming from the abstract nature of programming and the student’s inability to conceptualize problems and data in a manner the computer will accept 5. Clear 9 says that those involved in the teaching of programming should consider their approach to teaching and that current theories on cognition may require the use of a more exploratory and interactive approach. A move away from seeing programming as:=> “A process of detached, abstract reflection and consideration” to=> “Active engagement and action” (p. 25). He comments that abstraction followed by action may not be valid planning or programming techniques, and propose models of learning which emphasize interaction and vividness may be more powerful. visualization is one of the various techniques developed over the years to aid programmers with their difficulties in learning to program. It consists of different graphical – often animated – objects, visualizing the execution of programs and the state of the variables. The aim of program visualization is to enhance students’ understanding of different areas of program execution and how data is created and morphs during execution whilst creating models that can aid the student in understanding how the computer models its data for future reference. This research aims to create a visual programming environment for the C programming language that can create data models for the student and step through algorithms providing Big O notation calculations for possible optimizations and better algorithm selection.Research Questions1. Is providing a Realtime model diagram of data contributing to the learning of the C language?2. Is there any difference in learning when previous programming experience is taken into account?3. Does the learner now feel dependent on the software?Significance With Programming being an important component of the curriculum to be studied, not only in the field of Information Technology but also required in most of the field including Science, Mathematics, and Engineering at tertiary levels and categorized as part of the seven grand challenges in computing education it is vital to modern society that we have competent programmers for our machines and with surveys that prove a disconcerting amount of final year students often cannot program at all, according to Smith et al. (2000) and A. Yadin (2011) coupled with a high dropout rate in introductory programming course and the fail rate of C programming and Data structures during my time at the University of Guyana, hope for the research to increase the perception learners have of programming and not be intimidated by its cognitive complexity.Project Plan 8 weeks : artifact development 1 week : artifact testing 2 weeks : research using artifact.