This lesson is in the early stages of development (Alpha version)

Introduction to the Unix Shell on UD's Caviness Cluster: Instructor Notes

Preparing to Teach

The carpentry curriculum is design to be taught primarily for in person learning. However, efforts have been made to make these lessons more friendly for the online environment. With that in mind there is flexibility to hold the lesson in-person, online, or in a hybrid style. The below information will help instructors design the lessons, and exercises for any style the lesson is being held in.

For all instructing styles it is important that the instructor goes through the lessons themselves to familiarize themselves to any changes or updates that may have been added. Instructors should also remove and download a fresh copy of the bash-lesson.tar.gz . This will ensure that everyone in the lesson has all the same files and that all changes made during prior lessons are eliminated.

Overview

Many people have questioned whether we should still teach the shell. After all, anyone who wants to rename several thousand data files can easily do so interactively in the Python interpreter, and anyone who’s doing serious data analysis is probably going to do most of their work inside the IPython Notebook or R Studio. So why teach the shell?

The first answer is, “Because it enables use of many compute resources researchers cannot access otherwise.” Familiarity with the shell is very useful for remotely accessing machines, using high-performance computing (HPC) infrastructure, and running specialized tools for many disciplines. While details on HPC are not fully covered in this lesson the groundwork for further development of these skills will be covered.

In particular, understanding the syntax of commands, flags, help systems, and file system structure (and how to navigate it) are useful for remote access.

The second answer is, “Because so much else depends on it.” Installing software, configuring your default editor, writing of scripts, and many tools often use its terminology (for example, the %ls and %cd magic commands in IPython).

Finally, and perhaps most importantly, teaching people the shell lets us teach them to think about programming in terms of function composition. In the case of the shell, this takes the form of pipelines rather than nested function calls, but the core idea of “small pieces, loosely joined” is the same.

Teaching in Person Lessons Notes

For in person lessons each learner needs their own computer with a connection to the internet. Before the lesson begins each learner should make sure they can access a terminal. Directions on how to access or install terminal applications can be found in the lessons setup page. Learners may also want to bring something to write with and on.

Teaching Online Lessons Notes

For the online format interactions and sharing of information can have its challenges. Online formats benefit from having two or more instructors. One who is the presenter, and the other(s) are helpers. The use of software like Zoom and Google Docs or other similar software, help to create a virtual classroom environment.

In the virtual classroom the instructors are broken into two rolls, a presenter, and helper(s). The presenter leads the lesson. They walked through the episodes, while sharing their screens with the learners. The helper hosts the virtual classroom. They are in control of making sure learners are muted and unmuted at appropriate times. Additionally, they monitor the chatroom and help coordinate responses to questions. This can be a lot for just one helper, so if possible, having two helpers can be beneficial.

While Zoom or a similar software creates the virtual classroom, Google Docs creates a virtual whiteboard. Creating and sharing a Google Doc with the learners and the instructor is a great way to create notes and track attendance for each lesson. Having this open to everyone, instructors and learners creates a great form for people to add notes, ask questions, and respond to exercises. This document can also be left online after the lesson has ended so learners can access and review information as needed.

Online Teaching Resources

Video Chat

Collaborating Text Resources

Important Note

If the online lesson is going to be recorded make sure to check all rules and guidelines to ensure that there are no violations to privacy rules and regulations for the learners, and that everyone is aware that the session is, or could be recorded.

Teaching Hybrid Online/In Person Lessons

More information still to come.