Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
ONLINE LEARNING COLLABORATION SYSTEM AND METHOD
Document Type and Number:
WIPO Patent Application WO/2013/036624
Kind Code:
A1
Abstract:
Systems and methods for associating cohorts in a social networking environment are provided. At least two users of a social network can be associated in a cohort based at least in part on a determined relationship between the at least two users. This relationship can be different from relationships defined by the users. An analysis of one or more parameters of the at least two users in the cohort can be performed based at least in part on the cohort, wherein the one or more parameters are unrelated to association of the at least two users in the cohort. The parameters can be used to longitudinally measure parameters of the at least two users that may have been impacted by association in the cohort. At least a portion of the analysis can be communicated.

Inventors:
DOZIER LINDA T (US)
CLIFFORD ARTHUR B (US)
SHOEMAKE RICHARD S (US)
Application Number:
PCT/US2012/053939
Publication Date:
March 14, 2013
Filing Date:
September 06, 2012
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
EPALS INC (US)
DOZIER LINDA T (US)
CLIFFORD ARTHUR B (US)
SHOEMAKE RICHARD S (US)
International Classes:
G06Q50/26; G06F17/30
Foreign References:
US20110087679A12011-04-14
US20070244701A12007-10-18
Attorney, Agent or Firm:
NOONAN, David M. et al. (Bank of America Corporate Center 42nd Floor,100 North Tryon Stree, Charlotte North Carolina, US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A computer system for utilizing cohort associations in social networks, comprising:

a cohort associating component for associating at least two users of a social network in a cohort based at least in part on a determined relationship between the at least two users;

a cohort analyzing component for performing an analysis of one or more parameters of the at least two users in the cohort based at least in part on the cohort, wherein the one or more parameters are unrelated to association of the at least two users in the cohort; and

an interface component for communicating at least a portion of the ana lysis.

2. The computer system of claim 1, further comprising a data mining component for determining a common parameter of the at least two users based on querying the social network, wherein the cohort associating component associates based on the common parameter,

3, The computer system of claim 2, wherein the common parameter more group memberships.

4. The computer system of claim 3, wherein the social network comprises a learning management system, and the one or more group memberships relate to a classroom,

5. The computer system of claim 1, further comprising a data mining component for detecting a modification of an aspect of a profile of at least one of the at least two users, wherein the cohort associating component associates based on detecting the modification.

6. The computer system of claim 5, wherein the modification correlates to the at least one user becoming a member of a group in the social network.

7. The computer system of claim 5, wherein the modification correlates to content posted by the at least one user on the social network.

8. The computer system of claim 1, wherein the analysis comprises an inference regarding the cohort based in part on comparing the one or more parameters,

9. The computer system of claim 1, wherein the cohort persists for a period of time after the determined relationship no longer exists.

10. A method for utilizing cohort associations in social networks, comprising: retrieving a cohort association for at least two users of a social network established based at least in part on a determined relationship between the at least two users;

performing, using a processer, an analysis of one or more parameters of the at least two users in the cohort association based at least in part on the cohort association, wherein the one or more parameters are unrelated to the cohort association; and

communicating at least a portion of the analysis via an interface. 11. The method of claim 1.0, further comprising associating the at least two users in the cohort association based at least in part on the determined relationship between the at least two users, wherein the cohort association persists for a period of time after the determined relationship no longer exists. 12. The method of claim 11, further comprising determining a common parameter of the at least two users based on querying the social network, wherein the associating occurs based on the common parameter.

13. The method of claim 12, wherein the common parameter is one or more group memberships.

14, The method of claim 13, wherein the social network comprises a learning management system, and the one or more group memberships relate to a classroom, 15. The method of claim 10, further comprising detecting a modification of an aspect of a profile of at least one of the at least two users, wherein the associating occurs based on detecting the modification.

16. The method of claim 15, wherein the modification correlates to the at least one user becoming a member of a group in the social network,

17. The method of claim 15, wherein the modification correlates to content posted by the at least one user on the social network, 18. The method of claim 10, wherein the analysis comprises an inference regarding the cohort based in part on comparing the one or more parameters,

19. A non-transitor computer-readable medium encoded with a program for utilizing cohort associations in social networks, the program comprising instructions for performing the steps of:

retrieving a cohort association for at least two users of a social network established based at least in part on a determined relationship between the at least two users;

performing an analysis of one or more parameters of the at least two users in the cohort association based at least in part on the cohort association, wherein the one or more parameters are unrelated to the cohort association; and

communicating at least a portion of the analysis via an interface.

20. The computer-readable medium of claim 19, wherein the program further comprises instructions for performing the step of associating the at least two users in the cohort association based at least in part on the determined relationship between the at least two users, and wherein the cohort association persists for a period of time after the determined relationship no longer exists.

Description:
TITLE

ONLINE LEARNI NG COLLABORATION SYSTEM AND M ETHOD CROSS-REFERENCE TO RELATED APPLICATIONS

The present Application for Patent claims priority to Provisional Application

No. 61/531,614, entitled "ONLINE LEARNING COLLABORATION SYSTEM AND

METHOD" and filed September 6, 2011, which is expressly incorporated by reference herein.

TECHNICAL FIELD

The present disclosure relates to improvements in social networking and other internet enabled environments to support learning or other collaboration objectives and associated data collection and use for analytical purposes.

BACKGROUND

Network or Internet-enabled environments generally, and email,

collaboration, and social networking systems more particularly, typically allow users to communicate or interact online about various topics and categories of information. Permission-based systems normally set "static" permissions and rights for each user that define how the user interacts with the svstem and other users. A user mav, as permitted or invited, join one or more groups of users formed within the system, where the user is then defined as being a part of the group(s). Communication between or among members of groups, and between or among members of different groups, is enabled or controlled by sets of rules. For example, a set of rules may specify that members of a "Group A" can communicate only among themselves (and perhaps communications or posts may or may not be seen, as opposed to interacted with, by members of other groups; members of a "Group A" may communicate with members of a "Group B," but canno communicate with members of a "Group C." Typically, default permissions may be configured in some manner by an

administrator or a group "owner" to allow communications not specifically disallowed, or to disallow communications not specifically allowed. Controlling access to communications and/or other access to information about members or posted by members is especially important in compliance driven environments where corporate, legal or social policies may relate to such people or information. Specific example of this relate to systems that involve children and/or schools (particularly K-12 schools and K-12 aged children, where, for example, there are a host of legal restrictions and policy-based practices in the US and around the world concerning communications by, to, and/or among children and/or in school-based setting (such as with children 13 years of age and under, restrictions relating to educational records, privacy, and the like),

in the context of learning and education, learning management systems (LMS) have been developed to allow interaction (sometimes using "social networking" principles) and association of various users in an online environment having such controls in place. For example, an educational structure or hierarchy can be captured by the LMS reflective of desired structure such as the organizational hierarchies in the real world. For example, district "groups" or users are created that associate a plurality of schools, each school having associated with it one or more groups of faculty and students (and/or parents}, and one or more further groups that may be defined by enrollment, placement, invitation and/or participation in other groups based on desired criteria such as classes students are enrolled in or to which they are placed or "invited" to join, professional development groups, related associations (like the parent teacher association (PTA}}, clubs, etc. This includes groupings by school, by grade, by classroom, etc.}. Additional groupings can be established as well, such as associating users for projects of certain kinds (hereafter, a "project group"}. Communication (such as posts and other forms known to one of skill in the art) may persist (for example be accessible in various ways, accessible, stored or archived, etc.} among users in the LMS based on the defined structure and groups (such as forums or blogs and other tools where members can communicate, contribute, create or interact asynchronously or synchronously). For example: a teacher can

communicate with students in a given class by uploading curriculum and posting on the "wall" of a class group; students can communicate with one another based on defined grouping, such as groups in of the same or similar class, similar activities, or other data about the user or their associations, etc.; parents of students can communicate with other parents (or with group owners such as educators or other members based on whether their children are in one or more same groups, etc,}. in any case, the organizational structure present in an LMS may be configured to include various levels or organizational/atomic units at vertical as well as horizontal levels, such as district, school, classroom, teacher, student, parent, volunteer, principal, etc. For instance, a teacher may have many students, and a student may have a half dozen teachers, several classrooms, and one school. The subject matter or information that mav be associated with a user mav include classes or groups (or aggregations thereof) into which enrollment or membership has occurred, e.g., language arts, biological sciences, physical sciences, mathematics, etc. Moreover, in organizations like social networks, groups may be spontaneously or dynamically created or deleted by users (including as permitted to do so), and users can be added or removed from certain groups over time, importantly, however, such membership information or data about such membership information does not persist over time in accessible and flexible ways that allow valuable analysis of such data to make inferences and/or take actions such as suggesting alternatives, remediation, new groups and the like.

SUMMARY

The following presents a simplified summary of one or more aspects to provide a basic understanding thereof to one of skill in the art. This summary is not an extensive overview of all contemplated aspects, and is intended to neither identify key or critical elements of all aspects, nor delineate the scope of any or all aspects, its sole purpose is to present some concepts of one or more aspects in a simplified form as a prelude to the more detailed description that follows.

Aspects described herein are directed to providing cohort association in membership or collaborative networks in general and social networks in particular, for subsequent, comparative analysis of or among users in a given cohort. The value of and multiple ways and methods of conducting cohort analysis is extensively described in literature on nearly every business and academic discipline. Cohort associations may be provided in membership or collaborative networks by, for example, manually or automatically adding users to a cohort association of some sort (in addition to actual groups they may be members of). This can be based on similarities between the users, common groups related to the users, common status factors among users and/or their relationship to other users, etc, and/or on criteria specified by another person, such as a researcher or evaluator, etc. The cohort association can be stored and can persist over time and/or be attached or associated with artifacts (such as posts or communications) of users added to a cohort association. The cohort can be determined or otherwise specified irrespective of a requested grouping by the users, or a system-generated grouping of the users. This can allow for comparative analysis of users in the cohort at a later time, which can allow for analyzing, studying, or drawing inferences about the cohort, related components, or associated items.

in a specific example applied to learning, in a learning management system (LMS), students participating in a given class, extra-curricular activity, etc., can be associated in a cohort The cohort can persist for a period of time after the association was made or the participation in the group started and/or ceased, allowing study, examination or analysis of, for example, academic or professional performance many years later, or suggested paths toward improvement,

remediation, and/or customization. In addition, the analysis of the subsequent performance can be manual or automated; for example, inferences can be drawn based on writing adeptness by automatically evaluating publications, social networking posts, etc. made by the user or users in the cohort or groups within which the users or subsets of users participated, or based on information to which such persons were exposed. Cohort association in this regard allows for immense possibilities in determining impact of certain past cohort associations and related activities on users in the LMS and/or suggestions for one or more users in the system or outside the system based in part on such data.

To the accomplishment of the foregoing and related ends, the one or more aspects comprise the features hereinafter fully described and particularly pointed out in the claims. The following description and the annexed drawings set forth in detail certain illustrative features of the one or more aspects. These features are indicative, however, of but a few of the various ways in which the principles of various aspects may be employed, and this description is intended to include all such aspects and their equivalents.

BRIEF DESCRIPTION OF THE DRAWINGS

The disclosed aspects will hereinafter be described in conjunction with the appended drawings, provided to illustrate and not to limit the disclosed aspects, wherein like designations may denote like elements, and in which:

Figure 1 is an aspect of an example system for providing social networking functionality with cohort associations.

Figure 2 is an aspect of an example system for creating cohort associations and analyzing users in the cohort associations.

Figure 3 is an aspect of an example methodology for analyzing users in cohort associations.

Figure 4 is an aspect of an example methodology for generating one or more cohort associations based on social networking system events,

Figure 5 is an aspect of an example methodology for generating one or more cohort associations based on social networking system data queries.

Figure 6 is an aspect of an example methodology for analyzing users in established cohort associations,

Figure 7 is an aspect of an example methodology for generating cohort associations.

Figure 8 is an aspect of an example system in accordance with aspects described herein. Figure 9 is an aspect of an example communication environment in

accordance with aspects described herein.

Figures 10-14 are example user interfaces for establishing cohort associations for users of a social networking system.

Appendix A describes aspects of an example application programming interface (API) that can be used to provide aspects described herein,

DETAILED DESCRIPTION

Reference will now be made in detail to various aspects, one or more examples of which are illustrated in the accompanying drawings. Each example is provided by way of explanation, and not limitation of the aspects, in fact, it will be apparent to those skilled in the art that modifications and variations can be made in the described aspects without departing from the scope or spirit thereof. For instance, features illustrated or described as part of one example may be used on another example to yield a still further example. Thus, it is intended that the described aspects cover such modifications and variations as come within the scope of the appended claims and their equivalents.

Described herein are various aspects relating to providing cohort associations in membership or collaborative networks in general and social networks in particular, which can include learning management systems. For example, a cohort association can relate to a grouping of users (students, teachers, parents, and/or any combination thereof) that is independent of membership in "social" groups defined by the users in the (social) networking system. The cohort associations (also referred to generally herein as "cohorts") then can persist, and various aspects of the users in the cohorts (including information associated with such user) can be longitudinally monitored or otherwise analyzed (e.g., postings, articles, blogs, job positions, etc.) to determine how actions or experiences related to the cohort may have impacted the users. In one embodiment, the social networking system automatically creates cohorts for certain defined relationships or groupings of users to allow this grouping to persist over time instead of just long enough for the intended purpose of the grouping (e.g., the duration of the class, project, activity, etc.). In another example, the social networking system can allow manual definition of one or more cohorts. The social networking system keeps track of each cohort and the associations between the cohort, groups, and information such as courses over time as users come and go into groups, projects, classes, and courses, for example. It is, of course, understood that references to such terms can include virtual

implementations of the terms (e.g., a virtual project or a virtual classroom

established by the LMS).

Because the system can maintain persistent records of which user(s) is (are) part of which cohort(s), and because, in the preferred embodiment, ever}, 7 interaction is made by a specific authenticated user, the system is configured to trace the cohort to collaborative and/or social learning activity at various levels, and can aggregate statistics of the cohort regardless of current or future group membership or connectivity. The statistics can be aggregated even at an individual message and/or social networking post level. For example, the system allows longitudinal analysis of a teacher's students and their activities years later even though many, most or all of such users may no longer be in the same class or group, Such analysis can assist in measuring performance of one or more aspects of the users in a cohort, which can provide invaluable information to monitor trends or performance of established cohorts, As used in this application, the terms "component," "module," "system" and the like are intended to include a computer-related entity, such as but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer, By way of illustration, both an application running on a computing device and the computing device can be a component. One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers, in addition, these components can execute from various computer readable media having various data structures stored thereon, The components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.

Artificial intelligence based systems (e.g., explicitly and/or implicitly trained classifiers) can be employed in connection with performing inference and/or probabilistic determinations and/or statistical-based determinations in accordance with one or more aspects of the subject matter as described hereinafter. As used herein, the term "inference" refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic - that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for generating higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events or stored event data, regardless of whether the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bavesian belief networks, fuzzy logic, data fusion engines, etc.), for example, can be employed in connection with performing automatic and/or inferred actions in connection with the subject matter.

Furthermore, the subject matter can be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed subject matter. The term "article of manufacture" as used herein is intended to encompass a computer program accessible from any computer-readable device, carrier, or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips.,.), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) ...), smart cards, and flash memory devices (e.g., card, stick, key drive...). Additionally it is to be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications can be made to this configuration without departing from the scope or spirit of the subject matter. Moreover, the term "or" is intended to mean an inclusive "or" rather than an exclusive "or." That is, unless specified otherwise, or clear from the context, the phrase "X employs A or B" is intended to mean any of the natural inclusive

permutations. That is, the phrase "X employs A or B" is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B. In addition, the articles "a" and "an" as used in this application and the appended claims should generally be construed to mean "one or more" unless specified otherwise or clear from the context to be directed to a singular form.

Various aspects or features will be presented in terms of systems that may include a number of devices, components, modules, and the like. It is to be

understood and appreciated that the various systems may include additional devices, components, modules, etc. and/or may not include all of the devices, components, modules etc. discussed in connection with the figures. A combination of these approaches may also be used.

Certain aspects embodiments of the present, invention relate to online learning systems and methods. Additional information regarding online learning systems, networks, and methods may be found in U.S. patent application nos.

11 /937,499, 60/395,405, 60/395,406, 60/395,407, 60/395,409, 60/395,410, 60/671,125, 60/857,560, 60/857,570, 60/857,583, 61/051,673, 61/157,897, 61/251,187, and 61/441,262 and in U.S. Published Patent Application Nos.

2004/0103118, 2004/0103122, 2004/0103137, 2004/0111423, 2004/0122692, 2006/0253533, 2006/0253572, 2008/0176194, 2008/0319949, 2009/0070490, 2009/0305218, 2010/0318642, and 2011/0119598. The entire disclosure of each of the foregoing applications is hereby incorporated by reference as if set forth verbatim herein. Figure 1 illustrates an example system 100 including a social networking system 102 for managing not only users, associated relationships among the users, groups etc, but also cohorts of given users, Social networking system 102 can be a computing system or a collection of one or more computing systems distributed within a LAN, across the Internet, or over one or more other networks. For example, the components described herein can be implemented by various systems that communicate to form the social networking system 102, In addition, it is to be appreciated that social networking system 102 can include various other

components, not shown or described, to perform functions typical of social networks; such components are not shown for ease of explanation.

Social networking system 102 includes an interface component 104 for allowing visual and/or programmatic interaction with components thereof, a cohort, associating component 106 for associating users in cohorts and maintaining the associations, and a cohort analyzing component 108 for performing analysis of the users in a given cohort which can be based on data unrelated to the cohort itself. Social networking system 102 additionally includes various databases, such as a users database 110, a data feed database 112, etc. that can store data typical of social networking systems, such as user profile information, user connections or other relationships, user groups, content for the user profile (e.g., content specified by related or grouped users), etc. Social networking system 102 can optionally include a data mining component 114 for observing data in one or more of the databases, which cohort associating component 106 can utilize to automatically create one or more cohort associations.

System 100 additionally includes a network 120, such as a LAN, Internet, mobile network, etc., and a client system 130 that can access social networking system 102 directly or over network 120. Thus, for example, client system 130 can be a computer, mobile device on a mobile network, etc., that, can interact with social networking system 102 to determine information thereof or specify information thereto, such as user relationships or groupings, user cohorts, cohort analysis, etc.

According to an example, cohort associating component 106 can create a cohort association 140 between two or more users of users database 110. For example, cohort association component 106 can create the cohort association 140 based on specific cohort information received from interface component 104. For example, interface component 104 can allow for programmatic or interactive specification of the cohort information. In one example, client system 130 can provide a web-interface for specifying the cohort association information, and can provide the information to cohort associating component 106, which can be an application programming interface (API) or similar programmatic interface, to allow the specification by one or more computing systems. In any case, cohort associating component 106 can generate cohort association 140 as an entry in the one or more databases of social networking system 102. For example, the cohort association 140 can be represented by at least one of new information generated in a database (e.g., a cohort database) defining the cohort, such as entries in a table of a relational database that associate users of the social networking system 102 (or related identifiers) with a generated cohort (or related identifier), stale information in the databases, such as membership in an expired class, group, activity, etc.

In another example, cohort associating component 106 can automatically generate cohort associations 140 based on observations by data mining component 114 on user or system generated information in the social networking system 102. For example, data mining component 114 can monitor one or more databases (e.g., databases 110 and/or 112) of the social networking system 102 to observe modification thereto. In another example, data mining component 114 can query the databases (e.g., databases 110 and/or 112) to determine certain information related to one or more users, and cohort associating component 106 can use this information to generate cohort associations 140. In one example, data mining component 14 can determine stored or modified data in the one or more databases related to a user's groups, relationships, etc. in the social networking system, and cohort associating component 106 can create a cohort association 140 based on the data.

In a specific example, cohort associating component 106 automatically creates a cohort association 140 of students for each teacher per class, where social networking system 102 is an LMS. For instance, when a school district uploads data for a particular teacher to the LMS, the cohort associating component 06 groups the teachers students for each class, for each term, and/or for each year into one or more cohort associations 140, In another specific example, a user can be added to a project group within a class in an LMS - this can be a system generated addition based on a teacher's indication of the project group, and/or the user can indicate the group membership. In one example, data mining component 114 detects the addition as a changed field in the users database 110 or a similar database. In another example, data mining component 114 detects the user as part of the project group based on querying the users database 110 or similar database. In either case, cohort associating component 106 can establish a cohort association 140 for the project group, and can add other members thereto, where data mining component 114 can similarly determine the other members based on detected modification to or querying of the users database 110 or similar database. In another specific example, data mining component 114 can evaluate other databases or data sources to determine cohorts, such as a data feed database 112 or similar database that stores user generated content on the social networking system 102, Data mining component 114 can analyze the database, and cohort associating component 106 can infer cohort association 140 based on the analysis. For example, a user can post content related to a certain group, activity, event, preference, etc. (e.g., a post regarding what happened in an extracurricular activity, a post about a favorite music artist or genre, a post regarding happenings at home, etc.). Cohort associating component 106 can formulate cohort associations 140 based on detecting and filtering such information. Thus, for example, cohort associating component 106 can generate a cohort association 140 for users of a certain area (e.g., neighborhood, school, district, city, state, country, etc.) that, post about classical music. Cohort associating component 106 can generate a cohort association 140 for users in an area that post favorably regarding siblings, The possible cohort associations 140 are immense.

interface component 104 can be utilized to specify instructions for creating cohort association 140. For example, the interface component 104 can allow for specifying factors to indicate that users should be associated in a cohort. In one example, interface component 104 can be utilized to indicate users that post certain content to their profile should be associated in cohort association 140, and cohort associating component 106 can automatically generate and maintain the cohort association 140 via data mining component 114 determining such users on a realtime event basis and/or by querying the databases one or more times (e.g., based on an interval), as described further herein. Thus, the instructions can be specific as to what actions by or on behalf of the users result, in association with a cohort. In another example, it is to be appreciated that third-party scripts or programs can be generated to utilize interface component. 104 to operate data mining component 114, receive results, and define associations via cohort associating component 106.

In any case, the cohort associations 140 can persist for a long period of time (e.g., post-graduation), which can be longer than the existence of the actual cohort or related commonality among the users. Because the social network system 102 now has a record of which user is part of which cohort associations, and because in some examples every interaction is made by a specific authenticated user, cohort analyzing component 108 can subsequently trace the cohort to social learning activity at varying levels (e.g., including the individual message and/or post level) and can aggregate statistics by cohort association 140. For example, the cohort analyzing component 108 allows analysis of a teacher's students and what they are doing two years later even though they may no longer be in the same class or group. For instance, a cohort for an after school reading group at a school can persist for many years to allow analysis of future data regarding the users in that group. For example, perhaps the users of the group show a trend toward careers or further education in academia. Such analysis can provide valuable information regarding effectiveness of activities related to the cohorts. In one example, interface component 104 can additionally allow for specifying which databases of social networking system 102 (or outside the system 102) are to be mined by data mining component 114 for generating cohort associations 140.

Cohort analyzing component 108 can facilitate recalling and evaluating the cohort associations 140 for comparing data related to the users of one or more cohort associations 140, Cohort analyzing component 108 can perform automated analysis and/or analysis directed by a client system 130 via interface component 104, In an example, cohort analyzing component 108 can obtain a cohort association 140 from cohort associating component 106. This can be based on receiving a selection of the cohort association 140 from interface component 104 (e.g., based on selection using a user interface, selection specified by a program utilizing interface component 104 as an API, and/or the like). Cohort associating component 106 can then analyze one or more parameters of the users in the cohort to infer any possible relationships between the parameters and the previous association in a cohort. In the specific example above, cohort analyzing component 108 can obtain education or career parameters of the users, and can infer a possible association between users in or pursuing academia with a reading group cohort in elementary school.

As described, client system 130 can be utilized to analyze the cohort associations and related data, and can thus display data retrieved via interface component 104 for a user of the client system 130 to perform correlation analyses. In another example, cohort analyzing component 108 can automatically perform correlation analyses, and can provide conclusive results to the client system 130. Continuing with the example above, the cohort analyzing component 108 can provide career and higher education data to client system 130 for users in cohort association 140 related to the elementar school reading group for expert analysis, and/or can confirm the existence, degree, probability, etc. of a relationship between the elementary school reading group and careers or higher education in academia.

In another example, the parameters to be analyzed by cohort analyzing component 108 can correlate to publications or data feed posts created by the user or groups of users. For instance, a level of writing (e.g., word usage, grammar, etc.), an interest in certain hobbies, familial status, etc. can be inferred from data feed posts. This information can be analyzed for a certain cohort association 140 for automated or manual determination of a trend among the related users. In one example, such parameters can he used to associate or register the users to a class in a subsequent academic term (e.g., an advanced English class where a level if writing is determined to satisfy a threshold).

it is to be appreciated, in other examples, that third party scripts or programs can utilize interface component 104 for analyzing cohorts as well. For example, the scripts or programs can recall a cohort association 140 and parameters related to the users by using interface component 104 to access cohort associating component 106 to obtain the cohort association 140, and cohort analyzing component 108 to obtain the parameters of the related users. The scripts or programs can use the data to independently generate statistics or other output regarding the cohort association 140.

In one specific example, where social networking system 102 includes an LMS, a district administrator can utilize cohort associating component 106 (e.g., or a program or interface thereto) to create a cohort of teachers who had attended different professional development sequences or are national board certified teachers (or cohorts of related students under the teachers' instruction). The administrator can monitor the cohorts via cohort analyzing component 108 (e.g., or a program or interface thereto) to determine how many students associated with each cohort end up obtaining a higher level of education, such as proceeding to college versus the students associated with other cohorts of teachers. The LMS may also provide the ability to create a cohort across multiple school systems to aggregate and monitor the data associated with the cohort. For instance, cohorts may be used to compare the graduation rate of national board certified teachers across several districts and school systems with those that, were not. It is to be appreciated that cohorts may he used in other manners as well, such as to manage students in a class. For instance, where a new student joins a class in the middle of a year, cohort associating component 104 can clone a cohort association 140 related to that class, and the new student added to the cloned cohort association. Cohort analyzing component 108 can analyze both cohort associations to determine how the ne student changed the class. Cloning cohorts allows for persistent groups and analysis of the data associated with the cohorts. Cohorts can span other groupings as well, as described.

Figure 2 illustrates an example system 200 for associating users in cohorts for subsequent analysis thereof. System 200 includes a cohort associating component 106 and a cohort analyzing component 108, which can be part of a social networking system, as described above. Cohort associating component 106 can create and store cohort associations in a cohorts database 202, and cohort analyzing component 108 can access cohorts database 202 (e.g., directly or through cohort associating component 106) to obtain information regarding one or more cohorts and/or users associated with the one or more cohorts. Cohort associating component 106 and cohort analyzing component 108 can each be provided by one or more local or distributed computers in a social networking system.

Cohort associating component 106 includes a cohort creating component 210 for generating a cohort that can be associated with a plurality of users, an optional event detecting component 212 that can determine occurrence of events on a user profile, and/or an optional data querying component 214 for obtaining user profile information from the social networking system.

Cohort analyzing component 108 can include a cohort retrieving component 220 for obtaining a cohort and/or related information such as users thereof, a parameter determining component 222 for obtaining one or more parameters of a profile of a user in the cohort, a parameter comparing component 224 for analyzing the users based on the one or more parameters, and/or an optional output

component 226 for providing the user analysis to an interface,

According to an example, cohort creating component 210 generates a cohort for associating a plurality of users. This can occur without adding users to the cohort, in one example. The cohort can include information such as an identifier, qualifying criteria for the cohort, a description, a category, etc., ail of which can be stored in cohorts database 202, in one example. Cohort associating component 106 can add users to the cohort based on detected events, determined user profile data, etc., as described. This can include adding the user, or an identifier thereof, to the cohorts database 202 (e.g., in a table or other structure relating to a given cohort association)

In one example, event detecting component 212 can determine whether one or more events related to a user profile qualify the user for the cohort association. Thus, in an example, cohort associating component 106 can monitor updates to user profiles (e.g., via a data mining component, as described) for certain criteria, such as joining a group, posting certain content to the social networking system, and/or substantially any event from which potential association to a cohort can be inferred, as described, This can include monitoring a data feed (e.g., a really simple

syndication (RSS) feed) of various events occur on the social networking system, various events related to certain users or users of certain groups, etc,

For example, event detecting component 212 can aggregate the data feed at multiple levels (e.g., for a given user, a given class, a given school, etc.) and can use the aggregation to represent actual activity in the social networking system, In one example, the data feed can include information pertaining to social networking posts and conversations. Event detecting component 212 can aggregate feed data from multiple sources related to a given user, in one example. In some examples, semantic parsing routines can be used parse feed content to identify possible relationships among users (e.g., based on recipients or readers of certain posts, common strings or parameters of posts by given users, etc.). In this regard, the cohort associating component 106 can identify semantic intersections in the aggregated data feed to provide some metric of relevance or degree of separation to the intersection, and can determine whether to associate users in a cohort based on such.

in a specific example, weights may be applied for multiple metrics as well. For instance, event detecting component 212 can weigh words in the aggregated data feed by context (e.g., whether the words are from a forum, wiki, comment, etc), relevance to topic (e.g., if the topic is The Raven, how likely is cigarettes as a word/concept applicable to the subject), relevance to data provided in a user's profile data (e.g., interest lists), distance to another user (e.g., degree of relational separation, location, etc.), likelihood that the words are slang, etc. Cohort associating component 106 can use the weights in determining whether the words, as weighted, satisfy requirements for cohort association.

in another example, data querying component 214 can quer one or more data sources associated with the social networking system to obtain one or more parameters of a user profile. For example, the data source can be a user profile database, a data feed at a snapshot in time, and/or the like. Such querying can allow for creating cohort associations based on user profile history, as opposed to listening to current data feed updates, as described with respect to event deleting component 212, It is to be appreciated that both forms of monitoring can be used in determining parameters of user profiles. Based on the parameters observed by event detecting component 212 and/or data querying component 214, cohort associating component 106 can determine whether user profiles satisfy criteria of the cohort association, For example, if event detecting component 212 detects that a user joins, or is otherwise added to, a group, cohort associating component 106 can determine whether the group correlates to a cohort association, If so, cohort associating component 106 associates the user profile with the cohort association that correlates to the group. In one example, inferences can be made regarding whether the user profiles satisfy cohort criteria based at least in part on detected events and/or data queried in the social

networking system, It is to be appreciated that cohort association and creation can be additionally or alternatively performed manually via an interface, as described previously.

Cohort retrieving component 220 can subsequently retrieve one or more cohort associations for analyzing how actions or information concerning the cohort impacted related users over time. In one example, retrieving the cohort associations can occur much later in time than when the cohort association was created (or at least since the data from which the cohort association was created occurred). Once a cohort is retrieved, parameter determining component 222 can obtain parameters of the users of the cohort, which can be unrelated to the cohort itself, and parameter comparing component 224 can analyze the parameters of at least a portion of the users to draw one or more inferences of the cohort For example, the inferences can be based on one or more rules regarding the parameters (e.g., if 50% of the users in a cohort for a second grade reading study group pursued higher education, it may be inferred that the study group had an impact on those users). Such rules can be defined by or using cohort analyzing component 08, a third party script or application, and/or the like, such that users can be analyzed based on the rules to make desired inferences.

in this regard, retrieval and analysis of the information can be manually performed by an expert using an interface, and/or rich statistical modeling can be performed by scripts or programs that can access an API into the cohort, analyzing component 108, as described.

As described, certain aspects can relate to the social networking system as an LMS. In one embodiment when the data is uploaded from a school system as explained above, the LMS provisions not only accounts for users, but also course information, course enrollment, social grouping and other information. That is, classes may be automatically provisioned for each teacher, which is also associated with a social group that is the classroom associated with the teacher. In one embodiment, the LMS identifies the classroom group as a type "class," which allows the system to automatically create a moodle course, and cohort associating component 106 can automatically provision a cohort of all the students across all of their classes and/or a cohort for each class as well. A "moodle" in this instance can refer to a typical LMS online course.

ft should be appreciated that other groups may be created by the LMS or by administrators or other users, such as the Parent-Teacher Associates ("PTA"), student voices, and teachers' lounge. 'The LMS provides the use of information that may be grouped into "collections," which may be associated with teachers, other users, classes, groups, etc. and include content for the LMS, such as the content- provided by the Smithsonian and National Geographic and/or available over a network. The collections may also include other content users may contribute or wish to use in their respective classes, groups, or cohorts. For instance, a teacher may create a project and then incorporate content from the collections into a chosen cohort, group, etc. Students may be grouped into the project and can then perform collaborative work using standard web 2.0 tools.

The LMS also provides "connections" to each user, which are the other users they are able to "see" that may be filtered based on discoverability, profile, or security rules instigated by the LMS. The LMS is policy managed; that is, in some examples all of the interactions in the LMS are policy managed, such as the

communication between two users or the posting of information to a blog by a single user. Discoverability matrices are stored in the system's database(s) and include pairwise comparisons of user versus an item, such as another user, a project, a class, a group, etc. The comparisons determine whether a user is able to perform an action, like take part in an activity feed or a blog, or consequences of actions such as filer, moderate, store and other processes. The LMS analyzes the discoverability matrixes before performing the action to ensure the user is allowed to perform that action or to see people, groups, content etc. or that the proper consequences occur.

As explained above, during provisioning of the data from the school system, the LMS derives relational data based on the enrollment data contained in the data from the school system. For instance, a school system provides course enrollment information, which the LMS of the presently-described embodiment analyzes to create social groupings. Also as explained above, the LMS also creates and/or acts on membership data or visibility rules, such as students can only see students in their school, parents can only see their own kids, teachers can see any other teacher in the district, ay member that is a member of the same group can see the person in their group, etc. In the course of the LMS, users collaborate on projects, where members in the project come and go, and the project is eventually completed, or the users leave the project. As another example, students in a teacher's class are part of the group associated with that class, but eventually graduate and leave that class. The LMS can allow cohort associations, however, to remain persistent, even after the user- graduates or the project terminates. It should be understood that this enables a host of downstream activities and analysis, such as assessment and further management of groups of students. The LMS can allow a teacher to form subgroups within her main group, such as a class. This allows the user to break apart the class into smaller groups, which, in one embodiment, may be automatically created for each teacher for each set of students. Moreover, cohorts may persist as the user comes and goes from groups of which the user is no longer a member or a course completed by the user. The cohort association continues to persist and can identify who was in that cohort regardless of what happens to the group, class, or users associated with the cohort. This provides traceability in the whole database of the LMS, as described herein. That is, the LMS may keep track of subsequent posts, communications, or activities for the entire cohort and the participation of the cohort members. As a result, the LMS allows the aggregation, evaluation, and assessment the data associated with a cohort.

A practical effect of a cohort can be the grouping of users into a social group or into a course to keep the data associated with the users and the groups in a persistent state, For instance, the LMS provides the ability to associate videos, blogs, forums, wikis, etc. with classes, projects, assignments, etc. A cohort may be the group that participates in an assignment and makes use of the blogs, forums, and wikis by posting information. The users may then complete the assignment and eventually be removed from the group associated therewith, such as the class. Cohorts, however, provide the ability to retain the association of the users to each other, the class, the assignment, and/or the activit '.

When a user creates a new group, the group is created where the user has permission to create a group. If the group is a type "class" or "project," the LMS may provide the ability to associate a cohort with the group via cohort associating component 106. One reason for this is convenience of enrollment. In social networks, the user receives an individual invitation that (s)he either accepts or rejects and individuals are invited to groups. That is, social networks are typically very user-centric, and based on the invite-request model. That methodology, however, creates a burden on a teacher who desires to quickly and easily put all of the students associated with the teacher into groups and associated subgroups with projects. The sequencing is that the user creates a group, selects one or more cohorts, and associates the cohort(s) with the group via cohort associating component 106. That association can cause the members of a social group and, if it's a class or a project, also enrolled in a corresponding rnoodle course. Thus, this process creates the cohort and maintains the traceability between the cohort.

Those skilled in the art should appreciate the database schema of the LMS may be updated to accommodate the association of cohorts with groups and users, That is, the purpose of that portion of the database schema is to enable the maintenance of the relationship of the cohort to a group. Fields can be provided for mapping relationships between cohort groups and items, so the LMS may return to the relationships and retrieve any of the activity, assignment submissions, or other things that might have happened within the group by a member of a cohort or by the whole cohort Once the LMS stores the data in the database, it can be selected in different manners for aggregation and assessment.

From a manager's (for example a teacher's) point of view, cohort association can allow such person to perform small group instruction within a social learning platform as well as a standard LMS platform. Currently, in existing social networks, a user is either a member or not a member of a given group. There is no meaningful notion of being a subcohort within a group. In a typical LMS, a user is either enrolled in a course or not enrolled in the course. The ability to create the digital small group instruction through creating cohorts allows the system to collect everyone participating in a project. The cohorts, however, can be the students learning at different levels or the material or assignments can be different by cohorts.

It should also be appreciated that the ability to create and manage cohorts as explained above supports the ability to longitudinally assess over time and to track individual performance, If a cohort is associated with an item, such as a project that has a unique ID throughout the system, and further associated with a cohort which creates the membership in the group, then if a user provides a blog posting, the posting is associated with the user as a member of the cohort for an extended period of time.

It should be further understood that a cohort can work as a subset of a group, meaning there can be a smaller number of users in the cohort than are present in a group to which that cohort relates. Cohorts may also work in reverse, For instance, if a teacher teaches four similar history classes, a cohort may be created via cohort associating component 106 with all the students from the four classes in order to gain efficiencies and/or minimize duplication of providing information to or about the students. LMSs, such as moodle or blackboard, typically include standard management capabilities for courses, course enrollment, assignments, lessons, due dates, grades, etc. With the addition of cohort capabilities as described herein, however, an enrollee's (such as a specific students' comments, posts and activities may be maintained, as well as the history of feedback the student receives form the teacher giving rise to a new and valuable set of capabilities that go far beyond management, Taking advantage of standard LMS capabilities, such as assignments or other data structures, messaging and dialogue between or among users and new content generated as a result of assignment or otherwise related to an assignment can be associated with it, providing further contextual data and therefore more granular and fine grained assessment and other capabilities. Thus it should be understood that system objects generated within the system can have other user/cohort related data associated with them providing even more robust capabilities.

in one embodiment, the LMS allows information and data associated with cohorts to be aggregated and tracked by cohort analyzing component 1.08. The LMS then provides the ability to cohort and look at activity by cohort, whether social activity, user generated data such as posts inside or outside of group-based contexts, or other more traditional data such as enrollment, subject matter, grade, assignments and other work artifacts that are created, turned in, scored and/or graded. Cohort analyzing component 108 can also evaluate the cohort in terms of the complexity, word choice, fluency, skill level, appropriate/depth of use of vocabulary, etc. as evidenced by the content of their work, posts, publications, and other activities that are used or associated with the cohort or portions thereof to gather substantial information an understanding of concepts, effect of stimuli on information

recognition and activation, etc. In some examples, the LMS then provides the ability to look at the activity, such as the post itself or the messaging stream, and perform an analysis on that thread.

Referring to Figures 3-7, example methodologies relating to generating cohort association and/or subsequent analyses thereof are illustrated. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance with one or more embodiments, occur in different orders and/or concurrently with other acts from that shown and described herein, For example, it is to be appreciated that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology in accordance with one or more embodiments.

Figure 3 illustrates an example methodology 300 for analyzing cohort associations. At 302, a cohort association for at least two users of a social network established based at. least in part on a determined relationship can be retrieved. As described, the determined relationship can be other than a user-initiated relationship (e.g., a friend added by the user in the social network) and can be an automatic association based on membership of the users to a common group, similar filtered content posting performed by the users that may indicate association to a common group or interest, education level, etc. The cohort association can be retrieved from a database (e.g., by querying based on an identifier of the cohort association, one or more criteria used to qualify users to the cohort association, a portion of a

description of the cohort association, etc.).

At 304, an analysis of one or more parameters of the at least two users can be performed based in part on the cohort association. For example, the parameters can be compared to determine any possible association or trend, as described. This can include retrieval of the parameters, analysis thereof to determine whether the parameters relate to a desired value or have some commonality, inferences based on complex statistical analyses regarding the parameters, and/or the like, It is to be appreciated that substantially any level of analysis can be performed and/or can be reserved for third-party applications.

At 306, at least a part of the analysis can be communicated. This can include communicating t e retrieved parameters to a user interface or API, communicating a comparison of the parameters, communicating one or more inferences from statistical analyses, etc., as described. In any case, such cohort association allows for longitudinal analysis of users based on the cohort association, which can allow for determinations, assumptions, inferences, etc. to be made about efficacy of the cohort to produce an intended, consequential, or unintended result for the related users.

Figure 4 illustrates an example methodology 400 for creating cohorts for a plurality of users. At 402, a cohort association can be created for a plurality of users. As described, the cohort association can have a collection of criteria for associating users, and/or can include an initial list of associated users, The cohort association can be created in a relational database related to a social networking system.

At 404, a system-generated or user-generated event related to a profile of a user can be detected. Such events can be detected based on monitoring a database for global modifications, modifications related to a certain user, group, or other entity, etc.

At 406, it can be determined whether the event satisfies criteria for the cohort association. This can include comparing a parameter of the event with a required parameter for the cohort association. For example, the parameter can relate to a string in a content post published by the user (e.g., "time.com" if the user shares a link to an article on time.com the user is associated in a cohort of time.com readers), a group joined by the user (Mr. Smith's sixth grade class of 1992, and thus the user can be in a cohort of time.com readers in Mr, Smith's sixth grade class of 1992 where both events occur), and/or the like.

At 408, the user can be added to the cohort association based on the event. For example, if the event satisfies the criteria for the cohort, the user is added to the cohort. Thus, the user can be considered in subsequent cohort, association analyses (e.g., whether time.com readers in Mr. Smith's sixth grade class of 1992 have any similar profile parameters 20 years later).

Figure 5 illustrates an example methodology 500 for adding users to a cohort association. At 502, a cohort association can be created for a plurality of users. As described, the cohort association can have a collection of criteria for associating users, and/or can include an initial list of associated users, The cohort association can be created in a relational database related to a social networking system.

At 504, a profile of a user can be queried to determine whether one or more parameters associated therewith satisfy criteria for the cohort association. Thus, similarly to methodology 400, this methodology attempts to associate users to a cohort, but based on querying the profile instead of monitoring realtime events. The query can include querying one or more databases of a social network, analyzing a previous data feed, and/or the like. It is to be appreciated that a combination of these techniques can be used (e.g., upon detecting time.com in a posting string, the profile can be queried to determine whether the user is in Mr. Smith's sixth grade class of 1992). At 506, the user is added to the cohort association based at least in part on the one or more parameters. For example, if the event satisfies the criteria for the cohort, the user is added to the cohort. Thus, the user can be considered in subsequent cohort association analyses,

Figure 6 illustrates an example methodology 600 for analyzing cohort associations. At 602, a plurality of users in one or more cohort associations can be determined. For instance, this can include determining an intersection of users specified for the one or more cohorts (e.g., determining at least identifiers of the users that can be used to determine one or more profile parameters of the users).

At 604, one or more parameters unrelated to the cohort association regarding the plurality of users can be obtained, The one or more parameters can relate to a current profile parameter of the plurality of users, where the cohort association occurred in the past and may be expired. The one or more parameters can be obtained from one or more databases of a social networking system related to the user.

At 606, the one or more parameters are analyzed to generate an interference regarding the cohort association. As described, the inference can be of varying levels of statistical complexity, and can relate to whether there are certain trends in the one or more parameters. From this information, conclusions can be drawn regarding the one or more cohort associations, as described.

Figure 7 illustrates an example methodology for generating cohorts, At 702, a data feed is ingested, This can include processing a snapshot of a data feed over a period of time, receiving a data feed in realtime or near realtime, etc.

At 704, organizational structure can be derived from the data feed. For example, the data feed can specify a schools established under a district, classrooms under the school, etc, in a data feed of an LMS. At 706, user-to-user relationships can be derived from the data feed. For example, the data feed can specify a teacher establishing a class with students, and thus a teacher-student relationship can be derived for the teacher and the various students in the class. At 708, user-to- organizational unit relationships can be derived from the data feed. Thus, the students can be derived as students in a class of a school in a district, etc.

At 710, cohorts can be automatically established to reflect user-to- organizationai unit relationships. Thus, for example, a cohort, can be created for students in a given class, activity, etc., teachers that teach in a given classroom, etc, The cohorts can be of varying granularity, as described, such that the cohorts can be longitudinally analyzed to determine trends or common parameters, etc, among the users in a given cohort. The automatically generated cohorts can persist over time, and can thus be analyzed many years from when the cohort existed, for example.

At 712, social groups and learning courses/projects can be created based on the user-to-organizational unit relationships. For example, students that were in a higher level reading class cohort can be grouped and/or placed in similar higher level classes in a next education term. Thus, at 714, membership in social groups and enrollment in courses can be established based on derived relationships. At 716, cohorts can be associated with social groups and courses. These associations can persist, as described, an can be analyzed to determine whether the social group or courses led the users of the cohort to exhibit similar profile parameters in the future. At 718, discoverability rules can be populated based on user-and-organizational unit relationships.

To provide a context for the various aspects of the disclosed subject matter, Figures 8 and 9 as well as the following discussion are intended to provide a brief, general description of a suitable environment in which the various aspects of the disclosed subject matter may be implemented. While the subject matter has been described above in the general context of computer-executable instructions of a program that runs on one or more computers, those skilled in the art will recognize that the subject innovation also may be implemented in combination with other program modules. Generally, program modules include routines, programs, components, data structures, etc. that perform particular tasks and/or implement particular abstract data types. Moreover, those skilled in the art will appreciate that the systems/methods may be practiced with other computer system configurations, including single-processor, multiprocessor or multi-core processor computer systems, mini-computing devices, mainframe computers, as well as personal computers, hand-held computing devices (e.g., personal digital assistant (PDA), phone, watch...), microprocessor-based or programmable consumer or industrial electronics, and the like. The illustrated aspects may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. However, some, if not all aspects of the claimed subject matter can be practiced on stand-alone computers. In a distributed computing environment, program modules may be located in both local and remote memory storage devices.

With reference to Figure 8, an exemplary environment 800 for implementing various aspects disclosed herein includes a computer 812 (e.g., desktop, laptop, server, hand held, programmable consumer or industrial electronics...). The computer 812 includes a processing unit 814, a system memory 816 and a system bus 818, The system bus 818 couples system components including, but not limited to, the system memory 816 to the processing unit 814. The processing unit 814 can be any of various available microprocessors. It is to be appreciated that dual microprocessors, multi-core and other multiprocessor architectures can be employed as the processing unit 814,

The system memory 816 includes volatile and nonvolatile memory, The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 812, such as during start-up, is stored in nonvolatile memory. By way of illustration, and not limitation, nonvolatile memory can include read only memory (ROM). Volatile memory includes random access memory (RAM), which can act as external cache memory to facilitate processing, Computer 812 also includes removable/non-removable, volatile/non-volatile computer storage media. Figure 8 illustrates, for example, mass storage 824. Mass storage 824 includes, but is not limited to, devices like a magnetic or optical disk- drive, floppy disk drive, flash memory or memory stick. In addition, mass storage 824 can include storage media separately or in combination with other storage media.

Figure 8 provides software application(s) 828 that act as an intermediary between users and/or other computers and the basic computer resources described in suitable operating environment 800. Such software applicatio (s) 828 include one or both of system and application software. System software can include an operating system, which can be stored on mass storage 824, that acts to control and allocate resources of the computer system 812, Application software takes advantage of the management of resources by system software through program modules and data stored on either or both of system memory 816 and mass storage 824, The computer 812 also includes one or more interface components 826 that are communicatively coupled to the bus 818 and facilitate interaction with the computer 812, By way of example, the interface component 826 can be a port (e.g., serial, parallel, PCMCIA, USB, FireWire,.,) or an interface card (e.g., sound, video, network...) or the like. The interface component 826 can receive input and provide output (wired or wirelessiy). For instance, input can be received from devices including but not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, camera, other computer and the like. Output can also be supplied by the computer 812 to output device(s) via interface component 826. Output devices can include displays (e.g., CRT, LCD, plasma...), speakers, printers and other computers, among other things.

According to an example, the processing unit(s) 814 can comprise or receive instructions related to associating cohorts in a social networking system, analyzing cohorts, etc., and can receive related information from or provide related information to an interface component 826 (which can include an interface component, such as interface component 104), and/or other aspects described herein. It is to be appreciated that, the system memory 816 can additionally or alternatively house such instructions and the processing unit(s) 814 can be utilized to process the

instructions. Moreover, the system memory 816 can retain and/or the processing unit(s) 814 can comprise instructions to effectuate updating of the directory objects to ensure replication with one or more additional operating environments, for example.

Figure 9 is a schematic block diagram of a sample-computing environment 900 with which the subject innovation can interact. The environment. 900 includes one or more client(s) 910. The elient(s) 910 can be hardware and/or software (e.g., threads, processes, computing devices). The environment 900 also includes one or more server(s) 930. Thus, environment 900 can correspond to a two-tier client server model or a multi-tier model (e.g., client, middle tier server, data server), amongst other models. The server(s) 930 can also be hardware and/or software (e.g., threads, processes, computing devices). The servers 930 can house threads to perform transformations by employing the aspects of the subject innovation, for example. One possible communication between a client 910 and a server 930 may be in the form of a data packet transmitted between two or more computer processes.

The environment 900 includes a communication framew rk 950 that can be employed to facilitate communications between the client(s) 10 and the server(s) 930. Here, the client(s) 910 can correspond to program application components and the server(s) 930 can provide the functionality of the interface and optionally the storage system, as previously described, The c!ient(s) 910 are operatively connected to one or more client data store(s) 960 that can be employed to store information local to the client(s) 10. Similarly, the server(s) 930 are operatively connected to one or more server data store(s) 940 that can be employed to store information local to the servers 930.

By way of example, one or more clients 10 can define or request cohort associations to the server(s) 930 via communication framework 950. The server(s) 930 can leverage the server data store(s) 940 to determine parameters related to the cohort associations and/or related user parameters. The server(s) 930 can obtain the associations and/or related parameters and transmit such back to the client(s) 910 via communication framework 950. The client(s) 910, in one example, can store quotes (and/or market definition specifications) in the client data store(s) 960, for example.

Figures 10-14 illustrate example user interfaces for managing cohort associations. For example, the user interfaces can be provided by an interface component, as described above, and can communicate with one or more databases or other sources to receive or modify cohort association information in a social networking system.

Figure 10 illustrates an example user interface 1000 for adding, deleting, or selecting a cohort association. In addition, user interface 1000 has "Add" and

"Delete" options for adding or removing one or more cohort associations, as described above.

Figure 11 illustrates an example user interface 1100 for selecting a stored cohort association for modifying or reviewing related information. As described, the cohort associations can be stored in a database accessible by the interface or one or more components with which the interface can communicate (e.g., a cohort associating component).

Figure 12 illustrates an example user interface 1200 for modifying options of a selected cohort association, such as a cohort name, description, members, etc. For example, user interface 1200 shows a list of possible users that can be added to the cohort association, and at least a portion of the users can be selected for addition thereto.

Figure 13 illustrates an example user interface 1300 following addition of a user from the list of available cohorts to the list of cohort members.

Figure 14 illustrates an example user interface 1400 with various options of a social networking system, including a "Manage my Cohorts" option. What has been described above includes examples of the subject matter described herein. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the subject matter, but one of ordinary skill in the art can recognize that many further combinations and permutations of the su bject matter are possible. Accordingly, the present subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms "includes," "has," and "having" are used in either the detailed description or the claims, such term is intended to be inclusive in a manner similar to the term "comprising" as "comprising" is interpreted when employed as a transitional word in a claim.

40 v2: learn ing A;ei w;; i ' ¾- £noi> ed servic s

Table of Contents

Gst mg Started

& tenant 1

&wstoken 2 ePalsResponse 2

We -Servke F nct^ns; wsfunction,... ,,.,.,„,,,.,.,„,, ,,.,.,„,,,„.,„,,,2 epals_create_user 2 epals_get„users 3 epals_create_cohort 4 c p a 1 s set co h o t_ . ro s te r 5 epals_get_cohort_roster 6 epals . _create__cour.se 7 epals__enroll_users 8 epals_get_course_members 9 epals__enroll_cohort 10 epals_create_dropbox_assignment 11 epals__get_assignments 12 epals_dropbox_submission 14 epals_dropbox_get_submissions 15 epals_dropbox_set_teacher_comment 16 epals_dropbox_get_file 17 epals_dropbox_get_courses 17 epals_delete_object 19

Getting Started

The Moodle WebServices were created to support Provisioning and the Moodle- based Homework DropBox.

Est.enant.

Moodle knows which tenant to use by the appearance ?&tenant=tenant_shortname aatt tthhee eenndd ooff aa uurrll;; wwhheerree tteennaanntt__sshhoorrttnnaammee iiss tthhee nnaammee ooff tthhee tteennaanntt.. TThhiiss iiss tthhee nnaammee ooff tthhee tteennaanntt aass iitt aappppeeaarrss iinn PPllaattffoorrmm MMaannaaggeerr aanndd aass tthhee AApppplliiccaattiioonn NNaamme for the tenant. This name cannot be different that it appears elsewhere.

The rest services all use the same base-url:

{webroot}/webservice/rest/server.php?&tenant-{tenant_sho rtname}

EEPPAALLSS MMOOOODDLLEE WWEEBB S SEERRVVIICCEESS AAPPI i 1. Where {webroot} is the value of $webroot identified in e Pa Is/ co nfig_ e Pa Is. ph p

The examples below are based on a dev environment used for creating the services. The base URL is:

http://moodle20.qa. epals.com/moodle/webservice/rest/server.php?&tenant=nyc

Swstok

For each server, there is an ePals/config_ePals.php script that defines server- specific configuration options such as webroot mentioned above. Included in this is the webservice user's token. On moodle20.qa.epals.com this was:

33c09968a41df33613a93cf0e3be5f53

The token is passed (as a POST parameter) as

&wstoken=33c09968a41df33613a93cf0e3be5f53

The token for a given tenant is available via PlatformManager. If you do not have access to PlatformManager, you will need to ask Jin or ops for the necessary information.

Note that all these services use POST. On moodle20, and qa these services may be accessed via http, however for anything public-facing (production) the services are available only via via HTTPS, this should keep parameters from prying eyes and take advantaged of SSL encryption. Nothing is available via get whether operations are get, update, or post requests; this is due to most browsers, especially slightly older browsers only supporting get/post and the fact that a get request displays posted data in the get url whether ssl is used or not, thus negating encryption. POST is the only reliable and secure HTTP method.

Responses are all XML and include a status attribute which will be "OK" if no problems were encountered or a status message if something went wrong, or is unexpected. Not all non-OK responses are necessarily bad. Deleting a resource that doesn't exist will result in a status saying the resource is not found; this is not necessarily bad, but the status message should help diagnose why you might think the resource exists. Responses will minimally look like the following:

<?xml version="1.0" encodings" UTF-8"?>

<ePalsResponse method="epals_some_method" status="0K" />

Web-Service Fu nctions: wsfu rtetfon epaisjsreatej j ser

Purpose:

EPALS MOOOLE WEB SERVICES API \ 2 Create a user account in moodle that corresponds to an ePals user GUID

Par me ers:

• &wsfunction=epals_create_user

• &userid=2525

The userid is expected to be a user id within a given learningNetwork

• &learningNetworkld= HH 0

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

• &ro\e-student

valid roles:

o student

o teacher

• & sema e-abcd(S>ny.epals.com

This should be the fully qualified ePals username.

&password=!6>Nf@ "30$*#$%-

While required, the password is not likely to ever be used, therefore this may be anything and does not have to match the main ePals user password.

• &fi r s tn a m e = Do vid

User's first name for displaying to the teacher

• &lastname=Ma rtin

User's last name for displaying to the teacher.

S3 m p ! P es p n s ι

<?xml version=" 1.0" encoding= "UTF-8 " ?>

<ePalsResponse method= " epals create user "

username=" abcd§ny . epals . com" status="OK" id= " 4 " />

s nse Vskses:

• id="4"

The Moodle id for the added user.

• username="abcd@ny.epals.com"

Affected T les^

• user epals get ysers

Pur ose:

Return user info given a comma separated list of user ids.

Implemented in preparation for possible parent support where for a given parent user, the dropbox would be passed the ids of the parent's children. The UI would require retrieving a displayable list of names for the parent to select from and thus by passing get_users the ids for those children we can get back the necessary data for display. May be used anywhere that one or more ids for a given network are known and display data is desirable.

EPALS MOODLE WEB SERVICES . P I 3 Parameters;

&ePa\s_user_ids=2525,2526,2527

The comma separated user ids in an ePals learning network.

• &learningNetworkId=i Oi O

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learning Network of a tenant.

Sam le es ons ::

<ePalsResponse method= " epals get users " status="OK" >

<users id="4" username="dmartin" displayname=" DAVID MARTIN" />

<users id="5" username=" lwilson" displayname= "LINDA WILSON" />

<users id=" 6 " username=" jmartinez " displayname=" JOSEPH MARTINEZ"

/>

</ePalsResponse>

espons V lues:;

• id="2525"

Moodle user id for the given user.

• user nam e- "d m a rtin "

The user name identified for the given user when the user was provisioned in Moodle

• displayname= "DA V1D MARTIN"

Combination offirstname and lastname values for user record. Note, first and last names may not actually be available for all users, if only a display name is appropriate for a given network, the display name can be used as the user's firstname and will consequentially make the display name provided above appear the same way.

Affected T les?

users

Used for data retrieval only epals.. create ..co ort

Purpose:

Create a cohort into which users may be added. The id, learningNetworkld, and tenantld fields are used to map a learning network user as the owner of a cohort. By default, cohorts are not owned in Moodle, this mapping is add-on functionality to provide multi-tenant-aware cohort ownership.

Parameters;

• & ws f u n c t i o n = ep a ls_ crea te_ cohort

• &co h ort_n a \ne-tabc_pl_roster

This would be the short-name for urls in a normal Moodle or Com mun ity Server environment and needs to follow the same conventions of no spaces or special characters beyond an underscore.

EPALS MOODLE WEB SERVICES API i 4 • &cohort_description= Teacher tahc's period 1 roster

While technically a description, it should be considered more of a display- friendly title for the cohort.

• &\d="2532"

The user id within in an ePals learning network. This user is, in -effect the owner of the cohort.

• &learningNetworkId=I0I0

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learning Network of a tenant.

S¾mpte Response:

<?xml version^" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method="epals_create_cohort" status="OK"

moodle_cohort_id= "l"/>

es o s Vakses:

• moodle_cohort_id- "1 "

Moodle's internal id for the cohort. Provided so that it may be stored with a teacher ePals Id somewhere that CS scripting can have access to it in order to associate a teacher with a cohort. Cohorts in Moodle are not owned.

Affected Tsbtes:

• cohort

• cohort_map - maps the cohort to the user creating the cohort, including

1 ea r n in gN etwo rkl d and tenantld data. e pa!s..set . c©l r ... roste r

P r os -

Set the roster (membership) of a given cohort. The roster is purged of any existing members and set to the list of user ids provided.

Parame ers;

• &wsf nct\on-epals_set_cohort_roster

• &cohort_id=l

The moodle cohort id as returned from epa ls_ create_ coh ort

• &cohort_roster=2525,2526,2527

Comma separated list of user ids in the specified learning network.

• &learningNetworkId=i020

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

EPALS MOODLE WEB SERVICES P i S 28849 / 09303

Ss m p \ e R esp n se :

<?xml version^" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method="epals_set_cohort_roster " status="OK"

failed_members=" " existing_members=" " deleted_members= " "

cohort headcount= " 2 " />

Response Values:

• failed_members=""

comma separated list of members that were not addablefor some reason.

• existing_members=""

comma separated list of members that already were in the cohort

• deleted_members=""

comma separated list of members removed from cohort

• cohort_headcount="3"

The number of students in the cohort

Affected Ta les;

• cohort_members

epaisjgetjsohortjroster

Get a list of students for the target cohort

• &wsfunction=epa/s _get_cohort_roster

• &cohort_id=l

Moodle cohort id as returned from epals_create_cohort

Sa npte Response:

<?xml version=" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method= " epals get cohort roster " status="0K"

members="2525.1010.1,2526.1010.1,2527.1010.1"/>

Response Values:

• members- "2525.1010.1, 2526.1010.1,2527.1010.1"

comma separated list of member ids with learningNetworkld and tenantld encapsulated in return value. Note for future releases: future releases will likely return membership as xml nodes with id, lea rn ing Ne tworkld, and tenantld as separate attributes.

Affected T bl s:

• cohort_members

EPALS MOODLE WEB SERVICES API i 6 ep .. create ..course

Pur ose:

Create a new Moodle Course associated with a teacher and an ePals group

(ePals group - CS group)

Parame ers:

• &WS f u n ct i o n = epa/s_ area te_ course

• Weaving Period 1

Title for course

• &teachei -2525

Id of a teacher-user in the Note: this teacher user must already have been added via epals_create_user. If more than one teacher is to participate in the class, the teacher parameter may be a comma separted list of user ids, all teachers will be enrolled as teachers once the course is created.

• &learningNetworkId=I0i 0

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=2

The id within a learningNetwork of a tenant.

• &epals_group_id=I

The ePals or CS group id to relate to the course. This is stored as the course's "idnumber" and allows group to course mapping.

• &s u m ma ry = Basket Weaving for groggy students.

(Optional) The summary is a short description of a course, for a provisioned course this may not be necessaiy, and the teacher will be able to add a summary and other information at run -time.

Sam e s ns :

<?xml version="1.0" encoding="UTF-8 " ?>

<ePalsResponse method= " epals create course " status="OK" epals id=" 1 " moodle id=" 2" />

Pespoes Va^ s

• epals_id="r

epals _group_id passed in as a paramter

• moodle_id="2"

Moodle' s id for the created course in the event. Intended to allow a group and course id to be stored in a central ePals DB.

Affected T les?

• course

• user_enrollments

• enroll

EPALS MOODLE WEB SERVICES API i 7 2 8 8 49 / 0 93 03

epa e roll se s

(un)Enrolls users in a course

Supports two types of enrollment, "append" will add or remove user ids provided as specified below, "replace" (default if type is not specified) will unenroll an users not in the list of ids, and will enroll any users that are in the list of ids that are not already enrolled.

The replace enrollment type is powerful and with that power comes the ability to do damage. If using the replace type, or not specifying the append type, you should include any teacher ids in the list of users. Otherwise the teachers will be removed form the list which can have unfortunate consequences. However, in the context of a CommunityServer environment, a group's membership includes the teacher and students, thus getting the member ids for a group and using them as the ids passed to epals_enroll_users is a safe way to use epa 1 s_e n ro 1 l_u s e r s with the type=replace parameter.

Parame ers;

• &wsi\ ct\OYi-epals_enroll_users

• &type=

options

o append

user ids are enrolled. If the user id is negative the user is unenrolled. o replace (default)

userids are compared against current course membership. If an id exists, it is ignored, if an id does not exist it is added. If an id exists in membership but not in the provided list, the corresponding user is unenrolled. (see Critical Note section above).

• &userids=2525,2526,2527,3030

comma separated list of user ids within a given learning network.

If the type parameter is "append". A negative guid (i.e. -1234-5678-9106) will unenroll the target user.

• &learningNetworkId=I 010

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=i

The id within a learningNetwork of a tenant.

• &course_id=2

Moodle course id as returned for epa ls_ crea te_ course

Role to give participants in a course, generally this would only be student. If the type parameter is set to "replace" the role only applies to created users. Append should always be used for adding teachers that are not added as part of creating a course. Otherwise, setting a list of ids in replace mode while trying to 8 8 4 y / u y ^ u ^ -PCT

add students and teachers will result in the teachers having a student role. However, if the teacher is already in the course as a teacher the role is left alone regardless of what the role parameter is set to.

options:

o student

o teacher

S m l Response:

<?xml version^" 1.0" encoding s "UTF-8 " ?>

<ePalsResponse method="epals_enroll_users " status= "OK" deleted="" enrolled=" 1234-5678-9101, 1234-5678-9102, 1234-5678-9106" problems=" " />

Res onse Values;

• deleted^""

Comma separated user GU IDs for successfully unenrolled users.

• enrolled='1234-5678-9101,1234-5678-9102,1234-5678-9106"

Comma separated user GUI Ds for successfully enrolled users

• problems^""

Comma separated user GUIDSfor users that for whatever reason were not able to be added.

f e d Tables:

• user_enrollments

• enrol - The enrol table will list all members as students (roleid=5) regardless of whether they are teachers or students. For joining on role information, use role_assignments table instead. While each course gets a context id, the way integration is setup, the system level context is adequate for identifying a user's role.

• role_assignments - stores roles assigned to users in specific contexts.

epa ...get.. course , mem e s

Pur ose:

Returns a list of users with minimal information to identify users enrolled in a given course. Intended to aid in cohort/course enrollment management. Generally though, the expectation is that the Moodle environment being a satellite of another network will likely reflect membership in related groups or similar technology in other networks.

Param s

• &wsf nct\on-epals_cjet_course_members

• &course_id=I

Moodle course id as returned by epa ls_ ere a te_ course

ERALS MOODLE WEB SERVICES API i 9 m e R s nse

<?xml version^" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method="epals_get_course_members " status="OK">

<users moodle_id=" 4 " role="st dent" courseid="2 " uid=" 2525 " learningNetworkId= "1010" tenantld= " 1 " />

<users moodle id=" 5 " role= " student " courseid="2" uid="2526" learningNetworkId= "1010" tenantld= " 1 " />

<users moodle_id=" 11 " role="editingteacher" courseid="2" uid="2527" learningNetworkId=" 1010 " tenantld=" 1 " />

</ePalsResponse>

Response Values:

An XML List of users, for each user:

• moodle_id= "4"

User's id in moodle

• role="editingteacher"

options:

o "editingteacher" - role used in moodle for teacher, a moodle role of teacher indicates a non-editing teacher, a role we are not currently exploiting.

o "student"

• courseid

Should be the same as the coursejd passed in as a parameter.

• uid="2525"

user id, within a given learning network. May be renamed to userld in future releases.

• learningNetworkId=i(9i0

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• tenantld=l

The id within a learningNetwork of a tenant.

.Affected Ta les

• user_enrollments

• enrol - The enrol table will list all members as students (roleid=5) regardless of whether they are teachers or students. For joining on role information, use role_assignments table instead. While each course gets a context id, the way integration is setup, the system level context is adequate for identifying a user's role.

• role_assignments - stores roles assigned to users in specific contexts. ep .. e rol .cohort

Pur ose:

(Un) Enrolls a cohort in a course

Parameters:

• &wsi\xnct on-epals_enroll_cohort

EPALS MOODLE WEB SERVICES API \ 10 • &cohort_id=l

Moodle cohort id as returned by epals_create_cohort

If negative ( e.g. -1), un-enrolls cohort members from target course.

• &course_id=2

Moodle course id as returned for epa ls_ c re a te_ course

• &ro\e-student

Role to give cohort members in course, generally this should only be student options:

o student

o teacher

Sam le es ons ::

<?xml version=" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method^ " epals enroll cohort " status="OK" />

Res onse Values:

N/A

.Affected Tables:

• user_enrollments

• enrol - The enrol table will list all members as students (roleid=5) regardless of whether they are teachers or students. For joining on role information, use role_assignments table instead. While each course gets a context id, the way integration is setup, the system level context is adequate for identifying a user's role.

• role_assignments - stores roles assigned to users in specific contexts. epals_create_dropboK_assigsimesit

Purpose:

Create a new homework DropBox assignment for a given course

Parameters:

• &wsf nct\on-epals_create_dropbox_assignment

• &course_id=2

ePals / CS group id (maps internally to course id).

• Sina e-Assignment 1

Display name for the assignment.

• &maxbytes=i 024000

Maximum file size for assignment submissions.

• &i n tr o = Com paring warp and weft. Compare and contrast warp and weft

Introductory text or short description of course.

• &resubmit=0

(dis)allow resubmitting assignments after they are turned in. 0 - no 1 -yes

• &preventlate=0

(dis)allow turning in assignments late. 0-late sumbissions allowed. 1-late submissions allowed.

EPALS MOODLE WEB SERV CES AP i II 28849 / 09303

• &timeavailable=I3i 1920875

When the assignment is available for students to see/do

(unix timestamp: seconds since Jan 01 1970)

&timedue=1312525675

When the assignment should be turned in.

(unix timestamp: seconds since Jan 01 1970)

Sample Response:

<?xml version="1.0" encoding="UTF-8 " ?>

<ePalsResponse method="epals create dropbox assignment " status="OK" assignment id= " 1 " />

Response Values:

• assign mentjd- "1 "

Moodle id for the created assignment.

Affected T¾btes:

• assignment

e ^ „„ gst assignmen s

Purpose: Return a list of assignment records

Parameters;

• &wsfunction=epa/s _get_assignments

• &epals_course_id=2

ePals / CS group id (maps to course id internally)

• &userid=2525

user id within a given learning network

• &] ea r n i ngN etwo rkl d-1010

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

Sample Response:

<?xml version="1.0" encoding="UTF-8 " ?>

<ePalsResponse method="epals get assignments " status="OK">

<assignment id="l" name= "Assignment 1 " course="2"

intro= "Comparing warp and weft . Compare and contrast warp and weft" resubmit=" 0 " preventlate=" 0 " emailteachers=" 0 " maxbytes=" 1024000 " timedue=" 1312525675" timeavailable=" 1311920875 " grade="0"

timemodified=" 1312260442 " epals course id=" 2 " files submitted="0 " teacher comments^ " 0 " num assignments^ " 0 " student comments^" 0 " />

<assignment id="2" name= "Assignment 2 " course="2" intro= "Weaving What ' s Weft . Search the Smithsonean archive and provide a photo example of a coiled basket . " resubmit=" 0 " preventlate=" 0 " emailteachers= " 0 " maxbytes="5200000" timedue=" 1313303903" timeavailable= " 1312612439 " grade=" 0 " timemodified=" 1312260443" epals course id=" 2 "

EPALS MOODLE WEB SERVICES API i 12 ^ » » y / ( j y j u j

files_submitted=" 0 " teacher_comments= " 0 " num_assignments= " 0 "

student_comments=" 0 " />

<assignment id= " 3 " name= " Ass ignment 3 " course="2" intro=" Basket Cases . Explain why a hadmade basket might be more valuable to you than TupperWare." resubmit^" 0 " preventlate=" 0 " emailteachers=" 0 "

maxbytes="5200000" timedue=" 1313995151" timeavailable= " 1313390326 " grade="0" timemodified=" 1312260444 " epals_course_id="2 "

f iles_submitted= " 0 " teacher_comments= " 0 " num_assignments= " 0 "

student comments=" 0 " />

</ePalsResponse>

&s onse Values:

List of assignment nodes containing

• assign ment id= "1 "

Moodle id for assignment

• name= "Assignment 1 "

Assignment display name/title

• course- "2 "

Moodle id for the course this assignment is part of.

• intro= "Comparing warp and weft. Compare and contrast warp and weft" Assignment introductory text / short description.

• resubmit- "0"

(disjallow resubmitting assignments after they are turned in. 0 - no 1 -yes

• preventlate- "0"

(disjallow turning in assignments late. 0-late sumbissions allowed. 1-late submissions allowed.

• emailteachers- "0 "

(not used, part of record, indicates whether teachers should be emailed)

• maxbytes=" 1024000"

Maximum number of bytes allowed in files submitted for this assignment.

• timedue= "1312525675"

When the assignment is available for students to see/do

( unix timestamp: seconds since Jan 01 1970J

• timeavailable="1311920875"

When the assignment is available for students to see/do

(unix timestamp: seconds since Jan 01 1970)

• grades" 0"

(not presently used, total grade for given assignment).

• timemodified= "1312260442"

Last time record was modified.

( unix timestamp: seconds since Jan 01 1970)

• epals_course_id- "2 "

ePals / CS group id (mapped internally to course id)

• files_submitted= "0"

Total number of files submitted.

• teach er_ com m en ts- "0 "

Number of comments teacher has made. Intent here is to show the teacher she hasn't yet commented on files that have been submitted. If tea ch er_ com m en ts < files_submitted this could possibly mean there is work to be done.

• num_assignments- "0"

The number of assignments turned in. If different than file count, means student submitted a comment without a file, which might not be possible.

• student_comments- "0"

The number of student comments for this assignment.

Affected Tables:

• assignment

• assignment_submissions

e pa I ro p be js « m issio n

Pur se:

Handle student submission of a file, a comment and other metadata for a specific assignment

ar m rs:

• &wsf nct\on-dropbox_submission

• &assignment_id=3

Moodle assignment id

• &stu den tj d -2525

userid within a given learning network

• &learningNetworkId=I 0I 0

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learning Network of a tenant.

• &student_comment=Si7/np/e file 2 to see if this thing works

Student's comment (stored in assign men t_submission. dotal )

• &resubmitting=l

// " resubmitting is 1 then if the file exists or a record exists then the record and/or file will be replaced with the new data. Otherwise if a file submission and record exist status will not be OK.

@readme.txt is a php convention. The idea here is that dropbox Ji e will be the variable holding the posted file data.

Sam le es onse:

<?xml version=" 1.0" encoding s "UTF- 8 " ?>

<ePalsResponse method="epals_dropbox_submissiori " status="OK"

submission_id="l" filename=" readme.txt" fileid=" 1" />

Resp e Vakses:

• submission_id=' '

Moodle id for the assignment_submissions record.

EPALS MOODLE WEB SERVICES API I 14 • filen a m ε— "rea d m e. txt"

Friendly file name of what was submitted.

• fileid="J "

Moodle id for the file submitted.

A fe ted T¾Wes:

• a s sign m ent_.su b m i s s i o n s

• files

e pa ^ s_d r o p box_get_s y m issio r§ s

P r ose:

Get a list of assignment submissions. The result will depend on role. A teacher will see all submissions for an assignment. A student will see only their own assignments.

Parame ers;

• &wsfunction=epals_dropbox_get_submissions

• &assignment_id=3

• &user_id=303O (note, this is a teacher)

• &learningNetworkId=I 0I 0

The learning network id identifying the system using the web-services. 1010 i: an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

Ss m p \ e B e§ o n s :

<?xml version=" 1.0 " encoding="UTF-8 " ?>

<ePalsResponse method="epals dropbox get submissions " status="OK">

<submissions id="l" assignment^ " 3 " student_submission= " Sample file 2 to see if this thing works " teacher_comment=" "

timecreated=" 1312260447 " timemodified=" 1312260447 " username=" lwilson" firstname=" LINDA" lastname= "WILSON " filename= " readme . txt " file id="l"/

<submissions id="2" assignment^ " 3 " student submission^ "test to see if comment updating works " teacher comment^" "

timecreated=" 1312260451" timemodified= "1312260451" username=" dmartin" firstname=" DAVID" 1astname="MARTIN" filename= " readme2.txt"

file id="5" />

</ePalsResponse>

Res ons Values:;

List of submissions nodes with the following values

• id="l"

Moodle id for the assignment_submissions record

• assignment="3"

Moodle assignment id

• student_submission= "Sample file 2 to see if this thing works"

Student's comment for the submission, (retrieved from dotal field)

EPALS MOODLE WEB SERVICES API • teacher_comment- "" (retrieved from submissioncomment field)

• timecreated= " 1312260447"

When submission was first made

(unix timestamp: seconds since Jan 01 1970)

• timemodified= " 1312260447"

When the assignment was last modified

(unix timestamp: seconds since Jan 01 1970)

• username- "Iwilson "

Username assigned to user when user was provisioned in moodle

firstname="LINDA "

Submitter's first name (for displaying to teacher) - joined from user table

lastname="WILSON"

Submitter's last name (for displaying to teacher) - joined from user table

• filename- "readme, txt"

Name of file submittd (if present) - joined from file table

file_id= "l "

Moodle id for file record - joined from file table

Affected T les?

• assignment_submissions

• user

• files

Pur ose:

Set the teacher's comment for a given assignment

Parameters;

• &wsfunction=epals_dropbox_set_teacher_comment

• &submission_id=I

Moodle id for the assignment_submissions record

• &user_id=3030

User id in a given learning network; id should be for a teacher in the course associated with the assignment associated with the submission.

• &] ea r n i ngN etwo rkl d-1010

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

• &comment= You seem to understand the subject but we need to work on your grammar.

The teacher's feedback/comment for the submission

EPALS MOODLE WEB SERVICES API i 1.6 2 8 8 49 / 0 93 03

Ss m p \ e R esp n se :

<?xml version^" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method= " epals_dropbox_set_teacher_coitiment " status

/>

Response Values:

N/A

A fe ted T¾Wes:

• assignment_submissions

e pab . .. ct rop box_get J

Purpose:

Download a file attached to a submission.

Parameters-:

• &user_id=2525

user id in a given learning network (must have access to file)

Only the assignment's teacher and the submitting student should be able to download the file. Mostly, this is likely to be a teacher tool. However, should parents be supported later then they too would have download access.

• &] ea rn i ngN etwo rkl d-1010

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

• &submission_id=2

S m e Response:

The requested file is downloaded; the user will have the option to determine where to (assuming browser based download).

Response Values:

N/A

Affected Tables;

• assignment_submissions

• files e ls m d o oM_get_eo se

Purpose:

Retrieve a list of courses for a target user or group

EPALS MOOOLE WEB SERV CES API \ 17 While learningNetworkld and tenatnld technically are only really necessary for when idj pe is user, the

Parameters:

• wsfunction-epals_dropbox_get_courses

• id=2525

user id in learning learning network (ifid_type is user) or group id

• &] ea r n i ngN etwo rkl d-1010

The learning network id identifying the system using the web-services. 1010 is an example and is the id for LearningSpace 2.0

• &tenantld=l

The id within a learningNetwork of a tenant.

• id_type=user

options:

o user

gets a list of all courses related to a specific user

o group

gets a list of all courses related to a given group id from the learning network, (i.e. a CS Group Id)

Sam le es onse:

<?xml version=" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method= " epals dropbox get courses " status= "0K">

<course name=" Basket Weaving Period 1 " id="2 "

timemodified=" 1312282848 " startdate=" 0 " modinfo=" ; epals group id : 1 ; " shortname=" a9d3ce937dl4a36cl9c7291a91d5efd3" summary^" " idnumber=" " num_assignments=" 3 " assignment_id= " 1 " assignment_name= "Assignment 1 " assignment_due=" 1312525675 "/>

<course name=" Basket Weaving Period 2" id="3"

timemodified=" 1312282849" startdate=" 0 " modinfo=" ; epals group id : 1 ; " shortname=" 7bce6ce5735d0ffea0b76eeda9564869 " summary^" " idnumber=" " num_assignments=" " />

</ePalsResponse>

R esp se V ! u es ,

List of course nodes with the following:

• name=" Basket Weaving Period 1 "

Display name/title of course

• id="2 "

Moodle id for course record.

• timemodified= "1312280635 "

When the course was last modified

(unix timestamp: seconds since Jan 01 1970)

• startdate="0"

0 ifstartdate not specified, else when the assignment starts

(unix timestamp: seconds since Jan 01 1970)

• modinfo- ";epals _group_id:l; "

Short for module info, currently used to store epals group id, may be used to store other information as well values are key.value pairs with a ";" on either side, thus ;epctls _group_id:l; would he searched for rather than epals _group_id:l which would pick up ;epals _group_id:l l;

• shortname ^ "a9d3ce 937dl 4a 36c 19c7291a91 d5efd3 "

md5 hash of teacher id and course name for uniqueness. Shortname is not necessarily used anywhere hut it needs to he unique.

• summary- ""

Course summary/short d e scrip tion/in tro

• idnumber- ""

not used, idnumhers have to he unique, we were going to store the group id here, hut groups can have a l:many mapping and therefore are not unique.

• num_assignments- "3"

assignments available for this course

• assign mentjd- "1 "

Id of the next assignment due - a check is done to see when the nearest assignment is due for the given course.

• assign m en t_ n a me- "Assig n m ent 1 "

Name of the nearest assignment due for a course (for display purposes)

• assig n m ent_d ue- "1312525675 "

When the nearest assignment is due

( unix timestamp: seconds since Jan 01 1970)

f e d T¾Wes

• assignments

• course

P ose:

global delete function for deleting any type of object created in the course of using web services. Note, delete operations, logically, do have a cascading effect. Deleting a course means all assignments and all submissions and files under that course are deleted as well.

aramet rs;

• wsf nction-epals_delete_object

• ty p e -dropbox_ assig nment

one of

o user

o cohort

o course

o dropbox_assignment

o dropbox_submission

o dropbox_file

• id=l

The Moodle id for the object being deleted.

EPALS MOODLE WEB SERVICES API \ 19 • 01 (9 (optional, required if deleting a user)

The learning network id identifying the system using the web-services, an example and is the id for LearningSpace 2.0

• &tenantld=l (optional, required if deleting a user)

The id within a learningNetwork of a tenant.

See eJ esp-oese;

<?xml version=" 1.0" encoding="UTF-8 " ?>

<ePalsResponse method= " epals delete obj ect " status="0K" />

es ons V lues:;

N/A

Affected Ts tesi

• user

• cohort

• course

• assignment

• assignment_submission

• files

• enroll

• user_enrolments

• role_assignments

EPALS MOOOLE WEB SERVICES API \ 20