New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lesson rearrangement #234

Open
ChristinaLK opened this Issue Sep 13, 2015 · 9 comments

Comments

Projects
None yet
8 participants
@ChristinaLK
Contributor

ChristinaLK commented Sep 13, 2015

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

Discuss.

@jevbelikov

This comment has been minimized.

Contributor

jevbelikov commented Nov 15, 2015

+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.

wking pushed a commit to wking/shell-novice that referenced this issue Feb 9, 2016

@lexnederbragt

This comment has been minimized.

Member

lexnederbragt commented Jun 20, 2016

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

This comment has been minimized.

btel commented Jun 20, 2016

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.

@gvwilson

This comment has been minimized.

Member

gvwilson commented Jun 20, 2016

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

This comment has been minimized.

btel commented Jun 20, 2016

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.

@lexnederbragt

This comment has been minimized.

Member

lexnederbragt commented Jun 20, 2016

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.

hoytpr pushed a commit to hoytpr/shell-novice that referenced this issue May 11, 2017

Merge pull request swcarpentry#234 from lmichael107/gh-pages
Fit typical Eventbrite registration w/o scrollbar activating
@taupalosaurus

This comment has been minimized.

Contributor

taupalosaurus commented Jan 16, 2018

I'm bumping up this thread after teaching this lesson to (geophysics) undergrads - not the usual target I reckon, but the lessons learned are still valid with a significant part of the young scientific public.

  • loops confused them a lot: as they learnt Python in previous years, they don't really understand the point of foor loops in Shell - and I cannot completely disagree with them. Is it a wrong assumption that most of our learners have learnt another language, or will learn one, even maybe in the same SwC workshop ?
  • grep and find interested them a lot more, and I saw them play and experiment a lot more with these. I think inserting a more "fun" break between pipes and loop/scripts keeps learners better focused.

My personal feeling is also that grep and find are a lot more useful than loops, especially since they do not really have a good equivalent in the GUI world. I also tend to think that most shell scripts don't use loops. I do understand the arguments stated above in favour of loops though, so there may not be a definitive answer to the question.

Maybe the last three parts could be written in a more independent way, so that the instructors could switch the order more easily depending on the audience ?

@ChristinaLK

This comment has been minimized.

Contributor

ChristinaLK commented Jan 17, 2018

@taupalosaurus I like your last suggestion of making sure each of the last 3 pieces (loops, scripts, finding) could be written independently + people choose which to teach based on audience. That would include some guidance in the instructor guide (which may already be there) about how to make that choice.

@taupalosaurus

This comment has been minimized.

Contributor

taupalosaurus commented Jan 24, 2018

I have had a look at how to make these lessons independent, there is probably a bit too much involved for a newbie to do it.
I noted:

  • in the lesson on scripts, there is one big example that uses for loops: Nelle's pipeline section (example + exercise). That is not easy to change.
  • in the lesson on finding things, the word script can be easily replaced by command, and there is one exercise that uses loops, that could be done without (even if that makes it a little less "good looking")

After doing my live demo yesterday, precisely the lesson on loops, I realised how awkward it is to explain variables when you explain loop first, and think it would be easier to have scripts first - that is, if we suppose that learners have never heard of variables before.

rgaiacs added a commit to rgaiacs/swc-shell-novice that referenced this issue May 24, 2018

Merge pull request swcarpentry#234 from mr-c/py34
convert to py3.4 syntax, a few cleanups
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment