15. A method, performed by a computer system, for developing learning activities for use in a learning program, the method comprising: displaying an adaptive path builder user interface for receiving user input to define an adaptive path of language learning activities, the adaptive path builder user interface including: an adaptive path editing window in which the adaptive path of language learning activities is defined, the adaptive path of language learning activities including a plurality of language learning activities that are interconnected by branches; a branching window which displays one or more branches of a selected language learning activity, each branch comprising at least two destination language learning activities to which branching from the selected language learning activity may occur and conditions defining to which of the at least two destination language learning activities branching will occur; displaying an activity builder user interface on a display device for receiving user input to define one or more of the language learning activities of the adaptive path of language learning activities, the activity builder user interface including: a work area in which components are added to a language learning activity of the adaptive path of language learning activities by dragging and dropping the components in the work area, a components list that lists components available to be dragged and dropped into the work area for inclusion in a language learning activity, a variables list that lists a language learning activity's components and properties of each component in the language learning activity, and a properties list that lists properties of a selected component in a language learning activity, wherein displaying the activity builder user interface includes displaying a first language learning activity of the adaptive path of language learning activities in the work area; receiving, at the activity builder user interface, user input that drags and drops a first set of components onto the work area; adding the first set of components to the first language learning activity being displayed in the work area, including displaying a representation of each component in the first set of components in the work area and the variables list, and displaying a representation of each property of each of the components in the first set of components in the variables list; receiving user input that selects the representation of two components displayed within the work area or the variables list; displaying a dialog box that includes suggested property connections between the properties of the selected two components; receiving user input that selects one or the suggested property connections; and automatically generating a relationship between the first and the second component by associating the property of the second component with the property of the first component.
15. A method, performed by a computer system, for developing learning activities for use in a learning program, the method comprising: displaying an adaptive path builder user interface for receiving user input to define an adaptive path of language learning activities, the adaptive path builder user interface including: an adaptive path editing window in which the adaptive path of language learning activities is defined, the adaptive path of language learning activities including a plurality of language learning activities that are interconnected by branches; a branching window which displays one or more branches of a selected language learning activity, each branch comprising at least two destination language learning activities to which branching from the selected language learning activity may occur and conditions defining to which of the at least two destination language learning activities branching will occur; displaying an activity builder user interface on a display device for receiving user input to define one or more of the language learning activities of the adaptive path of language learning activities, the activity builder user interface including: a work area in which components are added to a language learning activity of the adaptive path of language learning activities by dragging and dropping the components in the work area, a components list that lists components available to be dragged and dropped into the work area for inclusion in a language learning activity, a variables list that lists a language learning activity's components and properties of each component in the language learning activity, and a properties list that lists properties of a selected component in a language learning activity, wherein displaying the activity builder user interface includes displaying a first language learning activity of the adaptive path of language learning activities in the work area; receiving, at the activity builder user interface, user input that drags and drops a first set of components onto the work area; adding the first set of components to the first language learning activity being displayed in the work area, including displaying a representation of each component in the first set of components in the work area and the variables list, and displaying a representation of each property of each of the components in the first set of components in the variables list; receiving user input that selects the representation of two components displayed within the work area or the variables list; displaying a dialog box that includes suggested property connections between the properties of the selected two components; receiving user input that selects one or the suggested property connections; and automatically generating a relationship between the first and the second component by associating the property of the second component with the property of the first component. 16. The method of claim 15 , wherein associating the property of the second component with the property of the first component comprises linking the value of the property of the second component to the value of the property of the first component such that at runtime if the value of one property changes, the value of the other property changes as well.