Sakai Course Management Service Ray Davis (most slides by Josh Holtzman & Duffy Gillman) University of California, Berkeley.

Slides:



Advertisements
Similar presentations
1 Capability Set - Bullet. 2 Common Community Problems Too Much Information –Institutions have to SPAM their faculty and students –Too many online sources.
Advertisements

UKOLN is supported by: Put functionality Augmenting interoperability across scholarly repositories 20/21 April 2006 Rachel Heery, UKOLN, University of.
Different Approaches to Single-Sign-On Jeff Kahn, Verbena Consulting.
SDMX in the Vietnam Ministry of Planning and Investment - A Data Model to Manage Metadata and Data ETV2 Component 5 – Facilitating better decision-making.
Use Mobile Guidebook to Evaluate this Session – M1.5 Allowing Students to Update Their Program of Study Online.
The Road to Integration: Learning Management and Student Information Systems Kate Clarkson - Griffith University
Data Manager Business Intelligence Solutions. Data Mart and Data Warehouse Data Warehouse Architecture Dimensional Data Structure Extract, transform and.
Lifecycle site management at HEC Martin Montminy, Solution Architect, HEC Montréal Mame Awa Diop, Software Developer, HEC Montréal.
© 2005, Cornell University. Rapid Application Development using the Kuali Architecture (Struts, Spring and OJB) A Case Study Bryan Hutchinson
Data Warehouse success depends on metadata
Troy Eversen | 19 May 2015 Data Integrity Workshop.
Application Standards for ‘Push’ Content and Streaming Media Hadi Partovi Microsoft Corporation.
Better LMS/SIS Integration with IMS Learning Information Services Michael Feldstein Oracle Corporation John A. Lewis Unicon, Inc.
Overview of Datafeed May 18, 2007 Dirk Herr-Hoyman
Learning Information Services Exchanging Data Between Enterprise Systems.
IMS LIS 2.0 & Sakai Nate Angell, Sakai Product Manager, The rSmart Group, Inc. Duffy Gillman, Sr. Software Engineer, The rSmart Group, Inc. Alan Hanson,
Massachusetts Institute of Technology Page 1 Open Knowledge Initiative CSG - Princeton, 05/07/03.
Enables businesses achieve greater efficiency by sharing data and processes Shared application data across legal entities— party, location, products…
Introduction to Group Management Tom Barton, Blair Christensen University of Chicago.
Rice KRAD Data Layer JPA Design Eric Westfall July 2013.
Towards Bboogle 3.0.0: a Technical Walkthrough Patricia Goldweic Sr. Software Engineer AR&T, Northwestern University Brian Nielsen Manager, Faculty Support.
Batch Import/Export/Restore/Archive
ArcGIS Workflow Manager An Introduction
Gary MacDougall Premjit Singh Managing your Distributed Data.
Course Management Scope Meeting July 20, Agenda Meeting Goal Define “Course Management” Frame the Problem Design Goals Review Requirements Scope.
Faculty Center for Instructors and Roster Contacts Roles and Access Faculty Center Features Grade Changes and Approval.
December 15, 2011 Use of Semantic Adapter in caCIS Architecture.
Uniting Cultures, Technology & Applications A Case Study University of New Hampshire.
Mapping Sakai Relevance. Publisher’s Note (1 or 2) These slides were prepared by Clay Fenlason, Boston University School of Management for the Sakai Strategy.
Kuali Enterprise Notification Aaron Godert (Sr. Software Architect, Cornell University) John Fereira (Programmer/Analyst, Cornell University)
Loosely Coupled Sakai Ray Davis University of California, Berkeley.
This presentation contains information that is proprietary to ClickSoftware. Any copying, distribution, display, transmission or dissemination of the information.
The rSmart Group JA-SIG 2007 All Materials © 2007 The rSmart Group Sakai - SIS Integration Using Data Extracts John Bush The rSmart Group JA-SIG June 2007.
Instructor: Dema Alorini Database Fundamentals IS 422 Section: 7|1.
Electronic Scriptorium, Ltd. AIIM Minnesota Chapter Metadata and Taxonomy Presentation Copyright Electronic Scriptorium, Ltd. All rights reserved, 1991.
Enterprise Integration in Sakai 2.4 An overview of what’s new and (hopefully) improved.
Sakaibrary: Integrating Licensed Library Resources with Sakai 29 November 2006 Steve Smail Mark Notess.
Office of Undergraduate Admissions Office of the Registrar Degree Audit at UC Berkeley Brief Overview DARS for Students DARS for Advisers Transfer Courses.
8th Sakai Conference4-7 December 2007 Newport Beach Integration: Users and Groups Mark J. Norton Nolaria Consulting.
I Copyright © 2007, Oracle. All rights reserved. Module i: Siebel 8.0 Essentials Training Siebel 8.0 Essentials.
1 Using Sakai in Stellar at MIT Mark J. Norton, Nolaria Consulting Craig Counterman, MIT Mark Brown, MIT.
The current process; much better than before! But there’s still a problem Programming is the solution (Data Analyzer demo) Creating the batch uploads (WebAcct.
1 June 10-15, 2012 Growing Community; Growing Possibilities Switching to on-line evaluations for courses at UC Berkeley Daphne Ogle, Lead Design, UC Berkeley.
Bridging Sakai and the SIS. Sakai’s Integration Strategy The Group Provider –Benefits Simple ›In which groups is user X a member? ›Who are the members.
Grouper Tom Barton University of Chicago. I2MM Spring Outline  Grouper’s place in the world  Some Grouper guts  Deployment scenarios.
KEW Definitions Document Type The Document Type defines the routing definition and other properties for a set of documents. Each document is an instance.
Dr. David Roldán Martínez Universidad Politécnica de Valencia, Spain & Nuno Fernandes Universidade Fernando Pessoa, Portugal Site Stats, the power of event.
Faculty Center for Instructors Roles and Access Faculty Center Features Grade Changes and Approval.
The Sakai Architecture
Inside Gradebook - June 9, 2005 Inside Gradebook Or: How I Learned to (almost) Stop Worrying & (almost) Love JSF 1.1 Ray Davis – UC Berkeley.
Open source administration software for education next generation student system I Did Not Know You Could Do That With An SIS: How To Make Kuali Student.
Copyright 2007 SpringSource. Copying, publishing or distributing without express written permission is prohibited. Overview of the Spring Framework Introducing.
ASET 1 Amity School of Engineering & Technology B. Tech. (CSE/IT), III Semester Database Management Systems Jitendra Rajpurohit.
Oracle eBusiness Financials R12 Oracle Receivables Functional Overview TCS Oracle Practice.
IBM Express Runtime Quick Start Workshop © 2007 IBM Corporation Deploying a Solution.
Course Management Project Update Marc Brierley. Course Management WG Who are we? Stanford - Marc Brierley (PM and interaction designer), Daisy Flemming.
Creating Online Student Forms SmartCatalog. What is Academic Content Management? Any information that has multiple editors and reviewers and which must.
3 Copyright © 2006, Oracle. All rights reserved. Building an Analytic Workspace.
Enables businesses achieve greater efficiency by sharing data and processes Shared application data across legal entities – Party, Location, Products,
*DT Project Model Leo Treggiari Intel Corp. Dec, 2005.
Justin Scheitlin Daisey Fahringer
Sakai ID & Access Management
Privilege Management: the Big Picture
ARCH-1: Application Architecture made Simple
Implementing Database Roles in the Enterprise Geodatababse
EASy Does It! Adding and Dropping Courses the EASy Way
Signet & Privilege Management
Faculty Center for Instructors
LMS Course Provisioning
Presentation transcript:

Sakai Course Management Service Ray Davis (most slides by Josh Holtzman & Duffy Gillman) University of California, Berkeley

Why CM API? We needed our LMS/CLE to associate Courses, sections, departments with sites Courses, sections with groups Instructors, students, TAs with permissions Site data with registrar data

Who we? MIT Stanford University University of Arizona University of California, Berkeley University of California, Davis A cast of dozens

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…?

Why a new API? IMS Enterprise? OKI OSID?

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

Problem #1: Definitions vary widely among institutions Semester = Quarter = Term = Session Section = Class = Course = Course Offering Our Solution: Use vague terms (with help from OKI OSID)

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

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

Added to Sakai Integration with Authz Integration with Section Management Integration with Site Management Integration with Roster

Automated Section Creation

Student enrollment data

Site creation with CM

Institutional Structures in the UI

Don’t thank us yet Complex API Unfamiliar terminology Documentation lacking Sample implementations lacking Inconsistent OOTB authorizations Legacy code still hard to customize Didn’t replace Site admin tools

Decide integration strategy 1.Understand CM object model 2.Understand your institution’s model 3.Understand what your users want out of an LMS / CME 4.See what data you can get from where

Use Case: Simple Course

Use Case: Large Lecture (multiple lectures and sections)

Institutional Decisions Sites managed by central admin? By instructors? Course Site & Section Creation –Automated, based on institutional structures Requires either CM or some custom data feed –Manual (custom), as required by Instructors Requires a CM implementation Requires a SectionFieldManager implementation May require other customizations to Site Manage / Authz

Development approach 1.Decide mappings between institutional data & CM 2.Start from demo DB or from scratch 3.WRITE INTEGRATION TESTS! 4.Configure the GroupProvider 1.How do institutional roles map to Sakai roles 2.How does enrollment status affect Sakai roles 3.Which Sakai roles take precedence over others 5.Implement SectionFieldManager for Site Manage 6.Fork legacy code as needed :(

Group Provider Exposes enterprise defined groups in Sakai –Map getGroupRolesForUser(String userId); –Map getUserRolesForGroup(String id); –String preferredRole(String one, String other); Defines how to do compound group IDs –String packId(String[] ids); –String[] unpackId(String id);

Group Provider (continued) OOTB Implementation (in “providers”) maps hierarchical enterprise memberships to flat Sakai site & group memberships –Resolves roles in higher level structures –Resolves roles based on enrollment status –Resolves roles based on instructor status You might not have to customize

CM impl. of the Group Provider (continued)

From x/component/src/webapp/WEB-INF/components.xml

Section Info integration Instructors can switch between SIS and self- managed Sections System Admins can choose among 4 configuration options –A) Exclusively manual. Sections are never automatically created for a site. –B) Manual by default. Sections are not automatically created for a site. –C) Automatic by default. Sections are automatically created for a site. –D) Exclusively automatic. Sections are always automatically created for a site.

SectionFieldManager Simple provider that translates from user input to Section EIDs in Site Manage

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

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

Course Management Service Business Objects

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

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

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.

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

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

Membership Read-only properties: UserId Role 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)

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. Some registrars provide this data in aggregate; this applies to all contained enrollments. Institution-specific metadata (e.g. lab, lecture, …)

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.

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

CourseManagementService Set getChildCourseSets(String parentEid); Set getCourseSets(); Set getCourseSetMemberships(String eid); CanonicalCourse getCanonicalCourse(String eid); Set getEquivalentCanonicalCourses(String canonicalCourseEid); Set getCanonicalCourses(String courseSetEid; List getAcademicSessions(); List getCurrentAcademicSessions(); AcademicSession getAcademicSession(String eid); CourseOffering getCourseOffering(String eid); Set getEquivalentCourseOfferings(String courseOfferingEid); Set getCourseOfferingMemberships(String courseOfferingEid); Set getCourseOfferings(String courseSetEid); Set findCourseOfferings(String courseSetEid, String academicSessionEid);

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

CourseManagementService (continued) 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);

CourseManagementAdministration boolean removeCourseOfferingFromCourseS et(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 (continued) 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(Str ing courseSetEid, String canonicalCourseEid);

CourseManagementAdministration (continued) 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);

Course Management Implementation Sakai 2.4 comes with a Hibernate-based reference implementation Institutions may: –Use the RI, populating the hibernate tables with the CourseManagementAdministration API –Use the RI, customizing the hibernate mappings to your custom DB schema –Write a custom implementation of the CM API

CM Implementations UC Berkeley –Spring JDBC against Oracle Views from SIS Stanford –RI, loading tables via XML feeds from SIS UC Davis –RI against Oracle views from SIS Others, see

Resources Production Working Group Old CM Project home UC Davis sample UC Berkeley sample Stanford description