1 / 58

Enterprise Integration Through the Course Management Service

Josh Holtzman, UC Berkeley Duffy Gillman, U. of Arizona. Enterprise Integration Through the Course Management Service. Agenda. CM Overview Design & Architecture Course Management API & Impl(s) Fitting CM into Sakai Where we are Where we’re going. CM Project Goals.

ciaran-shaw
Download Presentation

Enterprise Integration Through the Course Management Service

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Josh Holtzman, UC Berkeley Duffy Gillman, U. of Arizona Enterprise Integration Through the Course Management Service

  2. Agenda • CM Overview • Design & Architecture • Course Management API & Impl(s) • Fitting CM into Sakai • Where we are • Where we’re going

  3. CM Project Goals • Bring enrollment and course data into Sakai • Flexible enough to support many different course structures • Concrete enough to build tools and services upon • Solve course-site mismatch issue • Courses are not sites • Sites are not courses • More later… • Deliver new site admin tools

  4. Designing Course Management • Previous Work • OSID • 1.5 – 2.0 Design • Enterprise Integration DG • User-Centered Design Research • See: “User-Centered Design Process for the Course Management Project”, Marc Brierly and Daphne Ogle, Weds. 3:00-4:30pm (Grand A) • Lots of haggling over code

  5. Course Management Working Group • Initiated in January • Coordinating UI design and SW design teams • Agile(-ish) Development Methodology • Iterative • Incremental • Use-Case Driven • Frequent Contact • Test Driven

  6. Course Management Working Group (continued) Working Members

  7. Course Management Working Group (continued) ReviewTeam

  8. Course Management Working Group (continued) Resources: • Collab site: WG Course Management • Email list • Community welcome • Confluence Space: http://bugs.sakaiproject.org/confluence/display/CM/Home • Our Processes • Design Documents • Meeting Archives • Community has read and comment • Weekly Phone Meetings • Space limited • Contact collab list to request involvement • Agenda/minutes posted to Confluence Community welcome, input encouraged

  9. Agenda • CM Overview • Design & Architecture • Course Management API & Impl(s) • Fitting CM into Sakai • Where we are • Where we’re going

  10. Course Data • Three problems to solve • Definitions vary widely among institutions • Structures vary widely within institutions! • Business rules vary widely

  11. Problem #1: Definitions vary widely among institutions Semester = Quarter = Term = Session Section = Class = Course = Course Offering Our Solution: Use vague terms

  12. Problem #2: Structures vary widely within institutions Our Solution: (Hopefully) Flexible API

  13. Problem #3: Business rules vary widely Our Solution: Punt

  14. Sakai <= 2.2 Integration • Group Provider • Maps external group IDs to sites and groups • Custom string globbing enables mapping multiple external groups to a Sakai site/group • Legacy CourseManagementProvider • Provides external group names and IDs for use in the Site Info tool

  15. Sakai <= 2.2 Integration (continued) • Course • Id, Title, Subject, Cross-listed, Members, Term • CourseManagementService • getInstructorCourses() – from Provider • getTerms() – from sakai.properties • GroupProvider • Access to external groups (like courses) • CourseManagementProvider • Some duplication of GroupProvider

  16. Sakai <= 2.2 Integration (continued)

  17. Course Management WG Solution • Effort in preliminary stages • An attempt to code ‘what we know so far’ • Engagement of community is critical • User-centered research • Integrator experimentation with APIs • Current work best viewed as a first draft to gather feedback

  18. CM-based Integration • Course Management API • Institutional structure • Institutional roles, memberships, and status • CM-Mapping • Explicit mapping between Sakai sites/groups and CM entities • Allows for a CM-Mapping based GroupProvider implementation • Course-Site-Admin • Manipulates CM/Site/Group mappings • Site and Group creation

  19. CM-based Integration (continued)

  20. Agenda • CM Overview • Design & Architecture • Course Management API & Impl(s) • Fitting CM into Sakai • Where we are • Where we’re going

  21. Course Management API • Seeks a common abstraction for course data across institutions • Essential data: Enrollment in institutionally recognized units • Design Abstraction • Avoiding model lock-in before enough community input is gathered • Intentionally anemic model

  22. Course Management API (continued) • Parts • Two service interfaces • Read-only • Writable • Business objects • Anemic model by design • Factoring “for the wire” • Cross-service dependencies • Simplification of persistence layer caching/session management

  23. Course Management Service Business Objects

  24. AcademicSession Read-only properties: Eid Title Description StartDate EndDate Provides a time-based context for CourseOfferings within a CanonicalCourse. This will generally reflect semesters or terms (e.g. Fall and Spring), but may be used to represent any time-based ordering of CourseOfferings Used for time-based ordering and determining which course data is current

  25. CanonicalCourse Read-only properties: Eid Title Description Reflects a curriculum or academic program that is offered repeatedly.

  26. CourseOffering Read-only properties: Eid Title Description AcademicSession StartDate EndDate Represents an instance of a CanonicalCourse offered during an AcademicSession. Enables CourseOfferings to have unique schedule.* *Roadmap plans to abstract dates into Schedule object where AcademicSession and CourseOffering would each have a Schedule.

  27. CourseSet Read-only properties: Eid Title Description Category Parent Model a related group of CanonicalCourse or CourseOffering objects. Used in API to group child course objects. [hierarchy] Institution-specific metadata for filtering/searching

  28. Enrollment Represents the enrollment of a single student in a single CourseOffering or Section. Read-only properties: UserId EnrollmentStatus Credits GradingScheme

  29. Membership Relates a user to a particular role within a course data unit. e.g . Department Admin (CourseSet), T.A. (CourseOffering), lecturer (CourseOffering), Default Instructor (CanonicalCourse) Read-only properties: UserId Role

  30. EnrollmentSet Read-only properties: Eid Title Description Category DefaultEnrollmentCredits OfficialInstructors Contains Enrollments for a particular Section or CourseOffering and metadata about enrollment in general. Separated from Section as some institutions have Sections that do not carry credit themselves. [compare use cases? Look into marc’s use cases] Institution-specific metadata (e.g. lab, lecture, …) Some registrars provide this data in aggregate; this applies to all contained enrollments.

  31. Section Read-only properties: Eid Title Description Category Parent EnrollmentSet Represents a cohort or group within a CourseOffering. There may be multiple Sections related to a CourseOffering. Sections may also contain other Sections as subsections.

  32. Service Management Interfaces • Contain semantic ‘glue’ of the APIs • Two interfaces • CourseManagementService (read-only) • CourseManagementAdministration (writeable)

  33. Set getChildCourseSets(StringparentEid); Set getCourseSets(); Set getCourseSetMemberships(Stringeid); CanonicalCourse getCanonicalCourse(String eid); Set getEquivalentCanonicalCourses(String canonicalCourseEid); Set getCanonicalCourses(String courseSetEid; List getAcademicSessions(); ListgetCurrentAcademicSessions(); AcademicSession getAcademicSession(String eid); CourseOffering getCourseOffering(String eid); SetgetEquivalentCourseOfferings(StringcourseOfferingEid); Set getCourseOfferingMemberships(String courseOfferingEid); SetgetCourseOfferings(String courseSetEid); SetfindCourseOfferings(String courseSetEid, String academicSessionEid); CourseManagementService

  34. Set findCurrentlyEnrolledEnrollmentSets(String userId); Set findCurrentlyInstructingEnrollmentSets (String userId); Set findInstructingSections(String userId); Set findInstructingSections(String userId, String academicSessionEid); Set findCurrentSectionsWithMember(String userId); CourseManagementService (continued)

  35. List findCourseSets(String category); boolean isEmpty(String courseSetEid); Section getSection(String eid); Set getSections(String courseOfferingEid); Set getChildSections(String parentSectionEid); Set getSectionMemberships(String sectionEid); String getSectionRole(String sectionEid, String userId); EnrollmentSet getEnrollmentSet(String eid); Set getEnrollmentSets(String courseOfferingEid); Set getEnrollments(String enrollmentSetEid); Set getInstructorsOfRecordIds(String enrollmentSetEid); boolean isEnrolled(String userId, Set enrollmentSetEids); boolean isEnrolled(String userId, String eid); Enrollment findEnrollment(String userId, String eid); CourseManagementService (continued)

  36. boolean removeCourseOfferingFromCourseSet(String csEid, String coEid); void createEnrollmentSet(String eid, String title, String description, String category, …); void updateEnrollmentSet(EnrollmentSet enrollmentSet); void addOrUpdateEnrollment(String userId, String enrollmentSetEid, String enrollmentStatus, String credits, String gradingScheme); boolean removeEnrollment(String userId, String enrollmentSetEid); public void createSection(String eid, String title, String description, String category, String parentSectionEid, String …); public void updateSection(Section section); void addOrUpdateCourseSetMembership(String userId, String role, String courseSetEid); boolean removeCourseSetMembership(String userId, String courseSetEid); void addOrUpdateCourseOfferingMembership (String userId, String role, String courseOfferingEid); CourseManagementAdministration

  37. public boolean removeCourseOfferingMembership(String userId, String courseOfferingEid); public void addOrUpdateSectionMembership(String userId, String role, String sectionEid); public boolean removeSectionMembership(String userId, String sectionEid); void createAcademicSession(String eid, String title, String description, Date startDate, Date endDate); void updateAcademicSession(AcademicSession academicSession); void createCourseSet(String eid, String title, String description, String category, String parentCourseSetEid); void updateCourseSet(CourseSet courseSet); void createCanonicalCourse(String eid, String title, String description); void updateCanonicalCourse(CanonicalCourse canonicalCourse); void addCanonicalCourseToCourseSet(String courseSetEid, String canonicalCourseEid); boolean removeCanonicalCourseFromCourseSet(String courseSetEid, String canonicalCourseEid); CourseManagementAdministration (continued)

  38. void setEquivalentCanonicalCourses(Set canonicalCourses); boolean removeEquivalency(CanonicalCourse canonicalCourse); void createCourseOffering(String eid, String title, String description, String academicSessionEid, String canonicalCourseEid, Date startDate, Date endDate); void updateCourseOffering(CourseOffering courseOffering); void setEquivalentCourseOfferings(Set courseOfferings); boolean removeEquivalency(CourseOffering courseOffering); void addCourseOfferingToCourseSet(String courseSetEid, String courseOfferingEid); CourseManagementAdministration (continued)

  39. Default Implementation • Stand-alone • Hibernate • Population • Using CourseManagementAdministration • Batch Import

  40. Agenda • CM Overview • Design & Architecture • Course Management API & Impl(s) • Fitting CM into Sakai • Where we are • Where we’re going

  41. Service Level: CM-Mapping

  42. Service Level: CM-Mapping (continued) • Maps CM Entities to Sakai context(s) • Multiple sections can be mapped to multiple sakai sites/groups • public Set getMappedSectionEids(String sakaiRef) • public Set getSakaiReferences(String sectionEid) • Current API is simple… adding anything other than sections makes it very complex!

  43. Tool Level: Course-Site-Admin • Alternative for Site Info/Site Setup • Intended to match use cases uncovered in User-Centered research • First release pending

  44. Use Case: Simple Course

  45. Use Case: Large Lecture (multiple lectures and sections)

  46. Use Cases: Currently Identified • Simple • Large Lecture • One instructor, multiple lectures and sections • Multiple instructors, lectures and sections • One instructor, multiple section types • Cross-listed (multiple types) • Language Course • Shared site • Independent site • Professional School Course • No-Term Course See User-Centered Design Presentation: 3:00pm (Grand D)

  47. Tool Level: Course-Site-Admin (continued)

  48. Tool Level: Course-Site-Admin (continued)

  49. Tool Level: Course-Site-Admin (continued)

  50. Course-Site-Admin (Continued)

More Related