This Full Paper of Innovative Practice research shows results that could help to avoid some challenges faced by those who seek to learn how to program. To help improve learning, educators need a deep understanding of the obstacles students must overcome; otherwise, teaching strategies will be uncertain. Moreover, a shallow understanding of topics learned in introductory programming courses can negatively influence the learning of future topics. With the above motivation, we conducted 16 semi-structured interviews with instructors who teach introductory programming courses and we also collected diaries kept by 110 students during their studies. The qualitative analysis of these data revealed connections between the studied contents such as dependencies. Our analysis shows that many difficulties arise from the incorrect application of the knowledge necessary in learning new content, usually because the student has not learned earlier topics or learned them superficially. The main contribution of this paper is a theory that describes the connections among topics of learning how to program, showing the influence that knowledge about one can have on others.