User Tools

Site Tools


b

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
b [2020/11/24 16:42] – [Generic Sub-skill] kunkelb [2025/04/16 10:30] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Wiki ====== ====== Wiki ======
  
-The main purpose of this wiki is to enable comfortable editing of the skill definitions from the [[https://github.com/HPC-certification-forum/skill-tree|git repository]] and for the available certificates. +The primary purpose of this wiki is to enable comfortable editing of the skill definitions from the git repository and for the available certificates. One skill or certificate is exactly one page.
-One skill or certificate is exactly one page.+
  
-To navigate the skills effectively, use the [[https://www.hpc-certification.org/skills/map/|JavaScript Map]]+To navigate the skills effectively, use the Freeplane-based mindmap. Freeplane version 1.11 or higher is required.
  
-===== Editing the skill tree  =====+===== Editing the skill tree =====
  
-We welcome improvements to the skill definitions (we lack at the moment some description below) and suggestions for skill tree changes. +We welcome improvements to the skill definitions and suggestions for skill tree changes. 
-The skill tree has several representations, a Markdown version forms the foundation; then we have a JavaScript representation for better navigation ability.+The skill tree has several representations, the Freeplane mindmap version forms the base with its navigational features and ability to link directly to the markdown files.
 The markdown version is available in this [[https://www.hpc-certification.org/wiki/|wiki]]. The markdown version is available in this [[https://www.hpc-certification.org/wiki/|wiki]].
-You may use it to make minor modifications to the descriptions (just register). +Users may use it to modify the descriptions once registeredAll skill tree changes and modifications should be executed by creating a GitHub pull request to either Markdown or XML representation
-More complex changes and modifications of the tree itself should be done by creating a GitHub pull request to either [[https://github.com/HPC-certification-forum/skill-tree|Markdown]] or [[https://github.com/HPC-certification-forum/curriculum|XML]] representation.+Note that the chairs for the subtree may comment on or discuss the proposal. 
 +The Skill Tree and the related Markdown file must have the same name and coordinates.
  
-Note that the chairs for the subtree may comment or discuss the proposal.+===== Skill variations =====
  
 +A skill is located in a unique place in the skill tree, which is the URI (Uniform Resource Identifier).
 +There may be multiple references to a skill in the tree which are hyperlinked within the structure of the skill tree or linked and mentioned in the markdown file in the wiki. 
  
-===== Skill definition =====+On the skill tree, there are two types of entries: a: Leaf Skill and b: Node Skill. 
 +Both are defined similarly but require care with the learning objectives. 
  
-A skill is located in a unique place in the skill tree, which is the URI. +===== Leaf Skill definition =====
-There may be multiple references to a skill in the tree (which is then like a graph).+
  
-A skill is defined by the following fields: +(leaf) skill is a single unit of learning that can be taught in 1 to 4 hourswhich includes self study time
-  * **ID** \\ This is a unique identifier from the root of the tree to the skill. \\ The last character of the skill encodes the skill level (**B**)asic(**I**)ntermediate, (**E**)xpert. Skills with a higher level expand upon the competences from a lower level, therefore, an expert skill includes the qualification of intermediate and basic+It is clearly defined by its requirements and the learning outcomeswhich are learning objectives written using Blooms Taxonomy
-  * **Name** \\ A speaking name for a skill. +Each skill is clearly separated from other skills and closed so that can be taught and tested for without colliding with other skills.
-  * **Background** \\ Provides brief information motivating the need for the skill and how this skill fits into the skill map; what is the bigger picture. +
-  * **Aim** \\ *Programme or module aims serve as broad purposes or +
-    goals and are generally a statement of the intentions of the +
-    teacher or school when designing or running the course. +
-    They are not intended to be statements of what students +
-    will learn or dobut rather over-arching intentions of the +
-    course. At a basic level, aims are trying to answer two +
-    questions: What is the purpose of this programme or module? What is the programme or module trying to achieve?* [[https://academicdevelopment.qmul.ac.uk//wp-content/uploads/2014/05/Aims-and-Outcomes-Guide.pdf|reference]] +
-  * **Learning outcomes** \\ Defines briefly **what** what practitioners know / will learn. Good literature describing the objectives is   [[https://academicdevelopment.qmul.ac.uk//wp-content/uploads/2014/05/Aims-and-Outcomes-Guide.pdf|here]]. The objected are statements what prospect learners are able to do, they should +
-    * describe or define an action +
-    * be clearly stated +
-    * be measurable/quantifiable to some extent, for example, by using the action words  +
-  * **Subskills** \\ skills in the tree that refine the generic aims and learning outcomes. Note that for the ease of navigation ability, they may stem from another (top-level) branch.+
  
-==== Action words ====+A skill also needs to be universal, meaning it can be learned and applied to site, center, or computer independent. 
 +For example, if a skill contain knowledge about principles these need to be phrased in a generalized manner or if a specific program is taught, this needs to be clearly stated in the name of the skill and the description. 
 +One example can be parallel programming principles, which can be taught without knowledge of specific paradigms such as OpenMP or MPI. 
 +These can be used as example during a course, but are not part of the skill. 
 +Similarly, workload managers can be explained without stating a specific one, but a manager such as SLURM can be a skill on its own. 
 +This is a great challenge and benefits from many contributors. 
 +Only by this can this framework really be considered a standard.
  
-## Example skill+===== Node Skill definition =====
  
-This skill is made up for demonstration purposes.  +A (node) skill is a collection of leaves and other node skills
-Firstly, we have high-level skill.+It contains all the learning outcomes from the skills immediately bellow it. 
 +The many learning outcomes of a skill are combined into one or maximum two learning outcomes for the node skill. 
 +This ensures that the content is accumulated up the tree.
  
-### High-level skill+For example, a node skill with 5 leaf skill attached should have minimum 5 to 6 learning outcomes and 10 maximum. 
 +This also holds true of a node skill has a mix leaf skills and node skills.
  
-  * **ID**: USE4.2-B \\ +The idea is that the learning objectives of a leaf skill are precise and get more and more incremental
-  * **Name**: Executing parallel applications \\ +An example is node skill called Cluster operating system (USE1) which has a leaf skill called Unix file system (USE1.1). 
-  * **Background**: Parallel computers are operated differently than normal PC, all users must share the system. Thereforevarious operative procedures are in placeUsers must understand these concepts and procedures to be able to use the available resources of a system to run a parallel application. Moreover, individual solutions can often be found in a specific system+The leaf skill contains many learning objectiveswhich cover specific programs such as pwd, kill, sleep and more as well as learning objectives covering signalling via CTRL-C and others. 
 +The node skill will have one learning objective covering handling of programs with arguments and how to manage signals to the program.
  
-**Aim**: (To enable practitioners to)  
-  * To comprehend the concepts and procedures for running parallel applications in HPC environments 
-  * To use the system to run and monitor the execution of parallel applications on the HPC system 
-**Outcomes**: (the practitioner is able to): 
-  * explain the concepts and procedures for resource allocation and job execution in an HPC environment 
-  * run interactive jobs and batch jobs 
-  * comprehend and describe the expected behavior of job scripts  
-  * change provided job scripts and embed them into shell scripts to run a variety of parallel applications 
-  * analyze the output generated from a job scheduler and describe the cause of typically generated errors 
  
  
 +---
  
-### Generic Sub-skill +===== Skills section =====
  
-Now, let's see a generic sub-skill, this extends the previous definition of being a sub-skill. Hence, it is intended that the objectives and outcomes from the parent skill above are covered and refined into specifics.+**The following is the format:**
  
-  * **ID**: USE4.2.1-B \\ +# Header (The name of the leaf along with its coordinates)
-  * **Name**: Workload manager introduction \\ +
-  * **Background** \\ There is a wide range of different workload managers in use. This skill covers generic and widely used concepts.+
  
-**Aim**  +Example: Modules and Spack (USE2.5.2)
-    * To enable practitioners to comprehend and describe the basic architecture and concepts of resource allocation for an HPC system+
  
-**Outcomes** +## Name
-    * comprehend the exclusive and shared usage model in HPC +
-    * differentiate batch and interactive job submission +
-    * comprehend the generic concepts and architecture of resource manager, scheduler, job and job script +
-    * explain environment variables as a means to communicate +
-    * comprehend accounting principles +
-    * explain the generic steps to run and monitor a single job+
  
-### Sub-Skill for a specific software solutions+The name refers to a simplified name for the skill. 
 +Names must be short and to the point. 
 +Avoid names that are vague and unrelated. 
 +Also, do not use entire sentences as names. 
 +Do not use syntaxes as names, either, even if they are shorter than descriptive name. 
 +The same name must be used in the skill tree and in the markdown file. 
  
-Now, let's see a specific sub-skill for a specific software, this also extends the previous definition being a sub-skill but is on the same level as the basic skill above. Hence, multiple similar software solutions can build on the knowledge disseminated in USE4.2.1-B.+## Coordinates
  
 +Coordinates are a unique identifier from the root of the skill tree. The coordinates indicate the position of the skill on the skill tree and are unique for every skill. Skills with the same name on different parts of the tree may exist, and each will have its own unique Coordinate. The exact coordinates must be used in the skill tree and the subsequent markdown file. 
  
-  * **ID**USE4.2.2-+Breakdown of an ID exampleUSE2.5.2 
-  * **Name**: SLURM Workload manager +USE2.5.2 -> [USE] = Main branch, [2.5.2] =  Branch co-ordinates.  
-  * **Background** \\ SLURM is a widely used open-source workload manager providing various advanced features+See image: 
-  * **Aim**  +
-    * To enable practitioners to comprehend and describe the basic architecture of SLURM and the suite of tools +
-    * To use relevant tools to run and monitor (parallel) applications+
  
-  * **Outcomes** +## Description
-    * run interactive jobs with //salloc//, a batch job with //sbatch// +
-    * explain the architecture of SLURM, i.e., the role of slurmd, srun and the injection of environment variables +
-    * explain the function of the tools: sacct, sbatch, salloc, srun, scancel, squeue, sinfo +
-    * explain time limits and the benefit of a backfill scheduler +
-    * comprehend that environment variables are set when running a job +
-    * comprehend and describe the expected behavior of a simple job scripts +
-    * comprehend how variables are prioritized when using command line and a script +
-    * change a provided job template and embed them into shell scripts to run a variety of parallel applications +
-    * analyze the output generated from submitting to the job scheduler and typically generated errors+
  
 +The description for a leaf node can be short or long depending on the section, but it does not need to be comprehensive.
 +
 +## Requirements
 +
 +This section must have a list of requirements needed to learn the contents of a leaf. Requirements are split further into external and internal requirements. Any requirements present on the skill tree are internal. Any skill that needs to be learnt externally before learning the particular skill is an external requirement. A leaf node need not have either of these sections filled if there are no requirements to learn the skill. Local requirements must be hyperlinked within the Skill Tree and the Wiki.
 +
 +## Learning Outcomes
 +
 +Learning objectives, or learning outcomes as called here, are essentially a list of everything the user needs to learn to acquire a certification for the particular leaf node. It is a comprehensive list of everything they need to know. The learning objectives also form the base of the testing phase of HPC CF, where candidates will be tested online for their knowledge of the topics covered under the learning objectives.
 +
 +## Subskills
 +
 +This section is only present for node skills and contains a linked list with all the skills immediately under it.
 +
 +
 +## Get tested
 +
 +This section appears when an online test for a particular leaf is available. It links the user directly to an online test. 
 +
 +
 +**Sections which are blank need not be represented in the Markdown. However, some sections like Header, Description and Learning Objectives are compulsory in the leaf nodes markdown file.**
 +
 +---
 +
 +===== Example entry of a skill =====
 +
 +# USE1.1 Command Line Interface
 +
 +HPC systems are usually accessed via a Linux-based Command Line Interface (CLI) that is provided by a shell.
 +
 +At its core, a shell is simply a convenient tool that you can use to execute commands on a Linux computer.
 +The shell provides a textual interface allowing to interact with the operating system and performing all possible operations, i.e., accessing and manipulating files, and running programs.   However, there are various misconceptions that new users typically face when handling a shell such as the Bash.
 +Particularly, dealing with control characters and the format expected when executing programs with arguments can be error-prone.
 +
 +Part of this skill is the general principles of the interaction with a shell, to execute and to stop programs.
 +
 +## Requirements
 +
 +
 +## Learning Outcomes
 +
 +  * Utilize the bash shell to execute individual programs with arguments.
 +  * Describe the meaning of the exit code of a program.
 +  * Run multiple programs after another depending on the exit code ;, &&, ||.
 +  * List the set of basic programs and their tasks:
 +    * pwd
 +    * whoami
 +    * sleep
 +    * kill
 +    * echo
 +    * clear
 +    * man 
 +    * vi, vim, emacs, nano
 +    * exit
 +  * Utilize the available help of a program (--help argument and the man pages).
 +  * Interrupt or abort a program execution:
 +    * CTRL-C
 +    * CTRL-Z
 +    * using kill -9
 +  * Use the shell history to search and execute previously executed commands.
 +  * Set and print shell variables.
 +  * Print all currently set variables
 +  * Identify potential special characters that must be handled with care.
 +    * List strings that could refer to files/directories
 +  * Utilize escaping to ensure correct handling of arguments.
 +  * Understand wildcard characters to select a group of files/directories:
 +    * * 
 +    * ? 
 +    * [-,]
 +  * How to close popular command line text editors with/or without saving changes:
 +    * nano
 +    * vi
 +    * emacs
  
  
  
b.1606232571.txt.gz · Last modified: 2020/11/24 16:42 by kunkel