<?xml version="1.0" standalone="no" ?>

<!--  AIT_ShellProgramming_2D.xml	Course Outline in XML format
 *
 * Copyright 2011 Affinity IT Training, LLC. All Rights Reserved.
 *
 -->

<!DOCTYPE FAI:CourseOutline SYSTEM "FAI_CourseOutline.dtd">

<?xml-stylesheet type="text/xsl" href="FAI_CourseOutline.xsl" ?>	

<FAI:CourseOutline FAI:link="AIT_ShellProgramming_2D.xml"
     xmlns:FAI="http://www.fisher-assoc.com/DTDs/FAI_CourseOutline.dtd" >

  <FAI:CourseTitle FAI:level="Intermediate" FAI:code="ShellProgrammming2D">
    Introduction to Unix/Linux Shell Programming
  </FAI:CourseTitle>  

  <FAI:CourseCategory>Unix</FAI:CourseCategory>
  <FAI:CourseCategory>Linux</FAI:CourseCategory>
  <FAI:CourseCategory>Operating Systems</FAI:CourseCategory>

  <FAI:SummaryInfo>

    <FAI:CourseDesc FAI:version="X.X" >
	This course 
	provides a intense hands-on introduction to 
	Unix and Linux Shell Programming.
	Students will use our virtual enviroment 
	in order to develop and practice their skills.
    </FAI:CourseDesc>

    <FAI:CourseDuration>
	2 Days
    </FAI:CourseDuration>

    <FAI:CourseAudience>
    	Individuals seeking to automate tasks and create custom Shell programs in the Unix/Linux environment.
    </FAI:CourseAudience>

    <FAI:CourseObjectives>

      <FAI:Objective FAI:desc="Understand how to work effectively with Shell Meta-characters" />
      <FAI:Objective FAI:desc="Understand how to work effectively with Regular Expressions" />
      <FAI:Objective FAI:desc="Be prepared to write Shell programs that accept arguments and use variables" />
      <FAI:Objective FAI:desc="Be prepared to write interactive Shell programs" />
      <FAI:Objective FAI:desc="Be prepared to leverage best practices in working with temporary files" />
      <FAI:Objective FAI:desc="Understand the statements used for conditional execution" />
      <FAI:Objective FAI:desc="Understand the statements used for iteration" />
      <FAI:Objective FAI:desc="Be prepared to effectively use Functions and Arrays in Shell programs" />
      <FAI:Objective FAI:desc="Understand how to trap signals" />
      <FAI:Objective FAI:desc="Be familiar with Shell programming debugging tools and strategies" />
      <FAI:Objective FAI:desc="Be prepared to schedule Shell programs for periodic execution" />

    </FAI:CourseObjectives>

    <FAI:CourseSetupList>
	<FAI:Setup FAI:desc="puTTY Download" FAI:link="http://www.putty.org/" />
    </FAI:CourseSetupList>    

    <FAI:CourseTextList>

      <FAI:Text  FAI:title="Course Workbook" />

    </FAI:CourseTextList>    

    <FAI:CoursePrerequisiteList>
         <FAI:CoursePrerequisite FAI:title="Introduction to Unix/Linux" FAI:link="AIT_Unix_Linux_3D.xml" />
    </FAI:CoursePrerequisiteList>    

  </FAI:SummaryInfo>  

  <FAI:TopicList>

    <FAI:SuperTopic FAI:title="Introduction" >
      <FAI:Topic FAI:title="Welcome" />
      <FAI:Topic FAI:title="Prerequisites" />
      <FAI:Topic FAI:title="Course Objectives" />
      <FAI:Topic FAI:title="Creating a Shell Program" />
      <FAI:Topic FAI:title="Your Shell Environment" />
      <FAI:Topic FAI:title="Your Default Shell" />
      <FAI:Topic FAI:title="Using Shell Variables" />
      <FAI:Topic FAI:title="Customizing Your Profile" />
      <FAI:Topic FAI:title="Lab Exercise: Out of Your Shell" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Shell Processing-Redirection and Pipelines" >
      <FAI:Topic FAI:title="Shell Processing: Redirection" />
      <FAI:Topic FAI:title="Redirecting Standard Output" />
      <FAI:Topic FAI:title="Redirecting Standard Input" />
      <FAI:Topic FAI:title="Redirecting Standard Error" />
      <FAI:Topic FAI:title="Redirecting Standard Out and Standard Error" />
      <FAI:Topic FAI:title="Redirecting Standard Input and Standard Output" />
      <FAI:Topic FAI:title="More Simple Commands" />
      <FAI:Topic FAI:title="Shell Processing: Pipelines" />
      <FAI:Topic FAI:title="Tapping Pipelines" />
      <FAI:Topic FAI:title="Lab Exercise: Pipe Dreams" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Shell Meta-Characters" >
      <FAI:Topic FAI:title="Shell Processing: Filename Expansion" />
      <FAI:Topic FAI:title="Filename Expansion Characters" />
      <FAI:Topic FAI:title="Filename Expansion" />
      <FAI:Topic FAI:title="Protecting Characters from the Shell" />
      <FAI:Topic FAI:title="Sort Revisited" />
      <FAI:Topic FAI:title="Selecting Columns and Fields" />
      <FAI:Topic FAI:title="Command Substitution" />
      <FAI:Topic FAI:title="Lab Exercise: What&apos;s the Meta ?" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Regular Expressions" >
      <FAI:Topic FAI:title="What is a Regular Expression ?" />
      <FAI:Topic FAI:title="grep Revisited" />
      <FAI:Topic FAI:title="Extended Regular Expressions" />
      <FAI:Topic FAI:title="grep and Extended Regular Expressions" />
      <FAI:Topic FAI:title="Regular Expressions and Shell Meta-characters" />
      <FAI:Topic FAI:title="sed: The Stream Editor" />
      <FAI:Topic FAI:title="Regular Expressions are Greedy" />
      <FAI:Topic FAI:title="Lab Exercise: Express Yourself" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Shell Program I/O" >
      <FAI:Topic FAI:title="Standard Input, Output, and Error" />
      <FAI:Topic FAI:title="Using Command Line Arguments" />
      <FAI:Topic FAI:title="Shifting Command Line Arguments" />
      <FAI:Topic FAI:title="Using Shell Variables" />
      <FAI:Topic FAI:title="Accepting User Input" />
      <FAI:Topic FAI:title="Using Temporary Files" />
      <FAI:Topic FAI:title="Understanding Exit Codes" />
      <FAI:Topic FAI:title="Lab Exercise: It&apos;s Off to Work We Go" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Conditional Execution" >
      <FAI:Topic FAI:title="if-then" />
      <FAI:Topic FAI:title="if-then-else" />
      <FAI:Topic FAI:title="if-then-elif" />
      <FAI:Topic FAI:title="The test Command" />
      <FAI:Topic FAI:title="Combining Tests" />
      <FAI:Topic FAI:title="Using select" />
      <FAI:Topic FAI:title="Using case" />
      <FAI:Topic FAI:title="Combining select and case" />
      <FAI:Topic FAI:title="Lab Exercise: Shell We Dance ?" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Iteration and Arithmetic" >
      <FAI:Topic FAI:title="Iteration" />
      <FAI:Topic FAI:title="The for Loop" />
      <FAI:Topic FAI:title="The while Loop" />
      <FAI:Topic FAI:title="The until Loop" />
      <FAI:Topic FAI:title="break and continue" />
      <FAI:Topic FAI:title="Using expr" />
      <FAI:Topic FAI:title="Lab Exercise: Shell Games" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Using Functions and Arrays" >
      <FAI:Topic FAI:title="Functions" />
      <FAI:Topic FAI:title="Arrays" />
      <FAI:Topic FAI:title="Lab Exercise: Sum It All Up" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

    <FAI:SuperTopic FAI:title="Miscellaneous Features" >
      <FAI:Topic FAI:title="Using Shell Specific Features" />
      <FAI:Topic FAI:title="Trapping Signals" />
      <FAI:Topic FAI:title="Coordinating Multiple Programs" />
      <FAI:Topic FAI:title="Debugging Shell Programs" />
      <FAI:Topic FAI:title="Scheduling Jobs" />
      <FAI:Topic FAI:title="Lab Exercise: Trapped Like Rats" />
      <FAI:Topic FAI:title="Quiz" />
    </FAI:SuperTopic>

  </FAI:TopicList>

  <FAI:Appendix FAI:title="Quiz Answers " />
  <FAI:Appendix FAI:title="Lab Solutions" />
  <FAI:Appendix FAI:title="The vi Editor" />
   
</FAI:CourseOutline>

