Note:

If you want to create a new page for developers, you should create it on the Moodle Developer Resource site.

Competencies: Difference between revisions

From MoodleDocs
No edit summary
 
(52 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Moodle 2.0}}<p class="note">'''Note''': This page outlines ideas for the Competencies 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>


* '''PROJECT STATE: Proposal'''
{{obsolete}}
* '''MAIN TRACKER ISSUE''':  
<div class="alert alert-info">
* '''DISCUSSION''': Not yet announced on Moodle.org
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
* '''COMMENTS''': [[Development_talk:Competencies]]
* '''AUTHOR''': [[User:Jonathan Newman|Jonathan Newman]] with help from [[Matt Clarkson|Matt Clarkson]] and others


=Overview=
For the API see: https://docs.moodle.org/dev/index.php?title=Competency_API
To support the range of different types of competency frameworks used by organisations, competencies in Moodle 2.0 needs to expand on the 1.9 outcomes architecture.


==Goals==
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.
# Measured amount of abstraction
</div>
#* Allow "admins" to organise competencies in a hierarchy, folksonomy (tags), or hybrid
#* Allow "admins" to specify parent-child relations between competencies and related competencies
#* Allow "admins" to create unlimited hierarchical levels
#* Allow "admins" to describe competencies on a given depth level consistently with custom meta data fields and categories
# Easy navigation
#* Allow "admins" to view the competency structure (expanding/collapsing competencies, sorting/searching/filtering by competency meta data)
#* Allow "admins" to easily add new competencies and meta-data
# Connecting competencies and evidence items
#* Allow "admins" to attach allowed evidence (course, activity, etc) to a competency (from a competency view):
#** One or more course grades
#** One or more course completions (e.g., when completing course A, course B, and course C)
#** One or more activity outcomes, from one or more courses
#** One or more activity completions (e.g., when completing activity x in course A and activity y in course B, and activity z in course C)
#* Allow "course creators" to attach competencies to evidence in a course they are assigned to:
#** Course grade
#** Completion the course
#** Activity grade
#** Completion of an activity in the course
# Portability
#* Allow "admins" to import competencies (using import plugins) into a Moodle install
#* Allow "admins" to export competencies (using export plugins) from a Moodle install
# Specifying expected proficiency levels
#* Allow "admins" to assign an expected proficiency level (i.e., competency scale value) to a competency evidence item
# Aggregating measured proficiency level for each user
#* Allow "admins" to specify aggregation methods for each competency:
#** All child competencies or evidence
#** Any child competencies or evidence
#** A specific number of child competencies or evidence
#** A percentage of child competences or evidence
#** Sum of weighted child competencies or evidence
#** Average of weighted child competencies or evidence
#* Reporting
#** Allow "admins" to view competency results for all students across all courses.
#** Allow "teachers" to view student competency results within his/her courses.
#** Allow "students" to view their own competency results (within a course, or via their profile or My Moodle).
# Specifying weights
#* Allow "admins" to assign weight to a competency or a competency evidence item
# Scalability
#* Store and retrieve data efficiently to allow the scalability to very large numbers of courses, users, competencies, evidence, etc
# Extensibility
#* Use a plugin architecture for evidence types
 
==General 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==
'''Scale''': A way to measure a competency using descriptors and/or numerical '''scale values'''.
 
Example scales using descriptors values:
"Below average, Average, Above average"
"Not competent, Competent"
 
Example scales using numerical values:
"1, 2, 3, 4, 5"
"0, 100"
"0.0, 0.5, 1.0"
"0, 500, 1000"
 
Example scales using descriptors and numerical values:
"Poor [1], Below average [2], Average [3], Above average [4], Excellent [5]"
"Not yet competent [0], Competent [100]"
"Not yet competent [0.0], Not yet performing [0.5], Competent [1.0]"
 
'''Competency''': A measurable knowledge, skill, ability, attitude or other learning-related characteristic which a student may have. Competencies can be organised into a hierarchy (i.e., category-based), folksonomy (tag-based), or a hybrid of both.
 
Example hierarchy of competencies:
top-level competency: "Literacy"
    -> child competency: "Reading Comprehension"
        -> child competency: "Responding to Text"
            -> child competency: "Initial Understanding of Literary Text"
                -> child competency: "Demonstrate initial understanding of elements of literary texts (including text read aloud, reading independently"
 
'''Competency evidence type''': A form of evidence that can be accepted as evidence that a competency has been achieved. Examples:
Observation
Activity grade
Activity completion
Activity outcome
Course completion
Course grade
Course outcome
Question 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 expected (or required) rating (based on a scale descriptor or numerical value) for a 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 used for aggregating either sums or averages of child competencies. Examples:
 
Example with percentage weights
-> top-level competency: "Communication"
    -> child competency: "Written Communication" : weight: 60%
    -> child competency: "Oral Communication" : weight: 40%
 
==Example frameworks==
'''Example 1:''' Competency hierarchy with activity outcomes as evidence
 
competency -> "Curriculum" : "Literacy" : aggregation method "all" : weight none : proficiency expected "80%"
    competency -> "Type" : "Reading" : aggregation method "all" : weight "20%" : proficiency expected "80%"
      competency -> "Standard 1.1" : "Reading Strategies" : aggregation method "all" : weight: "20%" : proficiency expected "80%"
          competency -> "Early Reading Skills and Strategies" : "Phonological Awareness" : aggregation method "all" : weight: "100%" : proficiency expected "80%"
            competency -> "RK: 1" : "Applies phonological knowledge and skills by..." : aggregation method "all" : weight: "50%" : proficiency expected "80%"
                activity outcome -> Recognizing pairs of rhyming words and producing rhymes : weight: "33%"
                activity outcome -> Blending and segmenting syllables and onset-rimes (e.g., “cup-cake,” “s-at”) : weight: "33%"
                activity outcome -> Isolating phonemes in single-syllable words (e.g., "tell me the first sound in 'mop' "; "tell me the last sound in 'mop,'" "tell me the middle sound in 'mop'") : weight: "33%"
          competency -> "Early Reading Skills and Strategies" : "Concepts of Print" : aggregation method "all" : weight: "100%" : proficiency expected "80%"
            competency -> "RK: 2" : "Demonstrates understanding of concepts of print during shared or individual reading by..." : aggregation method "all" : weight: "50%" : proficiency expected "80%"
                activity outcome -> Distinguishing between printed letters and words : weight: "25%" : proficiency expected "80%"
                activity outcome -> Following text with finger-pointing (e.g., charts, simple books), demonstrating left-to-right and top-to-bottom directionality : weight: "25%"
                activity outcome -> Identifying the first and last parts of a word (beginning/end of the word) : weight: "25%"
                activity outcome -> Identifying key parts of a book: front and back, print, illustrations : weight: "25%"
 
=Data structures=
 
===scale===
 
The scale feature introduced in Moodle 1.9 needs to be expanded to provide numerical equivalents for each scale value. We'll need to create a new table 'scale_values' that includes a foreign key of the 'scale' table, and remove the 'scale' field from the 'scale' table. Here is how the modified 'scale' table will look:
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''courseid'''
|int(10)
|
|Id of the course, which the scale belongs to
 
|-
|'''userid'''
|int(10)
|
|Id of the user who last modified the scale
 
|-
|'''name'''
|varchar(255)
|
|Name of the scale value
 
|-
|'''description'''
|text
|
|Description of the scale value
 
|-
|'''timemodified'''
|int(10)
|
|Timestamp of when the scale was modified
|}
 
===scale_values===
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''scaleid'''
|int(10)
|
|Id of the scale that the scale value describes
 
|-
|'''name'''
|varchar(255)
|
|Name of the scale value
 
|-
|'''idnumber'''
|varchar(100)
|
|Optional id, code number or local identifier for the scale value (used for reporting).
 
|-
|'''description'''
|text
|
|Description of the scale value
 
|-
|'''numeric'''
|number(8)
|
|Numerical value for the scale valule
 
|-
|'''timemodified'''
|int(10)
|
|Timestamp of when the scale value was modified
|}
 
===competency===
 
A competency can be part of a hierarchy and can have evidence attached to it.
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''shortname'''
|varchar(100)
|
|The shortname for the competency
 
|-
|'''fullname'''
|varchar(255)
|
|The full name for 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
 
|-
|'''parentid'''
|int(10)
|
|The id of the parent competency
 
|-
|'''sortorder'''
|int(10)
|
|The order number of this competency (useful for ordering competencies for viewing/navigation/reporting)
 
|-
|'''depth'''
|int(10)
|
|The depth of the competency (beginning at 1)
 
|-
|'''path'''
|varchar(255)
|
|The path to the competency
 
|-
|'''aggregation'''
|int(10)
|
|A constant representation one of the competency aggregation methods (any, all, unit, fraction, sum of weighted, average of weighted)
 
|-
|'''scaleid'''
|int(10)
|
|The scale used to measure the competency
 
|-
|'''proficiencyexpected'''
|int(10)
|
|The expected proficiency for the competency, a value from the scale
 
|-
|'''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_relations===
 
For tracking relations between competencies.
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''competencyid1'''
|int(10)
|
|The id of a comptency
 
|-
|'''competencyid2'''
|int(10)
|
|The id of a related competency
|}
 
===competency_depth_info_field===
 
Data for a competency depth level field.
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''shortname'''
|varchar(255)
|
|Shortname for the field
 
|-
|'''fullname'''
|text
|
|Full name for the field
 
|-
|'''datatype'''
|varchar(255)
|
|The type of field data
 
|-
|'''description'''
|text
|
|Description of the field
 
|-
|'''categoryid'''
|int(10)
|
|The id for the field category
 
|-
|'''sortorder'''
|int(10)
|
|The sort order for the field within its category
 
|-
|'''hidden'''
|int(1)
|
|The field should be hidden
 
|-
|'''required'''
|int(1)
|
|The 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 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 field.
 
{| border="1" cellpadding="2" cellspacing="0"
|'''Field'''
|'''Type'''
|'''Default'''
|'''Info'''
 
|-
|'''id'''
|int(10)
|
|Auto incrementing
 
|-
|'''fieldid'''
|int(10)
|
|The id for the field
 
|-
|'''competencyid'''
|int(10)
|
|The id for the competency
 
|-
|'''data'''
|text
|
|The actual data for the competency field
|}
 
===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)
 
|-
|'''weight'''
|num(10)
|
|The weight applied to this evidence item (for aggregation)
 
|-
|'''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
|}
 
===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
 
|-
|'''proficiencyexpected'''
|int(10)
|
|The measured/evaluated proficiency level for the competency
 
|-
|'''proficiencymeasured'''
|int(10)
|
|The measured/evaluated proficiency level for the user
 
|-
|'''timecreated'''
|int(10)
|
|The time when this competency evidence was started
 
|-
|'''timemodified'''
|int(10)
|
|The time when this competency evidence was last changed
|}
 
=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
* Course outcome
* Activity completion
* Activity grade
* Activity outcome
* 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.
 
'''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
 
'''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>
 
 
 
=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
|}
 
=Example frameworks=
There are an enormous number of example competency frameworks published online. I've randomly selected a comprehensive example [http://education.vermont.gov/ Department of Education for the State of Vermont]'s [http://education.vermont.gov/new/html/pgm_curriculum/literacy/gle.html Grade 1 Expectations for Literacy] for Reading, and detailed [https://docs.moodle.org/en/Development:Competencies_example here] how it would fit into the proposed schema.
 
=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.