Software applications designed for education have become more sophisticated and have the potential to be more than tools employed in the classroom just to make it easier or quicker to perform tasks otherwise completed by hand. By virtue of advances in technology and the complexity of the functionality that is embedded within software applications, the potential of learning from computers has shifted to learning with computers. This distinction was recognized by Goldenberg (1991) in providing examples of students learning the characteristics of algebraic functions through interacting with a graphing software package by inputting test equations and observing the fit with the correct one. The increase of the use of immersive interactive interfaces has also resulted in many applications that are student-centered; that is, students are able to participate in the learning process by using design features embedded within applications to construct understanding of ideas and concepts within meaningful contexts (Jonassen & Land, 2000; Murray, Blessing, & Ainsworth, 2003). This occurs when students are active participants in the learning process, but it does not occur without support (Land, Hannafin, & Oliver, 2012). The support necessary, in some cases, is offered by the software application itself. Its inherent features, capabilities, and flexibility determine to what extent and the way in which that support is delivered. These characteristics of software applications are affordances, which scaffold and support student learning, and it is the affordances for learning that are the focus of this chapter. What do students learn from using software that they might not learn, or learn as easily, without it? The aim of the chapter is to go beyond what a software application promises to do to consider its affordances for learning. Further, what are the affordances for teachers in their planning for and assessment of student learning?