<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>The Combination of Skills Training for IT Administrators and Programmers?</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Silesian University in Opava</institution>
          ,
          <addr-line>Bezrucovo nam. 13, Opava</addr-line>
          ,
          <country country="CZ">Czech Republic</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Each ICT graduate should be quite familiar with di erent areas of computer science { programming, administration of operating systems, information systems, databases, network administration, etc., because in many ICT professions, several di erent areas of computer science intersect. This trend of blending di erent ICT areas in the professions should be re ected in education as well. A teacher who teaches the same group of students in several subjects has the opportunity to interconnect these subjects. Probably the widest options are o ered by combining a programming subject with any other, but also in other pairs of subjects some relations can be found. In the paper we discuss tools and methods for the practical teaching of some subjects and the possibilities of their interconnection. Command line skills training tools can be used to teach operating systems, while in programming subjects, students may be interested in how the similar tools are created. Programming command-line training tools requires compiler programming skills, and students working on a simpli ed command-line interpreter will practice the command syntax for some selected operating system. It is also bene cial for students to search for these tools, not only for the searching itself, but also for gaining orientation in license conditions and correct understanding of concepts such as open-source vs. closed-source software, license, availability, freeware vs. free software, etc.</p>
      </abstract>
      <kwd-group>
        <kwd>Teaching Training tool Programming Operating system Compiler</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        The current demands on ICT graduates are based not only on knowledge and
skills in ICT, but graduates are also required to be maximally independent and
self-su cient at work, searching for the necessary information and self-study. The
eld of ICT is growing very fast and if graduates do not meet these requirements,
they are not able to keep up with development in the eld. Another requirement
is the ability to collaborate in teams. If students only sit in a classroom and
? This work is funded by the project to support foreign mobility of academic sta and
strengthen international bindings at the Silesian University in Opava.
passively consume teacher's lecture, they have less chance of nding a good job
after studies and being successful at work. These issues are discussed in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        There are many di erent approaches to the practical teaching of operating
systems. Some of them are described, for example, in [
        <xref ref-type="bibr" rid="ref14 ref5 ref9">5,9,14</xref>
        ]. It is often a
discussion of which operating system to use for teaching (open-source Linux or some
lightweight system designed for teaching purposes such as MINIX, XINU,
Nachos, etc.), usually the concept and objectives of a course are also indicated, and
sometimes a bit of statistics. Some papers present methods of teaching
operating systems using virtualization (one interesting paper about IVE, Integration of
Virtualization in Education, can be found in [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]) or special applications, whether
desktop, web, or even mobile (e.g. [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]).
      </p>
      <p>The study of operating systems can be divided into three levels:
1. The rst level is orientation in the graphical and text-based environment
of common operating systems, their con guration, administration,
maintenance, security. This degree is important for all ICT students, especially
future administrators and technical support.
2. The second level consists in the study of the architecture of operating
systems, synchronization, structures and operations in the kernel of
operating systems, memory management, CPU scheduling, management of I/O
devices, drivers, security subsystem. This level largely intersects with the
previous one and is also related to programmers.
3. The third level is the most challenging: to fully understand all the functions
of the kernel, students examine the kernel code and program some parts of
the operating system themselves. This level is important for future kernel
and driver programmers.</p>
      <p>
        While in the rst and second level we deal with existing commonly used operating
systems (Windows, Linux, MacOS, Android, etc.), the third level requires the
use of lightweight operating systems to make teaching time and didactically
manageable. Some of these systems are listed in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>In order for students to be able to use a certain command in the right way
at the right time, they must not lack the related theoretical knowledge. For
example, if students want to start a process with a lowered priority, they need
to know the relationship between program and process, what such priority is
called, and which command can be used; if they are to modify the behavior of
the memory manager in the Windows registry database, they must understand
the role of memory manager and be knowledgeable themselves in the registry.</p>
      <p>The objectives of courses in the range of the rst two levels could be:
{ understand the role of an operating system in the management of resources
of computing system, the role of the kernel and system calls,
{ learn how to nd information and con gure a given operating system in the
both graphical and text-based interface,
{ understand the principles of les, users, process, memory, device and network
management in operating systems, understand the issues of synchronization
and deadlock,
{ perform les, users, process, memory, device and network management,
{ understand the principles of security in operating systems,
{ con gure an operating system to be su ciently protected.</p>
      <p>Of course, we can provide students with study materials and all the tools and
applications they will need to study right away. However, this does not force
students to actively cooperate in the process of increasing their skills. In addition,
the ability to search for information and tools is very important for each ICT
graduate.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Possibilities of Operating Systems Training</title>
      <p>In this paper, we will focus on the rst level from the list in Introduction, i.e.
training con guration, maintenance and security of the following operating
systems:
{ MS Windows can be found on many computers of regular users and smaller
servers, and therefore it is very important for administrators to handle this
system,
{ Linux installed (in various forms { distributions) on some servers, clusters,
supercomputers, it is freely available, and other UNIX and UNIX-like
systems (MacOS, Solaris, FreeBSD, QNX, etc.) are handled very similarly.
Tools for training these skills can be found on the Internet, in various qualities.
These are either reference manuals with passive explanations of functionality
or parameters of commands, or collections of examples with solutions, or,
conversely, complex courses and applications with feedback in varying degrees of
didactic quality. Some of these tools are freely available, others commercial.</p>
      <p>There are also educational videos on the Internet, the quality of which is very
diverse and they do not provide any interactivity.</p>
      <p>As for software, some of the tools are freely available, but sometimes only
if certain conditions are met. For example, there are tools freely available for
non-commercial use only (this is the case with many freeware tools distributed
under the EULA license), while software available under the GNU GPL license
is really free for use. In this way, students can learn how to nd out the license
conditions and to understand them.</p>
      <p>The following list of resources for various reviews, tutorials, and courses could
be much longer, but this paper is not intended to provide a comprehensive
overview of such resources.
2.1</p>
      <sec id="sec-2-1">
        <title>Existing Tools for MS Windows</title>
        <p>Windows administrators must be able to handle common tasks not only in the
graphical interface, but also in the Command Prompt and Powershell. They
should know and be able to use commands for working with les, users, processes,
devices, registry, power management, performance, security, both for information
retrieval and for con guration.</p>
        <p>
          A simple reference manual for commands can be found at the web [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ]. This
resource is suitable for advanced users, less for students. There are also books,
such as [
          <xref ref-type="bibr" rid="ref17">17</xref>
          ] { more extensive, but still in the form of a mere summary.
        </p>
        <p>
          Very interesting tutorial about the Windows PowerShell can be found at the
web [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] or [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ], which are inventive and entertaining, but with no feedback.
        </p>
        <p>
          There are interesting courses at the web [
          <xref ref-type="bibr" rid="ref11">11</xref>
          ], or certainly ComptTIA A+
certi cations, but students don't like these courses as they are commercial and
time-consuming.
2.2
        </p>
      </sec>
      <sec id="sec-2-2">
        <title>Existing Tools for Linux</title>
        <p>For Linux/UNIX administrators, the ability to use text-based tools is even more
important than for Windows administrators, as these operating systems are often
installed with no graphical interface, especially on servers and clusters (however,
MS Windows Server can also be installed in the \server core" mode with no
graphical interface).</p>
        <p>Compared to Windows, Linux and other similar operating systems provide
much more text-oriented tools, and almost anything can be found out and con
gured in a text shell. There is also a choice in text shells (similar to the Command
Prompt in Windows), the most used shell in Linux is bash.</p>
        <p>
          In the case of Linux, a quite detailed help for commands can be found inside
each Linux/UNIX system and on the Internet. The web [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ] provides a sequence
of tasks with their solution.
        </p>
        <p>
          At [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ] we can nd several courses, the basic set of courses is free. Because the
knowledge is divided into several courses, students can be o ered a degree that is
su cient and corresponds to their future focus. Free course of Linux is available
at the web [
          <xref ref-type="bibr" rid="ref13">13</xref>
          ], including instructional videos and exercises. Students can take
courses by NDG [
          <xref ref-type="bibr" rid="ref15">15</xref>
          ] as well, e.g. the course Introduction to Linux is freely
available. Free trial courses on Linux, but also other topics (AWS, Azure,. . . ),
can be found at [
          <xref ref-type="bibr" rid="ref12">12</xref>
          ].
        </p>
        <p>
          There are even freely available open-source games that can be used to learn
Linux, which is very motivating for current students. Few Linux games are
described at the web [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ].
3
3.1
        </p>
      </sec>
      <sec id="sec-2-3">
        <title>Requirements</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Programming Training Tools by Students</title>
      <p>Making compilers requires (not only) knowledge of advanced programming
techniques. If students are to program a simpli ed compiler that simulates the
Windows Command line or bash shell for Linux, they need the following skills:
{ handling the programming language in which they make the compiler,
{ mastering the programming techniques for creating compilers,
{ knowing the commands the compiler will process, and being able to
details about these commands, their parameters and common output,
nd
{ being able to design clearly arranged interface of the application,
{ the application should have a certain didactic quality.</p>
      <p>The last requirement would be very problematic if the application should be
intended for students who are currently gaining knowledge and experience with
the given operating system. But the application is supposed to help and intended
primarily for its author (or for the team of cooperating students, authors). Thus,
the didactic value is primarily the process of creating the application, all its
stages from analysis through the possible planning teamwork, programming of
particular parts, until testing.</p>
      <p>Before starting to create the own product, a student should look for similar
applications or services on the Internet as part of the problem analysis. He or
she can be inspired by the discovered tools and at the same time think about
what license to use if he or she wanted to distribute the own software product
or o er a cloud service.</p>
      <p>It does not matter which programming language and development
environment students choose. Of course, when working together in a team, they should
agree on these parameters.</p>
      <p>Figure 1 shows a sample Java application for training Windows Command
Prompt commands. The left pane contains the structure of folders in which the
user moves, the right pane holds a list of supported commands (the user can take
help for commands), in the middle there is the output of the entered commands,
the pane for previously entered commands (history), and the user enters the
commands at the bottom. Some of these panes can be hidden.</p>
      <p>Skillful and motivated students can further improve their application, for
example by separating the student and administrative access and creating two
modes: working and testing. Figure 2 shows a part of the environment of a more
advanced application for training Linux administration. A user ful ls a task, the
assignment of the task is in the upper pane, the commands are entered in the
left pane, help can be found in the right pane.</p>
      <p>The author of the mentioned application (Daniel Valenta) decided to continue
to expand the possibilities of the application up to the level of the diploma thesis
and gradually a project consisting of a server and a client part was created. The
server part is made in Python, the client part in Java SE (multiplatform). The
running task creates a problem on the server (damages it) and the user has to
x the problem. There are several modes with various levels of help. The server
runs virtually and when the task ends, it returns to the state it was in before
the task started, its reinstallation is not required.
3.2</p>
      <sec id="sec-3-1">
        <title>The Role of Teacher</title>
        <p>Students should already be able to use programming languages and
development environments. Therefore, the teacher leads them methodically rather in
the areas of compiler programming techniques and the usability of the resulting
application.</p>
        <p>Programming a complete simulator accepting all common commands of a
given operating system is too demanding and time-consuming, so it is necessary
to simplify the assignment for students. For example:
{ each student has its own subset of commands and parameters to implement,
{ students work in teams,
{ there is a pre-prepared part of the application, students add new modules
for selected commands,
{ there is a pre-prepared part of the application, students correct deliberate
mistakes in some existing code.</p>
        <p>
          Nowadays, the great topic is secure programming. Any application that receives
text or binary input data and further processes it, could become the target of a
hacker attack. This is also the case for all applications that receive and process
text commands. Unfortunately, when teaching compilers, there is not enough
space on this topic, but it is still appropriate to at least draw attention to this
problem. An interesting paper on the detection of forged malicious commands
is, for example, at [
          <xref ref-type="bibr" rid="ref18">18</xref>
          ].
        </p>
        <p>
          Another topic students should be pointed out is usability, see [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The
interface of the application in Figure 1 is less usable than the interface of the
application in Figure 2, but its layout more suggests the original Command prompt
(entering commands at the bottom below the output of previous commands).
However, the layout of the second application may not suggest anything, it is
mainly about easy understanding the task and quickly nding the pane into
which the commands need to be written.
        </p>
        <p>The role of teacher also includes providing feedback (not only the application
should provide feedback to its user, the teacher should provide feedback to the
programming student as well). While, for example, a test in some LMS presents
feedback to a student immediately depending on how a teacher entered comments
on each possible answer, in the case of an application programming, providing
the correct feedback is more di cult, even in terms of the amount of time spent.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Bene ts for Students</title>
      <p>The main bene t of this method is easier motivation of students. Students prefer
to program applications in which they see practical use and which are of good
importance for themselves, than applications whose purpose is just to get an
evaluation.</p>
      <p>Students acquire knowledge and skills belonging to two or even more di erent
subjects, and these skills are practically oriented. Especially for ICT students, it
is very important to be knowledgeable about the manuals and quickly nd what
they actually need.</p>
      <p>For (not only) programmers, it is also bene cial to consider the features of
di erent types of software licenses. It's not just about which license to choose
for the own products, but every ICT professional uses various software tools and
cloud services under licenses whose terms need to be understood.</p>
      <p>The next bene t is the practice of stand-alone work on a larger project, or
teamwork, depending on the di culty of the assignment and the amount of time
available to students.</p>
      <p>If students are su ciently motivated and the assignment corresponds to their
abilities, the resulting applications are very interesting and students can use them
as a demonstration of their skills for future employers.
5</p>
    </sec>
    <sec id="sec-5">
      <title>Conclusions</title>
      <p>This paper presents one of the ways to enrich and interconnect teaching of two
or more subjects at the bachelor's degree level of a university. The elds of
programming and operating systems are important for most graduates of ICT
study programs and it is necessary to look for ways to increase students' skills
in these elds in a motivating and e ective way.</p>
      <p>The e ectiveness of the proposed method is not ideal (especially for the
timeconsuming supervision and feedback), but for many students it could be a very
good motivation and a launching pad to their professional activity.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Aasheim</surname>
            ,
            <given-names>Ch.L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Williams</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Knowledge and Skill Requirements for EntryLevel Information Technology Workers: A Comparison of Industry and Academia</article-title>
          .
          <source>Journal of Information Systems Education</source>
          ,
          <volume>20</volume>
          (
          <issue>3</issue>
          ), pp.
          <volume>349</volume>
          {
          <issue>356</issue>
          (
          <year>2009</year>
          ). Available at: https://aisel.aisnet.org/jise/vol20/iss3/10
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bevan</surname>
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Carter</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Earthy</surname>
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Geis</surname>
            <given-names>T.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Harker</surname>
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>New ISO Standards for Usability, Usability Reports and Usability Measures</article-title>
          . In: Kurosu M.
          <article-title>(eds) Human-Computer Interaction</article-title>
          . Theory, Design, Development and
          <string-name>
            <surname>Practice. HCI</surname>
          </string-name>
          <year>2016</year>
          .
          <article-title>LNCS</article-title>
          , vol
          <volume>9731</volume>
          . Springer, Cham (
          <year>2016</year>
          ). DOI: https://doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -39510-4 25
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Chakraborty</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          et al.:
          <article-title>OSAVA: An Android App for Teaching a Course on Operating Systems</article-title>
          .
          <source>Journal on Engineering Education Transformations</source>
          ,
          <volume>32</volume>
          (
          <issue>4</issue>
          ), pp.
          <volume>20</volume>
          {
          <issue>30</issue>
          (
          <year>2019</year>
          ).
          <source>ISSN 2349-2473.</source>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Command</given-names>
            <surname>Challenge</surname>
          </string-name>
          , https://cmdchallenge.com/.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Giraddi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kalwad</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kanakareddi</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Teaching Operating SystemsProgramming Assignments Approach</article-title>
          .
          <source>Journal of Engineering Education Transformations</source>
          ,
          <volume>31</volume>
          (
          <issue>3</issue>
          ), pp.
          <volume>68</volume>
          {
          <issue>73</issue>
          (
          <year>2018</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <article-title>Introduction to the Windows Command Line with PowerShell</article-title>
          , https://program minghistorian.org/en/lessons/intro-to-powershell.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Kenion</surname>
          </string-name>
          , S.:
          <article-title>3 command line games for learning Bash the fun way</article-title>
          , https://opensource.com/article/19/10/learn-bash
          <article-title>-command-line-games</article-title>
          .
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Klement</surname>
            ,
            <given-names>M:</given-names>
          </string-name>
          <article-title>Models of integration of virtualization in education: Virtualization technology and possibilities of its use in education</article-title>
          .
          <source>Computers &amp; Education</source>
          , vol.
          <volume>105</volume>
          , pp.
          <volume>31</volume>
          {
          <issue>43</issue>
          ,
          <string-name>
            <surname>ISSN</surname>
          </string-name>
          0360-
          <fpage>1315</fpage>
          (
          <year>2017</year>
          ). DOI: https://doi.org/https://doi.org/10.1016/j.compedu.
          <year>2016</year>
          .
          <volume>11</volume>
          .006.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Kolgatin</surname>
            ,
            <given-names>O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Holubnychyi</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , and
          <string-name>
            <surname>Kolgatina</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Systematicity of students' independent work in the course of operating systems</article-title>
          .
          <source>In: SHS Web Conf.</source>
          , vol.
          <volume>75</volume>
          (
          <year>2020</year>
          ). DOI: https://doi.org/https://doi.org/10.1051/shsconf/20207503009
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Learn</surname>
          </string-name>
          the Command Line, https://www.codecademy.com/learn/learn-thecommand-line.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11. Learn Windows Command Line, https://www.udemy.com/course/learn-windowscommand-line/.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12. Linux Academy, https://linuxacademy.com/.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13. Linux Command Line Basics, https://www.udacity.com/course/linux-commandline
          <source>-basics{ud595. Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Machanick</surname>
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Teaching Operating Systems: Just Enough Abstraction</article-title>
          . In: Gruner S. (eds)
          <article-title>ICT Education</article-title>
          .
          <source>SACLA 2016. Communications in Computer and Information Science</source>
          , vol
          <volume>642</volume>
          . Springer, Cham (
          <year>2016</year>
          ). DOI: https://doi.org/10.1007/978- 3-
          <fpage>319</fpage>
          -47680-3 10
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15. NetDevGroup Courses, https://www.netdevgroup.com/online/courses.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16. Powershell Tutorial, http://powershelltutorial.net/.
          <source>Last accessed 15 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Stanek</surname>
          </string-name>
          , W.:
          <article-title>Windows Command Line Self-Study Training Kit</article-title>
          . Stanek &amp; Associates,
          <year>2016</year>
          . ISBN 978-1627164542.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18. Threat Research:
          <article-title>Obfuscated Command Line Detection Using Machine Learning</article-title>
          , https://www. reeye.com/blog/threat-research/
          <year>2018</year>
          /11/obfuscated-commandline
          <article-title>-detection-using-machine-learning</article-title>
          .
          <source>html. Last accessed 13 Jul 2020</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19. Windows Commands, https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/windows-commands.
          <source>Last accessed 10 Jul 2020</source>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>