Difference between revisions of "Competencies"

Jump to: navigation, search
(competency)
Line 5: Line 5:
  
 
=Design Principles=
 
=Design Principles=
===Competencies can be organised into competency frameworks===
+
===A competency framework needs a measured amount of abstraction===
* An "Admin" should be able to build a framework made of competencies with relative ease.
 
 
 
===Competency frameworks need measured amount of abstraction===
 
 
* A competency architecture needs to be flexible enough to meet the variety of competency frameworks used in practice.
 
* A competency architecture needs to be flexible enough to meet the variety of competency frameworks used in practice.
* Competencies need to be organised on a site level in a taxonomy (i.e., categories), folksonomy (i.e., tags), or a hybrid of both.
+
* Competencies need to be organised on a site level in a taxonomy (i.e., a hierarchy of terms), folksonomy (i.e., tags), or a hybrid of both.
 
* Terminology used in each competency framework needs to vary. For example, we should be able to name top-level competencies as "Competency Areas", second level as "Competencies", and third level as "Sub-Competencies," "Primary descriptors," etc.
 
* Terminology used in each competency framework needs to vary. For example, we should be able to name top-level competencies as "Competency Areas", second level as "Competencies", and third level as "Sub-Competencies," "Primary descriptors," etc.
 
* Custom metadata should be easily attachable to competencies
 
* Custom metadata should be easily attachable to competencies
  
===Multiple competency frameworks may be used===
+
===A competency framework needs to be easily navigated===
* By default, only one competency framework should be visible and all competency settings should not reference multiple competency frameworks.
 
* It should be easy to create additional competency frameworks. Settings regarding which framework a competency applies to should be available where appropriate but not over complicate the UI.
 
 
 
===Competency frameworks need to be easily navigated===
 
 
* Any user should be able to easily navigate a competency framework, regardless of how it is organised.
 
* Any user should be able to easily navigate a competency framework, regardless of how it is organised.
  
===Competency frameworks need to be portable===
+
===A competency framework need to be portable===
 
An "admin" should be able to  
 
An "admin" should be able to  
 
* Export a competency framework from one Moodle and import it into another.
 
* Export a competency framework from one Moodle and import it into another.
Line 31: Line 24:
 
* Providing an electronic example (e.g., a scanned computer science diploma)
 
* Providing an electronic example (e.g., a scanned computer science diploma)
  
Competencies to be gained by various methods (or types of evidence):
+
===Competencies to be gained by various methods (or types of evidence)===
 
* Achieving one or more outcomes in one or more courses
 
* Achieving one or more outcomes in one or more courses
 
* Completing two or more courses (e.g., when completing course A, course B, and course C)
 
* Completing two or more courses (e.g., when completing course A, course B, and course C)
Line 43: Line 36:
 
* Observation (e.g., a comment / testimony / reference)
 
* Observation (e.g., a comment / testimony / reference)
  
===Competencies can be attached to a position or position level===
+
===Competencies can be attached to a positions===
A position (e.g., "English major") and "position level" (e.g. "First year English major")
 
  
 
===Competencies can use expected evidence, proficiency levels, and weights===
 
===Competencies can use expected evidence, proficiency levels, and weights===
Line 70: Line 62:
 
==Position==
 
==Position==
 
An organisational role that has a unique set of required courses and competencies. Examples:
 
An organisational role that has a unique set of required courses and competencies. Examples:
"English major"
 
"Accountant"
 
"Primary school student"
 
==Position level==
 
 
  "First year English major
 
  "First year English major
 
  "Junior Accountant"
 
  "Junior Accountant"
 
  "Grade 1"
 
  "Grade 1"
 
  "Year 1"
 
  "Year 1"
 +
 
==Scale==
 
==Scale==
 
A way to measure a competency. Examples:
 
A way to measure a competency. Examples:
 
  "Below average, Average, Above average"
 
  "Below average, Average, Above average"
 
  "Not competent, Competent"
 
  "Not competent, Competent"
==Competency framework==
 
A collection of competencies, competency terms, and expected proficiency levels. A Moodle instance can have one or more competency frameworks. Examples:
 
"State of Vermont's Framework of Standards & Learning Opportunities"
 
  
 
==Competency term==
 
==Competency term==
Line 100: Line 86:
 
  "Responding to simple questions about a book's content"
 
  "Responding to simple questions about a book's content"
 
  "Identifying literary devices as appropriate to genre: rhyme, repeated language"
 
  "Identifying literary devices as appropriate to genre: rhyme, repeated language"
 +
 
==Competency evidence type==
 
==Competency evidence type==
 
A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:
 
A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:
Line 119: Line 106:
  
 
==Expected proficiency level==
 
==Expected proficiency level==
The required rating (based on a scale) or grade for a position level competency. Examples:
+
The required rating (based on a scale) or grade for a position competency. Examples:
 
  "Average"
 
  "Average"
 
  "5"
 
  "5"
Line 140: Line 127:
 
=User interface=
 
=User interface=
 
==Learning plan==
 
==Learning plan==
# Each user can have a set of either courses to be completed, competencies to be achieved, or a mixture of both for his/her current position level. These comprise a user's individual learning plan (IDP).
+
# Each user can have a set of either courses to be completed, competencies to be achieved, or a mixture of both for his/her current position. These comprise a user's individual learning plan (IDP).
 
# Each user's IDP will show:
 
# Each user's IDP will show:
 
## Completed courses
 
## Completed courses
Line 150: Line 137:
  
 
==Position==
 
==Position==
# An admin can browse list of positions and position levels.
+
# An admin can browse list of positions.
  
==Position level courses and competencies==
+
==Position courses and competencies==
 
# Each position can have a set of courses to be completed, competencies to be achieved, or a mixture of both.
 
# Each position can have a set of courses to be completed, competencies to be achieved, or a mixture of both.
 
# A user can be assigned to a position (using an interface similar to assigning a user to a role or group).
 
# A user can be assigned to a position (using an interface similar to assigning a user to a role or group).
Line 160: Line 147:
 
=Database structures=
 
=Database structures=
  
===competency_framework===
+
===competency_term===
We can define one or more competency frameworks in a Moodle instance.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''idnumber'''
 
|int(10)
 
|
 
|The code for the competency framework
 
 
 
|-
 
|'''title'''
 
|varchar(255)
 
|
 
|The title of the competency framework
 
 
 
|-
 
|'''description'''
 
|text
 
|
 
|The description of the competency framework
 
 
 
|-
 
|'''hierarchy'''
 
|text
 
|
 
|A competencies in this framework can only be formed in a few different structures. This setting will be locked once competencies are added to this framework.
 
 
 
|-
 
|'''timecreated'''
 
|int(10)
 
|
 
|The time when the competency framework was created
 
 
 
|-
 
|'''timemodified'''
 
|int(10)
 
|
 
|The time when the competency framework was modified
 
 
 
|-
 
|'''usermodified'''
 
|int(10)
 
|
 
|The userid of the person who last modified the competency framework
 
|}
 
 
 
===competency_framework_term===
 
 
A competency framework can have its own set of terms (meta data tags). A sort order can be imposed on each term for display and reporting purposes.
 
A competency framework can have its own set of terms (meta data tags). A sort order can be imposed on each term for display and reporting purposes.
  
Line 232: Line 161:
 
|
 
|
 
|Auto incrementing  
 
|Auto incrementing  
 
|-
 
|'''framework'''
 
|int(10)
 
|
 
|The id of the competency framework which this competency term belongs to
 
  
 
|-
 
|-
Line 282: Line 205:
 
|}
 
|}
  
===competency_framework_term_hierarchy===
+
===competency_term_hierarchy===
For tracking hierarchies of framework terms.
+
For tracking hierarchies of competency terms.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 328: Line 251:
 
|}
 
|}
  
===competency_framework_term_relations===
+
===competency_term_relations===
For tracking relations between framework terms.
+
For tracking relations between competency terms.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 356: Line 279:
 
|}
 
|}
  
===competency_framework_depth_info_fields===
+
===competency_depth_info_fields===
Data for a competency framework depth level's custom fields.
+
Data for competency depth level custom fields.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 456: Line 379:
 
|}
 
|}
  
===competency_framework_depth_info_category===
+
===competency_depth_info_category===
A competency framework's depth level can categorise its custom fields.
+
A competency's depth level can categorise its custom fields.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 497: Line 420:
 
|}
 
|}
  
===competency_framework_depth_info_data===
+
===competency_depth_info_data===
Data for a competency framework depth level's custom fields.
+
Data for depth level custom fields.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 511: Line 434:
 
|
 
|
 
|Auto incrementing
 
|Auto incrementing
 
|-
 
|'''frameworkid'''
 
|int(10)
 
|
 
|The id for the framework this depth level field describes
 
  
 
|-
 
|-
Line 538: Line 455:
  
 
===competency===
 
===competency===
A competency can belong to only one competency framework. A competency can only belong to one competency category.
+
A competency (or "learning outcome", "descriptor" etc) which can will have evidence attached to it.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 575: Line 492:
 
|
 
|
 
|The id of the competency term this competency is attached to.
 
|The id of the competency term this competency is attached to.
 
|-
 
|'''frameworkid'''
 
|int(10)
 
|
 
|The id of the competency framework which this competency belongs to.
 
  
 
|-
 
|-
Line 621: Line 532:
 
|
 
|
 
|The id for the competency that this evidence describes
 
|The id for the competency that this evidence describes
 
|-
 
|'''framework'''
 
|int(10)
 
|
 
|The id for the competency framework
 
  
 
|-
 
|-
Line 733: Line 638:
 
|}
 
|}
  
===position_level===
+
===position_competencies===
 +
Bridge between a position and the competencies that are attached to it.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 746: Line 652:
 
|
 
|
 
|auto-incrementing
 
|auto-incrementing
 
|-
 
|'''shortname'''
 
|int(10)
 
|
 
|
 
 
|-
 
|'''fullname'''
 
|text
 
|
 
|The full name of the position level
 
  
 
|-
 
|-
Line 763: Line 657:
 
|int(10)
 
|int(10)
 
|
 
|
|The id of the position that the position level is attached to
+
|The id of the position
 
 
|-
 
|'''description'''
 
|text
 
|
 
|A description of the position
 
 
 
|-
 
|'''timecreated'''
 
|int(10)
 
|
 
|The time when this position level was created
 
 
 
|-
 
|'''timemodified'''
 
|int(10)
 
|
 
|The time when this position level was last changed
 
 
 
|-
 
|'''usermodified'''
 
|int(10)
 
|
 
|The user who last modified this position level
 
|}
 
 
 
===position_level_competencies===
 
Bridge between a position level and the competencies that are attached to it.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|auto-incrementing
 
 
 
|-
 
|'''positionlevelid'''
 
|int(10)
 
|
 
|The id of the position level
 
  
 
|-
 
|-
Line 821: Line 669:
 
|int(1)
 
|int(1)
 
|
 
|
|The competency is required for this position level
+
|The competency is required for this position
  
 
|-
 
|-
Line 833: Line 681:
 
|int(10)
 
|int(10)
 
|
 
|
|The id of the scale value expected for this position level competency
+
|The id of the scale value expected for this position competency
  
 
|-
 
|-
Line 857: Line 705:
 
|int(4)
 
|int(4)
 
|
 
|
|The weight for this position level competency
+
|The weight for this position competency
 
|}
 
|}
  
===position_level_courses===
+
===position_courses===
Bridge between a position level and the courses that are attached to it.
+
Bridge between a position and the courses that are attached to it.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 876: Line 724:
  
 
|-
 
|-
|'''positionlevelid'''
+
|'''positionid'''
 
|int(10)
 
|int(10)
 
|
 
|
|The id of the position level
+
|The id of the position
  
 
|-
 
|-
Line 891: Line 739:
 
|int(1)
 
|int(1)
 
|
 
|
|The course is required for this position level
+
|The course is required for this position
  
 
|}
 
|}
  
===user_position_levels===
+
===user_positions===
Intersection between a user and his/her position levels. Also contains historical position data for users.
+
Intersection between a user and his/her positions. Also contains historical position data for users.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 917: Line 765:
  
 
|-
 
|-
|'''positionlevelid'''
+
|'''positionid'''
 
|int(10)
 
|int(10)
 
|
 
|
Line 938: Line 786:
 
|int(10)
 
|int(10)
 
|
 
|
|The day/time the user started in this position level
+
|The day/time the user started in this position
  
 
|-
 
|-
Line 944: Line 792:
 
|int(10)
 
|int(10)
 
|
 
|
|The day/time the user finished this position level
+
|The day/time the user finished this position
 
|}
 
|}
  
Line 981: Line 829:
  
 
|-
 
|-
|'''positionlevel'''
+
|'''positionid'''
 
|int(10)
 
|int(10)
 
|
 
|
|The position level that the competency applies to
+
|The id of the position that the competency applied to
  
 
|-
 
|-
Line 990: Line 838:
 
|int(10)
 
|int(10)
 
|
 
|
|The expected proficiency for the position level competency
+
|The expected proficiency for the position competency
  
 
|-
 
|-
Line 1,002: Line 850:
 
|int(10)
 
|int(10)
 
|
 
|
|The day/time the user started in this position level
+
|The day/time the user started in this position
  
 
|-
 
|-
Line 1,008: Line 856:
 
|int(10)
 
|int(10)
 
|
 
|
|The day/time the user finished this position level
+
|The day/time the user finished this position
 
|}
 
|}
  
Line 1,037: Line 885:
  
 
==Import/Export plugins==
 
==Import/Export plugins==
We need to be able to import and export data related to competency frameworks, positions, and position levels.
+
We need to be able to import and export data related to competencies and positions.
  
 
===Competency framework import/export===
 
===Competency framework import/export===
Line 1,044: Line 892:
 
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects
 
* ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects
  
===Position, position level, and position assignment import/export===
+
===Position and position assignment import/export===
 
Users can be assigned to a position via csv import or via an authentication plugin. Methods will need to be added to the auth API to allow position assignments.  
 
Users can be assigned to a position via csv import or via an authentication plugin. Methods will need to be added to the auth API to allow position assignments.  
  
Line 1,108: Line 956:
  
 
===grade_outcomes - site-wide outcomes===
 
===grade_outcomes - site-wide outcomes===
Site wide outcomes will need to be imported into the competency_framework_terms table.
+
Site wide outcomes will need to be imported into the competency_terms table.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 1,122: Line 970:
 
|'''id'''
 
|'''id'''
 
|null
 
|null
|competency_framework_terms
+
|competency_terms
 
|'''id'''
 
|'''id'''
 
|null
 
|null
Line 1,130: Line 978:
 
|'''courseid'''
 
|'''courseid'''
 
|null
 
|null
|competency_framework_terms
+
|competency_terms
 
|'''courseid'''
 
|'''courseid'''
 
|null
 
|null
Line 1,138: Line 986:
 
|'''shortname'''
 
|'''shortname'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''shortname'''
 
|'''shortname'''
 
|not null
 
|not null
Line 1,146: Line 994:
 
|'''fullname'''
 
|'''fullname'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''fullname'''
 
|'''fullname'''
 
|not null
 
|not null
Line 1,154: Line 1,002:
 
|'''scaleid'''
 
|'''scaleid'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''scaleid'''
 
|'''scaleid'''
 
|not null
 
|not null
Line 1,162: Line 1,010:
 
|'''description'''
 
|'''description'''
 
|null or not null
 
|null or not null
|competency_framework_terms
+
|competency_terms
 
|'''description'''
 
|'''description'''
 
|null or not null
 
|null or not null
Line 1,170: Line 1,018:
 
|'''timecreated'''
 
|'''timecreated'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''timecreated'''
 
|'''timecreated'''
 
|not null
 
|not null
Line 1,178: Line 1,026:
 
|'''timemodified'''
 
|'''timemodified'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''timemodified'''
 
|'''timemodified'''
 
|not null
 
|not null
Line 1,186: Line 1,034:
 
|'''usermodified'''
 
|'''usermodified'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''usermodified'''
 
|'''usermodified'''
 
|not null
 
|not null
Line 1,193: Line 1,041:
  
 
===grade_outcomes - custom course outcomes===
 
===grade_outcomes - custom course outcomes===
Custom course outcomes will also need to be imported into the competency_framework_terms table.
+
Custom course outcomes will also need to be imported into the competency_terms table.
  
 
{| border="1" cellpadding="2" cellspacing="0"
 
{| border="1" cellpadding="2" cellspacing="0"
Line 1,207: Line 1,055:
 
|'''id'''
 
|'''id'''
 
|null
 
|null
|competency_framework_terms
+
|competency_terms
 
|'''id'''
 
|'''id'''
 
|null
 
|null
Line 1,215: Line 1,063:
 
|'''courseid'''
 
|'''courseid'''
 
|not null (e.g., 2, 3)
 
|not null (e.g., 2, 3)
|competency_framework_terms
+
|competency_terms
 
|'''courseid'''
 
|'''courseid'''
 
|null
 
|null
Line 1,223: Line 1,071:
 
|'''shortname'''
 
|'''shortname'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''shortname'''
 
|'''shortname'''
 
|not null
 
|not null
Line 1,231: Line 1,079:
 
|'''fullname'''
 
|'''fullname'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''fullname'''
 
|'''fullname'''
 
|not null
 
|not null
Line 1,239: Line 1,087:
 
|'''scaleid'''
 
|'''scaleid'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''scaleid'''
 
|'''scaleid'''
 
|not null
 
|not null
Line 1,247: Line 1,095:
 
|'''description'''
 
|'''description'''
 
|null or not null
 
|null or not null
|competency_framework_terms
+
|competency_terms
 
|'''scaleid'''
 
|'''scaleid'''
 
|null or not null
 
|null or not null
Line 1,255: Line 1,103:
 
|'''timecreated'''
 
|'''timecreated'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''timecreated'''
 
|'''timecreated'''
 
|not null
 
|not null
Line 1,263: Line 1,111:
 
|'''timemodified'''
 
|'''timemodified'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''timemodified'''
 
|'''timemodified'''
 
|not null
 
|not null
Line 1,271: Line 1,119:
 
|'''usermodified'''
 
|'''usermodified'''
 
|not null
 
|not null
|competency_framework_terms
+
|competency_terms
 
|'''usermodified'''
 
|'''usermodified'''
 
|not null
 
|not null
Line 1,499: Line 1,347:
  
 
==Role Context==
 
==Role Context==
Competency frameworks, competency categories, and competencies should each have their own context. An administrator can create any of them, and can assign a user to a role in any of those contexts.
 
  
 
==Capabilities and Permissions==
 
==Capabilities and Permissions==
  
===Competency frameworks===
+
===Competencies===
 
 
{| border="0" cellpadding="2" cellspacing="0"
 
|'''Description'''
 
|'''Capability'''
 
 
 
|-
 
|View competency frameworks
 
|moodle/competency:viewframeworks
 
 
 
|-
 
|View hidden competency frameworks
 
|moodle/competency:viewhiddenframeworks
 
 
 
|-
 
|Manage competency frameworks
 
|moodle/competency:manageframeworks
 
|}
 
  
===Competencies===
 
 
{| border="0" cellpadding="2" cellspacing="0"
 
{| border="0" cellpadding="2" cellspacing="0"
 
|'''Description'''
 
|'''Description'''
Line 1,528: Line 1,357:
  
 
|-
 
|-
|View competencies
+
|View competency competencies
|moodle/competencies:view
+
|moodle/competency:viewcompetencies
  
 
|-
 
|-
 
|View hidden competencies
 
|View hidden competencies
|moodle/competencies:viewhiddencompetencies
+
|moodle/competency:viewhiddencompetencies
  
 
|-
 
|-
 
|Manage competencies
 
|Manage competencies
|moodle/competencies:manage
+
|moodle/competency:managecompetencies
 
|}
 
|}
  

Revision as of 02:19, 1 June 2009

Moodle 2.0

Note: This page outlines ideas for the Progress tracking feature planned for Moodle 2.0. It's a specification under construction! If you have any comments or suggestions, please add them to the page comments.

Contents

Introduction

To model the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to go further than the 1.9 outcomes architecture allows.

Design Principles

A competency framework needs a measured amount of abstraction

  • A competency architecture needs to be flexible enough to meet the variety of competency frameworks used in practice.
  • Competencies need to be organised on a site level in a taxonomy (i.e., a hierarchy of terms), folksonomy (i.e., tags), or a hybrid of both.
  • Terminology used in each competency framework needs to vary. For example, we should be able to name top-level competencies as "Competency Areas", second level as "Competencies", and third level as "Sub-Competencies," "Primary descriptors," etc.
  • Custom metadata should be easily attachable to competencies

A competency framework needs to be easily navigated

  • Any user should be able to easily navigate a competency framework, regardless of how it is organised.

A competency framework need to be portable

An "admin" should be able to

  • Export a competency framework from one Moodle and import it into another.
  • Import a competency framework via xml, csv in some easily understood format.

Competencies should be able to be gained by various evidence types

A competency might be met by:

  • Completing three required courses
  • Providing an electronic example (e.g., a scanned computer science diploma)

Competencies to be gained by various methods (or types of evidence)

  • Achieving one or more outcomes in one or more courses
  • Completing two or more courses (e.g., when completing course A, course B, and course C)
  • Completing one or more activities (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)
  • Exceeding the aggregate result threshold for a question category within an evaluation (i.e., feedback using quiz)
  • Exceeding the aggregate result threshold for a question category within an assessment (i.e., quiz)
  • Electronic file (a diploma, external certification)
    • User file area (via the file API)
    • External repository (via the portfolio API)
    • ePortfolio (via the repository API)
  • Observation (e.g., a comment / testimony / reference)

Competencies can be attached to a positions

Competencies can use expected evidence, proficiency levels, and weights

  • Expected "evidence" and "competency proficiency levels" to be defined for links between standard/custom user profile field items and a competencies for each evidence type:
    • Outcome level (i.e., scale value)
    • A course's standard course completion criteria
    • A course's standard course activity criteria
    • Custom course completion criteria
    • Custom activity completion criteria
    • Aggregate result threshold for a question category
    • Required electronic file

Competency evidence should be easily exportable

  • An admin should be able to easily sync data to other external systems
  • A user's should be able to easily export their achieved competencies and evidence to their e-portfolio.

Competencies and competency reports should be scalable

Requirements

  • We'll need to access and use the existing site-wide Outcomes Outcomes tables
  • We'll need to use the tables that indicate completion status for courses (these are not yet in place) Course Completion
  • We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API

Definitions

Position

An organisational role that has a unique set of required courses and competencies. Examples:

"First year English major
"Junior Accountant"
"Grade 1"
"Year 1"

Scale

A way to measure a competency. Examples:

"Below average, Average, Above average"
"Not competent, Competent"

Competency term

A competency category or tag used for organising one or more competencies in a hierarchy or taxonomy. Examples:

"Reading Comprehension"
   -> child: "Responding to Text"
                -> child: "Initial Understanding of Literary Text"
                             -> child: "Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently"
                             -> child: "Demonstrate initial understanding of author’s craft used in literary texts by..."

Competency

A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. A competency may be associated with one or more competency terms. Examples:

"Identifying characters in a story"
"Retelling the beginning, middle, and end of a story"
"Responding to simple questions about a book's content"
"Identifying literary devices as appropriate to genre: rhyme, repeated language"

Competency evidence type

A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:

Observation
Quiz grade
Course completion
Activity completion
Certificate
Evaluation results
File (diploma)

Competency evidence

A competency can be measured by one or more competency evidence types. Evidence can be stated to include the evidence type, evidence date, and measured value. Examples:

"Observation - Teacher - Above average - 4:00pm May 28, 2009"
"Observation - Spanish Language Proficiency Interview - 4:00pm May 28, 2009 - Rating 4 out of 5"
"Quiz - 4:00pm May 28, 2009 - Grade 90% out of 100%"
"Certificate - Public Speaking Institute - 4:00pm May 28, 2009 - Passed.
"File - College Diploma - 4:00pm May 28, 2009 - Bachelor of Science Computer Science"

Expected proficiency level

The required rating (based on a scale) or grade for a position competency. Examples:

"Average"
"5"
"50%"
"Passed"

Measured proficiency level

A user's observed, scored, reported proficiency level for a competency.

"Above average"
"8"
"80%"
"Passed"

Competency weighting

Child competencies can be assigned weights which can be aggregated. Examples:

"Communication"
    -> child "Written Communication - weight: 60/100"
    -> child "Oral Communication - weight: 40/100"

User interface

Learning plan

  1. Each user can have a set of either courses to be completed, competencies to be achieved, or a mixture of both for his/her current position. These comprise a user's individual learning plan (IDP).
  2. Each user's IDP will show:
    1. Completed courses
    2. Progress toward courses which are not yet complete. This is basically a view of the course progress completion report for the user across the incomplete courses.
    3. Competencies achieved. This will include the competency terms and meta data made visible to the user, as well as the evidence info (type, date, ratings and grades).
    4. Competencies not yet achieved. This will also include the competency terms, meta data made available to the user, as well as the expected proficiency levels for each competency.
  3. Each user can see a list of previous positions, and the IDP for each previous position.
  4. Each user can see a list of all courses and competencies for all positions as a "transcript" or "record of learning."

Position

  1. An admin can browse list of positions.

Position courses and competencies

  1. Each position can have a set of courses to be completed, competencies to be achieved, or a mixture of both.
  2. A user can be assigned to a position (using an interface similar to assigning a user to a role or group).
  3. A course or group of courses can be selected for a position from a list of all courses (by drilling-down category/sub-category) or from the results of a search (by course name or course description).
  4. A competency or group of competencies can assigned to a position by navigating and/or searching competencies and selecting from the results.

Database structures

competency_term

A competency framework can have its own set of terms (meta data tags). A sort order can be imposed on each term for display and reporting purposes.

Field Type Default Info
id int(10) Auto incrementing
title varchar(255) The title of the competency term
description text The description of the competency term
idnumber int(10) The id, code number or local identifier for the competency term used for reporting
competencycount int(10) A count of the number of competencies which this competency term is attached to
timecreated int(10) The time when the competency term was created
timemodified int(10) The time when the competency term was modified
usermodified int(10) The userid of the person who last modified the competency term

competency_term_hierarchy

For tracking hierarchies of competency terms.

Field Type Default Info
id int(10) Auto incrementing
termid int(10) The id of the child term
parent int(10) The id of the parent term
sortorder int(10) The order number of this competency term (useful for ordering competencies for viewing/navigation/reporting)
depth int(10) The depth of the competency term (beginning at 1)
path int(10) The path to the competency term

competency_term_relations

For tracking relations between competency terms.

Field Type Default Info
id int(10) Auto incrementing
termid1 int(10) The id of a term
termid2 int(10) The id of a term related to term1

competency_depth_info_fields

Data for competency depth level custom fields.

Field Type Default Info
id int(10) Auto incrementing
shortname varchar(255) Shortname for the custom term field
fullname text Full name for the custom term field
datatype varchar(255) The type of custom term field data
description text Description of custom term field
categoryid int(10) The id for the custom term field category
sortorder int(10) The sort order for the custom term field within its category
hidden int(1) The custom term field should be hidden
required int(1) The custom term field required
defaultdata text Default text for the selected parameter
param1 text Parameter text
param2 text Parameter text
param3 text Parameter text
param4 text Parameter text
param5 text Parameter text

competency_depth_info_category

A competency's depth level can categorise its custom fields.

Field Type Default Info
id int(10) Auto incrementing
shortname varchar(255) Shortname for the custom term info category
fullname text Full name for the custom term info category
description text Description for the custom term info category
sortorder int(10) The order number for this category

competency_depth_info_data

Data for depth level custom fields.

Field Type Default Info
id int(10) Auto incrementing
depth int(10) The depth level this field is attached to.
termid int(10) The id for the term this custom field data applies to
data text The data for the term

competency

A competency (or "learning outcome", "descriptor" etc) which can will have evidence attached to it.

Field Type Default Info
id int(10) Auto incrementing
title varchar(255) The title of the competency
description text The description of the competency
idnumber int(10) The id, code number or local identifier for the competency used for reporting
termid int(10) The id of the competency term this competency is attached to.
timecreated int(10) The time when the competency was created
timemodified int(10) The time when the competency was modified
usermodified int(10) The userid of the person who last modified the competency

competency_evidence_items

A competency can be achieved by one or more forms of evidence.

Field Type Default Info
id int(10) Auto incrementing
competencyid int(10) The id for the competency that this evidence describes
itemtype varchar(30) The type of evidence 'observation', 'course/outcome', 'mod/outcome', 'course/completion', 'mod/completion', 'course/grade', 'mod/grade', 'question/category', 'file'
itemmodule varchar(30) The type of evidence 'observation', 'quiz', 'scorm', 'question'
iteminstance int(10) The id for the evidence instance (ie, grade_outcome id, course id, course_modules id, grade_item id, quiz_question_instance id, files id)
required int(1) The evidence is required
certification int(1) The evidence is for certification
expirationdays int(10) The evidence expires after this number of days
timecreated int(10) The time when this competency evidence was allowed
timemodified int(10) The time when this competency evidence was last changed
usermodified int(10) The user who last modified this evidence

position

Field Type Default Info
id int(10) Auto incrementing
shortname int(10) The short name of the position
fullname text The full name of the position
description text A description of the position
timecreated int(10) The time when this position was created
timemodified int(10) The time when this position was last changed
usermodified int(10) The user who last modified this position

position_competencies

Bridge between a position and the competencies that are attached to it.

Field Type Default Info
id int(10) auto-incrementing
positionid int(10) The id of the position
competencyid int(10) The id of the competency
required int(1) The competency is required for this position
scaleid int(10) The id of the scale used for this competency
scalevalueid int(10) The id of the scale value expected for this position competency
weightmin int(4) The minimum weight for this competency
weightmax int(4) The maximum weight for this competency
weightincrement int(4) The weight increment for this competency
weight int(4) The weight for this position competency

position_courses

Bridge between a position and the courses that are attached to it.

Field Type Default Info
id int(10) auto-incrementing
positionid int(10) The id of the position
courseid int(10) The id of the course
required int(1) The course is required for this position

user_positions

Intersection between a user and his/her positions. Also contains historical position data for users.

Field Type Default Info
id int(10) auto-incrementing
userid int(10) The id of the user
positionid int(10) The id of the user's position
primary int(1) The position is a primary for the user
deleted int(1) The user has been 'deleted'
timestart int(10) The day/time the user started in this position
timefinish int(10) The day/time the user finished this position

competency_evidence

Track historical and current competency information for each user.

Field Type Default Info
id int(10) auto-incrementing
userid int(10) The id of the user
competencyid int(10) The id of the competency
completionstatus int(10) The status of completion
positionid int(10) The id of the position that the competency applied to
proficiencyexpected int(10) The expected proficiency for the position competency
proficiencyactual int(10) The current proficiency for the user
timestart int(10) The day/time the user started in this position
timefinish int(10) The day/time the user finished this position

Plugin architecture

Competency evidence type plugins

Each type of evidence will need its own methods for interacting with the competency architecture and will need to interact via a base competency evidence API. Below are the item types.

Observation

Not sure what this is yet - just an assessment/quiz question instance?

Course completion

Course grade

Activity completion

Activity module grade

  • Quiz
  • SCORM

File

Portfolio

Using an assignment type is the current approach.

Report plugins

Similar to the gradebook, we need to allow development of report plugins for competencies.

Import/Export plugins

We need to be able to import and export data related to competencies and positions.

Competency framework import/export

A competency framework should be able to be exported using an appropriate format in either xml and csv file format. There are some standards on exchanging competencies including:

  • IEEE P1484.20.1 Standard on Reusable Competency Definitions and the IEEE Draft Standard on Simple Reusable Competency Map
  • ISO/IEC PDTR 24763 Conceptual Reference Model for Competencies and Related Objects

Position and position assignment import/export

Users can be assigned to a position via csv import or via an authentication plugin. Methods will need to be added to the auth API to allow position assignments.

Users assigns to positions can be exported to csv or xml.

Competency evidence import/export

There are a variety of standards for exchanging competencies evidence including:

  • IMS Reusable Definition of Competency or Educational Objectives Spec (RDCEO)
  • IMS Learner Information Package Spec (LIP)
  • HR-XML Competencies (Measurable Characteristics) Recommendation, 2007 April 15

IMS RDCEO and LIP recommend formats as shown in the examples below (more IMS RDCEO here and IMS LIP home). Special thanks to Sarveswaran Kengatharaiyer (GSOC 2008 student for the Moodle Progress Tracker project) who developed these examples.

rdceo.identifier = rdceo434323
rdceo.title = Identify verbs in simple sentences
rdceo.description = “Identify verbs in simple sentences”
rdceo.definition.statement.
   statementid = 123
   statementname = Always
   statementtext = Scale
   statementtoken = scl55435
rdceo.definition.statement.
   statementid = 124
   statementname = Never
   statementtext = Scale
   statementtoken = scl55436
rdceo.definition.statement.
   statementid = 125
   statementname = Sometimes
   statementtext = Scale
   statementtoken = scl55437

lip.contenttype.referencial.sourceid.id = jenney_profile
lip.identification.cotenttype.referential.indexid = id123
lip.identification.name.partname.typename=Jenny 
lip.competency
   cotenttype.referential.indexid = j123
   exrefrecord = rdceo434323
   description = Always

HR-XML recommends a format like shown below in an example which uses recursive competencies (more here).

<Competency name="Communication Skills">
      <Competency name="Written Communication Skills">
            <CompetencyEvidence name="WRITTENTEST1-A" dateOfIncident="1995-01-01" lastUsed="2000-01-01">
                   <NumericValue minValue="3" maxValue="5" description="SEP-equivalent Skill-Level Range">5</NumericValue>
            </CompetencyEvidence>
            <CompetencyWeight>
                   <NumericValue minValue="0" maxValue="100">35</NumericValue>
            </CompetencyWeight>
      </Competency>
      <Competency name="Oral Communication Skills">
            <CompetencyEvidence name="ManagerObservation" dateOfIncident="1996-01-01" lastUsed="2000-01-01">
                   <NumericValue minValue="1" maxValue="5" description="Company XYZ Skill Range">5</NumericValue>
            </CompetencyEvidence>
            <CompetencyWeight>
                   <NumericValue minValue="0" maxValue="100">65</NumericValue>
            </CompetencyWeight>
      </Competency>
</Competency>

Migration from 1.9

The outcomes and scales architecture introduced in Moodle 1.9 provide a basic foundation for competency management. One or more scales can be defined on a site-level, and custom scales can be defined at the course level. Outcomes can be defined at a site-level as standard outcomes, and standard outcomes can be added into courses. Custom outcomes can also be created within courses. Each outcome is linked to an activity via the settings page or via the controls for an existing outcome on the grader report page.

grade_outcomes - site-wide outcomes

Site wide outcomes will need to be imported into the competency_terms table.

From Table From Field From Value To Table To Field To Value
grade_outcomes id null competency_terms id null
grade_outcomes courseid null competency_terms courseid null
grade_outcomes shortname not null competency_terms shortname not null
grade_outcomes fullname not null competency_terms fullname not null
grade_outcomes scaleid not null competency_terms scaleid not null
grade_outcomes description null or not null competency_terms description null or not null
grade_outcomes timecreated not null competency_terms timecreated not null
grade_outcomes timemodified not null competency_terms timemodified not null
grade_outcomes usermodified not null competency_terms usermodified not null

grade_outcomes - custom course outcomes

Custom course outcomes will also need to be imported into the competency_terms table.

From Table From Field From Value To Table To Field To Value
grade_outcomes id null competency_terms id null
grade_outcomes courseid not null (e.g., 2, 3) competency_terms courseid null
grade_outcomes shortname not null competency_terms shortname not null
grade_outcomes fullname not null competency_terms fullname not null
grade_outcomes scaleid not null competency_terms scaleid not null
grade_outcomes description null or not null competency_terms scaleid null or not null
grade_outcomes timecreated not null competency_terms timecreated not null
grade_outcomes timemodified not null competency_terms timemodified not null
grade_outcomes usermodified not null competency_terms usermodified not null

grade_outcomes_courses

Grade outcomes in a course become an evidence item (itemtype='course') for a competency and get moved to the competency_evidence_items table.

From Table From Field From Value To Table To Field To Value
grade_outcomes_courses id not null competency_evidence_items id? not crucial not null
grade_outcomes_courses courseid not null competency_evidence_items instanceid not null
grade_outcomes_courses outcomeid not null competency_evidence_items competencyid not null

grade_items - course outcomes

Course outcomes need to be entered as a competency evidence items (type="course") for a competency and get moved to the competency_evidence_items table.

From Table From Field From Value To Table To Field To Value
grade_items id not null competency_evidence_items id? not crucial not null
grade_items itemname not null competency_evidence_items name not null
grade_items itemtype course competency_evidence_items itemtype course
grade_items itemmodule null competency_evidence_items itemmodule null
grade_items iteminstance not null (1,2) competency_evidence_items iteminstance not null (1,2)

grade_items - activity outcomes

Grade outcomes in a course become a course 'type' allowed evidence for a competency and get moved to the competency_evidence_allowed table. We also need to use the value "course" for the evidence 'type' field.

From Table From Field From Value To Table To Field To Value
grade_items id not null competency_evidence id? not crucial not null

grade_grades

In 1.9, course outcomes appear in the grade_items when they are linked to an activity. Only activity outcomes appear as graded in grade_grades. The activity outcomes need to appear as an entries in competency_evidence_items table and the grade in the competency_items table.

From Table From Field From Value To Table To Field To Value
grade_grades id not null competency_items id not null
grade_grades itemid not null competency_items itemid not null
grade_grades userid not null competency_items userid not null
grade_outcomes scaleid not null competency_items scaleid not null
grade_grades finalgrade not null competency_items scalevalueid not null

We also need to add an entry for the user in the competency_evidence table.

From Table From Field From Value To Table To Field To Value
grade_grades id not null competency_evidence id not null
grade_grades itemid not null competency_evidence itemid not null
grade_grades userid not null competency_evidence userid not null
grade_outcomes scaleid not null competency_evidence scaleid not null
grade_grades finalgrade not null competency_evidence scalevalueid not null

Moodle Networks

Web Services

Competency data including status should be provided from web service function calls.

Logging

All competency related changes should be logged in history tables.

Roles

Role Context

Capabilities and Permissions

Competencies

Description Capability
View competency competencies moodle/competency:viewcompetencies
View hidden competencies moodle/competency:viewhiddencompetencies
Manage competencies moodle/competency:managecompetencies

Ideas for the future

  1. Due dates for course completions and outcome completions can be assigned in an individual user's learning plan.
  2. A comment can be added to a user's learning plan item when a course or outcome is manually added or removed from it.
  3. Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).