43
Open Database and DIY Analytics SCOTT KODAI Manager, Distributed Learning Technologies California State University, Chico

Open Database and DIY Analytics

  • Upload
    skodai

  • View
    2.807

  • Download
    4

Embed Size (px)

DESCRIPTION

Using Blackboard Learn's open database to figure out how the system is being used.

Citation preview

Page 1: Open Database and DIY Analytics

Open Database and DIY AnalyticsSCOTT KODAIManager, Distributed Learning Technologies

California State University, Chico

Page 2: Open Database and DIY Analytics

ABOUT ME

SCOTT KODAIManager, Distributed Learning TechnologiesCalifornia State University, [email protected]

I have used Blackboard for 8 years (WebCT + Blackboard)

I lived in a cabin in the mountains without electricity or running water for 4 years in high school.

Page 3: Open Database and DIY Analytics

ABOUT CHICO STATE

Chico, CA – 90mi north of Sacramento

FTE: 15,000, with 95% from CA

Most popular majors: Business Admin, Psychology, and Liberal Studies

Strong history of integrating technology with teaching and learning

Page 4: Open Database and DIY Analytics

ABOUT CHICO STATE

Focused on distance education to reach rural areas

Started online courses in 1999, using HorizonLive

Distributed Learning Tech team has 4 people, TLP has 6 Instructional Designers.

98% of students use Bb83% of instructors use Bb

Page 5: Open Database and DIY Analytics

WHAT WE ARE GOING TO LEARN TODAY

This session will dig into the structure of the database, describe some of the relationships between the tables and the Blackboard Learn tools.

• How many faculty are taking advantage of the various tools that are available?

• Which courses have assessments with 'Force Completion' turned on?

• Are courses typically used as content repositories, or are they used more for student collaboration?

Page 6: Open Database and DIY Analytics

OUR CHALLENGE

• Chico State creates a “blank” course shell for every course offered

• We need to determine how many of those course shells are used by faculty

• We also want to know *how* those course shells are used by faculty

Page 7: Open Database and DIY Analytics

COURSE SHELLS USED BY FACULTY

Page 8: Open Database and DIY Analytics

TOP 15TOOLS USED

Page 10: Open Database and DIY Analytics

COURSES WITHIN A GIVEN TERM

select cm.pk1from course_main cmleft join course_course cc on cm.pk1 = cc.crsmain_pk1left join course_term ct on ct.crsmain_pk1 = cm.pk1left join course_main cp on cp.pk1 = cc.crsmain_parent_pk1where ct.term_pk1 = (select pk1 from term where name = 'Spring 2013')

Page 11: Open Database and DIY Analytics

ENROLLMENTS ERD

Page 12: Open Database and DIY Analytics

INSTRUCTOR ENROLLMENTS

List of instructor’s user IDs:

select cm.course_name, listagg(to_char(u.user_id), ',') within group (order by u.pk1) as facultyfrom users u, course_users cu, course_main cmwhere u.pk1 = cu.users_pk1and cu.crsmain_pk1 = cm.pk1and cu.role = 'ci‘ – Default instructor role is ‘P’and cu.row_status = 0and cm.pk1 in[list of courses in given term]group by cm.course_name;

Page 13: Open Database and DIY Analytics

COUNT OF STUDENT ENROLLMENTS

select cm.course_name, count(cu.pk1) as studentsfrom users u, course_users cu, course_main cmwhere u.pk1 = cu.users_pk1and cu.crsmain_pk1 = cm.pk1and cu.role = ‘S‘and data_src_pk1 = 264and cu.row_status = 0and cm.pk1 in[list of courses in given term]group by cm.course_name;

Page 14: Open Database and DIY Analytics

COURSE CONTENTS

Page 15: Open Database and DIY Analytics

CONTENT HANDLERS

resource/x-bb-lessonresource/x-bb-flickr-mashupresource/x-bb-textbookresource/x-bb-videoresource/x-bb-forumlinkresource/x-bb-wikiresource/x-bb-documentresource/x-bb-asmt-survey-linkresource/x-bb-fileresource/x-bb-chatlinkresource/x-bb-collaborate\resource/x-bb-assignment\resource/x-bb-syllabusresource/x-bb-courselinkresource/x-turnitin-assignmentresource/x-bb-bloglink

resource/x-bb-journallinkresource/x-bb-grouplinkresource/x-mdb-assignmentresource/x-bb-image\resource/mcgraw-hill-assignmentresource/x-bb-externallinkresource/x-bb-blankpageresource/x-bb-folderresource/x-bb-toollinkresource/x-bbpi-selfpeer-type1resource/x-bb-lesson-planresource/x-bb-audioresource/x-bb-module-pageresource/x-bb-asmt-test-linkresource/x-bb-youtube-mashup

Page 16: Open Database and DIY Analytics

COURSES WITH LEARNING MODULES

select cm.course_name, count(cc.pk1) as LearningModulesfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-bb-lesson’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 17: Open Database and DIY Analytics

COURSES WITH LESSON PLANS

select cm.course_name, count(cc.pk1) as LessonPlansfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-bb-lesson-plan’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 18: Open Database and DIY Analytics

COURSES WITH WEB LINKS

select cm.course_name, count(cc.pk1) as WebLinksfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-bb-externallink’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 19: Open Database and DIY Analytics

COURSES WITH FILE CONTENT

select cm.course_name, count(cc.pk1) as FileLinksfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-bb-file’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 20: Open Database and DIY Analytics

COURSES WITH ITEMS

select cm.course_name, count(cc.pk1) as Itemsfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-bb-document’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 21: Open Database and DIY Analytics

COURSES WITH TURNITIN ASSIGNMENTS

select cm.course_name, count(cc.pk1) as Turnitinfrom course_main cm, course_contents ccwhere cm.pk1 = cc.crsmain_pk1and cc.cnthndlr_handle = ‘resource/x-turnitin-assignment’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 22: Open Database and DIY Analytics

ASSIGNMENTS

• Looking for assignments in COURSE_CONTENTS will lead to inaccurate numbers due to hidden, unused assignments

• Best way I’ve found to identify actual assignments is to start with the gradebook tables:

• GRADEBOOK_MAINGRADEBOOK_GRADE

Page 23: Open Database and DIY Analytics

ASSIGNMENTS ERD

Page 24: Open Database and DIY Analytics

COURSES WITH ASSIGNMENT SUBMISSIONS

select cm.course_name, count(distinct gg.gradebook_main_pk1) as NumAssignmentsfrom course_main cm, gradebook_main gm, gradebook_grade ggwhere cm.pk1 = gm.crsmain_pk1

and gm.pk1 = gg.gradebook_main_pk1and gm.score_provider_handle = 'resource/x-bb-

assignment‘and gm.deleted_ind = 'N‘and cm.pk1 in

[list of courses in given term]group by cm.course_name;

Page 25: Open Database and DIY Analytics

ASSESSMENTS ERD

Page 26: Open Database and DIY Analytics

COURSES WITH ASSESSMENTS

select cm.course_name, count(distinct gg.gradebook_main_pk1) as NumAssessmentsfrom course_main cm, gradebook_main gm, gradebook_grade ggwhere cm.pk1 = gm.crsmain_pk1

and gm.pk1 = gg.gradebook_main_pk1and gm.score_provider_handle = 'resource/x-bb-

assessment‘and gm.deleted_ind = 'N‘and cm.pk1 in

[list of courses in given term]group by cm.course_name;

Page 27: Open Database and DIY Analytics

COURSES WITH SURVEYS

select cm.course_name, count(distinct gg.gradebook_main_pk1) as NumSurveysfrom course_main cm, gradebook_main gm, gradebook_grade ggwhere cm.pk1 = gm.crsmain_pk1

and gm.pk1 = gg.gradebook_main_pk1and gm.score_provider_handle = 'resource/x-bb-

assessment-survey‘and gm.deleted_ind = 'N‘and cm.pk1 in

[list of courses in given term]group by cm.course_name;

Page 28: Open Database and DIY Analytics

DISCUSSIONS ERD

Page 29: Open Database and DIY Analytics

COURSES WITH ACTIVE DISCUSSIONS

select cm.course_name, count(*) repliesfrom forum_main fm

left join msg_main mm on fm.pk1 = mm.forummain_pk1left join conference_main confmain on confmain.pk1 =

fm.confmain_pk1left join conference_owner co on co.pk1 =

confmain.conference_owner_pk1left join course_main cm on cm.pk1 = co.owner_pk1

where mm.msgmain_pk1 is not nulland co.owner_table = 'COURSE_MAIN‘and co.owner_pk1 in [list of courses in given term]

group by cm.course_name;

Page 30: Open Database and DIY Analytics

BLOGS/JOURNALS ERD

Page 31: Open Database and DIY Analytics

COURSES WITH ACTIVE BLOGS

select cm.course_name, count(distinct b.pk1) AS Blogs, count(be.pk1) as Postsfrom course_main cm, blogs b, blog_entry bewhere cm.pk1 = b.crsmain_pk1 and b.pk1 = be.blog_pk1and b.journal_ind = 'N‘and b.groups_pk1 is nulland cm.pk1 in[list of courses in given term]group by cm.course_name;

Page 32: Open Database and DIY Analytics

COURSES WITH ACTIVE JOURNALS

select cm.course_name, count(distinct b.pk1) AS Journals, count(be.pk1) as Entriesfrom course_main cm, blogs b, blog_entry bewhere cm.pk1 = b.crsmain_pk1 and b.pk1 = be.blog_pk1and b.journal_ind = ‘Y‘and b.groups_pk1 is nulland cm.pk1 in[list of courses in given term]group by cm.course_name;

Page 33: Open Database and DIY Analytics

WIKIS ERD

Page 34: Open Database and DIY Analytics

COURSES WITH COURSE WIKIS

select cm.course_name, count(distinct w.pk1) as CourseWikisfrom course_main cm, wiki wwhere cm.pk1 = w.course_main_pk1and w.dtmodified > '27-JAN-13‘and w.group_pk1 is nulland cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 35: Open Database and DIY Analytics

COURSES WITH GROUP WIKIS

select cm.course_name, count(distinct w.pk1) as GroupWikisfrom course_main cm, wiki wwhere cm.pk1 = w.course_main_pk1and w.dtmodified > '27-JAN-13‘and w.group_pk1 is not nulland cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 36: Open Database and DIY Analytics

ANNOUNCEMENTS ERD

Page 37: Open Database and DIY Analytics

COURSES WITH ANNOUNCEMENTS

select cm.course_name, count(ann.pk1) as Announcementsfrom course_main cm, announcements annwhere cm.pk1 = ann.crsmain_pk1and ann.dtcreated > '13-JAN-13‘and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 38: Open Database and DIY Analytics

GRADEBOOK ERD

Page 39: Open Database and DIY Analytics

COURSES WITH POSTED GRADES

select cm.course_name, count(gg.pk1) as PostedGradesfrom course_main cm, gradebook_main gm, gradebook_grade ggwhere cm.pk1 = gm.crsmain_pk1and gm.pk1 = gg.gradebook_main_pk1and gm.deleted_ind = 'N‘and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 40: Open Database and DIY Analytics

USER ACTIVITY (HITS)

select cm.course_name, count(aa.pk1) as Hitsfrom course_main cm, activity_accumulator aawhere cm.pk1 = aa.course_pk1and timestamp between ‘20-JAN-13’ and ‘25-MAY-13’and cm.pk1 in[list of courses in given term]group by cm.course_nameorder by cm.course_name;

Page 41: Open Database and DIY Analytics

RUNNING THE QUERY

The query should run on your own system, with a couple caveats:

• You have to use terms to group your courses

• You will need to adjust any dates to reflect the term you are interested in

• You will need to adjust DSKs in some areas to suit your own business rules

Page 42: Open Database and DIY Analytics

FUTURE ENHANCEMENTS

• Using hierarchies should allow us to slice this data in more interesting ways

• This query misses some course content that’s linked only from the course menu (course_toc table)

• I’d like to incorporate student accesses by content into the statistics to more accurately determine content usage

Page 43: Open Database and DIY Analytics

THANK YOU!

SCOTT KODAIManager, Distributed Learning TechnologiesCalifornia State University, [email protected]