Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Initial version of the skill-tree modeling
- Loading branch information
Kai Himstedt
committed
Jun 1, 2018
1 parent
4c05cb4
commit 22e6628
Showing
21 changed files
with
9,554 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,64 @@ | ||
# curriculum | ||
# HPC Certification Forum | ||
|
||
Establishing an HPC Certification Program is a central part of the joint | ||
Performance Conscious HPC (PeCoH) project that started in April 2017. | ||
|
||
The three Hamburg compute centers involved in PeCoH, German Climate Computing | ||
Center (DKRZ), Regional Computing Center at the Universit¨at Hamburg (RRZ), | ||
and Computer Center at the Technische Universität Hamburg (TUHH RZ) started the | ||
Hamburg HPC Competence Center ([HHCC](https://www.hhcc.uni-hamburg.de/)) as a | ||
virtual institution and central contact point for their users. | ||
|
||
More information on the project is available in the | ||
[download area](https://www.hhcc.uni-hamburg.de/en/support/downloads.html) | ||
on the HHCC website. | ||
|
||
Our concept paper for the HPC Certification Program (Draft 0.91 -- June | ||
2018) ([hpccp-paper.pdf](./hpccp-paper.pdf)) is also contained in this repository. | ||
|
||
During the first year, it became apparent to broaden the scope and form | ||
an independent governance entity to sustain the effort and gain acceptance. | ||
|
||
For this purpose we establish a further website which focuses on the International | ||
Certification Program: | ||
[https://www.hpc-certification.org/](https://www.hpc-certification.org/) | ||
|
||
# Technical Notes | ||
|
||
The implementation of the skill tree is based on the Extensible Markup Language | ||
[(XML)](https://www.w3.org/XML/) and corresponding XML Schema Definitions | ||
[(XSD)](https://www.w3.org/2001/XMLSchema). | ||
|
||
[SkillsBase.xml](./modeling/skill-tree/SkillsBase.xml) contains the list of | ||
all skills we have identified for the HPC Certification Program so far. | ||
|
||
First of all, [SkillsBase.xml](./modeling/skill-tree/SkillsBase.xml) contains all | ||
the nodes of the skill tree in a flat data structure. | ||
In order to describe the tree, each skill that depends on other | ||
sub-skills has – besides its unique name, description, and further attributes – a | ||
list of references to these sub-skills. This is similar to using a `Makefile` for | ||
the well-known `make` build automation tool to define the dependencies of | ||
compilation units (Stuart I. Feldmann | ||
[Make -- A Program for Maintaining Computer | ||
Programs](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.39.7058). | ||
Software Practice & Experience. Vol. 9 (1979):255-265). | ||
Three levels of education (basic, intermediate, and expert) are used to further | ||
subdivide each skill. | ||
|
||
XSLT programs are used to transform the data in | ||
[SkillsBase.xml](./modeling/skill-tree/SkillsBase.xml) to other formats and | ||
represenations. | ||
|
||
We welcome your comments on the analysis and classification of HPC competences and | ||
their value for scientists or any other input for the HPC Certification Program. | ||
|
||
# After Downloading | ||
|
||
Use `make` with the Makefile located in [./modeling/](./modeling/Makefile) | ||
to build by the help of | ||
[SkillsBase2SkillsWithSpeechPrefix.xsl](./modeling/skill-tree/SkillsBase2SkillsWithSpeechPrefix.xsl) | ||
two copies of the SkillsBase.xml file with a) personal and b) non-personal speech | ||
prefixes inserted to the description items of each skill and to build by the help of | ||
[SkillTree2MindMap.xsl](./modeling/skill-tree/SkillTree2MindMap.xsl) | ||
two corresponding mindmap files that can be viewed with the | ||
[Freeplane](https://www.freeplane.org/wiki/index.php/Home) mindmap tool. |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
all: \ | ||
./skill-tree/skill-tree-expert-skills-non-personal-speech-auto-generated.mm \ | ||
./skill-tree/skill-tree-expert-skills-personal-speech-auto-generated.mm | ||
@echo "done all" | ||
|
||
# kh 01.06.18 copy the skill tree in SkillsBase.xml and insert non-personal speech prefixes to the description items of a skill (e.g. "Ability to ...", "Knowledge of ...") | ||
./skill-tree/skills-non-personal-speech-auto-generated.xml: ./skill-tree/SkillsBase.xml | ||
java -jar "./tools/saxon/saxon9he.jar" -o:"./skill-tree/skills-non-personal-speech-auto-generated.xml" "./skill-tree/SkillsBase.xml" "./skill-tree/SkillsBase2SkillsWithSpeechPrefix.xsl" "PersonalSpeech=false" | ||
|
||
# kh 01.06.18 copy the skill tree in SkillsBase.xml and insert personal speech prefixes to the description items of a skill (e.g. "You will learn to ...", "You will learn about ...") | ||
./skill-tree/skills-personal-speech-auto-generated.xml: ./skill-tree/SkillsBase.xml | ||
java -jar "./tools/saxon/saxon9he.jar" -o:"./skill-tree/skills-personal-speech-auto-generated.xml" "./skill-tree/SkillsBase.xml" "./skill-tree/SkillsBase2SkillsWithSpeechPrefix.xsl" "PersonalSpeech=true" | ||
|
||
./skill-tree/skill-tree-expert-skills-non-personal-speech-auto-generated.mm: ./skill-tree/skills-non-personal-speech-auto-generated.xml | ||
java -jar "./tools/saxon/saxon9he.jar" -o:"./skill-tree/skill-tree-expert-skills-non-personal-speech-auto-generated.mm" "./skill-tree/skills-non-personal-speech-auto-generated.xml" "./skill-tree/SkillTree2MindMap.xsl" \ | ||
"TargetName=Skill Tree" "TargetLevel=Expert" | ||
|
||
./skill-tree/skill-tree-expert-skills-personal-speech-auto-generated.mm: ./skill-tree/skills-personal-speech-auto-generated.xml | ||
java -jar "./tools/saxon/saxon9he.jar" -o:"./skill-tree/skill-tree-expert-skills-personal-speech-auto-generated.mm" "./skill-tree/skills-personal-speech-auto-generated.xml" "./skill-tree/SkillTree2MindMap.xsl" \ | ||
"TargetName=Skill Tree" "TargetLevel=Expert" | ||
|
||
clean: | ||
rm \ | ||
./skill-tree/skills-non-personal-speech-auto-generated.xml \ | ||
./skill-tree/skills-personal-speech-auto-generated.xml \ | ||
./skill-tree/skill-tree-expert-skills-non-personal-speech-auto-generated.mm \ | ||
./skill-tree/skill-tree-expert-skills-personal-speech-auto-generated.mm |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,236 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" vc:minVersion="1.1"> | ||
<xsd:include schemaLocation="SkillBasicTypes.xsd"/> | ||
<xsd:element name="Skill"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element ref="Authors"/> | ||
<xsd:element ref="Definition"/> | ||
<xsd:element ref="RelevantForDomains"/> | ||
<xsd:element ref="RelevantForRoles"/> | ||
<xsd:element name="MainParentSkillRef" type="SkillRefType"/> | ||
<xsd:element name="SubSkillRefs" type="SkillRefsType" minOccurs="0"/> | ||
</xsd:sequence> | ||
<xsd:attribute name="Name" type="tName" use="required"/> | ||
<xsd:attribute name="Id" type="xsd:ID" use="required"/> | ||
<xsd:attribute name="Level" type="tLevel" use="required"/> | ||
<xsd:attribute name="Category" type="tCategory" use="required"/> | ||
|
||
<!-- kh 03.04.18 only SubSkills with a level that is less than or equal to the skill level can be referenced --> | ||
<xsd:assert test="every $s in SubSkillRefs/SkillRef satisfies (@Level = 'All') | ||
or ( (@Level = 'Expert') | ||
and ( ($s/@Level = 'Expert') | ||
or ($s/@Level = 'Intermediate') | ||
or ($s/@Level = 'Basic') | ||
) | ||
) | ||
or ( (@Level = 'Intermediate') | ||
and ( ($s/@Level = 'Intermediate') | ||
or ($s/@Level = 'Basic') | ||
) | ||
) | ||
or ( (@Level = 'Basic') | ||
and ($s/@Level = 'Basic') | ||
)"/> | ||
|
||
<!-- kh 03.04.18 for every Description/Item there has to be a corresponding SkillRef --> | ||
<xsd:assert test="every $i in Definition/Description/Item satisfies ( not (exists($i/@AssociatedSkillRefName)) | ||
and not (exists($i/@AssociatedSkillRefLevel)) | ||
) | ||
or (count(SubSkillRefs//SkillRef[ (@Name = $i/@AssociatedSkillRefName) | ||
and (@Level = $i/@AssociatedSkillRefLevel)]) = 1)"/> | ||
|
||
</xsd:complexType> | ||
|
||
<xsd:key name="SkillAuthorKey"> | ||
<xsd:selector xpath="./Authors/Author"/> | ||
<xsd:field xpath="."/> | ||
</xsd:key> | ||
|
||
<xsd:key name="SubSkillRefsKey"> | ||
<xsd:selector xpath="./SubSkillRefs/SkillRef"/> | ||
<xsd:field xpath="@Name"/> | ||
<xsd:field xpath="@Level"/> | ||
</xsd:key> | ||
|
||
</xsd:element> | ||
|
||
<xsd:element name="Definition"> | ||
<xsd:complexType> | ||
<xsd:sequence> | ||
<xsd:element name="ShortBackground" minOccurs="0"> | ||
<xsd:complexType> | ||
<xsd:sequence minOccurs="0" maxOccurs="unbounded"> | ||
<xsd:element name="Item" type="BackgroundItemType"/> | ||
</xsd:sequence> | ||
</xsd:complexType> | ||
</xsd:element> | ||
|
||
<xsd:element name="Description" minOccurs="0"> | ||
<xsd:complexType> | ||
<xsd:sequence minOccurs="0" maxOccurs="unbounded"> | ||
<xsd:element name="Item" type="DescriptionItemType"/> | ||
</xsd:sequence> | ||
</xsd:complexType> | ||
</xsd:element> | ||
|
||
</xsd:sequence> | ||
</xsd:complexType> | ||
</xsd:element> | ||
|
||
<xsd:complexType name="BackgroundItemType"> | ||
<xsd:simpleContent> | ||
<xsd:extension base="xsd:string"> | ||
<xsd:attribute name="IsGeneralPhrase" type="xsd:boolean" /> | ||
</xsd:extension> | ||
</xsd:simpleContent> | ||
</xsd:complexType> | ||
|
||
<xsd:complexType name="DescriptionItemType"> | ||
<xsd:simpleContent> | ||
<xsd:extension base="xsd:string"> | ||
<xsd:attribute name="Type" type="tImpartionType" use="required"/> | ||
<xsd:attribute name="AssociatedSkillRefName" type="tName" /> | ||
<xsd:attribute name="AssociatedSkillRefLevel" type="tLevel" /> | ||
<xsd:attribute name="IsBackgroundTopic" type="xsd:boolean" /> | ||
<xsd:attribute name="IsGeneralPhrase" type="xsd:boolean" /> | ||
</xsd:extension> | ||
</xsd:simpleContent> | ||
</xsd:complexType> | ||
|
||
<xsd:simpleType name="tImpartionType"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="Knowledge"/> | ||
<xsd:enumeration value="Ability"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
|
||
<xsd:element name="RelevantForDomains"> | ||
<xsd:complexType> | ||
<xsd:sequence maxOccurs="unbounded"> | ||
<xsd:element ref="Domain"/> | ||
</xsd:sequence> | ||
</xsd:complexType> | ||
<xsd:key name="RelevantForDomainKey"> | ||
<xsd:selector xpath="./Domain"/> | ||
<xsd:field xpath="@Name"/> | ||
</xsd:key> | ||
</xsd:element> | ||
<xsd:element name="Domain"> | ||
<xsd:complexType> | ||
<xsd:attribute name="Name" type="tDomainType" use="required"/> | ||
<xsd:attribute name="EstimatedBenefit" type="tDomainEstimatedBenefit" use="required"/> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:simpleType name="tDomainType"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="All"/> | ||
<xsd:enumeration value="SocialSciences"/> | ||
<xsd:enumeration value="NaturalSciences"/> | ||
<xsd:enumeration value="EarthSciences"/> | ||
<xsd:enumeration value="ComputerSciences"/> | ||
<xsd:enumeration value="Chemistry"/> | ||
<xsd:enumeration value="Physics"/> | ||
<xsd:enumeration value="Medicine"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tDomainEstimatedBenefit"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="Low"/> | ||
<xsd:enumeration value="Normal"/> | ||
<xsd:enumeration value="High"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:element name="RelevantForRoles"> | ||
<xsd:complexType> | ||
<xsd:sequence maxOccurs="unbounded"> | ||
<xsd:element ref="Role"/> | ||
</xsd:sequence> | ||
</xsd:complexType> | ||
<xsd:key name="RelevantForRoleKey"> | ||
<xsd:selector xpath="./Role"/> | ||
<xsd:field xpath="@Name"/> | ||
</xsd:key> | ||
</xsd:element> | ||
<xsd:element name="Role"> | ||
<xsd:complexType> | ||
<xsd:attribute name="Name" type="tRoleType" use="required"/> | ||
<xsd:attribute name="EstimatedBenefit" type="tRoleEstimatedBenefit" use="required"/> | ||
</xsd:complexType> | ||
</xsd:element> | ||
<xsd:simpleType name="tRoleType"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="All"/> | ||
<xsd:enumeration value="Tester"/> | ||
<xsd:enumeration value="Builder"/> | ||
<xsd:enumeration value="Developer"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tRoleEstimatedBenefit"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="Low"/> | ||
<xsd:enumeration value="Normal"/> | ||
<xsd:enumeration value="High"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:complexType name="SkillRefsType"> | ||
<xsd:sequence maxOccurs="unbounded"> | ||
<xsd:element name="SkillRef" type="SkillRefType"/> | ||
</xsd:sequence> | ||
<xsd:attribute name="TestOperation" type="tTestOperation" use="required"/> | ||
<xsd:attribute name="nAbsolute" type="tnAbsolute"/> | ||
<xsd:attribute name="nPercentage" type="tnPercentage"/> | ||
|
||
<!-- kh 18.01.18 neither nAbsolute nor nPercentage are allowed for operation type 'And' and 'Or' --> | ||
<xsd:assert test=" not ((@TestOperation = 'And') or (@TestOperation = 'Or')) | ||
or not ( exists(@nAbsolute) | ||
or exists(@nPercentage))"/> | ||
|
||
<!-- kh 18.01.18 either nAbsolute or nPercentage is allowed for operation type 'nOutOfm' --> | ||
<xsd:assert test=" not (@TestOperation = 'nOutOfm') | ||
or ( ( exists(@nAbsolute) | ||
or exists(@nPercentage)) | ||
and not (exists(@nAbsolute) and exists(@nPercentage)) | ||
)"/> | ||
|
||
<!-- kh 18.01.18 nAbsolute has to be in the range 2..(childcount - 1) for operation type 'nOutOfm' --> | ||
<xsd:assert test=" not (@TestOperation = 'nOutOfm') | ||
or ( not (exists(@nAbsolute)) | ||
or ( (@nAbsolute gt 1) | ||
and (@nAbsolute lt count(./child::*)) | ||
) | ||
)"/> | ||
|
||
</xsd:complexType> | ||
<xsd:simpleType name="tnAbsolute"> | ||
<xsd:restriction base="xsd:nonNegativeInteger"> | ||
<xsd:minInclusive value="1"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tnPercentage"> | ||
<xsd:restriction base="xsd:decimal"> | ||
<xsd:fractionDigits value="2"/> | ||
<xsd:minExclusive value="0"/> | ||
<xsd:maxInclusive value="100"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
|
||
<xsd:complexType name="SkillRefType"> | ||
<xsd:attribute name="Name" type="tName" use="required"/> | ||
<xsd:attribute name="Level" type="tLevel" use="required"/> | ||
</xsd:complexType> | ||
<xsd:simpleType name="tRelevance"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="Low"/> | ||
<xsd:enumeration value="Medium"/> | ||
<xsd:enumeration value="High"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tTestOperation"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="And"/> | ||
<xsd:enumeration value="Or"/> | ||
<xsd:enumeration value="nOutOfm"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
</xsd:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> | ||
<xsd:element name="Authors"> | ||
<xsd:complexType> | ||
<xsd:sequence maxOccurs="unbounded"> | ||
<xsd:element name="Author" type="xsd:string"/> | ||
</xsd:sequence> | ||
</xsd:complexType> | ||
<xsd:key name="ContentItemAuthorKey"> | ||
<xsd:selector xpath="./Author"/> | ||
<xsd:field xpath="."/> | ||
</xsd:key> | ||
</xsd:element> | ||
<xsd:simpleType name="tName"> | ||
<xsd:restriction base="xsd:string"> | ||
<!--<xs:pattern value="\c*-\c*"/>--> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tLevel"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="All"/> | ||
<xsd:enumeration value="Basic"/> | ||
<xsd:enumeration value="Intermediate"/> | ||
<xsd:enumeration value="Expert"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
<xsd:simpleType name="tCategory"> | ||
<xsd:restriction base="xsd:string"> | ||
<xsd:enumeration value="All"/> | ||
<xsd:enumeration value="HPC Knowledge"/> | ||
<xsd:enumeration value="Use of the HPC Environment"/> | ||
<xsd:enumeration value="Performance Engineering"/> | ||
<xsd:enumeration value="Software Engineering for HPC"/> | ||
</xsd:restriction> | ||
</xsd:simpleType> | ||
</xsd:schema> |
Oops, something went wrong.