lesson rearrangement #234

ChristinaLK opened this Issue Sep 13, 2015 · 6 comments


None yet

6 participants

  • put scripts before loops
  • Take out all Nelle pieces + make a final capstone module
  • move "finding things" to shell-extras



+1 for putting scripts before loops as they often contain no loops but are still useful to store often-used commands (can be viewed as alias for a sequence of commands)

Would Nelle pieces need replacement with some other examples?

Not sure about moving 'finding things' as looking for files in a large set of files is a relatively common task, especially in combination with grep.


With three hours for this lesson, we often have to finish before the 'scripts' part. Switching order means loops may risk being skipped. Personally, I think it is more important to teach loops than scripts.

Taking out Nelle would save time - but again there may not always be time for the capstone

I have never taught 'finding things' with only 3 hours at my disposal, so tentative +1.

btel commented Jun 20, 2016 edited

How about integrating the Nelle story into the main content and removing the "boring" commands such as wc, cat, sort etc? This would provide more motivation for the shell lesson, which for now is more adapted for prospective sys admins rather than scientists. At most workshops we skip the Nelle story to save time, but students complain about lack of motivation of this lesson.

"Finding things" I personally consider very useful, but it is more advanced topic than the rest of the lesson (maybe with the exception of for loops). Perhaps, it would satisfy the advanced part of the students, who may be bored during the rest of the lesson. We can keep it, so that instructors can decide themselves to keep it or skip it depending on the audience.

for loops I consider less useful than scripts and finding things, because I tend to do this kind of tasks in Python. So I agree with putting scripts before for loops.


for loops are the part of the lesson that really convince people the
shell is worth using - pipes and filters are good, but being able to
process a bunch of files is really compelling. I agree that finding
stuff is less important (which is why it comes at the end). I think we
have to keep the opening intro to wc, sort, etc., because without
that, we don't have commands to use to illustrate pipes and loops.

btel commented Jun 20, 2016 edited

I think we have to keep the opening intro to wc, sort, etc., because without that, we don't have commands to use to illustrate pipes and loops.

We could modify goodiff and goostats, so that they can be used in a pipe (or perhaps add another command). But why don't we drop pipes and filters altogether? In my work, I use pipes very rarely. From my experience it's hard (or impossible) to apply them to anything more complicated than the standard examples. For example, combining outputs of two pipes is already non-trivial. Scripts, for loops, moving and finding files are far more useful.

If you wish, I can start another issue with this proposal.


Pipes are incredibly useful for exploratory stuff. Then again, I would not argue much with people saying once you are building extensive pipes you should perhaps move to a programing language. But as a principle, stringing elements together, each built do one thing well, is equally applicable to programming languages - where functions are the elements rather then unix commands. So I would keep the pipes part.

@gdevenyi gdevenyi was assigned by gvwilson Jul 31, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment