Difference between revisions of "Competencies"

Jump to: navigation, search
(Database structures)
 
(117 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Moodle 2.0}}<p class="note">'''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 [[Development talk:Progress tracking|page comments]].''</p>
 
  
=Introduction=
+
{{obsolete}}
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.
+
<div class="alert alert-info">
 +
Competencies has been added as a feature for the 3.1 release. This specification is very old - a more up-to-date specification can be found here: https://docs.moodle.org/dev/index.php?title=Competency_Based_Education
  
=Design Goals=
+
For the API see: https://docs.moodle.org/dev/index.php?title=Competency_API
# 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.
 
#* Terms used in to describe a competency framework need 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
 
#A competency framework needs 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 need to be able to be gained by various methods (or types of evidence)
 
#* Achieving one or more outcomes in one or more courses
 
#* Completing one 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)
 
#* Observation (e.g., a comment / testimony / reference)
 
# Competencies and courses need be attached to a curriculum
 
#* We need to be able to define curricula, and attach users (i.e., students) to them
 
# 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 completion criteria
 
#** An activity's completion criteria
 
#** Alternative course completion criteria
 
#** Alternative activity completion criteria
 
#** Aggregate result threshold for a question category
 
# Competency evidence should be easily exportable
 
#* An admin should be able to easily sync data to external systems
 
# The competencies architecture must be scalable
 
# Requirements
 
#* We'll need to access and use the existing site-wide Outcomes [https://docs.moodle.org/en/Development:Grades#grade_outcomes Outcomes tables]
 
#* We'll need to use the tables that indicate completion status for courses (these are not yet in place) [https://docs.moodle.org/en/Development:Course_completion Course Completion]
 
#* We need to get aggregate information about the course outcomes and aggregate grades for each user from the gradebook API
 
  
=Definitions=
+
Thankyou to the people who contributed to this earlier specification. This page has now been removed to prevent confusion with the newer specification/feature. You can view older versions of this page in the history.
'''Curriculum''': A field of study, subject of interest, branch of knowledge, specialty, or organisational role that has a unique set of required courses and competencies. Examples:
+
</div>
"First year English major"
 
"Accounting"
 
"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 curriculum 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=
 
'''Individual 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 curriculum. These comprise a user's individual learning plan (IDP).
 
# Each user's IDP will show:
 
## Completed courses
 
## Progress toward courses which are not yet complete. This would be similar to view of the course progress completion report for the user across the incomplete courses.
 
## 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).
 
## 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.
 
# Each user can see a list of his/her previous curricula.
 
# Each user can see a list of all his/her courses and competencies for all curricula as a "transcript" or "record of learning."
 
 
 
'''Curricula'''
 
# An admin can browse list of curricula.
 
 
 
'''Curriculum courses and competencies'''
 
# Each curriculum 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 curriculum (using an interface similar to assigning a user to a role or group).
 
# A course or group of courses can be selected for a curriculum 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).
 
# A competency or group of competencies can assigned to a curriculum 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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''shortname'''
 
|varchar(100)
 
|
 
|The shortname for the competency term
 
 
 
|-
 
|'''fullname'''
 
|varchar(255)
 
|
 
|The full name for 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
 
 
 
|-
 
|'''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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''termid'''
 
|int(10)
 
|
 
|The id of the child term
 
 
 
|-
 
|'''parentid'''
 
|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'''
 
|varchar(255)
 
|
 
|The path to the competency term
 
|}
 
 
 
 
 
'''competency_term_relations'''
 
 
 
For tracking relations between competency terms.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''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_field'''
 
 
 
Data for a competency depth level custom field.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''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 have categories for its custom fields.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''name'''
 
|varchar(255)
 
|
 
|Shortname for the depth level category
 
 
 
|-
 
|'''sortorder'''
 
|int(10)
 
|
 
|The order number for this category
 
 
 
|}
 
 
 
 
 
'''competency_depth_info_data'''
 
 
 
Data for a depth level custom field.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''fieldid'''
 
|int(10)
 
|
 
|The id for the field
 
 
 
|-
 
|'''termid'''
 
|int(10)
 
|
 
|The id for the term
 
 
 
|-
 
|'''data'''
 
|text
 
|
 
|The actual data for the term and field
 
|}
 
 
 
 
 
'''competency'''
 
 
 
A competency (or "learning outcome", "descriptor" etc) which can will have evidence attached to it.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''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
 
|}
 
 
 
 
 
'''curriculum'''
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''shortname'''
 
|int(10)
 
|
 
|The short name for the curriculum
 
 
 
|-
 
|'''fullname'''
 
|text
 
|
 
|The full name for the curriculum
 
 
 
|-
 
|'''description'''
 
|text
 
|
 
|A description of the curriculum
 
 
 
|-
 
|'''timecreated'''
 
|int(10)
 
|
 
|The time when this curriculum was created
 
 
 
|-
 
|'''timemodified'''
 
|int(10)
 
|
 
|The time when this curriculum was last changed
 
 
 
|-
 
|'''usermodified'''
 
|int(10)
 
|
 
|The user who last modified this curriculum
 
|}
 
 
 
 
 
'''curriculum_info_fields'''
 
 
 
Curriculum custom fields.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''shortname'''
 
|varchar(255)
 
|
 
|Shortname for the custom curriculum field
 
 
 
|-
 
|'''fullname'''
 
|text
 
|
 
|Full name for the custom curriculum field
 
 
 
|-
 
|'''datatype'''
 
|varchar(255)
 
|
 
|The type of custom curriculum field
 
 
 
|-
 
|'''description'''
 
|text
 
|
 
|Description of custom term field
 
 
 
|-
 
|'''categoryid'''
 
|int(10)
 
|
 
|The id for the custom curriculum 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
 
|}
 
 
 
 
 
'''curriculum_info_category'''
 
 
 
A curriculum custom fields can be categorised.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''shortname'''
 
|varchar(255)
 
|
 
|Shortname for the custom curriculum info category
 
 
 
|-
 
|'''fullname'''
 
|text
 
|
 
|Full name for the custom curriculum info category
 
 
 
|-
 
|'''description'''
 
|text
 
|
 
|Description for the custom curriculum info category
 
 
 
|-
 
|'''sortorder'''
 
|int(10)
 
|
 
|The order number for this category
 
 
 
|}
 
 
 
 
 
'''curriculum_info_data'''
 
 
 
Data for a curriculum custom fields.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|Auto incrementing
 
 
 
|-
 
|'''curriculumid'''
 
|int(10)
 
|
 
|The id for the term this custom field data applies to
 
 
 
|-
 
|'''data'''
 
|text
 
|
 
|The data for the term
 
|}
 
 
 
 
 
'''curriculum_competencies'''
 
 
 
Bridge between a curricula and the competencies that are attached to it.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|auto-incrementing
 
 
 
|-
 
|'''curriculumid'''
 
|int(10)
 
|
 
|The id of the curriculum
 
 
 
|-
 
|'''competencyid'''
 
|int(10)
 
|
 
|The id of the competency
 
 
 
|-
 
|'''required'''
 
|int(1)
 
|
 
|The competency is required for this curriculum
 
 
 
|-
 
|'''scaleid'''
 
|int(10)
 
|
 
|The id of the scale used for this competency
 
 
 
|-
 
|'''scalevalueid'''
 
|int(10)
 
|
 
|The id of the scale value expected for this curriculum's 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 curriculum's competency
 
|}
 
 
 
 
 
'''curriculum_courses'''
 
 
 
Bridge between a curriculum and the courses that are attached to it.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|auto-incrementing
 
 
 
|-
 
|'''curriculumid'''
 
|int(10)
 
|
 
|The id of the curriculum
 
 
 
|-
 
|'''courseid'''
 
|int(10)
 
|
 
|The id of the course
 
 
 
|-
 
|'''required'''
 
|int(1)
 
|
 
|The course is required for this curriculum
 
 
 
|}
 
 
 
 
 
'''user_curricula'''
 
 
 
Intersection between a user and his/her curricula. Also contains historical curriculum data for users.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''Field'''
 
|'''Type'''
 
|'''Default'''
 
|'''Info'''
 
 
 
|-
 
|'''id'''
 
|int(10)
 
|
 
|auto-incrementing
 
 
 
|-
 
|'''userid'''
 
|int(10)
 
|
 
|The id of the user
 
 
 
|-
 
|'''curriculumid'''
 
|int(10)
 
|
 
|The id of the user's curriculum
 
 
 
|-
 
|'''primary'''
 
|int(1)
 
|
 
|The curriculum 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 curriculum
 
 
 
|-
 
|'''timefinish'''
 
|int(10)
 
|
 
|The day/time the user finished this curriculum
 
|}
 
 
 
 
 
'''competency_evidence'''
 
 
 
Track historical and current competency information for each user.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
|'''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
 
 
 
|-
 
|'''curriculumid'''
 
|int(10)
 
|
 
|The id of the curriculum that the competency applied to
 
 
 
|-
 
|'''timestart'''
 
|int(10)
 
|
 
|The day/time the user started in this curriculum
 
 
 
|-
 
|'''timefinish'''
 
|int(10)
 
|
 
|The day/time the user finished this curriculum
 
|}
 
 
 
=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
 
* Course completion
 
* Course grade
 
* Activity completion
 
* Activity module grade
 
* File
 
 
 
'''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 curricula.
 
 
 
'''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
 
 
 
'''Curriculum and curriculum assignment import/export'''
 
 
 
Users can be assigned to a curriculum via csv import or via an authentication plugin. Methods will need to be added to the auth API to allow curriculum assignments.
 
 
 
Users assignments to curricula 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 [http://www.imsglobal.org/competencies/index.html IMS RDCEO here] and [http://www.imsglobal.org/profiles/index.html 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 [http://ns.hr-xml.org/2_5/HR-XML-2_5/CPO/Competencies.html#_Toc127531664 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>
 
 
 
=Upgrade 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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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.
 
 
 
{| border="1" cellpadding="2" cellspacing="0"
 
!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
 
|}
 
 
 
=Logging=
 
All competency related changes should be logged in history tables.
 
 
 
=Role capabilities and permissions=
 
 
 
{| border="0" cellpadding="2" cellspacing="0"
 
|'''Description'''
 
|'''Capability'''
 
 
 
|-
 
|View competency competencies
 
|moodle/competency:viewcompetencies
 
 
 
|-
 
|View hidden competencies
 
|moodle/competency:viewhiddencompetencies
 
 
 
|-
 
|Manage competencies
 
|moodle/competency:managecompetencies
 
|}
 
 
 
=Ideas for the future=
 
# Due dates for course completions and outcome completions can be assigned in an individual user's learning plan.
 
# A comment can be added to a user's learning plan item when a course or outcome is manually added or removed from it.
 
# Allowing competencies to be attached to an individual user (either by user profile field or by drag and drop).
 
  
 
[[Category:Project]]
 
[[Category:Project]]

Latest revision as of 08:11, 3 May 2016


Warning: This page is no longer in use. The information contained on the page should NOT be seen as relevant or reliable.

Competencies has been added as a feature for the 3.1 release. This specification is very old - a more up-to-date specification can be found here: https://docs.moodle.org/dev/index.php?title=Competency_Based_Education

For the API see: https://docs.moodle.org/dev/index.php?title=Competency_API

Thankyou to the people who contributed to this earlier specification. This page has now been removed to prevent confusion with the newer specification/feature. You can view older versions of this page in the history.