Difference between revisions of "Merlin Mission Manager"
Jeff-strong (talk | contribs) m (Editorial review and minor corrections) |
|||
(38 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
[[File:Eugene F. Kranz at his console at the NASA Mission Control Center.jpg|thumb|Eugene F. Kranz at his console at the NASA Mission Control Center]] | [[File:Eugene F. Kranz at his console at the NASA Mission Control Center.jpg|thumb|Eugene F. Kranz at his console at the NASA Mission Control Center]] | ||
== | == Curriculum == | ||
{{MerlinCurriculumData|{{ROOTPAGENAME}}}} | |||
== Introduction == | == Introduction == | ||
The {{MMM}} is your personal control center to Merlin's Challenge Evaluation System. Challenges provide both you and your guide with objective evidence of your skill level as you develop expertise in a | The {{MMM}} is your personal control center to Merlin's Challenge Evaluation System. Challenges provide both you and your guide with objective evidence of your skill level as you develop expertise in a topic. As such, Missions serve both to provide you with valuable feedback ''as you are developing'' your skills and as a ''demonstration of mastery''. | ||
{{Caution| | {{Caution| | ||
Do not skip this tutorial or skimp on your effort. Learning to use the Merlin Mission Manager is essential to doing well and every minute that you invest will pay off a hundred fold.}} | Do not skip this tutorial or skimp on your effort. Learning to use the Merlin Mission Manager is essential to doing well, and every minute that you invest will pay off a hundred fold. This experience also contains many helpful hints that are very worthwhile to understand.}} | ||
== Missions == | == Missions == | ||
At various points along your pathway you'll be asked to complete one or more missions. | At various points along your pathway, you'll be asked to complete one or more missions. Missions provide a logical grouping of one or more challenges, generally about a subject area or, alternatively, a summary of multiple topics. Just as wiki experiences are labeled using the ''Wnnnn'' scheme, missions follow similar rules. Missions will always begin with ''Mnnnn'' where the ''nnnn'' of the mission usually matches the nnnn of the wiki. Missions also have a two digit suffix, ''ss''. Lower-numbered suffixes generally help you with skill development, and higher-numbered suffixes provide demonstration of mastery. | ||
At any | At any time, a Mission will be in one of the following states: | ||
* '''Not yet eligible''' | * '''Not yet eligible''': Your guide will provide you with missions at an appropriate pace, so not all missions are available at a time. You might see a mission name appear in your mission list with an ''eligible'' date in the future. If so, the mission will become available to you on that date. | ||
* '''Eligible, but not yet accepted''' | * '''Eligible, but not yet accepted''': On the eligible date you'll be permitted to accept the mission. | ||
* '''Accepted''' | * '''Accepted''': Once you've accepted a mission you'll be able to view a list of all included challenges and begin working on solutions. From this point until you either submit the mission or until the mission expires, you'll be able to work on the challenges of the mission. | ||
* '''Completed''' | * '''Completed''': After you've completed all the required challenges (and as many optional challenges as you'd like), you'll be able to complete the mission. At this point, you'll receive credit for the challenges. | ||
* '''Expired''' | * '''Expired''': Missions are available for a limited time. The {{MMM}} will let you know how much time you have until a mission expires. After this point, you'll no longer be able to complete the mission. | ||
== Challenges == | == Challenges == | ||
A single mission is | A single mission is composed of one or more challenges. Each challenge is an opportunity to improve a skill and evaluate your mastery of that skill. In almost all cases, the {{MMM}} will provide you with instantaneous feedback regarding your results, enabling you to continuously improve your skills. | ||
Within | Within a mission, challenges will be marked as either ''required'' or ''optional''. Of course, it's to your own benefit to complete every available challenge even if it's not strictly required. | ||
== Interface == | == Interface == | ||
The {{MMM}} is available as an easy-to-use command line interface. To get started, open a secure shell client and log on to the | The {{MMM}} is available as an easy-to-use command line interface. To get started, open a secure shell client and log on to the Coder Merlin server using your connection string: | ||
{{ConsoleLine||john-williams@ssh.codermerlin.com}} | {{ConsoleLine||john-williams@ssh.codermerlin.com}} | ||
After you’re connected, you’ll be prompted to enter your password. After a successful logon, you'll land in the "shell" | After you’re connected, you’ll be prompted to enter your password. After a successful logon, you'll land in the "shell." Be sure you're in your home directory. (Remember that you can always get back to your home directory using the '''cd''' command without any arguments.) | ||
{{ConsoleLine|john-williams@codermerlin:~$|cd}} | {{ConsoleLine|john-williams@codermerlin:~$|cd}} | ||
=== Help === | === Help === | ||
If | If you ever need a quick reminder of the available commands for the {{MMM}}, you can obtain the list by simply invoking the {{MMM}} without any command or by using the '''help''' command. Try it now. | ||
{{ConsoleLine|john-williams@codermerlin:~$|merlin}} | {{ConsoleLine|john-williams@codermerlin:~$|merlin}} | ||
Line 42: | Line 41: | ||
=== List Missions === | === List Missions === | ||
The {{MMM}} is aware of the context in which it's been invoked, and will respond accordingly. | The {{MMM}} is aware of the context in which it's been invoked, and will respond accordingly. If we're outside the required directory hierarchy, {{MMM}} will let us know. Let's see what happens when we invoke the {{MMM}} from our home directory: | ||
{{ConsoleLine|john-williams@codermerlin:~$|merlin list}} | {{ConsoleLine|john-williams@codermerlin:~$|merlin list}} | ||
Line 48: | Line 47: | ||
{{Observe|: Section 1| | {{Observe|: Section 1| | ||
# If you're outside | # If you're outside the Merlin directory and attempt a {{MMM}} command, what is printed for your "Current location"? | ||
}} | }} | ||
Line 61: | Line 60: | ||
{{Observe|: Section 2| | {{Observe|: Section 2| | ||
# If you're inside | # If you're inside the Merlin directory and attempt a {{MMM}} command, what is printed for your "Current location"? | ||
# Based on the output of the above command, what information does the {{MMM}} provide to you? | # Based on the output of the above command, what information does the {{MMM}} provide to you? | ||
}} | }} | ||
Let's dissect the output at this level. Merlin | Let's dissect the output at this level. Merlin outputs a table similar to the following: | ||
{{ConsoleLines| | {{ConsoleLines| | ||
<span style{{Equal}}"background: #01A6B2; color:black;"> Current location: </span> Merlin root<br/> | <span style{{Equal}}"background: #01A6B2; color:black;"> Current location: </span> Merlin root<br/> | ||
Line 74: | Line 73: | ||
|white|darkslategray|115}} | |white|darkslategray|115}} | ||
* '''Mission''': This column contains the identifier (e.g. M1008-10) and the name (e.g. "Basic Addition") for the missions that have been assigned to you. | * '''Mission''': This column contains the identifier (e.g., M1008-10) and the name (e.g., "Basic Addition") for the missions that have been assigned to you. The identifier of the mission generally begins with the same four digits that the wiki experience begins with. (Note that this wiki page's identifier is W1008, and the mission is M1008.) | ||
* '''Eligible''': Sometimes your guide | * '''Eligible''': Sometimes your guide might assign missions for which you are not yet eligible. The date at which you'll be eligible to accept the mission is listed in this column. | ||
* '''Accepted''': This is the date that you've accepted the mission. | * '''Accepted''': This is the date that you've accepted the mission. (We'll cover how to accept a mission below.) | ||
* '''Due''': This is the date (and time) that you'll need to complete the mission by | * '''Due''': This is the date (and time) that you'll need to complete the mission by to receive the maximum number of points. In addition to the date and time, {{MMM}} includes a count of days (d), hours (h), minutes (m), and seconds (s) remaining. | ||
* '''Expiration''': This is the date (and time) that you'll need to complete the mission by | * '''Expiration''': This is the date (and time) that you'll need to complete the mission by to receive any points. In addition to the date and time, {{MMM}} includes a count of days (d), hours (h), minutes (m), and seconds (s) remaining. | ||
* '''Completed''': After a mission is completed, this column | * '''Completed''': After a mission is completed, this column contains the date of completion. | ||
== Prepare | == Prepare the Mission List == | ||
Before beginning work on a mission we'll need to do two things. | Before beginning work on a mission, we'll need to do two things. The first is to ensure that the directory for the mission exists. The easiest way to do this is to issue a prepare command to {{MMM}} from with the "Merlin root" directory, but before doing so, let's take a peek at what's there: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin$|ls}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin$|ls}} | ||
Line 103: | Line 102: | ||
{{Hint| | {{Hint| | ||
Because mission and challenge directory names contain some 'special' characters (such as spaces and brackets), they require that we either include the entire name in quotes or '''escape''' (prefix with a special character) each such character. This isn't difficult, but there's an easier way! Every mission and every challenge begins with a unique sequence of characters | Because mission and challenge directory names contain some 'special' characters (such as spaces and brackets), they require that we either include the entire name in quotes or '''escape''' (prefix with a special character) each such character. This isn't difficult, but there's an easier way! Every mission and every challenge begins with a unique sequence of characters that ''do not'' require escaping. This fact, in combination with what we learned about {{Key|TAB}} completion, enables us to simply enter the initial letter, a few numbers, and then {{Key|TAB}}. Try it now to enter the mission directory. | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin$|cd M1008-10{{Key|TAB}}}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin$|cd M1008-10{{Key|TAB}}}} | ||
Line 109: | Line 108: | ||
Either use the above hint, or type: | Either use the above hint, or type: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin$|cd M1008-10\ Basic\ Addition/}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin$|cd M1008-10\ (01)\ Basic\ Addition/}} | ||
== Accept Mission == | |||
The first step when beginning any mission is to accept the mission. This command can be executed only from the root directory of a mission. | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|merlin mission accept}} | |||
Let's use the list command again, but this time, from within a mission. | Let's use the list command again, but this time, from within a mission. | ||
== List Challenges == | == List Challenges == | ||
As a reminder, the {{MMM}} is '''context-aware''', that is, | As a reminder, the {{MMM}} is '''context-aware''', that is, its behavior depends on the current directory. Now that we're inside a mission directory, if we ask for a list, we'll receive a list of challenges rather than a list of missions. | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|merlin list}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|merlin list}} | ||
Let's dissect the output at this level. Merlin | Let's dissect the output at this level. Merlin outputs a table similar to the following: | ||
{{ConsoleLines| | {{ConsoleLines| | ||
Line 132: | Line 136: | ||
Attempts {{Bar}} | Attempts {{Bar}} | ||
Eligibility </span><br/> | Eligibility </span><br/> | ||
C100 Basic Addition I [ | C100 Basic Addition I [Eval] {{Bar}} | ||
Required {{Bar}} | Required {{Bar}} | ||
0 {{Bar}} | 0 {{Bar}} | ||
Line 139: | Line 143: | ||
0 / 5 {{Bar}} | 0 / 5 {{Bar}} | ||
Eligible <br/> | Eligible <br/> | ||
C110 Basic Addition II [ | C110 Basic Addition II [Eval] {{Bar}} | ||
Required {{Bar}} | Required {{Bar}} | ||
0 {{Bar}} | 0 {{Bar}} | ||
Line 146: | Line 150: | ||
0 / 5 {{Bar}} | 0 / 5 {{Bar}} | ||
Eligible <br/> | Eligible <br/> | ||
C120 Basic Addition III [ | C120 Basic Addition III [Eval] {{Bar}} | ||
Required {{Bar}} | Required {{Bar}} | ||
0 {{Bar}} | 0 {{Bar}} | ||
Line 162: | Line 166: | ||
|white|darkslategray|115}} | |white|darkslategray|115}} | ||
* '''Challenge''' | * '''Challenge''': This column contains the identifier (e.g., C100) and the name (e.g., "Basic Addition I") for the challenges that are available in this mission. The numerical identifiers of the challenge are generally the recommended order that you should proceed through the challenges, but in most cases this is not strictly required. In some cases, however, there's a dependency between challenges. For example, you might be ''required'' to complete C120 before beginning C130. If that's the case, {{MMM}} will let you know when you attempt to prepare the dependent challenge. After the challenge name there might be a word or two in square brackets. This indicates the ''language'' to be used for a programming challenge or "Evaluation" in the case of an assessment. | ||
* '''Required''' | * '''Required''': This column lets you know if the challenge is required or optional. | ||
* '''Earned''' | * '''Earned''': This column indicates how many points have been earned on the challenge. | ||
* '''Available''' | * '''Available''': This column indicates how many points would ''currently'' be received if the challenge were to be completed successfully. Depending on the scoring mode in effect, this value can decrease based on the number of attempts at submission, the due date and expiration date, and the elapsed time since the mission was assigned. (Ask your guide for more information.) However, in all cases, if the number of points is highlighted in green (e.g., <span style{{Equal}}"background: #00D900;">30</span>), then {{MMM}} believes that it's worthwhile for you to make another attempt. | ||
* '''Original''' | * '''Original''': This column indicates how many points were originally available when the mission was first assigned. | ||
* '''Attempts''' | * '''Attempts''': Some challenges might limit the number of submissions that you can attempt. If so, this column indicates the number of submission attempts so far out of the total number permitted. | ||
* '''Eligibility''' | * '''Eligibility''': This column indicates whether you remain eligible to attempt another submission, and if not, it usually provides a brief explanation. | ||
== Begin Work on a Challenge == | == Begin Work on a Challenge == | ||
Again, {{MMM}} is sensitive to context. | Again, {{MMM}} is sensitive to context. To begin work on a challenge, we'll need to be in the correct directory, specifically, a challenge directory. We'll first need to create the challenge directories, if we haven't yet done so. At mission level, execute: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|merlin prepare}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|merlin prepare}} | ||
You can verify that all | You can verify that all the challenge directories have been created: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|ls}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|ls}} | ||
Note that this is the same command that we used to prepare the mission directories. The {{MMM}} knows how to do the right thing based | Note that this is the same command that we used to prepare the mission directories. The {{MMM}} knows how to do the right thing based on the current working directory. | ||
Now, enter the challenge directory. (Remember that you can use the hint referenced above for entering the mission directory.) | Now, enter the challenge directory. (Remember that you can use the hint referenced above for entering the mission directory.) | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|cd C100\ Basic\ Addition\ I\ \[Evaluation\]/}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|cd C100\ Basic\ Addition\ I\ \[Evaluation\]/}} | ||
Let's have a look at the contents of this directory: | Let's have a look at the contents of this directory: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition/C100 Basic Addition I [Evaluation]$|ls}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition/C100 Basic Addition I [Evaluation]$|ls}} | ||
Note the current contents. Then, have {{MMM}} prepare the directory: | Note the current contents. Then, have {{MMM}} prepare the directory: | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition/C100 Basic Addition I [Evaluation]$|prepare}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition/C100 Basic Addition I [Evaluation]$|merlin prepare}} | ||
Line 199: | Line 203: | ||
There are four files with a ".txt" extension. They are: | There are four files with a ".txt" extension. They are: | ||
* '''instructions.txt''' | * '''instructions.txt''': This file always contains the instructions describing what needs to be done. This is always the starting point in any challenge. | ||
* '''evaluations.txt''' | * '''evaluations.txt''': This file is present for evaluations and provides general information regarding evaluation requirements. It won't be present if the challenge is not an evaluation. | ||
* '''questions.txt''' | * '''questions.txt''': This file is present for evaluations. It contains a numbered list of questions that must be answered. Before proceeding, be sure to follow the instructions in instructions.txt and evaluations.txt. | ||
* '''answers.txt''' | * '''answers.txt''': This file is usually present for evaluations. (If not, simply create a new file.) This is the file that {{MMM}} evaluates for an assessment. | ||
There are two additional files with a ".sh" extension. They are: | There are two additional files with a ".sh" extension. They are: | ||
* '''make.sh''' | * '''make.sh''': {{MMM}} uses this file when building your challenge. Unless instructed otherwise, do not modify this file. | ||
* '''run.sh''' | * '''run.sh''': {{MMM}} used this file when executing your challenge. Unless instructed otherwise, do not modify this file. | ||
Line 214: | Line 218: | ||
At this point, you can begin work on your challenge. Some explorers prefer the following workflow: | At this point, you can begin work on your challenge. Some explorers prefer the following workflow: | ||
* Use '''cat''' to read ''evaluations.txt'': {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|cat evaluations.txt}} | * Use '''cat''' to read ''evaluations.txt'': | ||
* Use '''cat''' to read ''instructions.txt'': {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|cat instructions.txt}} | {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|cat evaluations.txt}} | ||
* Use '''emacs''' to open ''answers.txt'' and ''questions.txt'': {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|emacs answers.txt questions.txt}} | * Use '''cat''' to read ''instructions.txt'': | ||
{{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|cat instructions.txt}} | |||
* Use '''emacs''' to open ''answers.txt'' and ''questions.txt'': | |||
{{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|emacs answers.txt questions.txt}} | |||
After answering all | After answering all the questions, we're ready to '''test'''. | ||
== Testing a Challenge == | == Testing a Challenge == | ||
A challenge | A challenge can be tested by using the '''test''' command. If testing is available, {{MMM}} provides you with a line-by-line comparison of what was expected vs. what was actually provided, clearly marking correct and incorrect lines. (It's important to note that ''not all challenges are eligible for testing'', but there's never a penalty for trying.) This enables you to obtain immediate feedback to evaluate your answer, make any required adjustments, and then test again before '''submit'''ting your challenge for a score. | ||
{{Hint| | {{Hint| | ||
* The '''test''' command | * The '''test''' command never affects your score; only '''submit''' does that. | ||
* Partial credit is awarded for evaluations but not for coding challenges.}} | * Partial credit is awarded for evaluations but not for coding challenges.}} | ||
Line 251: | Line 258: | ||
|white|darkslategray|115}} | |white|darkslategray|115}} | ||
At a glance, we're able to easily see that we provided | At a glance, we're able to easily see that we provided the correct answer for every line except the third. On the third line, {{MMM}} was expecting 85 but we provided 84 as our answer. We'll need to go back and correct this error, and then test again. | ||
{{Hint| | {{Hint| | ||
Line 257: | Line 264: | ||
* There is never a penalty for '''test'''ing, regardless of how many times we opt to test. | * There is never a penalty for '''test'''ing, regardless of how many times we opt to test. | ||
* Testing is ''not always available'', depending on the challenge. | * Testing is ''not always available'', depending on the challenge. | ||
}} | |||
{{Hint| | |||
{{ConsoleLine|john-williams@codermerlin:~$|merlin test --show-invisibles}} | |||
* displays '''white space''' (characters that are present yet not visible, such as spaces) and is ''very'' useful if you're not able to identify the difference between actual and expected output. | |||
{{ConsoleLine|john-williams@codermerlin:~$|merlin test --show-line-numbers}} | |||
* displays line numbers in the verification table and is especially helpful for evaluations, where the line number matters | |||
}} | }} | ||
Line 264: | Line 283: | ||
{{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|merlin submit}} | {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|merlin submit}} | ||
We'll receive output very similar to that of a '''test''', but the results of the evaluation | We'll receive output very similar to that of a '''test''', but the results of the evaluation are scored. To see a detailed description of our score, we can use the '''list''' command: | ||
{{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|merlin list}} | {{ConsoleLine|john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$|merlin list}} | ||
Line 272: | Line 291: | ||
This challenge is required.<br/> | This challenge is required.<br/> | ||
You've submitted this challenge 1 time.<br/> | You've submitted this challenge 1 time.<br/> | ||
Your maximum score so far is 4 points out of a maximum of 5 points.<br/> | |||
You have 4 attempts remaining.<br/> | You have 4 attempts remaining.<br/> | ||
Successfully submitting this challenge will result in a maximum award of 9 points.<br/> | Successfully submitting this challenge will result in a maximum award of 9 points.<br/> | ||
Line 282: | Line 301: | ||
* The maximum score that we've received so far | * The maximum score that we've received so far | ||
* The maximum score that we would receive upon a subsequent successful submission | * The maximum score that we would receive upon a subsequent successful submission | ||
{{Caution| | |||
In general, guides grade challenges in a manner that will allow partial credit for ''evaluations''. ''Programming challenges'', however, generally do not receive partial credit.}} | |||
== Completing a Mission == | == Completing a Mission == | ||
Line 290: | Line 313: | ||
* Submit the challenge | * Submit the challenge | ||
When we've completed all | When we've completed all the challenges in the mission, to receive credit, we have one last step to take at the mission level. (Remember that the mission level will be a directory that begins with an "M".) | ||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|merlin mission complete}} | |||
Note that the {{MMM}} warns us if we attempt to mark a mission as complete if we haven't yet completed all the required challenges. | |||
== Reattempting a Mission == | |||
Most missions that have been completed or have expired can be reattempted. To do so, first enter the mission that you'd like to reattempt: | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|merlin mission reattempt}} | |||
This creates a new mission that can be prepared: | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$|cd ..}} | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin$|merlin prepare}} | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin$|cd M1008-10\ (02)\ Basic\ Addition$}} | |||
Then, accept and prepare the mission as you would normally: | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (02) Basic Addition$|merlin mission accept}} | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 (02) Basic Addition$|merlin prepare}} | |||
Note that if you are enrolled in a course with a guide, you should understand their rules before reattempting a mission. | |||
== Navigating from Challenge to Challenge == | |||
{{ComingSoon| | |||
Navigating from Challenge to Challenge}} | |||
== Newly Assigned Missions == | |||
After completing a mission {{MMM}} might assign you a new mission. If so, Merlin lets you know: | |||
{{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|merlin mission complete}} | {{ConsoleLine|john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$|merlin mission complete}} | ||
{{ConsoleLines|<span style{{Equal}}"background: #01A6B2; color:black;">Note:</span><br/> | |||
You are eligible for the following missions:<br/> | |||
Bash Basics<br/> | |||
}} | |||
If this is the case, return to the Merlin directory and ask Merlin for a list of available missions. | |||
== Workflow Overview == | == Workflow Overview == | ||
Line 302: | Line 358: | ||
* The {{MMM}} is your personal control center for Merlin's Challenge Evaluation System | * The {{MMM}} is your personal control center for Merlin's Challenge Evaluation System | ||
* '''Missions''' provide a logical grouping of one or more challenges | * '''Missions''' provide a logical grouping of one or more challenges | ||
* Each '''challenge''' is an opportunity to improve a | * Each '''challenge''' is an opportunity to improve a skill and evaluate your mastery of that skill | ||
* The {{MMM}} is aware of the context in which it's been invoked | * The {{MMM}} is aware of the context in which it's been invoked | ||
* Important commands to {{MMM}} include: | * Important commands to {{MMM}} include: | ||
** '''mission accept''' | ** '''mission accept''': Accept the mission in which you are currently located. After acceptance, you can begin solving the challenges in the mission. | ||
** '''list''' | ** '''list''': Provide information about the current directory (either mission or challenge). | ||
** '''prepare''' | ** '''prepare''': Prepare the mission or challenge by creating the directory structure and files required | ||
** '''test''' | ** '''test''': Test a challenge. The {{MMM}} executes the challenge with various inputs and display the results. Testing a challenge never affects your score. (Not all challenges are eligible for testing.) | ||
** '''submit''' | ** '''submit''': Submit a challenge. The {{MMM}} executes the challenge with various inputs and then displays and records the results of your score. | ||
** '''mission complete''' | ** '''mission complete''': Mark the mission as complete. After completion, you'll receive credit for successfully completed challenges. | ||
}} | }} | ||
== Exercises == | == Exercises == | ||
{{W1008 | {{Exercises| | ||
{{JournalExercise|J1008}} | |||
{{JournalExercise|J1002}} | |||
{{JournalExercise|J1006}} | |||
* In the following order: | |||
** {{MMMAssignment|M1008-10}} Complete {{MMM}} Mission M1008-10 | |||
** {{MMMAssignmentNotPrimary|M1002-10}} Complete {{MMM}} Mission M1002-10 | |||
** {{MMMAssignmentNotPrimary|M1004-10}} Complete {{MMM}} Mission M1004-10 | |||
** {{MMMAssignment|M1008-31}} Complete {{MMM}} Mission M1008-31 | |||
** {{MMMAssignmentNotPrimary|M1002-31}} Complete {{MMM}} Mission M1002-31 | |||
** {{MMMAssignmentNotPrimary|M1006-31}} Complete {{MMM}} Mission M1006-31 | |||
}} | |||
{{Experience | |||
|experienceID=W1008 | |||
|experienceUnit=Lab basics | |||
|knowledgeAndSkills=§10.241 | |||
|topicAreas=Tools & technologies | |||
|classroomTime=60 minutes | |||
|studyTime=3 hours | |||
|acquiredKnowledge=understand when and how to use the Merlin Mission Manager | |||
|acquiredSkill=ability to use the Merlin Mission Manager to accept, prepare and complete missions; | |||
ability to use the Merlin Mission Manager to prepare, test, and submit challenges; | |||
ability to navigate through the hierarchy of missions and challenges; | |||
ability to reattempt a mission in the Merlin Mission Manager | |||
}} |
Latest revision as of 17:12, 7 September 2022
Curriculum[edit]
Coder Merlin™ Computer Science Curriculum Data | |
Unit: Lab basics Experience Name: Merlin Mission Manager (W1008) Next Experience: () Knowledge and skills:
Topic areas: Tools & technologies Classroom time (average): 60 minutes Study time (average): 180 minutes Successful completion requires knowledge: understand when and how to use the Merlin Mission Manager Successful completion requires skills: ability to use the Merlin Mission Manager to accept, prepare and complete missions; ability to use the Merlin Mission Manager to prepare, test, and submit challenges; ability to navigate through the hierarchy of missions and challenges; ability to reattempt a mission in the Merlin Mission Manager |
Introduction[edit]
The Merlin Mission Manager is your personal control center to Merlin's Challenge Evaluation System. Challenges provide both you and your guide with objective evidence of your skill level as you develop expertise in a topic. As such, Missions serve both to provide you with valuable feedback as you are developing your skills and as a demonstration of mastery.
Missions[edit]
At various points along your pathway, you'll be asked to complete one or more missions. Missions provide a logical grouping of one or more challenges, generally about a subject area or, alternatively, a summary of multiple topics. Just as wiki experiences are labeled using the Wnnnn scheme, missions follow similar rules. Missions will always begin with Mnnnn where the nnnn of the mission usually matches the nnnn of the wiki. Missions also have a two digit suffix, ss. Lower-numbered suffixes generally help you with skill development, and higher-numbered suffixes provide demonstration of mastery.
At any time, a Mission will be in one of the following states:
- Not yet eligible: Your guide will provide you with missions at an appropriate pace, so not all missions are available at a time. You might see a mission name appear in your mission list with an eligible date in the future. If so, the mission will become available to you on that date.
- Eligible, but not yet accepted: On the eligible date you'll be permitted to accept the mission.
- Accepted: Once you've accepted a mission you'll be able to view a list of all included challenges and begin working on solutions. From this point until you either submit the mission or until the mission expires, you'll be able to work on the challenges of the mission.
- Completed: After you've completed all the required challenges (and as many optional challenges as you'd like), you'll be able to complete the mission. At this point, you'll receive credit for the challenges.
- Expired: Missions are available for a limited time. The Merlin Mission Manager will let you know how much time you have until a mission expires. After this point, you'll no longer be able to complete the mission.
Challenges[edit]
A single mission is composed of one or more challenges. Each challenge is an opportunity to improve a skill and evaluate your mastery of that skill. In almost all cases, the Merlin Mission Manager will provide you with instantaneous feedback regarding your results, enabling you to continuously improve your skills.
Within a mission, challenges will be marked as either required or optional. Of course, it's to your own benefit to complete every available challenge even if it's not strictly required.
Interface[edit]
The Merlin Mission Manager is available as an easy-to-use command line interface. To get started, open a secure shell client and log on to the Coder Merlin server using your connection string:
john-williams@ssh.codermerlin.com
After you’re connected, you’ll be prompted to enter your password. After a successful logon, you'll land in the "shell." Be sure you're in your home directory. (Remember that you can always get back to your home directory using the cd command without any arguments.)
john-williams@codermerlin:~$ cd
Help[edit]
If you ever need a quick reminder of the available commands for the Merlin Mission Manager , you can obtain the list by simply invoking the Merlin Mission Manager without any command or by using the help command. Try it now.
john-williams@codermerlin:~$ merlin
-or-
john-williams@codermerlin:~$ merlin help
List Missions[edit]
The Merlin Mission Manager is aware of the context in which it's been invoked, and will respond accordingly. If we're outside the required directory hierarchy, Merlin Mission Manager will let us know. Let's see what happens when we invoke the Merlin Mission Manager from our home directory:
john-williams@codermerlin:~$ merlin list
- If you're outside the Merlin directory and attempt a Merlin Mission Manager command, what is printed for your "Current location"?
We need to be inside the Merlin directory to obtain useful information from Merlin. Let's create that directory now and then enter the directory:
john-williams@codermerlin:~$ mkdir Merlin
john-williams@codermerlin:~$ cd Merlin
john-williams@codermerlin:~/Merlin$
Now, try the list command again:
john-williams@codermerlin:~/Merlin$ merlin list
- If you're inside the Merlin directory and attempt a Merlin Mission Manager command, what is printed for your "Current location"?
- Based on the output of the above command, what information does the Merlin Mission Manager provide to you?
Let's dissect the output at this level. Merlin outputs a table similar to the following:
Current location: Merlin root
Available missions:
Mission | Eligible | Accepted | Due |...
M1008-10 Basic Addition | 11-Jul-2024 | | 15-Jul-2024 (3d 12h 28m 10s) |...
- Mission: This column contains the identifier (e.g., M1008-10) and the name (e.g., "Basic Addition") for the missions that have been assigned to you. The identifier of the mission generally begins with the same four digits that the wiki experience begins with. (Note that this wiki page's identifier is W1008, and the mission is M1008.)
- Eligible: Sometimes your guide might assign missions for which you are not yet eligible. The date at which you'll be eligible to accept the mission is listed in this column.
- Accepted: This is the date that you've accepted the mission. (We'll cover how to accept a mission below.)
- Due: This is the date (and time) that you'll need to complete the mission by to receive the maximum number of points. In addition to the date and time, Merlin Mission Manager includes a count of days (d), hours (h), minutes (m), and seconds (s) remaining.
- Expiration: This is the date (and time) that you'll need to complete the mission by to receive any points. In addition to the date and time, Merlin Mission Manager includes a count of days (d), hours (h), minutes (m), and seconds (s) remaining.
- Completed: After a mission is completed, this column contains the date of completion.
Prepare the Mission List[edit]
Before beginning work on a mission, we'll need to do two things. The first is to ensure that the directory for the mission exists. The easiest way to do this is to issue a prepare command to Merlin Mission Manager from with the "Merlin root" directory, but before doing so, let's take a peek at what's there:
john-williams@codermerlin:~/Merlin$ ls
Now, ask Merlin Mission Manager to prepare the directory:
john-williams@codermerlin:~/Merlin$ merlin prepare
Finally, have another look at the directory's contents:
john-williams@codermerlin:~/Merlin$ ls
- Look at the directory listing before and after you issued the "merlin prepare" command. What's changed?
- What do you think the purpose of the "prepare" command is?
Now, enter the mission directory.
Because mission and challenge directory names contain some 'special' characters (such as spaces and brackets), they require that we either include the entire name in quotes or escape (prefix with a special character) each such character. This isn't difficult, but there's an easier way! Every mission and every challenge begins with a unique sequence of characters that do not require escaping. This fact, in combination with what we learned about TAB completion, enables us to simply enter the initial letter, a few numbers, and then TAB. Try it now to enter the mission directory.
john-williams@codermerlin:~/Merlin$ cd M1008-10TAB
Either use the above hint, or type:
john-williams@codermerlin:~/Merlin$ cd M1008-10\ (01)\ Basic\ Addition/
Accept Mission[edit]
The first step when beginning any mission is to accept the mission. This command can be executed only from the root directory of a mission.
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ merlin mission accept
Let's use the list command again, but this time, from within a mission.
List Challenges[edit]
As a reminder, the Merlin Mission Manager is context-aware, that is, its behavior depends on the current directory. Now that we're inside a mission directory, if we ask for a list, we'll receive a list of challenges rather than a list of missions.
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ merlin list
Let's dissect the output at this level. Merlin outputs a table similar to the following:
Current location: Basic Addition
Available challenges in this mission:
Challenge |
Required |
Earned |
Available |
Original |
Attempts |
Eligibility
C100 Basic Addition I [Eval] |
Required |
0 |
10 |
10 |
0 / 5 |
Eligible
C110 Basic Addition II [Eval] |
Required |
0 |
10 |
10 |
0 / 5 |
Eligible
C120 Basic Addition III [Eval] |
Required |
0 |
30 |
30 |
0 / 5 |
Eligible
TOTAL |
|
0 |
|
50 |
0% |
- Challenge: This column contains the identifier (e.g., C100) and the name (e.g., "Basic Addition I") for the challenges that are available in this mission. The numerical identifiers of the challenge are generally the recommended order that you should proceed through the challenges, but in most cases this is not strictly required. In some cases, however, there's a dependency between challenges. For example, you might be required to complete C120 before beginning C130. If that's the case, Merlin Mission Manager will let you know when you attempt to prepare the dependent challenge. After the challenge name there might be a word or two in square brackets. This indicates the language to be used for a programming challenge or "Evaluation" in the case of an assessment.
- Required: This column lets you know if the challenge is required or optional.
- Earned: This column indicates how many points have been earned on the challenge.
- Available: This column indicates how many points would currently be received if the challenge were to be completed successfully. Depending on the scoring mode in effect, this value can decrease based on the number of attempts at submission, the due date and expiration date, and the elapsed time since the mission was assigned. (Ask your guide for more information.) However, in all cases, if the number of points is highlighted in green (e.g., 30), then Merlin Mission Manager believes that it's worthwhile for you to make another attempt.
- Original: This column indicates how many points were originally available when the mission was first assigned.
- Attempts: Some challenges might limit the number of submissions that you can attempt. If so, this column indicates the number of submission attempts so far out of the total number permitted.
- Eligibility: This column indicates whether you remain eligible to attempt another submission, and if not, it usually provides a brief explanation.
Begin Work on a Challenge[edit]
Again, Merlin Mission Manager is sensitive to context. To begin work on a challenge, we'll need to be in the correct directory, specifically, a challenge directory. We'll first need to create the challenge directories, if we haven't yet done so. At mission level, execute:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ merlin prepare
You can verify that all the challenge directories have been created:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ ls
Note that this is the same command that we used to prepare the mission directories. The Merlin Mission Manager knows how to do the right thing based on the current working directory.
Now, enter the challenge directory. (Remember that you can use the hint referenced above for entering the mission directory.)
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ cd C100\ Basic\ Addition\ I\ \[Evaluation\]/
Let's have a look at the contents of this directory:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition/C100 Basic Addition I [Evaluation]$ ls
Note the current contents. Then, have Merlin Mission Manager prepare the directory:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition/C100 Basic Addition I [Evaluation]$ merlin prepare
- What changed in this directory after you issued the prepare command?
- What is the purpose of the prepare command and how does its role differ depending on context?
Let's take a closer look at the files that are available in this challenge:
There are four files with a ".txt" extension. They are:
- instructions.txt: This file always contains the instructions describing what needs to be done. This is always the starting point in any challenge.
- evaluations.txt: This file is present for evaluations and provides general information regarding evaluation requirements. It won't be present if the challenge is not an evaluation.
- questions.txt: This file is present for evaluations. It contains a numbered list of questions that must be answered. Before proceeding, be sure to follow the instructions in instructions.txt and evaluations.txt.
- answers.txt: This file is usually present for evaluations. (If not, simply create a new file.) This is the file that Merlin Mission Manager evaluates for an assessment.
There are two additional files with a ".sh" extension. They are:
- make.sh: Merlin Mission Manager uses this file when building your challenge. Unless instructed otherwise, do not modify this file.
- run.sh: Merlin Mission Manager used this file when executing your challenge. Unless instructed otherwise, do not modify this file.
At this point, you can begin work on your challenge. Some explorers prefer the following workflow:
- Use cat to read evaluations.txt:
john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$ cat evaluations.txt
- Use cat to read instructions.txt:
john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$ cat instructions.txt
- Use emacs to open answers.txt and questions.txt:
john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$ emacs answers.txt questions.txt
After answering all the questions, we're ready to test.
Testing a Challenge[edit]
A challenge can be tested by using the test command. If testing is available, Merlin Mission Manager provides you with a line-by-line comparison of what was expected vs. what was actually provided, clearly marking correct and incorrect lines. (It's important to note that not all challenges are eligible for testing, but there's never a penalty for trying.) This enables you to obtain immediate feedback to evaluate your answer, make any required adjustments, and then test again before submitting your challenge for a score.
- The test command never affects your score; only submit does that.
- Partial credit is awarded for evaluations but not for coding challenges.
Let's look at an example:
Current location: Basic Addition Basic Addition I [Evaluation]
Verfication partially succeeded.
Output |
Correct? |
Expected |
-83 |
✓ Match |
-83 |
22 |
✓ Match |
22 |
84 |
✗ Mismatch |
85 |
96 |
✓ Match |
96 |
At a glance, we're able to easily see that we provided the correct answer for every line except the third. On the third line, Merlin Mission Manager was expecting 85 but we provided 84 as our answer. We'll need to go back and correct this error, and then test again.
- If testing is available, it's always in our best interest to test (again and again) until we're convinced that our solution is correct. After we're convinced, we can submit our solution.
- There is never a penalty for testing, regardless of how many times we opt to test.
- Testing is not always available, depending on the challenge.
john-williams@codermerlin:~$ merlin test --show-invisibles
- displays white space (characters that are present yet not visible, such as spaces) and is very useful if you're not able to identify the difference between actual and expected output.
john-williams@codermerlin:~$ merlin test --show-line-numbers
- displays line numbers in the verification table and is especially helpful for evaluations, where the line number matters
Submitting a Challenge[edit]
When we're ready to receive a score, we use the merlin submit command. When we issue this command, we'll receive a score based on how closely our actual output matches the expected output. Let's try it now:
john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$ merlin submit
We'll receive output very similar to that of a test, but the results of the evaluation are scored. To see a detailed description of our score, we can use the list command:
john-williams@codermerlin:~/.../C100 Basic Addition I [Evaluation]$ merlin list
Submissions for this challenge:
This challenge is required.
You've submitted this challenge 1 time.
Your maximum score so far is 4 points out of a maximum of 5 points.
You have 4 attempts remaining.
Successfully submitting this challenge will result in a maximum award of 9 points.
The Merlin Mission Manager is providing us with details regarding:
- The number of submissions that we've made so far
- The number of submissions (attempts) remaining
- The maximum score that we've received so far
- The maximum score that we would receive upon a subsequent successful submission
Completing a Mission[edit]
We follow the cycle above for each challenge in the mission:
- Prepare the challenge
- Answer the challenge questions or complete the required coding
- Test the challenge (if testing is available)
- Submit the challenge
When we've completed all the challenges in the mission, to receive credit, we have one last step to take at the mission level. (Remember that the mission level will be a directory that begins with an "M".)
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ merlin mission complete
Note that the Merlin Mission Manager warns us if we attempt to mark a mission as complete if we haven't yet completed all the required challenges.
Reattempting a Mission[edit]
Most missions that have been completed or have expired can be reattempted. To do so, first enter the mission that you'd like to reattempt:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ merlin mission reattempt
This creates a new mission that can be prepared:
john-williams@codermerlin:~/Merlin/M1008-10 (01) Basic Addition$ cd ..
john-williams@codermerlin:~/Merlin$ merlin prepare
john-williams@codermerlin:~/Merlin$ cd M1008-10\ (02)\ Basic\ Addition$
Then, accept and prepare the mission as you would normally:
john-williams@codermerlin:~/Merlin/M1008-10 (02) Basic Addition$ merlin mission accept
john-williams@codermerlin:~/Merlin/M1008-10 (02) Basic Addition$ merlin prepare
Note that if you are enrolled in a course with a guide, you should understand their rules before reattempting a mission.
[edit]
Coming Soon | |
Navigating from Challenge to Challenge |
Newly Assigned Missions[edit]
After completing a mission Merlin Mission Manager might assign you a new mission. If so, Merlin lets you know:
john-williams@codermerlin:~/Merlin/M1008-10 Basic Addition$ merlin mission complete
Note:
You are eligible for the following missions:
Bash Basics
If this is the case, return to the Merlin directory and ask Merlin for a list of available missions.
Workflow Overview[edit]
- The Merlin Mission Manager is your personal control center for Merlin's Challenge Evaluation System
- Missions provide a logical grouping of one or more challenges
- Each challenge is an opportunity to improve a skill and evaluate your mastery of that skill
- The Merlin Mission Manager is aware of the context in which it's been invoked
- Important commands to Merlin Mission Manager include:
- mission accept: Accept the mission in which you are currently located. After acceptance, you can begin solving the challenges in the mission.
- list: Provide information about the current directory (either mission or challenge).
- prepare: Prepare the mission or challenge by creating the directory structure and files required
- test: Test a challenge. The Merlin Mission Manager executes the challenge with various inputs and display the results. Testing a challenge never affects your score. (Not all challenges are eligible for testing.)
- submit: Submit a challenge. The Merlin Mission Manager executes the challenge with various inputs and then displays and records the results of your score.
- mission complete: Mark the mission as complete. After completion, you'll receive credit for successfully completed challenges.
Exercises[edit]
- J1008 Create a journal and answer all questions in this experience. Be sure to:
- edit your journal using emacs within your ~/Journals directory
- properly name your journal as J1008.txt
- include all sections of the journal, properly formatted
- push your changes to GitHub
- properly tag your journal as J1008.Final
- push your tag to GitHub
- J1002 Create a journal and answer all questions in this experience. Be sure to:
- edit your journal using emacs within your ~/Journals directory
- properly name your journal as J1002.txt
- include all sections of the journal, properly formatted
- push your changes to GitHub
- properly tag your journal as J1002.Final
- push your tag to GitHub
- J1006 Create a journal and answer all questions in this experience. Be sure to:
- edit your journal using emacs within your ~/Journals directory
- properly name your journal as J1006.txt
- include all sections of the journal, properly formatted
- push your changes to GitHub
- properly tag your journal as J1006.Final
- push your tag to GitHub
- In the following order:
- M1008-10 Complete Merlin Mission Manager Mission M1008-10. Complete Merlin Mission Manager Mission M1008-10
- M1002-10 Complete Merlin Mission Manager Mission M1002-10. Complete Merlin Mission Manager Mission M1002-10
- M1004-10 Complete Merlin Mission Manager Mission M1004-10. Complete Merlin Mission Manager Mission M1004-10
- M1008-31 Complete Merlin Mission Manager Mission M1008-31. Complete Merlin Mission Manager Mission M1008-31
- M1002-31 Complete Merlin Mission Manager Mission M1002-31. Complete Merlin Mission Manager Mission M1002-31
- M1006-31 Complete Merlin Mission Manager Mission M1006-31. Complete Merlin Mission Manager Mission M1006-31
Experience Metadata
Experience ID | W1008 |
---|---|
Next experience ID | |
Unit | Lab basics |
Knowledge and skills | §10.241 |
Topic areas | Tools & technologies |
Classroom time | 60 minutes |
Study time | 3 hours180 minutes <br /> |
Acquired knowledge | understand when and how to use the Merlin Mission Manager |
Acquired skill | ability to use the Merlin Mission Manager to accept, prepare and complete missions ability to use the Merlin Mission Manager to prepare, test, and submit challenges ability to navigate through the hierarchy of missions and challenges ability to reattempt a mission in the Merlin Mission Manager |
Additional categories |