This chapter explores how learning analytics can enhance learning and teaching in large scale, introductory programming courses. More specifically, it examines analytical approaches to identify at-risk students, personalize learning experiences, and make informed decisions about instructional content and delivery. Case examples drawn from empirical research are outlined to warrant a conceptual framework for best practice in analyzing data for these purposes. In this chapter, the authors review the benefits of temporal data, such as late assignment submission times, in terms of early detection of at-risk students. They also highlight the use of clustering algorithms in differentiating amongst the specific needs of different students using multidimensional data, allowing for tailoring instruction in an optimal manner. Finally, they discuss challenges in aligning data to gain insights into skill acquisition as a result of study habits to inform instructional decision making.