Upload
skodai
View
2.807
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Using Blackboard Learn's open database to figure out how the system is being used.
Citation preview
Open Database and DIY AnalyticsSCOTT KODAIManager, Distributed Learning Technologies
California State University, Chico
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.
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
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
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?
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
COURSE SHELLS USED BY FACULTY
TOP 15TOOLS USED
THE QUERY
Oracle: https://docs.google.com/document/d/1zb2P_5jSSKNEgktc7pqjHe2c7MLFgSM2VLrSb6d1B38/edit?usp=sharing
SQL Server (thanks to Bruce Tenison!): https://docs.google.com/document/d/1wIRaB2Tfie7i_aOviujqF1a3geSyMlbL4DwxtSAfrIs/edit?usp=sharing
This query can be exported as a CSV for further analysis.
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')
ENROLLMENTS ERD
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;
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;
COURSE CONTENTS
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
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;
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;
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;
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;
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;
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;
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
ASSIGNMENTS ERD
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;
ASSESSMENTS ERD
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;
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;
DISCUSSIONS ERD
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;
BLOGS/JOURNALS ERD
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;
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;
WIKIS ERD
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;
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;
ANNOUNCEMENTS ERD
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;
GRADEBOOK ERD
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;
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;
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
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
THANK YOU!
SCOTT KODAIManager, Distributed Learning TechnologiesCalifornia State University, [email protected]