Slashdot Mirror


Advice On Teaching Linux To CS Freshmen?

copb.phoenix writes "I'm a sophomore Computer Science student teaching computing labs to a freshman class, getting ready to go over the major ins and outs of the Linux terminal and GUI. While I have my own ideas and the professor over this class to lean on, I've found it difficult to get the few students that I've tried to teach in the past to connect the dots and understand how it relates to what they already know about computers. Does anybody out there have any advice on how to engage and inspire our upcoming class? (Perhaps important: Our machines are running Ubuntu Hardy.)"

467 comments

  1. Deja-vu by Anonymous Coward · · Score: 0

    Didn't someone already ask this same question in the last couple weeks?

  2. Everything and Nothing by fineghal · · Score: 4, Insightful

    You've given us rather little in regards to guidance. Is this class part of a larger arc focusing on security? Programming?

    1. Re:Everything and Nothing by Anonymous Coward · · Score: 3, Funny

      Start with vi and go from there.

    2. Re:Everything and Nothing by Anonymous Coward · · Score: 0

      At the university I attend this how the C++ class starts. The first homework assignment is to complete vitutor.

    3. Re:Everything and Nothing by hackstraw · · Score: 1

      You've given us rather little in regards to guidance.

      Is this class part of a larger arc focusing on security?
      Programming?

      It seems more like a community college class or something. I've never heard of a CS department that teaches "Linux". The CS, Physics, Chemistry, Biology, and Psychology departments that I've dealt with in the past had a lab of computers that had some kind of OS on them and the students were told to get their programming project done using them.

      Wanna teach them Linux? I would suggest giving them Android phones. All that silly CLI, KDE, and Gnome stuff is so 90s. They will learn Linux real good by swiping around and installing and uninstalling apps from the app store.

    4. Re:Everything and Nothing by SuperKendall · · Score: 1

      I totally agree, we really need to know the focus to understand what direction to point them in.

      I wouldn't post such a redundant comment normally, but iornically I modded your comment "redundant" by accident when I meant to say "insightful", and so I'm posting to undo my moderation.

      --
      "There is more worth loving than we have strength to love." - Brian Jay Stanley
    5. Re:Everything and Nothing by The_Wilschon · · Score: 1

      I always detested assignments like that, as a general rule. There's always at least somebody in the class for whom this is a complete waste of time for the simple reason that they are already comfortable with vim. For anyone who reads this comment and even thinks that there is a small chance that they will wind up teaching someday: please remember to always provide an alternative, such as a signed statement to the effect of "I already know how to use the tool, and if at any point I find that there is some aspect of the tool I don't know how to use, I will go back and do this assignment.".

      --
      SIGSEGV caught, terminating

      wait... not that kind of sig.
    6. Re:Everything and Nothing by qmaqdk · · Score: 1

      Start with vi and go from there.

      Real men use, oh never mind.

      --
      My UID is prime. Hah!
    7. Re:Everything and Nothing by tooyoung · · Score: 1

      Also, what is this gem of a school where I can have my computer labs taught by a sophomore? Most schools use grad students who have at least built up some experience.

    8. Re:Everything and Nothing by Anonymous Coward · · Score: 0

      Show them how to setup a free streaming server on a $200 PC.
      Intruduces repositories for setting up the apps, Web interfaces for the application control, terminal sessions for server admin.
      Then get them to see if they can do the same for free on Windows.

      Kids today may never have even dropped to the command line on a Windows PC.

    9. Re:Everything and Nothing by Darinbob · · Score: 1

      When I was in college, we learned unix without any "training". A photocopied cheat sheet, some questions to proctors, and knowing how to use "man" was enough. This was before Windows, so maybe people have gotten dumber since then.

    10. Re:Everything and Nothing by geminidomino · · Score: 1

      There's always someone in the class for whom ANY given assignment is a "complete waste of time." Hell, I was that "someone" for my first 24 credits or so.

      If you're already comfortable with the material, then you blow it out in 10 minutes, pad your grade with the 'gimme', and go do something else.

    11. Re:Everything and Nothing by Lorkki · · Score: 1

      Then again, ed is the standard editor.

    12. Re:Everything and Nothing by BlueFigToast · · Score: 1

      This is an issue new and dear to my heart. Build on the knowledge they already know. I migrated my folks off of winxp to ubuntu about 18 months ago. but I left windows on the machine, (i.e. dual boot scenario) so that if they just couldn't deal with linux, they could fall back. some over the shoulder help now and then, and I told them to write down their questions. it requires a lot of patience dealing with parents who are in their 80's - but we made it! rarely if ever do they use windows now. to that end, I have created http://www.pkill-9.com/ in an attempt to make linux accessible to people, especially n00bs. Wayno

    13. Re:Everything and Nothing by silverglade00 · · Score: 1

      Kids today may never have even dropped to the command line on a Windows PC.

      "How do I install that DOS app?" *shudder*

    14. Re:Everything and Nothing by Nivag064 · · Score: 1

      >>> How can I get rid of this silly slider business??? Or how can I communicate with the slashdot people to discuss this? I've spent time looking at all the preferences, I can't see any help there.

  3. They should already know! by frinkacheese · · Score: 0, Flamebait

    Really, if they are going to be any good, they will most likely ALREADY know what Linux is and how it works.

    If they don't, really, don't bother them with it. It'll just confuse them.

    1. Re:They should already know! by GPSguy · · Score: 2

      Not necessarily. I've been trying to find a couple of good, linux-savvy student workers, and they're rare. By the time I hear about them, someone else has generally snagged 'em. I'd have to say maybe 10% of our CS freshmen know enough about Linux to have installed it themselves on a home machine.

      --
      Never ascribe to malice that which can adequately be explained by tenure.
    2. Re:They should already know! by rainmouse · · Score: 4, Informative

      Really, if they are going to be any good, they will most likely ALREADY know what Linux is and how it works.

      If they don't, really, don't bother them with it. It'll just confuse them.

      Really, if they are going to be any good, they will most likely ALREADY know what Linux is and how it works.

      That's exactly the approach that makes most people who try Linux give up after a very short time. I personally tried it twice and found any problems I encountered making things work had no simple step by step instructions on how to fix.

    3. Re:They should already know! by Anonymous Coward · · Score: 0, Insightful

      Sure. By the time someone is 17 or 18 years old, they either know Linux or they don't. At that age, they've got their lot in life and if they haven't picked up Linux stuff by now, fuck 'em. Damn, you sir are an ignorant asshole.

    4. Re:They should already know! by dmomo · · Score: 5, Insightful

      This is a joke, i hope. It sounds elitist and exclusionary. A lot of great hackers are self taught. But, there a many people who learn by seeking the help of of others. There is nothing wrong with that. Who is to say they don't already know what Linux is? Do *you* know what Linux is and how it works? I've been using it for over 12 years, and I sure as heck don't! I still rely on the knowledge of other people to make the best use of the tools I have available. Some might argue that this is what it takes to be "any good".

    5. Re:They should already know! by ocdscouter · · Score: 2

      Sure. By the time someone is 17 or 18 years old, they either know Linux or they don't. At that age, they've got their lot in life and if they haven't picked up Linux stuff by now, fuck 'em. Damn, you sir are an ignorant asshole.

      Or a deep-cover Microsoft salesman.

    6. Re:They should already know! by MoonBuggy · · Score: 4, Insightful

      Whether or not they have used Linux in the past, it seems like the kind of thing that a CS student (even a first year) should be more than capable of handling for themselves. Sure, teach them about the architecture, or give them tasks that will require them to learn more advanced features of the OS, but I'd worry if the submitter really needs to teach the "major ins and outs of the Linux terminal and GUI" to a bunch of prospective computer scientists.

    7. Re:They should already know! by tomhudson · · Score: 0, Flamebait

      Really, if they are going to be any good, they will most likely ALREADY know what Linux is and how it works.

      If they don't, really, don't bother them with it. It'll just confuse them.

      Really, if they are going to be any good, they will most likely ALREADY know what Linux is and how it works.

      That's exactly the approach that makes most people who try Linux give up after a very short time. I personally tried it twice and found any problems I encountered making things work had no simple step by step instructions on how to fix.

      Simple two-step fix:

      1. Don't believe the hype around CrapUontu
      2. Install a distro that has a history or commitment to and contributions to linux, such as opensuse or fedora.

      Keep in mind that Mark Shuttleworth's goals are not the same as the community at large. He wants to see a return on his $20 million. It's why he hired Windows apologist Matt Asay instead of someone deeply involved in the linux community.

    8. Re:They should already know! by wonkavader · · Score: 1

      You're backing up your "Not necessarily" with any arguments, there. 90% of CS students may turn out to not be any good.

    9. Re:They should already know! by Anonymous Coward · · Score: 0

      Corollary: 90% of them are in CS for the big bucks (only somebody forgot to tell them that bubble burst a long time ago and they too will be getting entry level jobs at best). So, to the OP, don't bend over backward to teach them and consider it a class to separate the wheat from the chaff.

    10. Re:They should already know! by wonkavader · · Score: 4, Interesting

      What good first year students should have difficulty handling is handling their time well enough while they obsessively dig into the computer systems around them. You shouldn't have to teach them about Linux, you should have to teach them about how to lay off the obsessive installing, poking, modifying, developing, etc.

      If you have to push them /towards/ computing, they're not going to be any good at computing. They should get into something else quickly.

    11. Re:They should already know! by next_ghost · · Score: 1

      Yeah, right. That's why each year, the professor who teaches UNIX Basics at our university repeats the story of the guy who thought he knew how to use Linux because he used it at home but then failed horribly at the exam and complained that the class sucks in class feedback poll.

    12. Re:They should already know! by wonkavader · · Score: 3, Interesting

      You make a good point. It's not the knowing which is required. It's the wanting to know.

      If the student is poking and asking questions, he or she will be good.

      If the student is just asking question, without poking, that's a warning sign of a lack of self-confidence. And at 18, that's possibly not going to change that much throughout life, and may indicate a person who's not going to succeed.

      If the student expects you to tell him or her everything, and is annoyed at the instructor/materials when things go differently, that's a very bad sign.

      If the student only really wants to know what's going to be on the test, that's deadly.

      Ten years down the road, you want to work with the first, might put up working with the second, and probably will avoid the third and fourth.

      Certainly all this can start at 18, but it's odd, in today's society, where computing information is all around and computers are very cheap, that the exploration process didn't happen earlier. If you have an 18 year old who wants to be in CS and isn't excitedly exploring computing already, unless he or she comes from a family which is dirt-poor or believes that computers are a tool of the devil or ascribes to a strictly no-screens great books sort of education (none of which should necessarily be crippling -- in fact the last /could/ give the 18 year a big leg up), then the student is probably going to fit into one of the latter three categories.

    13. Re:They should already know! by grcumb · · Score: 1

      This is a joke, i hope. It sounds elitist and exclusionary. A lot of great hackers are self taught. But, there a many people who learn by seeking the help of of others. There is nothing wrong with that. Who is to say they don't already know what Linux is? Do *you* know what Linux is and how it works? I've been using it for over 12 years, and I sure as heck don't! I still rely on the knowledge of other people to make the best use of the tools I have available. Some might argue that this is what it takes to be "any good".

      Great point. I'd say the thing to do would be to leverage that collaborative spirit.

      How about a '100 lines' assignment: Every class, a different student spends 5 minutes demonstrating what they've been able to accomplish with no more than 100 lines of Perl/Python/Ruby/Lisp/Whatever. Make half the mark discretionary based on the enthusiasm shown by the class for that particular hack. The value of the grade doesn't have to be high - just enough to put some stakes in the game. Once people see that a little ingenuity is rewarded amply in Linux, they'll have a different attitude toward the environment.

      When I look back at all the quick and clever hacks I've worked up over the years, I'm reminded that 'hackability' is what keeps me using Linux. With Widget kits like Screenlets available these days, you'd be amazed what you can do....

      --
      Crumb's Corollary: Never bring a knife to a bun fight.
    14. Re:They should already know! by agw · · Score: 1

      That's exactly the approach that makes most people who try Linux give up after a very short time. I personally tried it twice and found any problems I encountered making things work had no simple step by step instructions on how to fix.

      If you are likely to give up any computer problem because there is "no simple step by step instructions on how to fix" it, maybe CS is not the thing for you?

    15. Re:They should already know! by muridae · · Score: 2

      You could say the same thing about a programing language. "Either by 18, they know a programing language or they shouldn't be a CS major." The problem is, they may think they know a programing language, which as a CS student was something I saw cause a good many students to fail and leave for an IT major. Maybe their family couldn't afford a computer for them to reformat constantly, maybe no one around to direct them to a distro that was usable. They are not going to college to get a sheet of paper that says what they already know; at least I hope they aren't.

      My advice, don't teach it freshman year, especially not first semester. Stick them in a Intro to Comp Sci course, something that talks about what computers are, what an OS does, some basics of how binary operations work. Nothing deep, no need to go beyond if->then truth tables, save that for discrete math. Introduce the idea that an os is just an os, and gui is just gui. Show them the computer lab, give them some basic tasks to do on all the different OSes and leave it at that. Make the course worth a fraction the credits of a normal course; something they can take while they get all the required language classes out of the way. Second or third term, after the C/Java/whatever course has gotten rid of the Visual Basic programmers, then you can drop them into a Linux heavy course. Teach sed and awk and regex, right off the bat; that might take a whole semester if you want them to really memorize it. Teach them how to use gdb, valgrind, or similar tools for the languages your school uses. If the university won't help you make Linux compatibility part of the student's computer requirements, teach the students how to use a virtual machine.

      Yes, I said Linux compatibility. I know there are drivers for just about every piece of hardware, but most of them suck. If the school sets a guideline for student's computers, say "minimum X cores running at Y Ghz and Z gigs of ram," they can also say "and a video card with a manufacturer supported Linux driver."

    16. Re:They should already know! by Anonymous Coward · · Score: 0

      Maybe their family couldn't afford a computer for them to reformat constantly...

      This is no longer an excuse. I bought my first computer at a yardsale for $5.

    17. Re:They should already know! by SuperQ · · Score: 1

      Nice self promoting to another domain you own.

    18. Re:They should already know! by biryokumaru · · Score: 1

      If the student expects you to tell him or her everything, and is annoyed at the instructor/materials when things go differently, that's a very bad sign.

      Sadly, this is almost everyone at my school.

      --
      When you're afraid to download music illegally in your own home, then the terrorists have won!
    19. Re:They should already know! by shentino · · Score: 1

      When you have a dogmatic professor who threatens to expel you from his class simply for challenging him, you learn to respect authority and not rock the boat, another skill that is sadly required to survive in today's world where old fashioned hierarchy still holds sway.

    20. Re:They should already know! by tomhudson · · Score: 1
      Your point being? The fact is, Ubuntu has NOT been a blessing to the overall linux community. The percentage of linux users on the desktop has gone DOWN, not up, since Ubuntu, in large part because Ubuntu breaks easier/more often, and people then give up, assuming ALL linux distros are just as bad.

      Too bad if the truth hurts, but we'd be a lot further ahead without Ubuntu; Canonical is noted for one thing - hyping their "different vision" to the detriment of the entire communityy. Wayland is just the latest example - trying to claim they're "out front" and everyone else is behind, when it's not even something they're shipping (so they're at least as behind as everyone else). Ditto how one month they're going to be THE company for cloud computing, the next they're going to be THE company for a tablet OS.

      Appointing Matt Asay was just another in a long line of stupid moves, same as sticking with their original fugly color scheme for years, only to switch it for another equally fugly color scheme when they're not trying to come up with something that looks like an old Apple theme.

    21. Re:They should already know! by ModernGeek · · Score: 1

      Any CS programme worth attending, will assume a foundation in basic programming, calculus, and logic. Anything else is pure garbage. Most real Universities don't even accept students into a CS program until their 3rd year.

      --
      Sig: I stole this sig.
    22. Re:They should already know! by walshy007 · · Score: 2, Insightful

      That's exactly the approach that makes most people who try Linux give up after a very short time. I personally tried it twice and found any problems I encountered making things work had no simple step by step instructions on how to fix.

      Research and independent learning, not everything is going to be spoon fed to you.

    23. Re:They should already know! by bananaquackmoo · · Score: 1

      That site's arguments lack a direct link or causality. Are people saying Ubuntu is bad because it is bad? Or are the people who are trying Ubuntu the kind of people who would call it bad, most likely because they don't know how to use it and it is supposed to be the easiest Linux distro? Or maybe its just getting the most search results due to its wide use? *Disclaimer : I like Ubuntu, but I also like openSUSE and Fedora more.

    24. Re:They should already know! by lamapper · · Score: 1

      Keep in mind that Mark Shuttleworth's goals are not the same as the community at large. He wants to see a return on his $20 million. It's why he hired Windows apologist Matt Asay instead of someone deeply involved in the linux community.

      You are right on about Mark Shuttleworth's goals, of course its his money and he can play the cards as he sees fit, of course we do not have to sit at his table do we.

      As for Fedora, watch out, they are have announced that they are going to Wayland eventually as well. Wayland ~ Mono ~ .NET is a little too much for me as well. It will be interesting to see what they come up with.

      Here is a great Graphics view of different Distros and which are derived from which base distros. Obviously to avoid Wayland you want to avoid any distro that gets its base from either Ubuntu or Fedora.

      --
      Is your Internet Throttled? Install DD-Wrt, OpenWRT or Tomato to learn the truth! Google: 1Gbps/1Gbps: 5 Communities
    25. Re:They should already know! by KingMotley · · Score: 1

      Linux wasn't around yet when I was 18, but by the time I was 18, I had already mastered 5 or 6 different dialects of basic, pilot, pascal, C, both intel and motorola assembly, DOS and windows inside and out. Outside of class I also leaned unix (Which wasn't part of any classes).

      I really don't think it's out of the question to expect a freshman in college going for either IT or CS to know linux and windows basics.

    26. Re:They should already know! by Nugoo · · Score: 1

      So that's it? If they're not good first year students, you just give up on them? I was under the impression that university was for broadening your horizons. Kind of hard to do if you have to start off good at everything.

      --
      I explicitly release the above into the public domain.
    27. Re:They should already know! by rainmouse · · Score: 0

      Research and independent learning, not everything is going to be spoon fed to you.

      Do you realise your just reinforcing what I just said about linux learning attitude?

      To make sure the point I was making is valid, I tried googling one of the issues I had. I googled " 'my sound is not working in Ubuntu' and picked the first two responses. What I get is people talking about running system drivers and typing strange code into a terminal and I understand little to none of it.

      I then tried googling 'my sound is not working in windows 7' and the top two hits show me step by step plain English guides on how to solve the problem in numerous different manners and the one even has a link to a program that automatically tries to fix the sound issue for me.

      I can understand your point of view, why should I teach you about something you won't bother learning yourself? To which I say, 'why should I bother switching to something that doesn't work right out of the box and to which there is seemingly no basic level user support?'

    28. Re:They should already know! by SuperQ · · Score: 1

      What truth? I'd like to see your evidence. Search results are not truth.

      You seem to be on an emotional posting spree of destructive negativity, trolling, and just general FUD.

      Maybe you should sit back, relax, and think about how you present yourself in public.

    29. Re:They should already know! by tomhudson · · Score: 1

      What truth? I'd like to see your evidence. Search results are not truth.

      You seem to be on an emotional posting spree of destructive negativity, trolling, and just general FUD.

      Maybe you should sit back, relax, and think about how you present yourself in public.

      So why not, instead of whining, produce some proof to the contrary? I'm sick and tired of all the Ubuntu fanbois claiming how their distro is so "superior", when its appearance tracks the decline in percentage of linux desktop users because it breaks more often. It's not a coincidence.

    30. Re:They should already know! by Anonymous Coward · · Score: 0

      You would be surprised how many CS students know very little about computers in general.

    31. Re:They should already know! by tomhudson · · Score: 1
      The ultimate cause is immaterial. The fact is that the arrival of Ubuntu coincides with the drop in the percentage of people who use linux as a desktop, and that more people are having problems with Ubuntu than all the other main distros combined.

      If Ubuntu were so great, I would expect to see both a rise in the percentage of linux desktops, and FEWER, not more, complaints.

      I would also expect that Dell would have increased, not cut back, their Ubuntu linux offerings. That was a nasty and very public failure.

    32. Re:They should already know! by IronSight · · Score: 1

      That's true. You can use linux and not know how it works, or know how to do some basic things. I have been what I would call a linux end user since 1999. I never used sed, I didn't know what pipes were, I couldn't figure out emacs (I still use nano/pico) and I have never made a perl script. I could do basic things like setup and compile the kernel and some apps, chroot, setup symlinks, shell scripting, setup lamp, run a game server, etc. I could see my failing a redhat certification right now if it was thrown in front of me since it has been so long since I used a redhat system with rpm's and such. And I would probably fail a linux sysadmin test since the most I have ever setup was a basic mail server, a web server and a ftp server. I don't deal with permissions for users on a daily basis, and I would make a terrible sysadmin. Real UNIX, I would fail because I have never used it. The closest I have ever used to that was SunOS on a sparc station. So I wouldn't be overconfidant jumping into that course, and would probably be asking many questions. And it also explains why I am a security guard and not working in IT. I'll keep it my fun hobby though after work.

    33. Re:They should already know! by walshy007 · · Score: 1

      'why should I bother switching to something that doesn't work right out of the box and to which there is seemingly no basic level user support?'

      Well by that logic nobody should ever install something different than what was originally on their hardware, because it would be unsupported and has the slight possibility of not magically working.

      What's that? vista on a former xp machine? possibility of drivers not working, better not do it.

      The argument works for any upgrade that was not on the original hardware or is not supported by the original vendors. The fact that linux works so well when installed on seemingly random hardware it was never specifically tailored for is a testament to it's flexibility.

      Basically, what are you doing installing an os unless you know what you are doing in the first place? If you want a fully functioning linux system find someone like me that can do it for you and get everything going to your needs and requirements, otherwise expect troubles.

    34. Re:They should already know! by wonkavader · · Score: 1

      Universities give you the opportunity to learn just about anything. They are INDEED about broadening your horizons. But if you meet CS students who are not excited about computers, they are under the mistaken impression that they are in an expensive trade school. That's pretty common.

      Broaden their horizons: Flunk them. They should go study history and philosophy of science. They should get enthusiastic about the rise of the Holy Roman Empire. They should join a madrigal group. They should become obsessed with statistics. They should go do something they actually WANT to do. Computing clearly ain't it.

      Pushing should never be required. In the end, everyone teaches themselves. Or they don't.

    35. Re:They should already know! by CronoCloud · · Score: 1

      What year was it, and what kind of computer was it. Sure you bought a computer for $5...but if it was a C64 in say 2000, you're not going to learn about modern compuring on it....not even with GEOS.

    36. Re:They should already know! by Anonymous Coward · · Score: 0

      I have been on Linux distros for abotu 6 years now at home, and I can honestly say that I learn by breaking. When I can't watch porn, I learn how to configure a pluginwrapper, or how to do chown so I can get my mediaserver running again and playing MKVs. Thank goodness for the community. usually someone else somewhere has had my troubles, and has been kind enough to document a fix. All it takes is being really broke when window$ breaks real bad and not being able to figure out where that disc is... then the learning can begin. I now run my house media server, MediaTomb, in Gentoo and it is awesome. Barely any hardware (mobo, 2g mem, 2ghz proc, and 6TB of hard drives on an cheap, oldish raid 5 card)and works like a charm, all from terminal to avoid wasting precious processor on GUI. Keeps a noisy backend out of the livingroom.

    37. Re:They should already know! by ptuxdev · · Score: 1

      A lot of great hackers are self taught. But, there a many people who learn by seeking the help of of others.

      Agreed. Having taught myself what I know about Linux and learned some other things in the classroom in a similar fashion as I would reading random snippets on Linux forums, I cannot say what truly motivates freshman CS majors to learn something about Linux, either practically or theoretically. I will say, however, that Linux has enough market share in significant places (Internet infrastructure above all) that they should have some familiarity with the design considerations and motivations. It is also an effective platform to teach operating system concepts like thread synchronization and to simplify programming exercises (I did my Java class with vim and the command-line javac while everybody else struggled to configure and use IDEs). Linux concepts also help to complete the picture so that students, especially those going into computer science, understand the primary operating system players; Windows-based systems on the one hand and Linux/BSD/Mac OSX on the other. Another interesting draw is high performance/grid/cluster computing, which is done primarily in UNIX environments, and applications in graphics rendering in the entertainment industry. Just something to add...

      --
      Paul M. Nguyen; B.S. Computer Science; Registered Linux User #370740
    38. Re:They should already know! by copb.phoenix · · Score: 1

      Frankly... If we use that metric, of the some 40 or so Computing majors that I'm aware of, only about five really belong in the courses. I've taken Junior level classes since my first semester of freshman year - apparently to both my advisor and the professors over my major, it didn't occur to them that I was suit for the lower end classes. The class I'm helping with is an exception - I didn't need the theory or much of the history, but I did need the education in C++, and I personally asked to be put into it for that reason. Many of the people here expressing sentiments that CS students should tinker - yes I agree, but there's a point you reach where Linux isn't that far spread and can be scary to be faced with on your own. I learned by breaking it many, many, many times to get to my beautiful and slim Xubuntu in front of me running fluxbox and being more stable than even my professor's machine most of the time. It breaks when I make it break - and I do that usually once a break (eg ~ a holiday from classes) to help me learn a bit more. But, still ~ I agree. A lot of the students want the paycheck - not the work associated with it. When they stop seeing dollar signs and start seeing their own passions, they'll be in better shape... but I'm sad to say that I know people who are fifty and still haven't done so.

    39. Re:They should already know! by copb.phoenix · · Score: 1

      When you learn to challenge the norm even as you fight for survival, you learn what the true face of innovation is. Under your statements, so many things - including the United States of America - wouldn't exist. There's others; I'll leave you to search on your own.

  4. LAMP by neochubbz · · Score: 3, Interesting

    Have them set up a basic LAMP server. That's how I learned Linux. Or for something somewhat more practical for them, how about a seedbox or a mythtv-box. Frankly, the best way to learn linux is to just get your hands dirty.

    --
    Charming man. I wish I had a daughter so I could forbid her to marry one. -Arthur Dent
    1. Re:LAMP by allometry · · Score: 2

      I picked up Linux when I was 16, working for a local ISP. It was the first time I ever worked with a RADIUS server to auth our dial-up clients.

      I was encouraged by the sysadmin to try out Debian and just go nuts with it. I remember doing a complete install, getting X to work and then proceeding to fuck everything up. By the time I was 18, I was proficient enough at setting up a LAMP stack from scratch on Gentoo and eventually getting a Tomcat and Apache to work together with mod_jk.

      What sold me on learning Linux was validating my preference that I like things done a certain way. In terms of distribution, I love Debian. My fresh installs are 100% vanilla, all the way down to installing base packages. My web servers are clean and lite. I prefer knowing exactly package-for-package what is on the box, so I can easily maintain it and keep it secure. I still run a LAMP stack, but am looking at switching out Apache for Nginx, because of easier load balancing.

      I think that's the ticket to really getting someone to pick-up Linux, is that they have to got want to do things a certain way. It's not enough to sell them on the philosophy, but fufill the answer, "what's in it for me?"

      My proudest moment as a sysadmin was seeing one of my boxes round the 1000 day uptime mark.

      --
      http://www.allometry.com
    2. Re:LAMP by royallthefourth · · Score: 1

      While you're at it, teach them how to use vim. Knowing how to use the editor well will make all those little administrative tasks so much easier.

    3. Re:LAMP by neochubbz · · Score: 1

      Yeah, I picked up Linux when I was about 13 or 14. I was trying to set up a web server for a forum my friends and I ran. While my server never really got off the ground, I used what I learned to set up web servers and websites for business and student organizations at school.

      --
      Charming man. I wish I had a daughter so I could forbid her to marry one. -Arthur Dent
    4. Re:LAMP by wonkavader · · Score: 1

      Here here. Good idea.

      Other possibilities:
      a firewall
      a proxy server
      a group source code repository

    5. Re:LAMP by Anonymous Coward · · Score: 0

      Vim? Bah. Teach them standard vi instead. It will save them a lot of headache later.

    6. Re:LAMP by NortySpock · · Score: 1

      This. Find a goal that the students will find interesting (It hosts your own website! It doubles as a media center! Make a cheap computer for you and yours! etc.) and walk them through the tools they will need to accomplish that goal. (Personally, I just found having a bitchbox interesting, but not everyone immediately sees the value in that.)

    7. Re:LAMP by perlith · · Score: 2

      How did this get modded up?

      This is a FRESHMEN course. It is VERY LIKELY the concepts of "Linux" / OS, "Apache" / Web Server, "MySQL" / Database, "Perl/PHP/Python/whatever" / Scripting are all completely new to them. You want to throw all four concepts at a group of 18-year olds who may have never seen them. Fine, maybe as an optional reading for those interested, but not as a requirement.

      Look up North Carolina State University's E115 course. It is a required one-hour course all College of Engineering (including CS students) must take discusses computer fundamental. Physical/Mathematical Science students have a similar course as well. However, it is something fundamentally required as a part of the curriculum. Freshmen with the knowledge may take a self-study test and exempt out of the course. Those without, there's where the introductory knowledge comes in.

    8. Re:LAMP by EsbenMoseHansen · · Score: 1

      Don't forget to teach them punchcards, too!

      Seriously, vi(m) is an editor. Some like it, some do not, but it is not anything but an editor. Editors are dime a dozen, and most of them can do as much as vi can.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    9. Re:LAMP by Bacon+Bits · · Score: 2

      I wouldn't start on vi. I'd start with nano because it follows the same logic as programs the students would likely be familiar with. On most distros nowadays even when you run visudo you get nano.

      The key here is to make the learning curve not resemble the White Cliffs of Dover.

      --
      The road to tyranny has always been paved with claims of necessity.
    10. Re:LAMP by agw · · Score: 1

      Well, some "UNIX teacher" I know would even say that vi is already spoiling people. He always has his students start with a line editor.

    11. Re:LAMP by Ephemeriis · · Score: 1

      One of my college classes required us to install and run Linux on our own machines.

      The professor didn't offer much guidance aside from suggesting that we might want to back up anything important, and pointing us at a couple distros.

      It was up to us to download whatever it took to install Linux. It was up to us to set things up properly for a dual-boot or a virtual machine or whatever. It was up to us to install it, configure a couple users, and complete a few specific tasks.

      Then we had to report on our experience and what we'd learned.

      Terrific class, and an awesome experience. Learned an awful lot from actually doing it myself.

      --
      "Work is the curse of the drinking classes." -Oscar Wilde
    12. Re:LAMP by wazoox · · Score: 0

      Nano is a monstrosity, none of its keyboard commands obey to any standard, be it apple style, windows style, emacs style. I hate nano with passion. You can learn to do everything that nano can ever be used for in emacs or vi in about 10 minutes.

    13. Re:LAMP by Americano · · Score: 2

      Given that most command shells have a Vi and an Emacs command-line editing mode, I'd say that a day or two spent reviewing some of the easy ways of getting things done in vi/vim or emacs would be time well spent.

      Yes, they *can* learn it on their own. Just like you can toss somebody into the deep end of the pool and say "Thrash around for a bit while I go have a sandwich, when I get back, we'll see if you've learned to swim!"

    14. Re:LAMP by Bing+Tsher+E · · Score: 2

      Seriously, vi(m) is an editor. Some like it, some do not, but it is not anything but an editor. Editors are dime a dozen, and most of them can do as much as vi can.

      But 'dime a dozen' editors are not installed widely on most/all UNIX-type environments. Vi generally is.

      The point is to build on some very basic tools. Not to install 'some dime a dozen editor' everywhere you have a shell account.

    15. Re:LAMP by Bing+Tsher+E · · Score: 1

      One of my college classes required us to install and run Linux on our own machines.

      I would have installed NetBSD and told the prof where to stick it if that wasn't good enough. Then it would have escalated up the chain of hierarchy at the school if it became an issue.

    16. Re:LAMP by AlXtreme · · Score: 2

      +1 nano. Around 10 years ago during my CS undergraduate classes everyone could just pick what they were used to, but students that were still getting used to this here shell thingy were nudged to use nano first during the unix introduction class. Easy to pick up and get stuff done and graduating to emacs (or vi if you like colons) is relatively easy.

      And to the sibling post about nano not conforming to any standard: you're right. But when you've barely touched the surface of programming it's a relief to have an editor that has the basic control functions always displayed. Forcing them to learn vi is pointless when they can use those braincells to learn about asm, pointers and compilers. Learning how to use an editor has nothing to do with CS.

      --
      This sig is intentionally left blank
    17. Re:LAMP by Anonymous Coward · · Score: 0

      Editors are dime a dozen, and most of them can do as much as vi can.

      Yeah, whatever dude.

    18. Re:LAMP by Anonymous Coward · · Score: 0

      Right, so they can get used to non-functional home/end keys, from the beginning.

      But why stop there? Give them nano+Mac keyboards - there are no home/end keys at all!

    19. Re:LAMP by someSnarkyBastard · · Score: 1

      I don't think the point was that they were installing Linux per se but that the students had to install and configure a non-desktop oriented OS, and perform some administrative tasks in it. Ubuntu, Arch, LFS, FreeBSD, whatever, either way the student would have to research and learn how to do those tasks, I would imagine that half the difficulty of the assignment was learning where to go for documentation.

    20. Re:LAMP by Anonymous Coward · · Score: 0

      One of my college classes required us to install and run Linux on our own machines.

      I would have installed NetBSD and told the prof where to stick it if that wasn't good enough. Then it would have escalated up the chain of hierarchy at the school if it became an issue.

      He would have failed you on the assignment and that would be that.

    21. Re:LAMP by Bacon+Bits · · Score: 1

      I've never met anyone who -- with no training at all -- hasn't been able to open a text file with nano, make some changes, and then save and quit.

      I've also never met anyone who -- with no training at all -- hasn't responded to vi with "why can't I type" followed quickly by "OMG I can't quit!".

      --
      The road to tyranny has always been paved with claims of necessity.
    22. Re:LAMP by EsbenMoseHansen · · Score: 1

      These days, the arrow keys works almost everywhere as you would expect, as does del, backspace and insert and typing That's enough to last the first few years.

      The only exception is vi. For vi, the most important command to learn for vi is how to get out, as none of the conventional shortcuts works for vi.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    23. Re:LAMP by Americano · · Score: 1

      A mouse works almost everywhere you would expect too. Why not just teach them to use Windows then?

      If the point is "show them how easy it is," then don't bother teaching Linux.

      If the point is "show how powerful it is," then a day or two spent on command line editing modes in your favorite shell, and thus touching on vi & emacs usage, isn't a bad intro.

    24. Re:LAMP by EsbenMoseHansen · · Score: 1

      What can I say? I disagree. The power of Linux is not about ctrl-t to swap 2 chars in a command line. It's the openness, the flexibility and the power of the legion.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    25. Re:LAMP by Americano · · Score: 1

      The flexibility? The openness?

      If you can't find your way around the system, and you don't know how to edit anything, and don't even know what possible commands you can run... how does any of that warm-fuzzy language turn into anything more than rote indoctrination?

      We're talking about an intro computer lab for freshman, and we're talking about people who may not have any linux or command line experience. If you want to show them the power, you have to teach them how to tap into it themselves.

      I'd say that ctrl-t, regex-based find and replace, and other editor power-tools that are just a couple keystrokes away are a great way to demonstrate the openness and flexibility in a concrete way. "Now that you've learned the basic editor commands... look how flexible the Linux shell is: you can use those same commands to edit your command lines on the fly."

    26. Re:LAMP by EsbenMoseHansen · · Score: 1

      It demonstrates nothing, really, and if it did it was consistency rather than flexibility. Linux is not exactly known for consistency, though obviously whoever did the shortcuts for the shell was an emacs user. You could say the flexibility is that you can customize these keys, but that is true of most shells, as far as I am aware.

      Frankly, I do not think most people can appreciate the power in Linux immediately. Hence, I vote for sowing the seed (the warm-fuzzy language as you call it), preferably backed up with real-life use cases. And I vote for teaching bare survival, for which the arrow keys, insert, del and backspace is more than enough for editing at a first go. And sure, a few key shell commands.... or maybe just hand out a scream sheet and some exercises. I do not vote for hard-to-learn editors (vi, emacs are both in this category though vi is worse) --- in fact, for computer science students I'd jump directly to some appropriate IDE for whatever language they will use (KDevelop, Eclipse, etc.), plus whatever supporting tools they will have to know. After the initial shock, it is soo much easier to expand.

      --
      Religion is regarded by the common people as true, by the wise as false, and by rulers as useful.
    27. Re:LAMP by jgrahn · · Score: 1

      Have them set up a basic LAMP server. That's how I learned Linux. Or for something somewhat more practical for them, how about a seedbox or a mythtv-box. Frankly, the best way to learn linux is to just get your hands dirty.

      That's probably *not* in scope. These guys are Unix end users; someone is doing the administration for them, and they don't get root access.

      When I was a CS student, we had a lab full of SunOS machines, and we got a few photocopied papers describing how to use the shell, the basics of vi and Emacs, password safety, how to work the printers and so on. That was more or less enough.

    28. Re:LAMP by Anonymous Coward · · Score: 0

      Isn't that how everyone learns to swim? Or was that just me?

    29. Re:LAMP by Anonymous Coward · · Score: 0

      LAMP? I learned GNU/Linux by downloading SLS to floppy diskettes and installing it on an old computer. No fancy GUIs and definitely no LAMP. You learn the fundamentals by sticking to the fundamentals. These days a bootable LiveCD or LiveUSB distribution provides a sufficient learning environment and forces the student to actually learn the fundamentals of GNU/Linux.

  5. It's Relatively Hit Or Miss by Anonymous Coward · · Score: 1

    The ones that are dedicated and actually want to learn will be able to figure it out pretty easily, if they don't already know their way around *nix.

    The majority will whine and complain and ask over and over again "why can't we just use Windows". These are the ones that in my experience usually end up withdrawing from CS programs and enrolling in IS and MIS programs. There isn't really much you can do to encourage them.

  6. Start by... by Anonymous Coward · · Score: 0

    teaching them how to update those hardy's :P

    1. Re:Start by... by Arker · · Score: 3, Insightful

      If you want them to actually learn anything, I'd get rid of Ubuntu and use Slackware.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    2. Re:Start by... by GPSguy · · Score: 2

      Slack has some benefits if only because you end up having to compile from scratch in most cases, which can be instructional. However, Hook 'em and reel 'em in, then teach 'em what the tricks are for deciding on a distro, and help them do more complex things.

      --
      Never ascribe to malice that which can adequately be explained by tenure.
    3. Re:Start by... by Ironchew · · Score: 1

      What can you do in Slackware that is impossible in Ubuntu?

    4. Re:Start by... by Anonymous Coward · · Score: 0

      Yes, showing them a distro that they have to go through a compile process to install anything usefull would be a great way... for them to never touch linux again.

    5. Re:Start by... by TheRaven64 · · Score: 5, Funny

      What can you do in Slackware that is impossible in Ubuntu?

      Feeling leet.

      --
      I am TheRaven on Soylent News
    6. Re:Start by... by Nigel+Stepp · · Score: 2

      Amen to that. With 400 line grub config files, there seems to be this auto-complexification syndrome in Ubuntu. Not using the gui has become something for the advanced only. It's not really tinker friendly, and I think has become rather windowsy in that regard.

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    7. Re:Start by... by tomhudson · · Score: 1

      If you want them to actually learn anything, I'd get rid of Ubuntu and use Slackware.

      1. Get rid of Ubuntu
      2. .. and use any other mainstream distro

      Fixed that for you. Ubunto does not now, and never has had, the same goals as the rest of the community. It has a lot more in common with the over-hyping of vaporware (eg: Wayland) and the crappy software release history of Microsoft than with the stalwarts of the linux community.

      Overall, we'd be better off without them.

    8. Re:Start by... by Anonymous Coward · · Score: 1

      you can waste your time compiling source packages and re inventing the binary wheel

    9. Re:Start by... by Arker · · Score: 1

      Impossible? Little, if anything, of course. All based on the same upstreams, and source is available for all.

      But Ubuntu has a very nasty habit of making lots of normal, easy tasks extremely difficult, in their quest to make a windows-replacement for people that hate computers and dont want to learn anything. Bypassing all the GUI crap so you can actually get some work done or just get a clue what is actually going on can easily take a lot more time than just wiping it out and installing Slackware.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    10. Re:Start by... by Arker · · Score: 1

      Slack has some benefits if only because you s/"end up having to"/"don't need to fix a ton of breakage before you can" compile from scratch in most cases, which can be instructional.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    11. Re:Start by... by Cylix · · Score: 1

      I cut my teeth on slack and it is a fairly straight forward system.

      It will get them the basics of package management and the startup scripts can be easily dived.

      I probably would have stayed with it if work had not been redhat centric.

      --
      "You should always go to other people's funerals; otherwise, they won't come to yours." -- Yogi Berra
    12. Re:Start by... by solid_liq · · Score: 4, Insightful

      What can you do in Slackware that is impossible in Ubuntu?

      In Slackware, you learn how to do things on any Linux distro. In Ubuntu, you only learn how to do things in Ubuntu, Debian, and Debian derivatives. I owe to Slackware the fact that I can sit down and work with any Linux distro out there. It doesn't include its own special tools for anything, so you are forced to do everything the "standard Linux way," which is the way that works on every distro (with some special exceptions, like DSL).

    13. Re:Start by... by fluffy99 · · Score: 1

      Ubuntu does not now, and never has had, the same goals as the rest of the community.

      Which also explains it's popularity. The community Linux is and always has been elitist and feels dumbing down of the user interface to be a bad thing. The vast majority of computer users (including the Windows users the Linux community is targeting) actually want a standardized, simplified, easy to use interface. They don't give a rip about or ever want the ability to hit a command line and edit xorg.conf. They just want it to work, and this level of guided handholding is a primary feature of Ubuntu.

    14. Re:Start by... by Eudial · · Score: 1

      What can you do in Slackware that is impossible in Ubuntu?

      Make sense of the configuration scripts. In slackware, they're just that, simple bash-scripts that run as you boot the system. In ubuntu, you can count yourself lucky if it's only a script generated by another script based on four different configuration files scattered through the file system.

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    15. Re:Start by... by CAIMLAS · · Score: 1

      Party like it's 1999.

      --
      ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
    16. Re:Start by... by Anonymous Coward · · Score: 0

      Shell scripts are the most transparent way of booting, but also the slowest. Upstart, sreadahead, and systemd all offer improvements in boot speed, especially for SSDs. It's probably only a matter of time before they replace spinning media as the default for new systems.

      Is there really a need to edit your system's boot files by hand? Windows and Mac users certainly disagree, and OS X boots extremely quickly these days. The newly-named MeeGo Linux boots in about 5s on any number of ssd netbooks, even with the humblest of atom processors.

      Check out systemd, you should be able to use it with slack without too much effort.

    17. Re:Start by... by syousef · · Score: 2

      you can waste your time compiling source packages and re inventing the binary wheel

      That's otherwise known as learning how to compile your own packages. It's only a waste of time if you never progress from there.

      --
      These posts express my own personal views, not those of my employer
    18. Re:Start by... by Anonymous Coward · · Score: 0

      Ubuntu is a nice distro but their monitor support has become horrible and basically untweakable if you have an unsupported monitor. Monitors that used to be supported are no longer. That's why I've moved to Fedora on most of my systems (which isn't without its problems, but at least it detects my @#$ monitors!).

    19. Re:Start by... by Anonymous Coward · · Score: 0

      Ubuntu is ok.

      What I'd do is keep them on Hardy for the first two or three weeks to get familiar, then upgrade to Lucid Lynx. The first challenge after the upgrade will be getting everything that's borked, broke, and missing on the newer Gnome desktop back into working order. And no, simply hitting Alt-F2 and running a terminal command every time doesn't count. Nor does version regression back to Hardy Huron. To pass the test, it must have everything working as it did in Hardy from boot within Lucid.

    20. Re:Start by... by OneAhead · · Score: 1

      Dude, that's rough! A semester is barely long enough. I've been at it for 5 months now and there still are a couple of annoyances (that didn't exist in Hardy) I've not yet managed to iron out.

    21. Re:Start by... by Anonymous Coward · · Score: 0

      Who modded you "Funny"? That's insightful...

    22. Re:Start by... by Eudial · · Score: 1

      So it takes 4 seconds longer to boot by script? Just how often do you reboot your computer if you feel that boot time amounts to a significant time-waste?

      --
      GAAH! MY PRINTER IS ON FIRE!!! PUT IT OUT! PUT IT OUT!
    23. Re:Start by... by mscman · · Score: 1

      It doesn't include its own special tools for anything, so you are forced to do everything the "standard Linux way," which is the way that works on every distro (with some special exceptions, like DSL).

      That's just it, there is no "standard Linux way" unless you're referring to the kernel itself. I came from a RedHat shop and went to a SuSE environment. Things are in different places, a fact you have to deal with anytime you change distros. They all have quirks, even between the RPM distros.

    24. Re:Start by... by Arker · · Score: 1

      While Ubuntu is off on its own, Slackware always seems to manage to do things the standard way. So you actually learn Linux, and are fine on whatever arbitrary distro, or even a BSD, if you start with Slack. Whereas if you start with Ubuntu you just learn to rely on their stuff, which doesnt work when you try to switch.

      --
      =-=-=-=-=-=-=-=-=-=-=-=-=-=-
      Friends don't let friends enable ecmascript.
    25. Re:Start by... by tomhudson · · Score: 1

      I have to agree. Going from slack to freebsd wasn't that big a deal. Then again. I'm talking about slakware 3.something-or-other. You *had* to be motivated, since just downloading the floppies took forever.

  7. how i learned to use linux in 4 days by digitalsushi · · Score: 3, Insightful

    as a basement dweller i seriously needed an anime hookup. i spent 4 days straight learning how to compile programs, then mplayer, then what a codec was, via system libraries, the gui, how to compile E16, how torrents and other p2p worked.

    figure out something that drives today's youth with the same vigor, from the subdomain of scholastics. figure that out and you're a rich, rich person.

    --
    slashdot: where everyone yells sarcastic metaphors to themselves to understand the issue
    1. Re:how i learned to use linux in 4 days by tomhudson · · Score: 2

      as a basement dweller i seriously needed an anime hookup. i spent 4 days straight learning how to compile programs, then mplayer, then what a codec was, via system libraries, the gui, how to compile E16, how torrents and other p2p worked.

      figure out something that drives today's youth with the same vigor, from the subdomain of scholastics. figure that out and you're a rich, rich person.

      Porn, booze and drugs.

      That's been available freely on any campus LONG before open source was a buzz-word.

    2. Re:how i learned to use linux in 4 days by Anonymous Coward · · Score: 0

      on campus, open source... reminds me of this girl in my dorm. Wow...

  8. Show the CLI controlling the GUI by Sivar · · Score: 5, Interesting

    Many GUI applications can be controlled via GUI commands. Showing this helps students understand the link between the magic that goes on under the hood, and the actual action that takes place to make that happen.
    Sure, not everything is a GUI shell over a CLI program, but the concept of typing a command isn't that different from one of making an API call to Qt or GTK+.

    --
    Computer Science is no more about computers than astronomy is about telescopes. --E. W. Dijkstra
    1. Re:Show the CLI controlling the GUI by tunapez · · Score: 1

      I learned my meager CLI skills by installing Dapper server, then xubuntu gui and then proceeding to dissect the link commands, investigating switches/man pages and Goog'ing for fixes because many things didn't work right. Linux not quite working as well as Windows was a bonus for me(in hindsight, not at the time), and I'm better off because of it. Believe it or not, for that reason I am also thankful to Microsoft for Vista. If Vista wasn't a steaming pile I would have continued to put off delving into the Linux world. Thanks Bill!

      --
      Imagination drew in bold strokes, instantly serving hopes and fears, while knowledge advanced by slow increments...
    2. Re:Show the CLI controlling the GUI by Interoperable · · Score: 1

      I think that this would be an excellent way to start. I would go on to add that you should demonstrate some of the power of using the CLI and the basic GNU toolchain to do things that would be taxing to do in a GUI environment without dedicated programs. Find a simple task, such as batch renaming, and demonstrate how simple it is to do those things with the simple and powerful tools that already exist. Perhaps you could demonstrate some programs that have similar capability to expensive software on Windows or Mac but are available as free CLI utilities on Linux; mp3 tagging or batch image conversion, for example.

      --
      So if this is the future...where's my jet pack?
  9. Teaching the basics of linux use to freshmen by GPSguy · · Score: 5, Insightful

    I'd start with a two-pronged approach.
    1. GUI. Using something like Ubuntu, although I'm generally a CentOS bigot, teach them how to do all the things they know how to do in Windows: download and install software (using apt, for instance) and how to add an icon to the desktop. Teach 'em where to find applications of interest.
    2. Start teaching the command line. There are times when a GUI... anyone's GUI... is too cumbersome/restrictive to do things quick and dirty.
    2a. introduce them to 'script' and the concept of shell (batch) scripting.
    2b. as an addendum to 2a, above, give 'em an overview of the major shells and explain why Tom Christiansen thinks csh is totally unsuited for scripting.

    Don't preach about how much better Linux is than Windows... If they continue, they'll understand themselves. If they fall by the wayside, they never would have understood, anyway.

    --
    Never ascribe to malice that which can adequately be explained by tenure.
    1. Re:Teaching the basics of linux use to freshmen by jedidiah · · Score: 1

      Simply make them use it for their assignments.

      It could be Linux or it could be any other Unix. It could even be MacOS System 6.

      This isn't exactly a new problem.

      --
      A Pirate and a Puritan look the same on a balance sheet.
    2. Re:Teaching the basics of linux use to freshmen by AchilleTalon · · Score: 5, Insightful
      Command line usage and basic shell scripting is a must. Emphasize on pipe usage, quick and dirty scripting right on the spot.

      Another thing that should be teach to them is the disk space organization. This is quite different from Windows and newbies tend to put everything in a single huge filesystem. They should know some basic principles about LVM and all the kind of filesystems available with differences between them. Not an indept review, but a basic review of what is available and what they can do with this stuff.

      --
      Achille Talon
      Hop!
    3. Re:Teaching the basics of linux use to freshmen by Anonymous Coward · · Score: 0

      I counted four prongs.

    4. Re:Teaching the basics of linux use to freshmen by Anonymous Coward · · Score: 0

      Yes

      Although this depends on their level of confidence you need to make them comfortable with the operating system before they start the advanced stuff, different people will have very different definitions of advanced, it is however the definition of your class that matters. People who are nervous or afraid of the whole system will not feel able to experiment and wont feel like they understand the system even if they do. You will get a lot of advice to pick between but here is my take in detail.

      I would start by getting them to do very basic stuff word processing printing manipulating files and directories, all through the GUI. Only once they are conformable with this would I move on to the administrative stuff - permissions installing programs etc. For the command line I would start with text editing and move on through the same type of stuff they have coved in the GUI in the same order. Once you have taught them how to do basic stuff then I would move on form there in the direction you want to focus.

    5. Re:Teaching the basics of linux use to freshmen by Anonymous Coward · · Score: 0

      Wait, are we educating system administrators, or computer scientists?

      Teach them filesystems. Don't teach them how to format and mount fucking disks.

    6. Re:Teaching the basics of linux use to freshmen by AchilleTalon · · Score: 1

      Depends on the aim of this course. If it is about Linux as an OS, filesystems and the shell are important components. Learning how commands connects via pipes is telling something about the underlying OS. I didn't understand from the question it is a kernel internals course. This is left to the original poster to decide what to do with suggestions. Or, maybe it is just about how to use it. However, I still believe the above suggestions are much more closer to Linux than other involving LAMP, GUI and all this stuff.

      --
      Achille Talon
      Hop!
    7. Re:Teaching the basics of linux use to freshmen by MMC+Monster · · Score: 1

      Anything a CS major needs to know about linux, he or she should be able to figure out with a few google queries.

      --
      Help! I'm a slashdot refugee.
    8. Re:Teaching the basics of linux use to freshmen by Anonymous Coward · · Score: 0

      Don't preach about how much better Linux is than Windows... If they continue, they'll understand themselves. If they fall by the wayside, they never would have understood, anyway.

      So, teach them the inherent arrogance within the Linux community, as well?

    9. Re:Teaching the basics of linux use to freshmen by crutchy · · Score: 1

      I agree "Don't preach about how much better Linux is than Windows..." Also, my advice for university labs and keeping the interest of students... having been one myself (albeit engineering instead of CS), KEEP IT SIMPLE STUPID (KISS). Students of all disciplines have notoriously short attention spans and ready supplies of spit balls and laser pens. If you can't explain something in ten minutes, there is no point explaining. Demonstrate by doing and don't try to do too much. There will be those that do the absolute minimum required, and those that catch on and become interested but will want to explore for themselves. With regard to preaching of Linux over Windows, I'm passionate about the concept of cooperation over competition, I personally like the freedom of Linux and the versatility, and I like that I'll never run out of things to learn about computer hardware and software as long as I use Linux, but I don't hate Windows. I despise the corporation responsible for it, but I would never try to convert someone from Windows to Linux because of that. Indeed I think someone who just wants to use a computer for accessing email and using a word processor who doesn't give a rats about how it works would possibly be better off using Windows. In my humble opinion, the Linux community would be better off consisting primarily of users interested in using Linux, rather than users who were merely convinced that it was better than Windows. Otherwise websites like linuxforums would have even more of the "how do I get my iphone to connect" sorts of questions, along with even more RTFM answers. Using an analogy to the Matrix trilogy, Linux users could be compared with the free citizens of Zion, with multitude of ignorant people permanently connected to the Matrix being the Microsoft zombies. Even the Linux extremists trying to convince everyone to use Linux instead of Windows would love that one. To me the Linux community is sort of like an exclusive club (kernel developers are the elite group with all the geeky chicks dancing topless on their table). Perhaps the ones trying to convince others to use Linux over Windows are the ones that are too lazy to learn for themselves so they would rather convince others to put in the effort for them. Like a class of university students, the Linux community will always have those that do the bare minimum (perhaps just to impress their geek friends with screenshots of their latest compiz desktop) and those who are more enthusiastic about learning. Anyway. Regardless of the hows or whys (and whether or not Microsoft takes over the world), I'm proud to consider myself a part of the Linux community (even if I'm right out there in the "outer rim") and look forward to its guaranteed future.

  10. explore by Anonymous Coward · · Score: 1

    i think exploring the ubuntu directories wouldnt be a bad idea. if they know about computers, theyll see a lot of their knowledge reflected on how ubuntu (and other GNU/linux systems) are setted. i mean, the boot directory, the etc directory, dev directory and others, are interesting to explore. and how users are managed too. why theres a home directory? why so many limitations with access like 744, 777 and others. why the existence of a ROOT or even sudoers.
    a ton of things are interesting about unix based systems, i think it is the proper way to do computers science :) greetings from Argentina, im kilinkis

  11. Re:Lol by Anonymous Coward · · Score: 2, Insightful

    Spot on.
    If you want to confuse the poor windows brainwashed dears then try to teach them the Bash Shell and the Linux/Unix command line. That will only turn them off Linux for life.

    Switch it around and find things that make you drop into a shell.
    regex - very powerful.
    parsing OOTB
    Command chaining. - the awsome power of 'sed' & 'awk'.

    Do stuff that Windows just can't do. Find the USP's for FOSS/Linux etc
    Sell that to the poor dears.

  12. WHAT? by Ebbesen · · Score: 1

    CS students with no experience with Linux when they start?

    Damn.

    1. Re:WHAT? by Cidolfas · · Score: 3, Informative

      I'd say about 80% of the CS students at my college have never touched Linux, and program only Java and C#. Granted, they also seem to be there only to get the CS degree and get a steady job at a code mill, but they really don't seem to be interested in computer science. I'd expect this is almost universally true.

      --
      I am become /dev/null, destroyer of data.
    2. Re:WHAT? by Anonymous Coward · · Score: 0

      Don't be shocked. At the school I study, CS undergrads think that the standard for plotting graphs is via Excel.

      'nuff said!

    3. Re:WHAT? by Nigel+Stepp · · Score: 3, Interesting

      There are metallurgists and steel workers, and you're right, seems a lot of people go into cs now to be steel workers. I noticed this even at a school known for cs, many years ago (hmm, and steel too). I'm sure a core of metallurgists will remain though.

      --
      4096R/EF7BAFA6 79E1 DF98 D09D 898F 9A11 F6F0 DDDC 23FA EF7B AFA6
    4. Re:WHAT? by fluffy99 · · Score: 0

      That's because a CS degree has become synonymous with computer-programmer. I know I haven't seen anyone with a CS degree who could do much more than program (crappy at that).

    5. Re:WHAT? by Anonymous Coward · · Score: 0

      I know I haven't seen anyone with a CS degree who could do much more than program (crappy at that).

      So the only CS graduates you've met are nothing more than crappy programmers? You don't get out much do you.

    6. Re:WHAT? by RaymondKurzweil · · Score: 1

      That school that I guess is not going to be named (CMU), they also attempt to have a legitimate software engineering program. While I sorta appreciate the idea of making software engineering a real discipline, it seems like CMU is just a way for the creeps that think theories and writes-up about pair-programming are not weird at all to have a shot at tenure.

  13. Terminal by Anonymous Coward · · Score: 0

    Uninstall Ubuntu, and have them setup arch or Gentoo. In all seriousness thats how all of my friends who i can say are good with Linux first were able to fully understand it. Other than that, don't let them use the GUI for a while get them comfortable doing everything in terminal.

    1. Re:Terminal by Dr_Barnowl · · Score: 2

      This.

      I never really grokked Linux so well until I set up my MythTV box and had to use Gentoo because it was the only distro that had the ridiculously bleeding edge kernels that I needed for the drivers to support my DVB-T tuners.

      The setup guide was excellent - it explained the commands you needed to use, and WHY these commands and what they did as well.

      The first thing you teach should be how to summon a man page. And encourage that it be read before you issue the command.

    2. Re:Terminal by Anonymous Coward · · Score: 0

      I never really grokked Linux until I setup a Tivo box.

      Seeing the Tivo was the first time it was intuitively clear that two things were true: Linux had won, and the Desktop was dead. Both predictions have come true -- how many millions of Linux-based Android phones are sold every week? That's the future for Linux, not the increasingly irrelevant competition between a couple of obsolete desktop user environments based on a dead user paradigm from the late 70's.

      (And before you start, I was a Unix sysadmin back when "BSD or SysV?" was a question that made sense, and I've been a hard core Linux user since SLS. I know a lot more about Linux than 99% of Slashdot readers ever will. And as a desktop OS, Linux failed. Nobody should be using Linux on the desktop. If you want to use Unix on your desktop, just get a Macintosh already.)

    3. Re:Terminal by agrif · · Score: 1

      Gentoo was probably what taught me how to use Linux properly, because the installation itself is an educational experience. You partition your drives with fdisk, format them with mke2fs (and friends), compile your own kernel, and write your own grub configuration, all with a fairly well-written guide for each step. There's very little magick going on in a Gentoo system, because you write most of the configuration yourself.

      After a few installations of Gentoo (and about a year maintaining a Gentoo system) I knew about enough to build my own Linux system.

  14. Which GUI? by Kenja · · Score: 1

    That alone should keep the little SOBs bussy for a few weeks, and then the fighting can start.

    --

    "Have you ever thought about just turning off the TV, sitting down with your kids, and hitting them?"
  15. Beat me to it. by tomhudson · · Score: 2, Insightful
    If they haven't already looked at linux, it's because they lack the innate curiosity to find out more about their chosen profession.

    These are the types who will mostly not graduate beyond "I can admin a server because I know where to point and click" anyways.

    Even the simplest of tools, like vi or ssh, are pretty much beyond them.

    1. Re:Beat me to it. by punnie · · Score: 4, Insightful

      If you consider vi simple as opposed to a complex tool, then Linux is pretty much beyond me, also.

    2. Re:Beat me to it. by Mitchell314 · · Score: 2

      You're right. The real simple editor is echo.

      --
      I read TFA and all I got was this lousy cookie
    3. Re:Beat me to it. by noobermin · · Score: 1

      Echo isn't an editor without redirection ;)

      I have a friend who claimed to write a program in dd. Not kidding. ed is as far as I'll go and has the added benefit of not clearing the screen while running.

    4. Re:Beat me to it. by tomhudson · · Score: 2, Insightful

      If you consider vi simple as opposed to a complex tool, then Linux is pretty much beyond me, also.

      The basic commands are VERY easy. Most people get flustered when they accidentally get into "beep mode." (you'll recognize it when it happens).

      It's certainly no worse than debug or edlin were, and those helped bootstrap an entire industry.

    5. Re:Beat me to it. by SteveFoerster · · Score: 4, Insightful

      This isn't flamebait. I teach community college IT courses, and I would agree that if someone's a CS major and has to be dragged into checking out Linux, that person would probably ultimately be happier switching majors.

      --
      Space game using normal deck of cards: http://BattleCards.org
    6. Re:Beat me to it. by Anonymous Coward · · Score: 0

      You're right. The real simple editor is echo.

      You had echo? We had to use cat...

    7. Re:Beat me to it. by the_one(2) · · Score: 1

      I don't agree with this. I didn't start to use linux until right before i started studying CS. Now I use linux every day and I've got a nice little server running linux. I would consider myself proficient with basic unix tools.

    8. Re:Beat me to it. by catmistake · · Score: 5, Insightful

      This is flamebait. Computer Science has nothing to do with computers and nothing to with operating systems, Linux included. Computer Science is a subset of Mathematics, and like Mathematics, predates computers and operating systems by about 6 thousand years or so. There is no such thing as software engineering in the same sense that there is no such thing as mathematics engineering. Programmers are not computer scientists, and neither are systems operators or administrators. If any of these occupations are your goal, perhaps you should consider other more pragmatic disciplines and avoid the strictly academic ones, such as Computer Science.

    9. Re:Beat me to it. by Anonymous Coward · · Score: 2, Insightful

      Part of why I can't agree with this is lots of kids will be using the family computer until post-secondary school, and maybe they don't get to fuck with that one or (like my family's computer).

      Part of why I disagree is that I've just seen a lot of very successful students who never touched Linux before school, and for most or all of their school time still didn't touch it outside of homework.

      There's just so much to be interested in that alternative Operating Systems is kind of an arbitrary measure.

    10. Re:Beat me to it. by Sir_Sri · · Score: 3, Insightful

      Correct. You don't have to like linux, or want to use it as a computer scientist, but you should have some basic familiarity with what it is and how it works. I'm a PhD student in computer science and my actual work doesn't take me anywhere near linux, but I need to know what it *could* do for me (or more accurately for my workflow) in case that helps.

    11. Re:Beat me to it. by tomhudson · · Score: 1

      I don't agree with this. I didn't start to use linux until right before i started studying CS. Now I use linux every day and I've got a nice little server running linux. I would consider myself proficient with basic unix tools.

      Since you didn't say that you actually took a course in linux first, you might be proving my point.

    12. Re:Beat me to it. by zippthorne · · Score: 2

      Vi *is* simple, but it's also simply different from what you're used to: it's a modal text editor, while you're used to text editors with just a single mode.

      It came from an era before we had menus and freakin' arrow keys, but you can get by quite easily knowing only that you can drop into text mode with 'a' (append) or 'i' (insert), get back into normal mode with <escape> or control-[, and move the cursor around in normal mode with h/l (left/right) and j/k (up/down), and get into command mode with ':', where the commands for "save" will be ':w' and the command to quit is ':q'.

      You can improve your vocabulary of motions by using the build-in help as you find a need. It's very powerful, even to the point of regex motions, but you aren't required to use the powerful features just to make a few tweaks to config files.

      --
      Can you be Even More Awesome?!
    13. Re:Beat me to it. by Sir_Sri · · Score: 4, Insightful

      Linux is one of the potential components of your workflow as a computer scientist, and one of the major potential platforms for any work you may want to do. A mathematician who spends their life working in set theory still needs to know what differential equations are, and what they mean.

      Software engineering is a critical component of computer science, because computer science isn't mathematics, they are deeply related and intertwined, but not exactly the same. Computer science is about what you can do with information, that includes how you organize it. Computer science is both more and less than pure math, and different schools emphasize comp sci very differently, some are right on the metal focusing on building from hardware up, others work from pure math down, (and if you're in the area, waterloo starts at pure math and works down, Laurier which is basically in the same place starts with hardware and works up). You cannot actually implement the vast majority of ideas in computer science without some basic skills in software engineering, nor can you communicate effectively with other computer scientists about what ideas they have, or what ideas you have. Computer scientists and physicists aren't engineers, (and I count myself as both a physicist by training and work and a computer scientist by training now), but you need to know some of their tools to do your job. True, a purely theoretical physicist doesn't use a whole lot of electrical engineering. But a experimental physicist uses a lot of engineering materials regularly. A purely theoretical computer scientist, may use relatively little software eng, but a experimental computer scientist may use quite a lot. In that sense computer science is as much math as physics is, but it's something else too, since experimental computer science is concerned very heavily with how you actually store the information everything that comes with that.

      There's also a lot of very real research in software engineering processes as done by computer scientists, the big area at my school that I'm aware of (University of Western Ontario) is in automated software testing and performance analysis. Software engineering is a very real field, but until you try and build software involving dozens of people (not all of whom are programmers), and then try and keep it updated and maintained over many years, it's hard to appreciate how there's science there, but there can be quite a lot.

      Computer scientists *can* be programmers, they *can* be system operators or administrators, or something else, and or all practical purposes they have to be minimally skilled in programming and system operation. Please don't confuse job training with academic training. We aim to empower students to learn effectively and give them the skills and knowledge they need to be prepared for a general area (computing), what they choose to do with that is up to them. Some, well, the vast majority, will end up programming or

    14. Re:Beat me to it. by HornWumpus · · Score: 1

      Weather or not CS is math is offtopic.

      A person that is going to major in CS but hasn't the curiosity to use the damn tools on his/her own is wasting his/her time.

      Offtopic or not: Even if CS is math building working systems remains engineering. If you accept your premise that CS is math then no actual computer work is only CS.

      CS is taught out of many schools.

      A&S (math), Engineering and (spit) Business.

      The definition of CS varies.

      --
      John McAfee 'It was like that time I hired that Bangkok prostitute; to do my taxes, while I fucked my accountant'
    15. Re:Beat me to it. by Anonymous Coward · · Score: 1

      Industrial, civil, mechanical and computer engineers may disagree with your soft definition of engineering. I'm a sales engineer, so I'm totally on your side, and so is my wife, who is a recipe engineer.

    16. Re:Beat me to it. by Anonymous Coward · · Score: 0

      What exactly are software engineers engineering? How much does it weight? What color is it? What does it feel like? What does it smell like?

      As far as I can tell, "software engineers" are developers, or programmers with severe esteem issues (either too low, or too high). The term "software engineering" is pure marketing buzz word, if ever there was one. Why not "web page engineers?" and "wiki engineers?"

    17. Re:Beat me to it. by Firehed · · Score: 2

      I suppose it depends on the person. I knew just enough about linux (specifically the CLI; GUIs are all similar enough) to get around, but I didn't really start to get to know well it until about a year ago. It wasn't a lack of interest by any means, just a lack of needing to do it. This is mostly a result of changing from a managed to an unmanaged server environment, and the resulting need to fiddle more with config files and various extensions that were specific to the application I develop. People tend to use what they know, and if the basic programming class they took in high school covered only Windows-based development, they'll probably have had no need to become familiar with Linux. That doesn't make them incapable, just inexperienced. It's not necessarily their fault that they've never had a need to get their hands dirty - after all, you can get a WAMP stack up and running in about three minutes and start working on building some sort of web app without ever having seen a command line. Not terribly practical for the real world, but that's kind of the point of being a student.

      Learning from experience out of need is very practical for this kind of thing. Assign some arbitrary task designed to teach this kind of thing. Spin up a "clean" VM for every student in the class on RackCloud or wherever, give them an SSH login, and let them know they have three days to have a working Wordpress install online; bonus points if they're doing it with something other than Apache. It's not terribly in depth, but it should teach how to move around the filesystem, use package mangers, install and configure some sort of LAMP-like stack, some basic CLI text editor use, etc. More importantly, those who succeed will actually have a decent understanding of how to google for the right information, since that's half of the 21st-century learning process.

      --
      How are sites slashdotted when nobody reads TFAs?
    18. Re:Beat me to it. by fishexe · · Score: 1

      Echo isn't an editor without redirection ;)

      Yes, but applying redirection is trivial. ;-)

      --
      "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
    19. Re:Beat me to it. by Anonymous Coward · · Score: 0

      Three days? More like 30 minutes (and that's very generous). There are packages for Wordpress available for most distros - f.i. sudo apt-get install wordpress definitely works.

    20. Re:Beat me to it. by sycodon · · Score: 1

      The crank on the front of my car is simple. Just energize the ignition and crank away. Why bother with the complications of batteries, starter motors, etc?

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    21. Re:Beat me to it. by sycodon · · Score: 1

      consider other more pragmatic disciplines

      So you are saying if you want to actually produce something, bring value to society, support yourself and others, don't go for Computer Science.

      --
      When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    22. Re:Beat me to it. by Nugoo · · Score: 1

      Right. It couldn't be that they didn't have regular Internet access until they started university. It couldn't be that they couldn't afford a second (or even first) computer to install Linux on. It couldn't be that they're entering university to satisfy their curiosity. It has to be that they're idiots who'll never be able to grasp the concept of a CLI.

      --
      I explicitly release the above into the public domain.
    23. Re:Beat me to it. by Anonymous Coward · · Score: 0

      So if they already know everything about Linux and are curious and learn everything themselves, why should they even go to college?
      Maybe we should just tell everyone after high school: If you're don't know everything about your chosen profession don't bother trying to learn.
      I couldn't program when I started my EE degree. Does that mean I should have said to myself well to bad I should just work on a farm somewhere?

    24. Re:Beat me to it. by Korin43 · · Score: 1

      Vi isn't the easiest of tools (I don't use it because I prefer more straightforward editors), but it's not really that complicated. It's just different.

    25. Re:Beat me to it. by catmistake · · Score: 1

      In 2001, and prior, a new CS grad could claim a 65K/yr starting salary. Now... lucky to get $12/hr part time. What happened with law graduates has now happened with CS grads... too many of them... the market is flooded and their value is far less than the cost of education to produce them.

      Obviously, my statement was sort of a joke. A CS degree is an awesome individual accomplishment. But it's a shame when students enter the program because they "wanna fix computers." It's the same as someone seeking a degree in fluid mechanics because they want to be a good plumber (except that plumbers are well compensated even today... point is, the degree wasn't necessary). The C.S. degree was one of the few truly academic degrees that had immediate practical application. But now no one looks at it for what it is... namely, an academic degree, but it's now incorrectly seen as some sort of practitioners license to fix computers... which it is not and never was.

    26. Re:Beat me to it. by tomhudson · · Score: 1

      So if they already know everything about Linux

      Straw man argument alert. Nobody has ever said "already know everything about linux.

    27. Re:Beat me to it. by tomhudson · · Score: 1

      Right. It couldn't be that they didn't have regular Internet access until they started university. It couldn't be that they couldn't afford a second (or even first) computer to install Linux on. It couldn't be that they're entering university to satisfy their curiosity. It has to be that they're idiots who'll never be able to grasp the concept of a CLI.

      No, it couldn't be, because you can get decent linux boxes free out of the local dumpster, like this guy. People are throwing out P4s and AMD64 systems.

      And if you can't afford $200 for a netbook with linux pre-installed, you won't be able to afford the text books, never mind the supplemental course and lab fees, the student union fees, transportation, ramen noodles, etc.

      And there's almost always a free or unsecured wifi around.

    28. Re:Beat me to it. by zippthorne · · Score: 2

      Vi is like a car with a key, and a flap you could open to crank it if you wanted to. Or you could set it up so that the door opens automatically for you when you get close to the car, and it starts automatically when you sit down, and drives to your five most common destinations on its own....

      --
      Can you be Even More Awesome?!
    29. Re:Beat me to it. by Excaliburszone · · Score: 3, Insightful

      Right on. Most CS students are unaware that they have signed on for math, set theory, relational algebra, etc. They mostly think that they're going to learn how to program games and become rich.

      There's also the other subset of CS students who are forced to take beginning CS classes due to their major. Bioinformatics for instance. They really don't have the head to figure this stuff out.

      I would say that 95% of the CS students I have taught in lab or tutoring were in above their heads and 60% either switched majors or failed. Some of them failed the CS intro to programming 3-4 times before they figured it out.

      You may not realize it, but the 90/9/1 principle applies to CS as well. 90% won't get it, 9% will get through it, and 1% will go on to Masters or PhD.

      So, the best way to teach CS students about Linux is to wrap it up in a series of lectures that include different OSes such as Windows, Linux, Mac OS, DOS, etc. That's probably the only way to get them interested (most will gravitate towards the pretty ones).

      --
      Enjoy! -Excalibur
    30. Re:Beat me to it. by darkpixel2k · · Score: 1

      If they haven't already looked at linux, it's because they lack the innate curiosity to find out more about their chosen profession.

      These are the types who will mostly not graduate beyond "I can admin a server because I know where to point and click" anyways.

      Even the simplest of tools, like vi or ssh, are pretty much beyond them.

      Yup--there are two classes of techs that I've worked with in the past. The 'real geeks' go home at night and play with new technology. They learn new languages, play with operating systems, understand networking (probably IPv6 too), DNS, etc...

      The other class of techs has a short mental list of things to do when they encounter a problem. It usually includes reboot, unplug and re-plug cables, install Windows Updates, and maybe try overlaying the latest service pack. After that, they are calling the 'real geeks'

      I was talking with a tech yesterday and he related a perfect example. He was working on a computer that had a dying drive. There were no available sectors for reallocation and the drive had bad blocks preventing boot. Plus it would occasionally make the click of death. He stepped outside for a smoke with the intent of coming back in, booting into linux, and starting a 'dd' to copy the data to another drive. Unfortunately he came back in to find one of the lesser techs decided to 'fix' it. The lesser tech ignored the BIOS warning about SMART failure and ran chkdsk on the drive, then proceeded to defrag. By the time the tech came back from his smoke, the drive was toast.

      --
      There's no place like ::1 (I've completed my transition to IPv6)
    31. Re:Beat me to it. by CronoCloud · · Score: 1

      You do know that vi/vim supports the cursor keys and pgup/pgdown/home/end keys found on modern keyboards. And don't tell me that you should use the older method because it trains you for Nethack.

    32. Re:Beat me to it. by martas · · Score: 1

      bring value to society

      Heh, yeah, the invention/discovery of mathematics and computer science has brought no value to society. Except, well, it made pretty much everything else possible...

    33. Re:Beat me to it. by johnwbyrd · · Score: 1

      "Computer Science has nothing to do with computers" gets modded +4 Insightful? Slashdot has truly jumped the shark.

      Truth, not flamebait.

    34. Re:Beat me to it. by Firehed · · Score: 1

      The point of the exercise is to give them a weekend to tinker around, not get them running a blog. If that was the goal, they'd just sign up for a free account at wordpress.com. Although if all they get out of the task is knowing that typing "install [tool]" into their distro's package manager has at least a 50% chance of working for any random collection of software, they still come out ahead.

      --
      How are sites slashdotted when nobody reads TFAs?
    35. Re:Beat me to it. by bill_mcgonigle · · Score: 1

      Amen to that. It's the rambling of somebody who doesn't have the fortitude to apply CS to the real world, where things are hard.

      I imagine there are some theoretical chemists who never deign to enter a lab either, but fortunately most people have more sense than that.

      To be fair, the moniker 'computer science' is a bit dated. We don't call physics 'collider science', even though that's the primary tool used today to study the field. 'Computer Science' of the sort discussed is largely 'Information Science'. But then again, perhaps so is physics.

      --
      My God, it's Full of Source!
      OUTSIDE_IP=$(dig +short my.ip @outsideip.net)
    36. Re:Beat me to it. by C_L_Lk · · Score: 1

      To be more accurate, it depends on the environment you work in, but there are software engineers who *are* engineers and differ from programmers and developers.

      In the last company I worked for (a large well known much hated (but not as much as MS) software firm) - there were software engineers who never wrote a line of code -- that wasn't what they did. To use the old automotive analogy, they were to software what the guy in a studio with modelling clay is to the car design and building industry (the guy who never touches a part of the finished car in his job). They simply worked on design and architecture - how should the UI feel, how should this software work with other software, how should this software work with the OS and file system, how should this software accept incoming data, how should this software present its completed data, etc. These engineers took the fields of mathematics, philosophy, psychology, and information systems and tried to design frameworks for the software that the developers and programmers could then implement.

      Luckily I worked as a network admin so I got to avoid all of them as long as I kept my stuff running.

    37. Re:Beat me to it. by dkh2 · · Score: 2

      If you consider vi simple as opposed to a complex tool, then Linux is pretty much beyond me, also.

      Never hard wire simple to "easy to use" in a technical arena.

      vi does a great job as a straight forward console text editor. "Easy to use" often requires addition of complex tools like mouse integration.

      Before the invention of the axle the wheel was difficult to use.
      Adding a suspension system made use of the wheel easier still.
      None the less, the wheel is a particularly simple invention which can be difficult to use.

      --
      My office has been taken over by iPod people.
    38. Re:Beat me to it. by mitchplanck · · Score: 1

      This is exactly why I get frustrated to see a CS degree as a requirement when applying for a Network Admin/Engineer job. They're not the same thing. Although I see more frequently that it's optional as you can substitute experience for it, which makes sense. Only recently have universities and colleges started offering Networking type degrees/programs.

    39. Re:Beat me to it. by Desler · · Score: 1

      If they haven't already looked at linux, it's because they lack the innate curiosity to find out more about their chosen profession.

      Ahh the old LinuxTeachesCS(TM) nonsense. Why do you assume someone lacks innate curiosity because they ignore Linux? What if they would use SysV Unix or a BSD? Learning about kernels, compilers, programming languages, parallelization, AI, computer logic, computer architecture is completely OS agnostic.

    40. Re:Beat me to it. by Desler · · Score: 1

      Linux is one of the potential components of your workflow as a computer scientist, and one of the major potential platforms for any work you may want to do.

      And yet computer science seemed to do just fine as a field for some 50 years before the first version of Linux was even released.

    41. Re:Beat me to it. by zippthorne · · Score: 1

      No, you should use the older method because you don't have to move your hand off of the home row (especially if you remap capslock and control to each other). Nethack supports arrow keys now, too.

      But you shouldn't use hjkl OR arrow keys for moving around too much, when there are so very many much more efficient motions. The basics are just the basics.

      --
      Can you be Even More Awesome?!
    42. Re:Beat me to it. by Anonymous Coward · · Score: 0

      Computer scientists *can* be programmers, they *can* be system operators or administrators, or something else, and or all practical purposes they have to be minimally skilled in programming and system operation.

      Absolutely. And auto mechanics can be programmers and carpenters can be sys admins, and medical doctors can be nurses, and helicopter pilots can be scuba frogmen. But GP has a point. A programmer or sysadmin does not a computer scientist make... not by a long shot.

    43. Re:Beat me to it. by catmistake · · Score: 1

      The definition of CS varies

      Not so much, no. It means what it means, as defined, agreed upon, and accepted by actual computer scientists over the last millennia or so, and major accredited programs, and not what you want it to mean.

      Computer Science is the systematic study of computing systems and computation. The body of knowledge resulting from this discipline contains theories for understanding computing systems and methods; design methodology, algorithms, and tools; methods for the testing of concepts; methods of analysis and verification; and knowledge representation and implementation.

    44. Re:Beat me to it. by zildgulf · · Score: 1

      I agree in that Computer Science has a wholly mathematical base to it, but I disagree that it has nothing to do with computers and operating systems. Computer Science is the theory behind all of the computer stuff we deal with. It is the "why" to the "what" in all things considered a computer.

      Many freshmen that start in Computer Science are drawn by practical computer usage and then get to learn Computer Science's more theoretical and mathematical side as they go on, not vice versa.

      That is why many universities are setting up separate Computer Engineering majors, where the emphasis is more practical than theoretical. In college I has both disciplines and I can say that Computer Science and Computer Engineering were different enough disciplines but neither was better than the other.

      You may say that Programmers are not Computer Scientists but that is like saying Telescope users are not Astronomers. Obviously all Computer Scientists know programming, or knew how to program at one time, much like Astronomers know, or knew at one time, how to use a Telescope.

    45. Re:Beat me to it. by Nugoo · · Score: 1

      No, it couldn't be, because you can get decent linux boxes free out of the local dumpster, like this guy. People are throwing out P4s and AMD64 systems.

      Not everyone likes computer science enough to dig through trash for a crappy computer. I don't think that disqualifies them from being competent computer scientists.

      And if you can't afford $200 for a netbook with linux pre-installed, you won't be able to afford the text books, never mind the supplemental course and lab fees, the student union fees, transportation, ramen noodles, etc.

      It is definitely possible to attend university without having $200 to spend on a netbook. I did it for my first year.

      And there's almost always a free or unsecured wifi around.

      Only if you live in an urban centre.

      --
      I explicitly release the above into the public domain.
    46. Re:Beat me to it. by sulfur · · Score: 1

      At which point students start questioning what they are paying their tuition for. I myself learned pretty much everything from reading online guides/howtos and manpages, and I do believe that this is the most effective way to go. It seems to me that the answer is that a Linux course does not belong to a university-level CS curriculum. Students will have to learn it anyway, usually by the time they take an OS course (typically because of programming projects involving libpthread). A good idea would be to have a TA install Linux and/or teach some basic command-line tools in a recitation, but wasting more time on it is not necessary.

    47. Re:Beat me to it. by neurovish · · Score: 1

      ed is pretty simple. None of this confusing UI and interactive stuff.

    48. Re:Beat me to it. by neurovish · · Score: 1

      vi car, drive to the beer store.
      vi car, that beer store did not have the right beer, drive to the one that has the right beer.
      vi car, drive me home.

      vi car, I forgot where I just went and what I did, but it was awesome. Go do that again.

      vi car, I must puke, stop what you are doing right now and let me out. Really, I mean it, no questions.

    49. Re:Beat me to it. by tomhudson · · Score: 1
      If I were to sign up for a course in BSD, I would first read about it, then get a BSD system and play around with it, so as to get the MOST out of my class.

      As a teacher, I would expect - no, I would demand - the same from the students.

      As for the rest, completely off-topic, since linux was the question, not compilers, etc.

      These are university students, not granny at the YWCA.

    50. Re:Beat me to it. by tomhudson · · Score: 1
      Then don't take the course. How hard is that, anyway?

      If you don't have the prerequisites, then either

      1. study something else,
      2. get the prerequisites,
      3. put it off to next year.

      Now if this was a "club-type intro to ..." thing instead of a college or university course, I could understand slacking on the requirements. But this was not presented as that sort of scenario.

  16. Well, what DO they already know about computers? by excelsior_gr · · Score: 4, Insightful

    You won't get any sound advice if you don't tell us the background of your students. It is the most important thing in any tutoring class. If they have no idea what an OS is, perhaps you should start there. If they know how to use Windows (and understand what an operating system is actually doing), perhaps you could start by making a comparison of the two systems. Oh, and please, do not start with the "on UNIX everything is a file" thing. This has never, ever, helped anyone at that stage. Perhaps you could make a historical review to show, e.g. that in the before time, DOS was the OS and Windows was a GUI. Then tell them that Linux is the OS and Gnome is the GUI. If they get that, then jumping from DOS to Bash will be easy. And some general advice: If possible, do not guide them through a trivial task as a tutorial to show them how "things are done". I have always found such tutorials boring and uninspiring. Instead, give them a book, a manual, an online link or whatever where they can search for stuff and an easy task to perform. Make it like a competition: "let's see who can figure it out fiiiiiirst!" kind of thing. Also, remember that it has to be something that they can accomplish by looking in the material you gave them. The exercise is not for pumping up your own ego when you come to them after two hours with an answer that they could have never found.

  17. Split the class in half by TheRaven64 · · Score: 5, Funny

    Teach one half of the class vi, and the other half emacs. Then join the class back together for a discussion seminar.

    --
    I am TheRaven on Soylent News
    1. Re:Split the class in half by Anonymous Coward · · Score: 0

      Don't forget to point out to both that they have some roots all the way back in ed. Then make sure that someone in one of the groups feels they can arrogantly push their will on the other group. And the other group is told to band together to make their struggle coherent. Et voila, you have just recreated the conditions between Christians (think Crusades) and Muslims (jihad).

       

    2. Re:Split the class in half by Anonymous Coward · · Score: 0

      Or go Meta on them: tell them about wonderful commands like

      man man

      and

      ln -s foo foo,

      compile gcc, step through gdb, or use Emacs to... uh, just try using Emacs to do anything at all.

    3. Re:Split the class in half by asnelt · · Score: 1

      Dude, that is totally useless. ed is the standard editor.

      http://www.gnu.org/fun/jokes/ed.msg.html

    4. Re:Split the class in half by Seta · · Score: 1

      "discussion seminar"? Is that what kids call it these days? Back in my day we just called it "war".

    5. Re:Split the class in half by Anonymous Coward · · Score: 0

      In this circumstance, Emacs is like giving placebos to people with leprosy when you have the cure (vi) available ...
      All joking aside, they will already be given environments in which to program - whereas vi is such a basic, useful tool that it should be a teaching standard.

    6. Re:Split the class in half by noidentity · · Score: 1

      Most schools have policies against inciting violence.

    7. Re:Split the class in half by Fnord666 · · Score: 1

      Teach one half of the class vi, and the other half emacs. Then join the class back together for a discussion seminar.

      You, sir, are the epitomy of evil. Welcome to the dark side.

      --
      'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
    8. Re:Split the class in half by MarkRose · · Score: 1

      Be sure to give them all 486's, too, so they can experience the full joy of Eight Megabytes And Constantly Swapping or being Very Intuitive.

      --
      Be relentless!
    9. Re:Split the class in half by youn · · Score: 1

      486 wow, now there was a heavy number cruncher when it came out? you probably meant 8086 ;)

      --
      Never antropomorphize computers, they do not like that :p
    10. Re:Split the class in half by zildgulf · · Score: 1

      I hope you have taken away the weapons BEFORE the discussion seminar starts.

    11. Re:Split the class in half by Anonymous Coward · · Score: 0

      The half that ends the discussion with more people alive wins, but has to clean up the blood.

    12. Re:Split the class in half by Anonymous Coward · · Score: 0

      Teach one half of the class vi, and the other half emacs. Then join the class back together for a discussion seminar.

      rofl

    13. Re:Split the class in half by MarkRose · · Score: 1

      I tried running Linux on a 386SX back in 99 and it was beyond painful. I think a 486 would give a similar experience today, and show case the virtues of a text editor that doesn't include an operating system ahah.

      --
      Be relentless!
    14. Re:Split the class in half by AlienIntelligence · · Score: 1

      I tried running Linux on a 386SX back in 99 and it was beyond painful.

      "kids"...

      A 386 running BSD was our mail box and dial up box. c.1998

      Still have it, still runs. Anyone need 32x 56k modems? lol

      -AI

      --
      For me, it is far better to grasp the Universe as it really is than to persist in delusion
  18. Demo linux power on old hardware by Anonymous Coward · · Score: 0

    Find an old Pentium I machine, install Redhat 5, show them a remote ssh -X session running an app on a server.
    Compile a modular or monolithic kernel for your exact hardware and needs.

  19. Shouldn't take much by Urza9814 · · Score: 1

    They're CS students, so at least a couple kids in that class have certainly used Linux before. When it comes to teaching the GUI - you shouldn't have to teach anything. It's pretty much the same as Windows or Mac - if they can't figure it out just because it's a little bit different, they certainly shouldn't be in CS - or any science or engineering major for that matter.

    As for the command-line: Make the point that it's similar to what they're used to, but far more powerful. I.e., ls instead of dir, cp instead of copy - new names, same commands. But then show something like ffmpeg or some of the Gimp command line options - hammer in the point that you can do complex tasks like video or graphics editing just by typing in a quick command. And then show some piping - that's a big, important part of *nix IMO. Show that you don't have to reinvent the wheel if you can chain things together. And finally do some very basic shell scripting, to show how you would automate some of that stuff.

  20. Really? by Dogbertius · · Score: 1

    A few of my friends and I had already learned the ins and outs of Linux by Learning on Slackware 3.0 way back when before entering high school. This is pretty late to be starting, but it's a good call to be taking a proactive approach now. In any case, I would recommend getting a simple book on Linux installation, running, etc.

    Here's a good one: . There are probably better ones, but it's useful nonetheless.

    Once you can install and configure the entire OS via command-line and Vi, as well as write and build a simple C project using makefiles, you should be set. From there you could learn a bit on Bash scripting if you want, or you could even go as far as to learn how to build your own kernel. That is definitely a worthwhile exercise. Also, I strongly agree with Arker above. Go the Slackware route. To paraphrase an old quote: "Learn Ubuntu, know Ubuntu. Learn Slackware, know Linux"

  21. What I had... by Haedrian · · Score: 1

    In my second year at least, was "C programming in a UNIX environment".

    It scarred me for life. But you learn so so much about how *nix works from the inside. I'm assuming "CS" is the developing sector , not learning how to get it to run.

    1. Re:What I had... by gomiam · · Score: 1

      It scarred me for life. But you learn so so much about how *nix works from the inside. I'm assuming "CS" is the developing sector , not learning how to get it to run.

      I'm sorry you have such a fragile skin ;) Joking aside, "the developing sector" includes, usually, things like "getting it to run" (installation and maintenance). You don't program in a vacuum, and if you develop enterprise software you will have to worry about little things like that.

    2. Re:What I had... by Haedrian · · Score: 1

      (Added):

      Just to give an idea of the things we did, the assignments were

      1. Multi-player (different user) version of snake on the same machine. Needed to use shared memory to pass information - no pipes.

      2. A system whereby a function is executed remotely over an internet connection and returns an input. Think "Web services" written in C.

  22. Show the several faces of Linux by Anonymous Coward · · Score: 1

    What does Linux run?

    Google ... Wall Street... CERN... Watson (IBM machine kicking humans ass' in Jeopardy)... Several if not most of the top SuperComputers in the world .... the list goes on... It also runs the majority of webservers on the net [citation needed] as well as on the majority of cell phones on the planet [citation needed]. Linux is pretty much everwhere these days, and most people don't even know it. Make them aware of this fact.

    What is Linux?

    A kernel. You could describe to varying degrees of technicality what this is, and that all OS' have a kernel, but whatever you decide make sure it's accurate, and most importantly clearly relatable to your students.

    Why should your target audience care about Linux?

    Simply put, it is designed with the idea of community and free communication of its components. Simply put, the idea of a freely distributable kernel and codebase gives the user the freedom to create, learn, and improve for the betterment of its implementation (word this better than I ..). Now would also be a good time to explain what a distro is, and why there are so many. Also, discuss package management and it's usefullness.

    Where is Linux going?

    Everywhere it isn't, which isn't too many places, including their present personal computer.

    The point: Communicate to your audience effectively and get them excited about, AT MINIMUM, trying it out (here enters virtualbox). Explain that it is ok to screw up your first install (we all did!!!!!!) and learn what you did wrong. How, learning to use Linux, will possibly make them think different about computers, how they use them (the GUI ?!?!?!) , and that with minimal effort and understanding of the underlying code, they can help improve Linux, the framework built around it, and how it is ultimately used. AND, that yes! There is a learning curve. Challenge them, but don't scare them.

  23. And what is the purpose of the class? by joeaguy · · Score: 1

    Is this just a class on what Linux is and how to use it, a class on system administration, a class on operating system architecture, a little of everything?

    I would say to:
    - First give students a broad overview of what tools there are, GUI and command line. Let them see it is useful and what the big moving parts are. Wow them a little.
    - Explain what Linux is:
          - What is free and open source software and why is that important
          - Some history behind why Linux exists, and how it got there
          - Explain why Linux and the tools on top of it are important, who and what is using it and how
          - Explain terms things like distributions, the choices available, live cds, etc
    - Get technical:
          - Introduce the shell and some basic scripting
          - Explain software installation and choices
          - Explain the boot process and system configuration files
          - Do a concrete project, like set up a simple web server, starting from a clean install

    I would take a look at what the typical future classes the student's might take and demonstrate how Linux lets them do the things they will be learning in depth later, giving them a broader introduction to the computer science curriculum where you are teaching. In the end, they need to see that Linux is a useful tool that gives them power and choices that Windows and Mac don't always give them, and that is something important to their future education and employment. And have some flexibility to follow the interests the students present in the class.

  24. First Time Teaching by perry64 · · Score: 5, Insightful

    I'm assuming that this is your first time teaching anything (at least officially... we all teach often in our lives) and so my advice will dwell more on that then the technical aspects.
    As a teacher, your responsibility is to help them learn. Remember that learning takes place inside the student's head; you can present the information, but if it they don't learn it, it is not a success.
    1) Some people have indicated that the students "should" know certain things. I'm assuming that the class has no pre-requisites, so you shouldn't be assuming that they know anything. Many people who do things like that do so to make themselves feel better; these students are the ultimate newbs, and treat them like you'd like to be treated. Remember that they are not stupid, just uneducated, and they are in your class to correct that.
    2) When you give an assignment, make sure you have done it yourself, on a box that has nothing more installed on it than what they will have installed on theirs. Nothing is so frustrating for students and embarrassing for instructors as an assignment that can't be done because something silly wasn't set on their boxes, such as path variables.
    3) Remember that things that don't take you very long will take them many times longer, probably 3-5x as long. So if the assignment you give them takes you an hour to do,... You may want to give them that much work, but make sure it's because you planned it, not because you didn't think it would take that long. I would also recommend giving an estimated time, which should be for the average student it class, and tell them that if it is taking them longer, they need to get help somewhere.
    4) Read through the assignments carefully, making sure that they are unambiguous. Not just to you, with your great wealth of knowledge, but to someone of the students' level.
    5) Plan to spend significantly more time than expected on all this. This includes time in class explaining things that you expected them to know or thought were obvious and outside the class preparing your lectures, labs, etc. Until you've taught a class 2-3 times, there are always time sinks that you didn't anticipate.
    Good luck!!!

    1. Re:First Time Teaching by Have+Brain+Will+Rent · · Score: 5, Insightful

      1) Some people have indicated that the students "should" know certain things. I'm assuming that the class has no pre-requisites, so you shouldn't be assuming that they know anything. Many people who do things like that do so to make themselves feel better; these students are the ultimate newbs, and treat them like you'd like to be treated. Remember that they are not stupid, just uneducated, and they are in your class to correct that.

      As someone with long time teaching experience let me give my own version of #1 above:

      1) Find out what they know. Survey the class to see what computers, systems, computer-like devices etc. they have had experience with and then you can perhaps take a lesson or two to try and get everyone up to about the same general level of understanding as their fellow classmates (as it pertains to the course of course). After your first feedback do a bit of research and try to find them some extra material for the ones who will need to do the most catching up, for them to read/examine on their own time.

      Otherwise you will be spending the entire semester with a set of students who will be having fundamentally different problems learning the same material.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    2. Re:First Time Teaching by noidentity · · Score: 1

      BTW, your post would have been more readable if you used paragraphs with a blank line between them. It helps the eye parse the structure better.

    3. Re:First Time Teaching by eugene+ts+wong · · Score: 1

      Also, if time permits, test your lesson on people, without clarifications and corrections. See what typical errors crop up. See what misunderstandings crop up. Often times, it really is the teacher's fault.

    4. Re:First Time Teaching by Anonymous Coward · · Score: 0

      Please learn the difference between then and than.

  25. Two Questions by jasnw · · Score: 1

    First, if they aren't "engaged" in learning Linux, why the hell did they sign up for the class in the first place? (Or is this a deparmental idea to force-feed Linux to a bunch of Windows-trained students?) Second, why is a sophomore teaching a freshman class? I have issues with grad students doing what the profs are paid to do, so I have serious issues with a sophmore taking this on. If the university/department feels this is an important course, it should be taught by a prof, particularly to freshmen. (Or does the department feel that a prof's time is wasted on lowly freshmen?) OK, so maybe more that two questions.

  26. Pipes and more pipes. by tempest69 · · Score: 5, Insightful

    I'm biased.. But I think that the concept of pipes can really be impressive.. so
    ps aux | grep username | grep -v grep | awk '{print "kill -9 "$3}' | bash
    is awesome to understand.
    Have them do a dpkg -l on a box and make an install script for hundreds of packages. Have them hunt for credit cards #'s using regular expressions, then pipe those through a cc# validator script (yes how to use a computer for evil-- a nice weeklong break of doing bad things).

    Teach them how to use Wget to stalk on facebook... heck that will keep them engaged the most, though it does rack up their dark side force points a little too quickly.

    1. Re:Pipes and more pipes. by ilikejam · · Score: 1

      # man pkill :)

      --
      C-x C-s C-x k
    2. Re:Pipes and more pipes. by tempest69 · · Score: 2

      Of course pkill works.. that isnt the point.
      that just makes them remember one more linux command..
      though I would still mod you informative ;)

    3. Re:Pipes and more pipes. by royallthefourth · · Score: 1

      ...if your system has it installed!

    4. Re:Pipes and more pipes. by Anonymous Coward · · Score: 0

      Don't pipe to bash. That's fucking nasty. Use xargs instead.

    5. Re:Pipes and more pipes. by Anonymous Coward · · Score: 2, Informative

      that is the ugliest pipeline I have ever seen. what you're trying to do doesn't even require pipes. learn some fucking manpage.

      kill -9 `ps -o pid -u username`

    6. Re:Pipes and more pipes. by Anonymous Coward · · Score: 0

      why not: "ps aux | gre username | grep -v grep | awk '{print $3}' | xargs -n1 kill -9" ?

    7. Re:Pipes and more pipes. by Anonymous Coward · · Score: 0

      Better hope you don't have usernames that spell out program names.

      The classic candidate is "joe", but everybody will love you if you try that for users "kdm", "gcc" and "bash".

    8. Re:Pipes and more pipes. by Anonymous Coward · · Score: 0

      ps aux | grep username | grep -v grep | awk '{print "kill -9 "$3}' | bash

      ps aux | grep [u]sername | awk {print "kill -9 "$3}' | bash

      there, one less pipe for ya. Understanding that is even more awesome.

  27. can't be said enough by Anonymous Coward · · Score: 0

    RTFM

  28. Command Line Literacy by seandiggity · · Score: 1

    It's not spectacular, but I have some basic classroom materials up here: http://seandiggity.dreamhosters.com/cll

    --
    Geeks like to think that they can ignore politics, you can leave politics alone, but politics won't leave you alone.-rms
  29. Concepts and implementation. by fahrbot-bot · · Score: 1

    While I have my own ideas and the professor over this class to lean on, I've found it difficult to get the few students that I've tried to teach in the past to connect the dots and understand how it relates to what they already know about computers.

    Not to be mean-spirited, but this generally means that either you don't have a strong enough grasp on the subject material and ability to relate it in terms to which your students can relate, or your students don't actually know anything, or enough, about computers, or you/they have too much system-specific knowledge and not enough general knowledge.

    Computers are simply a tool, albeit a complex one, that can be used for many, many purposes. One must know the capabilities and, more importantly, the limitations of this tool. For that to happen, they must know how it works. Not simply how Linux works, but general concepts of what goes on and why. Better understanding of these are more universally useful as they are applicable to most other systems.

    Teaching the "major ins and outs of the Linux terminal and GUI"? That's pretty basic, but the concepts are not specific to Linux. I would argue that focusing too closely on Linux specifics would be like teaching a class in Excel rather than spreadsheets. This can lead to tunnel vision later.

    Case in point, we once had a fresh-from-college hire who installed SunOS - not Solaris mind you, so this was a long time ago - his Sun workstation, configured root's home directory as "/root" - as was on the Linux system he used in college - and then wondered why not everything worked as expected on his system. Granted, in a perfect world it would have worked, but in reality some systems and applications have assumptions for "root".

    The lesson being: Learn systems in general, learn how they differ, tailor your work to the system. Just my $.02, with 25+ years as a system admin, system programmer on almost every kind of Unix (and, sigh, some Windows) systems known, from Cray to PC.

    --
    It must have been something you assimilated. . . .
    1. Re:Concepts and implementation. by rjstanford · · Score: 1

      Good points here. Additionally, learning the command line is like learning the wrench. It takes a few minutes to get the basics down, the rest is all in how you use it in different ways to solve different problems.

      Besides, after the first week, what you should be teaching is scripting, the concept of gluing together prebuilt tools to work on a given data stream to do wonderful things.

      The Power Tools book could be a good asset to you, here. Tons of great, short, impressive examples of things that are relatively trivial to a scripter, and very hard to someone else.

      --
      You're special forces then? That's great! I just love your olympics!
  30. Re:Lol by Mitchell314 · · Score: 1

    don't bother..

    That was the case for my introductory csc course; almost everybody already knew linux.

    --
    I read TFA and all I got was this lousy cookie
  31. Have fun(it will allow them to have it to)! by hrrY · · Score: 1

    From my experience, the best way anyone learns anything at all is by being introduced to some aspect of it that is basic, fun, and practical to that relative interest(s).

  32. The filesystem is a good starting place by Anonymous Coward · · Score: 0

    The filesystem is one aspect of a computer system where the GUI and the command-line complement each other very well.

    Navigating the filesystem graphically should be familiar to the students (esp. with Windows backgrounds) and the basics of "changing directory" (cd) and "listing" (ls) will demonstrate the basic elements of navigating. The drag-and-drop metaphor can be demonstrated with "cp" and "mv" and you can go from there to "find", pipelining, etc. Come up with some examples about what kinds of operations are easier in which mode.

  33. Doesn't compute by ThePhilips · · Score: 4, Insightful

    [...] Teaching Linux [...]

    Best thing is to not "teach Linux," but to "teach on Linux."

    --
    All hope abandon ye who enter here.
    1. Re:Doesn't compute by SocratesJedi · · Score: 1

      Best thing is to not "teach Linux," but to "teach on Linux."

      Yes, I'd agree with this. Nobody reads man pages for fun, but will happily read them to figure out why things aren't working when they have a goal in mind. Give them a basic (interesting!) project to do (parse some data to do something neat or somesuch?), tell them about man pages and other internet resources and let them have at it. Be around to help if things don't work though: don't forget how incredibly frustrating getting stuck during debugging in an unfamiliar system can be.

    2. Re:Doesn't compute by Anonymous Coward · · Score: 0

      [...] Teaching Linux [...]

      Best thing is to not "teach Linux," but to "teach on Linux."

      That's kind of what I was thinking. And what does

      "teaching computing labs"

      mean, exactly?

      I'd suggest before continuing the submitter take at least one course in how to communicate effectively in writing. This is part of the whole "well-rounded education" idea which requires electives as part of your degree; quit sleeping in English class.

    3. Re:Doesn't compute by gnapster · · Score: 1

      My first CS class (when I transferred from a community college to university) was CS 101, Software Engineering (in Java). We were using Eclipse on Windows, in the lab. Our undergraduate TA offered an optional session wherin he walked us through the experience of logging in to the department's Linux server, then coding, compiling, and running a simple Java program there. I had used Linux on the desktop before, but never for programming, and certainly not over ssh. It was illuminating, and I fell in love. I try to avoid Java lately, but use Linux every day.

      Some people here are moaning that if students don't know Linux by the point they take this class, they shouldn't be in Computer Science. But one has to learn somewhere, and I think that learning from a peer (like an undergraduate TA) is an excellent place for initial exposure.

  34. Some ideas by next_ghost · · Score: 1

    After you cover the basics, you should give them simple tasks which can be easily automated in shell but can take hours of clicking in GUI due to sheer amounts of data to process. These tasks can vary from sorting files from one big directory to several subdirectiories according to filename or contents to generating useful stats from a huge log file. And don't forget to make them both read and search man pages as much as possible.

  35. Their Imaginations by b4upoo · · Score: 1

    I think that the trick may be to cater to their imaginations. The young have all kinds of desires concerning computing that adults may have shed off already. I'm still eager to recreate that certain girl from high school. The catch is that they have been exposed to some neat stuff through their friends as far as programs go. So try to sell them on what the future can do for them with computers. robots, etc.. Towards that goal Linux and Ubuntu in particular can make it rather easy to set up computing clusters. The imagination runs wild when we begin to think about what a few thousand high end personal PCs might do for us or for that matter a few thousand game machines all working together.
                Replacing actors with a collection of characteristics from famous actors might spark their interest. There are already bands on tour where some of the instrumentalists are robots. And any software that they could work on to convert sound to a written score for the piece might hold some of them in eager attention. In other words take that god complex that lurks within all of us, that desire to be really powerful, wrap that with some goal to which they have a strong emotional attachment and try to build sample programs to accomplish each portion of the goal.
                I can imagine having a wrist watch type of device that is uber educated across a variety of fields that interacts with my surroundings and speaks up with huge expertise when I am in various situations. If we could develop reactive, portable, intensely educated devices imagine what we could do. You could walk up to a milling machine like an advanced machinist with 40 years of top experience and do everything that machinist does. You would simply have to be willing to listen to the machine on your wrist direct everything that you do. If you want a tomato farm the machine could tell you every little motion needed to create and run that farm. If you want to invest in the stock market the device could control those actions as well. You would still have choices as the device could point out more than one great way to go. If you get that dream alive then you can talk about numerous programs such as compression and fast info access in both code and hardware in order to store and use such great sums of data etc..

    1. Re: Their Imaginations by hoggoth · · Score: 1

      Along the lines of what b4upoo is saying, team them the TimeCube.
      Thanks b4upoo.

      --
      - For the complete works of Shakespeare: cat /dev/random (may take some time)
  36. From experience... by rogueippacket · · Score: 1

    Here are a few things which have worked in my classes:

    1. Start from scratch. Give them an ISO of a command-line only Linux, like Debian netinstall.
    2. Command-line only. Seriously. Give them a handout with the basic commands (man, dir, cat, touch, etc.), and ask them to figure out what they do.
    3. For their midterm project (you're having them do projects, right?), ask them to build a LAMP server.
    4. For their final project, have them build something to run on the LAMP server - such as a basic SNMP-based Network Management System, or maybe even a code repository if the class isn't that advanced. Either will force them to learn a scripting language, Linux networking, sudo, cron, file permissions, etc.
    5. Finally, like so many other posters have pointed out, if you have some students in the class who already know Linux, turn them loose to create something of their own to show the rest.

    I know it can be a bit of stretch for first year students to actually build and run a LAMP server, but really, these are things any CS student needs to know. There are a million step-by-step books on the topic, and I've had students quite regularly go from naught to Guru during a single semester. If the motivation is there, they will learn. Don't be afraid to push them.

  37. It is a tool by fermion · · Score: 1
    The computer is a general purpose tool which is specialized through the software. Teach the kids the basics. Have them practice the basics in class, then as quickly as possible design and implement products. The biggest mistake that I have seen is teaching the tools outside of context.

    This may mean allowing different student to persure different products. Some can build a web server, some can write an online application, so can write security utilities. I recall one class that taught fortran through the calculation of the radius of the Bohr atom.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
  38. 50% basics + 50% question and answer by millisa · · Score: 1

    As others have said 'teaching computer labs' is a bit ambiguous. The fact that you are talking about a 100 series class, I'm assuming means something more along the lines of 'how do I work in this linux based computer lab', not 'how do I learn everything there is to know about linux'.

    Though the majority of the people here are flabbergasted that those in a CS class haven't touched linux already, it is a different time. Keep in mind, those same people haven't touched VMS . . or punchcards. A brief history of linux and why it is useful couldn't hurt. Some key notes like the number of systems that use it for web based systems can bolster the view that it isn't just some basement nerds hobby OS. Brief = Brief, keep it 5-10 mins to keep eyeglaze from setting in. Some of the students are there for the joy of learning, some are there just for the degree so that they can make money. A few stats on how linux = money for them personally would be good, avarice is a motivator.

    In your shoes, I think I'd cover the basics you'd need to know in any OS first. "How do I copy a file?", "How do I move a file?", "Can I get that deleted file back?". Moving up to how do I use the editors (both GUI and CLI). Knowing vi is great and all, but it can be a big mouthful the first time you look at it. Keep it simple. Most importantly, teach them how to find the answer to their questions when you aren't there. Linux has been around long enough that there are often a dozen ways to accomplish the same thing and some of the advice out there is outdated or just convoluted. Having some prepared cheat sheets for them would probably be good.

    Once you've had time to cover the basics, spend time doing question and answer. You don't necessarily know how much exposure these people have had to Linux. They will have had experience with windows or mac os (and hopefully you have too). Let them ask 'How do I do X in linux that I know how to do in -myOS-'. This is of course dependent in how expert you are with those OS's. If your answers end up being "Its much easier in linux, all you do is X" you are going to win converts. If you can't give an easy answer, don't try while standing in front of them and fudgin your way through it; note it down and get back to them tomorrow. If you've ever watched someone try to figure out an answer in front of you, you can get misdirected by the different places the knowledgable user checks to get to the end goal. Many freshman enter university with a laptop, have them bring it with them. Often they can show you what they want to do quicker than explain it.

    Cover the things they care about. If they don't know pidgin, show it to them (and how to remove it since these are shared machines). Here's your facebook page (I know, I'm ill suggesting it too), here's a feature rich office app to try out, and anything else the kids on my lawn care about.

    Finally, show them how to interact with linux systems using their OS of choice. Just because you run windows doesn't mean you can't be a linux fiend. If they can get on servers remotely via SSH, show them how so they can keep poking at their own pace.

    I wouldn't encourage them to install linux on their personal systems if they aren't familiar with it; they'll end up frustrated when they don't know how to accomplish a task and can't figure it out before the next time they get in to ask you. The minute they reinstall back to Windows/osX, you've likely lost them.

    I'm a bit confused why a sophomore is teaching those 1 year behind... The professor is surely paid enough...

  39. Compiling. by Anonymous Coward · · Score: 0

    Uh, this is *computer science*, that is exactly the sort of thing they have to learn and understand and actually *do*.

    1. Re:Compiling. by CronoCloud · · Score: 1

      Running "./configure && make && make install && ldconfig" is not computer science. It's a form of system administration. I don't have any kind of a degree at all and have compiled many times...but I am no computer scientist.

  40. How I taught a complete noob (now he's a sysadmin) by Anonymous Coward · · Score: 0

    I had a friend that had some prior networking training, but did helpdesk approach me about learning Linux. His ultimate goal was to learn how to be a sys-admin. I trained him well enough for him to get a real SA job. Here's what we did.

    We got a cool but really old server he had out. It was a 4 way Pentum 233, with scsi, and raid (in other words an old, but "server class" machine). We started by installing Gentoo Linux, by building the stage 2 environment, then compiling the kernel. Along the way, I made sure he had a complete understanding of what he was doing. I think this alone took 6 weeks. He had to learn bash, and vi along the way so he could do what was needed. We covered the kernel, the init process, kernel modules, swap files, file systems, disk management, user management, permissions, logging, etc.

    Once it was up, we never bothered with installing Xwindows. We built sshd, sshd in, and then made it into a lamp server. I also gave him assignments like figure out a way to serve up a file from your nas device over apache from your server, etc.

    Once we did that, we switched over to Redhat Enterprise Linux, showed him the ease of working with a package based system.

    Now that I recall, we used O'reilly's running linux as a general reference, and guide as well. After about a year of him learning it, and having me give him real world type labs, he got a Unix admin job for a major university.

  41. simple by monkyyy · · Score: 0

    print out this xkcd.com/627/ highlight the google one
    and move on

    --
    warning pointless sig
  42. it's a bit dated... by capsteve · · Score: 1

    but chris taylors' thesis is something i give to unix neophytes who might be interested in learning more about unix and vi.
    it either scares them away, or draws them in, but that's up to them to figure that out, evangelism will eventually just wear you out.
    IMHO taylors' writing style is amusing and might keep a reader engaged. even though it is unix agnostic i think the ability to speak to the uninitiated and offer them a quick stepping stone document without being overly cryptic or aloof is more helpful then sudden immersion into uber geekdom.

    you want to scare a neophyte away, try encouraging them to read unix koans of master foo

    --
    three can keep a secret, if two are dead - benjamin franklin
  43. Make it relevant by Vrtigo1 · · Score: 1

    You need to find a way to make it relevant. None of them are going to put in the time necessary to understand it if they don't see how it's useful to them. If the students are in a networking or security related program, maybe show them nmap, or kismet. If they're in a programming track, then LAMP would be a better place to start. Asterisk is also a cool proof of concept to show what linux can do. As I said, If you show them stuff that has no application to them or their field of study, then they're not going to care. The linux "cool factor" does not apply unless you already posses the geek gene, and more often than not, the people in today's computer classes are there because they think they'll be able to use what they learn to get a job and make money. Unless you can show them how linux can help them accomplish this goal, then it's useless knowledge to them.

  44. Why Unix ? by Anonymous Coward · · Score: 0

    I'd start with one of the introductions by Kernighan ... Software Tools, the C programming language, the Unix programming environment ... for me the key to unix was the idea that complex things could be built out of simple components ... and some shell programming ... from CLI to API ... that type of thing.

  45. What is there to teach? by Anonymous Coward · · Score: 0

    "Everything is a file." The rest is learning by doing.

  46. Filosophy and history by internet-redstar · · Score: 3, Insightful

    I have been professionally teaching IT people since 1998. That's a really long time. It's not exactly the same as freshmen. Though I learned some things over the years:

    Don't forget to talk about the history and the philosophy; while it might seem less important than getting everything in their heads; motivation is key. Because it's hard. Really hard; for them in the beginning. Motivation is everything. Don't waste your time with complicated stuff which can be easier (such as trying to fill their head with vim as joe is there too - if they like Linux, later they'll come back to vim).

    Talk about the hippy-like Richard Stallman who got everything started and what the Free Software Foundation is all about; freedom in a digital future and such. And about the 'other side' within the community with the 'OpenSource' people who just think it's very convenient to be able to work together, but not morally wrong to write proprietary software. Whichever you prefer; 'welcome to the opensource community'.

    Involve them.

    If you can come up with something which can help them to accomplish something; go for it. Whether it's a LAMP box with Dyndns or something completely different. If they think something is 'stupid', point out that it's OpenSource, so they have the freedom to change it and fix it according to their wishes.

    And don't forget: 'Have Fun!' ;-D

    Good luck!
    Jasper

    1. Re:Filosophy and history by WarwickRyan · · Score: 1

      Unlike the sane, phonetic spellings used in dutch, the english persist in spelling philosophy with a ph at the start as well as near the end :)

      Not trying to be a spelling nazi, but it bugs my when dutch/belgians don't correct my spelling mistakes when I'm using their language. Because if it's not pointed out, you don't you've made a mistake, so keep on making it.

    2. Re:Filosophy and history by internet-redstar · · Score: 1

      Yeah, our spelling sucks, and our politicians even think language problems are worthwhile arguing about :-D

    3. Re:Filosophy and history by WarwickRyan · · Score: 1

      > my when dutch/belgians don't

      my dutch/belgian friends don't.

    4. Re:Filosophy and history by WarwickRyan · · Score: 1

      Nah, the language is great. Especially the idea of fixing the errors every couple of years. It ensures that the spelling has at least some connection to the pronounciation. Though, they should go further. For example, drop either IJ or ei. Choose one and use it everywhere ffs.

    5. Re:Filosophy and history by Karellen · · Score: 1

      I think that makes even less sense. I read it as "...but it bugs me when Dutch/Belgians don't..."

      Also, "you don't you've made a mistake" is missing a "know".

      Even if you are not trying to be a spelling Nazi, McKean's Law is still there, waiting to strike! :-)

      --
      Why doesn't the gene pool have a life guard?
    6. Re:Filosophy and history by gnapster · · Score: 1

      Or maybe, "it bugs me when dutch/belgians don't"? Also, I'm pretty sure that Dutch, English, Belgian, and Nazi should be capitalized. Not sure about the last one, since you're not talking about the Third Reich. What is more,

      ...if it's not pointed out, you don't know you've made a mistake, so you keep on making it.

      Hope this helps. :c)

  47. Yo, /. geeks pay attention! by sribe · · Score: 1, Insightful

    He is a C.S. student teaching a freshman lab; nothing in his post indicates that the freshmen in question are C.S. students. In fact, since they're freshmen it's pretty likely they're undeclared. Yet already we see tons of condescending answers that are based on the assumption that this is a C.S. class.

    1. Re:Yo, /. geeks pay attention! by De+Lemming · · Score: 1

      It says so in the title...

    2. Re:Yo, /. geeks pay attention! by Anonymous Coward · · Score: 0

      "...COMPUTING labs to a freshman class..."
      perhaps it is you that should be paying attention.

      They may not be C.S. majors, but tfa does say computing class.

    3. Re:Yo, /. geeks pay attention! by Anonymous Coward · · Score: 0

      Well, nothing except the fact that the title is "Advice On Teaching Linux To CS Freshmen?"

    4. Re:Yo, /. geeks pay attention! by zippthorne · · Score: 1

      The title of the article is, "Advice on Teaching Linux To CS Freshmen"...

      --
      Can you be Even More Awesome?!
    5. Re:Yo, /. geeks pay attention! by the_womble · · Score: 1

      If they are not doing CS, why would they need to know how to use the command line?

    6. Re:Yo, /. geeks pay attention! by copb.phoenix · · Score: 1

      And indeed, as I'm sure the excess of flames will tell you ~ we title things with the major points of what's in them in technical writing. One could read just the title of this post and have fair odds of giving useful advice if they commented just on that (assuming that they know CS is "Computer Science" and that it's not expanded due to the title length limitation.) However, in your defense, we have a handful of students who are Mathematics majors taking this to satisfy course requirements. Non-majors, but required to learn it as if they are majors as part of their studies in allied fields. My initial comment back to everyone is a ways down, but this is a liberal arts college.

  48. Show them the things they use every day... by Anonymous Coward · · Score: 0

    I assume these are normal English, History, Physics, Education, Sports Medicine freshmen.

    Show them the things they use every day...
    - Pidgin
    - Claws Email (or Thunderbird or Evolution)
    - Firefox (Tab Kit, Sage, Read-It-Later plugins)
    - Facebook - MySpace
    - YouTube
    - Twitter (some twitter client)
    - Local University web portal, email
    - Google -maps, voice, earth, news
    - Picassa
    - LibreOffice
    - GIMP
    - Amarok
    - DVD::RIP
    - WINE with Notepad++
    - Synaptic for loading over 24K different "apps" - all free
    - Update Manager for maintaining every app and the OS from 1 place.

    and how to boot a LiveCD to rescue their MS-Windows system later. Back-In-Time for hourly, automatic, snapshots. Use the "smart remove" setting. Tell them there's no need for antivirus with Linux today.

    Afterwards, ask them what else they'd like to see.
    Ask who has Apple music players and tell them to go frack themselves.

  49. Don't by LBArrettAnderson · · Score: 1, Flamebait

    Don't. That's what my school did, and it's very representative of the kind of help they'll get online. Have you ever tried to get help in a linux IRC channel? You're more likely to win the lottery and never have to use linux anyway.

    1. Re:Don't by agw · · Score: 0

      Have you ever tried to get help in a linux IRC channel? You're more likely to win the lottery and never have to use linux anyway.

      Must be you. I basically learned Linux over IRC (many moons ago) and everyone was most helpful.

      However, I know there are issues with people thinking that they can demand prompt help from the community without doing their homework first and acting like they somehow paid big bucks for support.

    2. Re:Don't by next_ghost · · Score: 2

      Which is why Eric S. Raymond wrote his famous How To Ask Questions The Smart Way

    3. Re:Don't by LBArrettAnderson · · Score: 1

      It isn't that way anymore. Or at least it wasn't 4 years ago when I really started learning Linux. I'm very good at it now, but not thanks to IRC.

  50. Give them insight into the underpinnings by solid_liq · · Score: 1

    I would teach them basic bash scripting, and about /proc and /sys. Then I would have them write scripts to automate extracting information from /proc and /sys in bash using grep, sed and maybe awk. Teaching them how to work with Linux from the shell and how to pull information out of the kernel like this should give them some good insights into the operating system and its tools. Additionally, I would teach them how to write init scripts and how to do "fun" things to get them excited about Linux.

  51. Go slow, let them own it. by hunteke · · Score: 1

    We *nix nuts often think that *nix is the best, but we also often forget that we didn't come to this conclusion of someone else's volition. We came to it because we learned it for ourselves. In general, the first psychological reaction of "do this because I said so" is "screw you." You won't "get them to connect the dots" if that's what you're blatantly trying to do. They will do it of their own volition, however, if you just be your enthusiastic self, and talk about why you like this feature or that. When they can apply the skills you teach them to their own projects, they will be hooked, but the key is that they have to do it.

    If they're fresh to the *nix terminal, or *nix in general, start slow, and, for the students' sake, consider doing just rote labs at first. The major ins and outs of the terminal are many and varied, so covering them all will be difficult and overwhelming. Instead you might introduce them to the shell by way of a simple set of exercises (programming or otherwise) that build on each other week-by-week. As commands are needed, introduce them, but no sooner; any sooner and you risk overwhelming them. The first CS course has historically provided an incredible learning curve, not due to the conceptual bits you want students to learn, but to the outside learning that we take for granted once we know it. Small things, like the directory structure (i.e. strange/new/arcane compared to Windows), all the command line flags, and the excess of information that comes way too fast.

    Skilled teachers introduce their subjects like a conversation: they don't blow their wad in the first 2 sentences. They start slow, introduce a concept, munge it, then build from there. Introducing the maze of power and concepts that is the shell really can't be done in one single class. Getting "them to connect the dots" is not within your control. Just as you can lead a horse to water, but you can't make him drink, so too is it with your students. Have a project into which they can sink their teeth, like building C/C++ program with a few different files, or writing a shell script to collect data from 5 of their classmates computers via ssh. When they can take ownership, they'll connect the dots on their own.

    Finally, remember that this is an introductory course, so they likely will not know what you may think they should. They are not stupid, just uneducated on this subject; remember that they're there to change that.

  52. Teach them how to develop on Linux by kbielefe · · Score: 2

    Hopefully, at this point they can figure out how to use a GUI by trial and error. I would introduce them to the customizability not available on Windows with being able to choose Gnome, KDE, Unity, Avant Window Navigator, etc. Also little niceties like middle click pasting, multiple desktops, and focus follows mouse that they may have never seen.

    Since they are CS students, I would also cover the basics of developing on Linux that may be unfamiliar:

    • configure, make, make install
    • dev packages versus runtime packages
    • Setting up autoconf
    • Directory hierarchy
    • Intro to major CLI based text editors: vim, emacs, nano, etc.
    • Intro to CLI based source control: git, hg, svn, bzr, etc.
    • Building packages
    • Basic CLI commands: ls, cd, man, pwd, grep, sed, awk, pipes, etc.
    • Use of tools like gcc, gdb, ldd, strace, etc.
    • Overview of graphical toolkits and how to link software with them: Qt, Gtk, etc.

    Basically, cover enough so when a professor gives them a programming assignment in subsequent semesters, they should be able to focus on the code more than the operating system. A typical assignment toward the end of the class would reflect mastery of the development environment but require little programming expertise, something like "create a .deb package containing a program that displays hello world in a Gtk window" or "submit a git bundle with a change from hello world to hey there world."

    --
    This space intentionally left blank.
  53. CS is not an OS class. by Rockoon · · Score: 1

    Why are you teaching an OS to CS students?

    Seriously WTF... and to *freshman* no less?

    I am afraid the sophomore has failed to grasp the point of CS, and unfortunately it looks like most of the posters here dont have a grasp either.

    You do have to make some specific choices when teaching CS, but never the whole god damned OS as the 'subject.' You would choose a specific set of programming languages when teaching computational theory, algorithms, and so forth..

    CS is not equal to "using computers"

    --
    "His name was James Damore."
    1. Re:CS is not an OS class. by next_ghost · · Score: 1

      I'm afraid that you've failed to grasp the fact that UNIX has been the industry standard for over 30 years now and isn't going anywhere anytime soon. My personal guess is that at least half of them (the half that's not going to become desktop coders) is going to work on some UNIX in the near future and at least 90% of them are completely clueless about CLI at the moment. UNIX 101 class is not about using computers.

    2. Re:CS is not an OS class. by zeroshade · · Score: 1

      You do realize that there is more than enough material to have a "Unix Programming" class. where you teach the concepts of how the file system works, how the OS interacts with the file system, using the system libraries etc. It's not something you'd do with freshman, but in a CS class, teaching an OS as the subject does make sense. And if you're note doing a Unix Programming class, you could be doing an OS class which describes various concepts that Operating Systems use such as process scheduling, memory management, etc. and you can compare and contrast how various OSes do various things.

      I'm assuming that when the poster says "teaching linux" that, for a CS class, he means to be teaching how to use linux for development and how to develop on Linux, which makes sense as the first lecture or two of an introductory CS class.

    3. Re:CS is not an OS class. by julesh · · Score: 1

      "[G]etting ready to go over the major ins and outs of the Linux terminal and GUI" (to quote TFS) doesn't sound like an "Introduction to Programming under UNIX" class; it sounds very much like a "Using UNIX" class. As such, I agree with the OP. My university had no such class; we pretty much all came from a DOS, Amiga or Windows 3 background, and were dumped at a bash shell with a couple of leaflets on how to use the most important packages installed on the system (core bash commands, elm, trn), and that was it. We coped. As the environments we have now are much easier to use than those systems were, I *really* don't see any need for such a class.

      What we *did* have was a class a little later on (towards the end of the first year) that introduced the philosophy of shell programming: how to string together small utilities, the usefulness of sed and awk, ending with a brief intro to Perl. Much better: most of us had gotten used to actually using the system by ourselves, and the valuable teaching time was spent on the things that are important, rather than the things that are incidental.

    4. Re:CS is not an OS class. by Rockoon · · Score: 1

      I'm afraid that you've failed to grasp the fact that UNIX has been the industry standard for over 30 years now and isn't going anywhere anytime soon.

      What does that have to do with anything? You are proving the point that many of the posters here haven't a clue what a Computer Science course is supposed to teach, that in fact you are the shining beacon of the ignorance.

      UNIX 101 class is not about using computers.

      A UNIX 101 class *would* be about using computers, specifically computers running a UNIX derivative.

      Have schools really downgraded this much? That might explain the hordes of new guys that don't know shit about algorithms, information theory, etc. You know, that stuff thats supposed to come first.. the whole Science part of Computer Science.

      --
      "His name was James Damore."
    5. Re:CS is not an OS class. by Drethon · · Score: 1

      At my college, Linux was a Junior level class after OS, Networking and Data Algorithims. The focus however was on use of Linux command line tools, kind of like learning how to use SQL...

    6. Re:CS is not an OS class. by next_ghost · · Score: 1

      Introduction to Programming under UNIX at my university is all about C and POSIX system calls. UNIX shells with standard tools are full fledged programming languages and they're taught to be used as such in UNIX Basics class, which is a mandatory CS freshman subject at my university. I really doubt that the OP's class would be any different. Otherwise it'd be pointless.

    7. Re:CS is not an OS class. by next_ghost · · Score: 1

      Allow me to introduce myself. I'm a CS grad and I've majored from Discrete Models and Algorithms. I've had tons of classes on complexity, computability, probability, graph theory, matroid theory, algebra, mathematical analysis, combinatorial geometry and lots of other theoretical stuff. But still I've had UNIX Basics class as a freshman and I still believe that the class should be mandatory for CS freshmen. And again, UNIX shells along with standard tools are full-fledged programming languages and any UNIX class for CS freshmen should take the students way beyond mere user-level proficiency.

    8. Re:CS is not an OS class. by copb.phoenix · · Score: 1

      Oh, alright then. They can use Windows, pay for their own compilers (we have a budget, but not enough for a license for every student), struggle with IT to reconfigure each and every machine to be useful to their needs and productivity - even to the detriment of other students using the lab, and they can enjoy a system that dictates what they can and cannot do. Major ins and outs, yes. Whole OS, no. I learned long ago, when I took my first classes as a high school senior, that the people alongside me in class were of mixed interests and not all of them liked the prospect of hacking an MP3 player to run Linux or understood the ideas behind being allowed to modify - and break - their OS if they wanted to.

  54. Go with Slackware by iBentMyWookiee · · Score: 1

    Get them to install vanilla Slackware on their machines. For assignments: compile, package and run a custom kernel; configure, compile, install and run the Gnome desktop (no slapt-get); etc. At the end of term, let them switch to the distro of their choice and ask them to compare and contrast with Slack. They'll understand the fundamentals, appreciate simplicity, but also appreciate package/dependency management and other conveniences of some of the larger distros.

    Disclaimer: Not intended as a potshot/criticism of Slackware, I just think it's got the simplest boot sequence, clean and well written scripts, and simple configuration. If you want more than that, figure it out.

  55. too late by Anonymous Coward · · Score: 0

    If they are freshman in a college CS class and aren't familiar with *nix operating systems, it is too late. Just send those people on over to the business school, because they have no use in a CS department.

    Find a few dozen poor middle or high-school kids, give them free access to a few machines running a very basic Linux install (RedHat, Ubuntu, CentOS, Slax, it doesn't matter) with free open internet and a link on the desktop to a browser pointed to sourceforge....and come back in about 3-months. Give them a couple of pointers, and come back in another 3 months. Sure, there will be tons of porn, hacked machines, torrents, malware distribution, and other trash. But there will also be 2 or 3 kids who LOVE CS and could put most of your current CS program juniors and seniors to shame. There will be another dozen who are at least proficient.

    What does that tell you? It tells you that those who show up to a college CS class without such knowledge grew up in abject poverty or have no real interest in CS. College should be more about those who WANT to learn than about those who have their parents money and nothing better to do with their time. I don't have the time or the desire to handhold spoiled rich lazy shallow consumers through their acquisition of a CS diploma. Especially when they'll promptly brain-dump whatever they manage to pick up, and become a M$ buying CIO who still couldn't manage to write a "hello world" batch script. I'm not exaggerating. There are ALOT of CIOs who can't even find a Windows command prompt, let alone navigate a *nix.

  56. An exercise in backup and recovery by jackdub · · Score: 1

    Have them get an AMANDA environment up and running. You could run the clients as virtual machines for additional abstraction or use physical machines and even vary the client OS-type. It builds CLI knowledge, server configuration, client-server model, etc.

  57. University or Trade School ? by perpenso · · Score: 4, Insightful

    If this is a trade school then start right away teaching them how to set up a LAMP system as others have suggested. However if this is a university then do not teach Linux. Teach concepts. Linux is just one of various places to implement or try out these concepts. The LAMP system is something a university student should be figuring out on his/her own time.

    My undergrad CS was in a unix-based environment(*). Professors in class taught concepts that could be applied in a variety of different environments. Teaching assistants (TA) in study/discussion sessions taught implementation detail like editors, compilers and other tools for the environment provided by the school - which in this case was BSD, vi, cc, lex, yacc, ... So in a compilers class the professor taught the concepts and theories behind parsing, code generation and optimization and the TA taught you how to use lex and yacc under BSD to implement a compiler for your class assignments. Similarly in a graphics class the professor taught the math and theory of 3D graphics, transformations, perspective, hidden line/object removal, etc and the TA taught you how to use dedicated graphics workstations (today this would just be OpenGL). Now if you wanted to use a different environment and tools you were free to do so but you were on your own.

    So if you are a university and your labs are Linux based, great. Your TA's should help students with all the implementation details of getting their assignment going under Linux. However Linux should not appear in the classroom that much, it is just the tool of the day, more of an implementation detail than a core concept. The university classroom should spend most of its time on concepts that transcend the tools of day, regardless of whether that tool of the day is MS Windows, Mac OS X or Linux; or Direct 3D or OpenGL.

    (*) FWIW this was a DEC VAX based environment. I would have loved to have had a Linux or FreeBSD running on my PC rather than having to dial in over a modem from home when not on campus.

    1. Re:University or Trade School ? by Anonymous Coward · · Score: 0

      I'm assuming you're a US university student? Over here in the UK, students complain if they're forced to use their brains. I've tried to help fellow students and heard many a "How did they expect us to know that!" as if being expected to read the recommended text in their own time is unreasonable.

    2. Re:University or Trade School ? by Anonymous Coward · · Score: 0

      I've worked with a lot of interns and this is dishearting to see. This attitude is very perverse in college. Yes CS != programming, but a lot of people go into CS hoping to come out with a programmer job.

      Some examples: "This is our test environment, same as production; but isolated. You deploy/test code here, the hostname is XYZ". 2 hours later the intern comes up to me "So, I went down to the server room and got on that host but it doesn't have a GUI, it was in the BIOS or something". It was a unix server and he had never seen a command prompt in 4+ years of CS studies at a university.

      Or another intern that had 0 experience or understanding of a source control nor could he grasp the concept of an SQL database even though he said "Yea, I took 3 classes on database systems" yet SQL or relational dbs never cross his path? Source control/management was a new and exciting concept for him. "You mean it can keep a history of your changes?!"

      Another intern I set off on one of our low priority web pages. Basically a php script that takes lunch orders for 15 people. He kept getting stuck on "What kind of sort function is this? Are you using bubble sort?" - I told him "I don't know, whatever is in the library, look at the api docs. Either way, it's not important, it's sorting a list of 15 names and only takes a very small slice of a second.". I tasked him with something super simple, writing a front end for adding new restaurants to the db.

      I come back 3 hours later and it's a fucking mess.

      1) He didn't know what "API docs" meant, nor google. When I shown him the docs his exact words were "Wow! That's a good idea, to include documentation on your code" (seriously, 4+ years of CS and that never was even discussed in passing? He also only had a very idea to the concept of a library)

      2) he rewrote the sort to make it faster. The only problem he had though was "Well, it takes a lot longer now [was very noticeable delay] and sometimes it drops names; but I'm sure this is the way to do it. It's using some the 'fancy pants' sort algorithm [that he learned in college]".

      3) The front end that he was suppose to write didn't even compile. Just shit out errors. But he told me "That's ok, it's the concept and design that matters; not the boring syntax details, any idiot can write code - it's all pretty much there". [man, I hate that attitude from academics. You claim to be smarter than an idiot so you should have no problem coding it then, right?]. BTW, his deign and concept was complete shit so I don't buy this "teach concepts" crap.

      gah. There needs to be some middle ground here.

    3. Re:University or Trade School ? by fishexe · · Score: 3, Insightful

      Um...he said he was a sophomore CS student...I don't think he has TAs working under him, and it's probably his job to teach implementation while the professor (who is not the one posting to /.) teaches concepts.

      --
      "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
    4. Re:University or Trade School ? by vtcat · · Score: 1

      I think he's a TA you insensitive clod!

      That said, I agree that teaching that whatever OS you're using "is just the tool of the day, more of an implementation detail than a core concept". Even more so since they're running Hardy, the previous LTS and there are significant changes in Lucid.

      This may seem too obvious, but make sure they understand that every gui click executes a cli command. That's not necessarily true with the latest versions of Windows. Show them how they have finer control over the particular action with the cli.

    5. Re:University or Trade School ? by perpenso · · Score: 1

      ... his deign and concept was complete shit so I don't buy this "teach concepts" crap. gah. There needs to be some middle ground here.

      I'm sorry but I seem to have given the wrong impression. Getting your hands dirty coding *is* part of a computer science program. My point is that the professor's lecture should usually be about concepts and theory that transcend and apply regardless of what operating system you are using. Applying the concepts and theories to actual programming is also important but its a waste of lecture time to explain linux, vi, gcc, etc. The TA can cover that stuff in a discussion session, and/or the professor/TA can provide materials for students to read on their own time outside of lectures or discussions.

      For example a professor's lecture can discuss the operation and performance of various sorting algorithms. This would also include the concept that there is no one sorting algorithm that is superior. That different algorithms behave differently depending on the nature of the data, is it random, is it mostly sorted already, etc. The professor would then probably give a homework assignment to implement a few different algorithms. He/she may provide test data that illustrates that one algorithm performs better with mostly sorted data but another performs better with random data. In the discussion session the TA may get into linux specific details on how to time the execution of the implemented algorithms.(*)

      Turning in stuff that doesn't compile. That would be a failed assigned at the two universities I attended (undergrad and grad). Turning in something that doesn't run properly on the professor's set of test data. That would be a severe loss of points. Turning in code that did not have proper comments. The TA would take off some points for that. It would be hard to be unfamiliar with external documentation since some projects would require you to download the relevant PDF for a tool or API and to figure things out for yourself.

      I've met a lot of recent CS graduates with modest programming skills but nothing as dismal as what you describe. What I've seen has mostly been the inability to do anything more complex than what they did in 50 line homework assignments. During interviews I've learned to ask about what they have programmed outside of school projects and homework. I don't care how "silly" the program was, I just want to see that they wrote something on their own for no reason beyond their own needs, curiosity or just for fun. Doing so has served me quite well.

      (*) There should have been an earlier class that was some sort of introduction to computer science where the TA for that class covered logging into linux, editing source files with vi, compiling with gcc, and executing the program.

    6. Re:University or Trade School ? by regexgreg · · Score: 0

      I agree. It's fundamental to learn the concepts, spiritual values and hacker ethics(ERS). Let's hope the professor is doing this. As for getting them involved. Teach them what excites you about computers? Give them Labs. Help them understand and get them to build their own "Facebook" out of Jabber, XHTML and Message Boards? Do an experiment? Try build a FOSS motorized skateboard? Who cares, just as long as it's fun. If you can help them find a passion, they will will learn the rest themselves.

    7. Re:University or Trade School ? by Grishnakh · · Score: 1

      Can you tell us what University (or universities) these students went to?

      I have a feeling a lot of this stuff varies greatly from school to school. Some schools don't seem to teach students anything at all, others do a good job. For that reason, some larger companies have lists of schools they will and will not hire candidates from. I actually transferred to a different school because I couldn't get a co-op job at Intel (this was in '94) as they had a policy against hiring co-ops from schools not on their approved list.

    8. Re:University or Trade School ? by budgenator · · Score: 1

      It's not just a UK thing it's starts in the US the same way as it does there; the student asks for help, the parent/tutor/peer starts to help them only to discover "help me" really means "do for me". In a university setting it becomes even more obvious because there learning is much more of a activity done by the student for himself with direction from the instructor than the activity done to them by a public school teacher in the lower grades.

      --
      Apocalypse Cancelled, Sorry, No Ticket Refunds
    9. Re:University or Trade School ? by Anonymous Coward · · Score: 0

      I must respectfully disagree. I think having CS students understand today's major operating systems reasonably well, is like making sure your journalism students can all use word processing software.

      Sure, they may decide to write all their professional work on paper, or the software tools will change over time. But you'll have to be able to get by using what we've got today just to get started. No?

      As for the Linux specific part, please make sure they understand common directory structure. This is easily the nastiest hurdle I've encountered with new users.

    10. Re:University or Trade School ? by lonelytrail · · Score: 1

      Wow, did you go to my school?
      We did VAX/VMS until we declared and then DEC UNIX in higher level classes.
      In either case, the professor taught concepts and, being a smaller school, we figured out the tool on our own, with no TA support but with the help of a required text book "Unix For The Impatient".

      I spent personal time figuring out Slackware, etc. along with friends, for fun.

      Now that I'm in industry, the same applies; learn the tool on your own, there's no time or money available for you to have support on something that you should be smart enough to figure out yourself. It's the concept that matters, now buckle down and git to work.

  58. Teach them how to make money by BurfCurse · · Score: 1

    Let's be honest. Kids go to college to learn how to make money. Explain to them what kinds of jobs they can get if they take the time to learn linux. My impression during college was that programming on Windows was a way to make money, programming on Linux was programming for fun or for a cause. Now I'm out of college making money programming on Linux and doing some cool stuff too. I would have paid a lot more attention had I known...

  59. teaching the wrong class? by Anonymous Coward · · Score: 0

    Perhaps you should try to get them into sales. If they are having trouble connecting those simple dots as college freshmen, they are clearly not computer people.

  60. Linux is not a topic for a CS program ... by perpenso · · Score: 1

    Have them set up a basic LAMP server. That's how I learned Linux. Or for something somewhat more practical for them, how about a seedbox or a mythtv-box. Frankly, the best way to learn linux is to just get your hands dirty.

    Given that we are discussing freshman computer science students we are probably talking about a university environment, not a trade school. Linux is not really a legitimate topic itself, its just a tool, its just a convenient place to do class assignments while learning core ideas and concepts. Setting up a LAMP box is something university level CS students should do on their own time. For a longer discussion see http://ask.slashdot.org/comments.pl?sid=1952834&cid=34898826.

    1. Re:Linux is not a topic for a CS program ... by Anonymous Coward · · Score: 0

      Linux is not really a legitimate topic itself, it's just a tool, it's just a convenient place to do class assignments while learning core ideas and concepts.

      Because we're discussing a freshman class I'll agree, but later on in their student career, it makes a lot of sense to teach Linux. Specifically, I remember getting a small overview of Linux in an Operating Systems class (discussing the ideas, concepts, and strategies that go into designing operating systems). In addition there's also a Unix Programming class I took which covered coding in a Unix Environment, using the system libraries that are provided etc. assignments ranged from building a rudimentary shell to using curses. So teaching an OS or various OS'es is definitely a legitimate topic.

  61. Re:Lol by agw · · Score: 1

    I agree. The only thing you should do is to show people briefly the possibilities of the system/software. They will either be impressed and interested and be learning it by themselves in no time or they are not really interested in the CS subject and you should indeed "not bother". I think the parent could be scored "insightful" as well.

  62. Install an Arch distro by binaryseraph · · Score: 1

    One of the best experiences I had with learning linux was installing ARCH, which requires you to really customize the system as you install, not to mention some inevitable troubleshooting. While going through the installation process you are going to have to read the step by step guide, which covers some really great aspects of the OS and forces you to get comfortable with *gasp* the command line.

    Granted there is a plethora of other things to learn beyond just an installation, but I found it to be a really great step by step learning process. Not to mention the distribution is as bare bones as it gets and forces you to choose everything you want in your sytem, thus making you LEARN about it.

  63. Don't tell them it's Linux by Noughmad · · Score: 1

    Just install KDE 4 and tell them it's Windows 7 Education Edition or something like that.

    --
    PlusFive Slashdot reader for Android. Can post comments.
  64. games to work. the issue. comfort in foreign area by emeraldshado · · Score: 1

    Make it relate to how they use computers... free... more options, games... playonlinux.com/en & secretmaryo.org & wine I run fedora using kde.. kde pacman, battleships... all the old school retro games.. make them be able to relate to it first, to the point where they can see the practicality and fun in using the system. then work from there to show them the web server sides, ftp server sides... unreal tournament 2004 shipped with a Linux install... the box has Tux on it. show them virtual box instead of vmware. show them nvidia has drivers.. I would suggest fedora 11, kde, with the games first ( biggest default of install games I have seen ) I then upgrade from 11 - 14.. its what i'm doing for my sister who is tired of windows and virus' . I soon have to try wine and her sims games, or playsonlinux which does a different implementation of wine. mpg321 command line mp3 player.. lynx command line web browser.. show them games, ease of use, free, and then move from there, once you have them.... rest should be good. vlc player .. hope that helps I understand that what I suggest is not ideal for school setting to introduce new students, so maybe before semester begins do some of this that way first class can be school related..

  65. Create a command line application by stewski · · Score: 1

    Get them to create a very simple command line application that takes a single argument and gives a single output. run it with the argument and see the output, all the other stuff is plain sailing afterwards.

    Also do show off the many useful GUI admin functions that exist in modern linux, and tell em the most important thing about Gnu_linux/nix: everything is a file!

    1. Re:Create a command line application by adamofgreyskull · · Score: 1

      Ha! "Plain sailing"? :) Just when you think you have a handle on things, something'll pull your pants down and not even buy you breakfast aftewards.
      Did you mean a bash script? A good lesson: write a bash script that takes a file containing lines of comma separated numbers and display the individual numbers and the average of each line, call it test.sh. Then try to run test.sh using a different shell, e.g. tcsh, ksh or zsh. (Or whatever reasonably trivial script that will show up differences between shells..iirc, there are differences in integer arithmetic syntax..?)

      Another useful lesson:
      Get them to log on to a CentOS server and restart apache and mysql. Now get them to log into a Slackware or Debian server and do the same.

      I understand that the OP wants to teach them about GNU/Linux, but IMHO this lesson is very important: Not all GNU/Linux boxes are the same. Not all shells are the same (which can differ on the same OS for different users on the same box not just the same OS on different boxes). Certainly no *nix is the same, and most *nix boxes will differ from whatever Linux box they have access to. Maybe not in huge ways that will stop you dead in your tracks, but in small, minor, "trip you up and kick sand in your eyes" ways.

    2. Re:Create a command line application by stewski · · Score: 1

      I was thinking more of compiling a C++ executable (the sort of thing they may have to do) and grabbing the args into the main. Obviously I have no idea about the students ability or background so another posters advice on levelling them and understanding more about what is already known seems good advice.

      I think your ideas are great, a simple bash script could certainly do the same job. If you introduce all your key ideas too soon you may lose the whole group though, but your points are valid and could work well over the whole course. I'd still say a key difference in approach to what students may be used to, is the concept that everything's a file and the idea of supplying command line arguments is vital to CLI's in general.

      My fave question to those using a nix type box is, what happens when you issue rm -r * as root in the / folder, which could prove useful to assess understanding at some point.

    3. Re:Create a command line application by adamofgreyskull · · Score: 1

      I did wonder whether that was what you meant. :) You're right, having them write/compile/debug a small program using command-line tools would introduce them to the basics nicely. I'm guessing the reason for the 100-level class is to prepare them for later on when they're doing something similar for real and they'll need it to be second-nature.

  66. Baby Steps First by hGMFliP · · Score: 1

    There are a LOT of things you could teach them... too many for one semester, in fact. My suggestion is that you start with things that will allow them to "feel" proficient with the OS first. Make Linux USEFUL to them. Assuming that this is a semester-long class, then this is my $0.02.

    So, think: what does a freshman in college want to do with a computer?

    - Check email
    - Surf the web (ok, ok, look at pr0n)
    - Download stuff
    - Possibly do some sort of homework

    So first few days, teach them how to check school email, ftp, ssh, etc. Every time you have to enter a server, show some basic network diagram of how you are connecting (ex: 192.168.x.x -> gateway -> internet ->target server. Be specific: specify ports, etc), and say something like "later in the semester, we'll learn how to set up each of these servers." That's a good segue into later classes on how to set up apache, bind, exim (or whatever), ftpd, etc. CS students may get guidance from their programming instructors about the nuances of the compilers, so I suggest just showing them how to install/invoke them.

    Last part of the semester you can talk about hardening techniques. Require the latest/greatest Securing Linux O'Reilly book (I'm sure people from here can suggest books), and go through a high-level survey about how to secure services once they are set up. Show how to use netstat, iptables, nmap, etc etc. Re-reference the basic network diagram and now tell them what ports are, and why they are important.

    My feeling is that if you show the students HOW to do something, being CS students, they'll want to figure out WHY it works. At that point, they dig as deep as they want into it.

    Good luck!

    --
    This message was posted using recycled electrons.
  67. Comparison, practice, and historical justification by rigorrogue · · Score: 1

    It's funny you should ask as I've written and delivered just such a course (sadly copyrighted but not CC'd).

    You didn't give any real specifics so here are is some general opinion/advice:

    1. Most people in a CS course know at least one operating system well enough to be productive. At root all OS do the same things, they just do them in different ways. Compare the following across three OS:

    a. boot sequence
    b. directory structure
    c. desktop environment
    d. development environment
    e. application management
    f. security
    g. networking
    h. multi-system management

    2. All material should be delivered in practical fashion, all key concepts/techniques should have immediate practical example.

    3. Teach the history, and start with Knuth and TeX. The context and justification of the development and design of the OS, and its development process (at least as important), is crucial. This can make it much easier to explain why things are different, why things are similar, and how they all work together. It's also great material as the personalities are often powerful and idiosyncratic, and the stories almost parables.

    Have fun. It's one of _the_ most enjoyable classes I've taught.

    --
    science in government
  68. They may not know, though. by Oxford_Comma_Lover · · Score: 1

    > By the time someone is 17 or 18 years old, they either know Linux or they don't. At that age, they've got their lot in life and if they haven't picked up Linux stuff by now, fuck 'em.

    That's a remarkably shortsighted view. The tech community is better off being welcoming, and the economy is better off when the tech community is welcoming.

    I didn't know linux when I went to college. I learned about unix-based OS/s there, though only a little bit from the school. Using it on school systems taught me a bit, but I didn't really begin to get it until I started running a second machine as a linux mailserver, and then switched my main one over to linux after six months or a year. By the time I graduated I was one of the leaders of a student group that maintains dozens of services for hundreds of orgs and thousands of users.

    --
    -- IANAL, this isn't legal advice, and definitely isn't legal advice for you. Also, Squee!
  69. Go back to the origins of the OS by cskrat · · Score: 3, Interesting

    Don't spend a lot of time in the start teaching them about Gnome or KDE. That will just give them the impression that Linux is fundamentally the same as Windows or OSX (Yes, I know OSX is BSD based but one of it's prime selling points is that the user doesn't have to think about what's under the hood). The danger in starting with the GUI is that they'll get the impression that the GUI is the OS and all the /etc, /bin and /var stuff exists to support the GUI when the opposite is more true.

    Give them all a user account with shell only (no X) on some headless machine somewhere and make them do their work there. Have it be a different distro than what their desktop machines are; in your case I'd recommend CentOS as being different enough to understand that there can and will be some variation between two different "Linux" machines in the real world. Teach them to actually do work on a machine that they have no physical access to and make sure they "understand" (rather than simply "know") that physical access to a machine is not required to do real work on that machine. Make them do their work in vim or emacs and turn it in by dropping tarballs into a shared directory.

    Somewhere about 3/4 into the semester, bring them over to the GUI and show them a IDE like netbeans (free, easy to use and supports a decent variety of languages). Spend your GUI time teaching them that on *nix the GUI exists primarily to support tools that exist in the CLI.

    On the last week that isn't review, give them access to a Solaris and a HP-UX machine and give them an assignment to do on both machines that is similar (but not quite identical) to something you gave them just before the GUI switch.

    Possible first assignment: (notes in parenthesis are for you and not to be included in the actual assignment)
    1. Create a directory named "assignment-01" in your home folder. (introduce mkdir)
    2. Within "assignment-01" create the following sub-directories "pets", "color", "os" (introduce cd)
    3. In the os directory create a text file named "home" with one line naming the OS you use at home. ex. "Windows 7", "OSX Snow Leopard", "Amiga OS", etc. (introduce vim)
    4. In the color directory create a small HTML web page named "color.html" complete with well formed <html>,<head> and <body> tags. In the body of this page name your favorite color and make it display in that color. If your favorite color is white or too light to read on a white background, change the background color to black or lie about you favorite color and pick a new one. (multi line editing, interpreting requirements, that warm fuzzy feeling of making something "real"; check for opening and closing tags on html elements, mention in class bonus points if they include a DOCTYPE and/or a page title but do not list in the written assignment)
    5. In the pets directory create a Comma Separated Value, CSV, file with one line per pet in your home. The column should be as follows {Pets name, type of pet [cat, dog, goldfish, etc.], latin name for species}. All columns should be wrapped in double quotes. If you have less than 3 pets, create imaginary pets until you have at least 3. (create machine readable text files)
    6. In the assignment-01 directory, create a text file named "hello" with one line reading "Hello, World" (necessary for a later step)
    7. create a tar zip file with the name cs101-{username}-01.tar.gz of the assignment-01 directory and copy the resulting file to /home/cs101/assignments/ . Replace {username} with you username on this machine. (introduce `tar czf`, introduce cp)
    8. Move hello from your assignment directory to your home directory. (introduce mv)
    9. Since you're on Linux now you need to let go of your old OS. Delete the os subdirectory and it's contents. ( introduce `rm -r` )
    10. Make sure your instructor can review your work by making the assignment-01 directory readable but not writable to the cs101 group. (chmod, ls -l and maybe chgrp)

    --
    My God! It's full of eval()'s.
  70. I have some advice... by Anonymous Coward · · Score: 0

    ...I'd advice that anyone who would send their kid to a college where a SOPHOMORE is teaching a lab to pull their kid from that school.

    1. Re:I have some advice... by next_ghost · · Score: 1

      I'd advice that anyone who would send their kid to a college where a sophomore isn't qualified to teach a lab to freshmen to pull their kid from that school.

    2. Re:I have some advice... by tehcyder · · Score: 1
      Why should sophomores be doing any teaching in the first place?

      It may sound old-fashioned, but shouldn't teaching be left to qualified people, like, you know,. teachers (or lecturers, whatever, but certainly post-graduates).

      --
      To have a right to do a thing is not at all the same as to be right in doing it
    3. Re:I have some advice... by next_ghost · · Score: 1

      Bucause then it'd take the entire department to teach one freshman subject. We're not talking about teaching lectures here. That's what the OP's professor does. The OP is teaching a lab. That means he is supposed to make 20 or so freshmen try what they heard about in the lecture for themselves on a real system. Anyone who has passed that subject in the past should be qualified to do that.

    4. Re:I have some advice... by copb.phoenix · · Score: 1

      Read next_ghost's reply before this one. Do you know how hard it is to drill into a freshman's head that unresolving loops are bad, recursion is a beautiful thing, and "write once, use often"? These are what my professor is doing, along with some coding examples and theory. What I am doing is forcing them to apply that, and teaching the spots my professor misses. The fact that this is a freshman class means that it is that much more important that someone with a lot of time, a lot of desire, and a lot of patience teach them. My professor misses only the first point - I can give them as much as 6 times the amount of time they'd have for labs ~ actually, it will be two times, and then the rest in available tutoring if they "just don't get it" or want to learn extra ~ because I don't have three majors to oversee, a mountain of paperwork to file and grade and file, and messes to sort out left and right due to political nonsense inside of the system. All I have to do is teach what I have been told I will teach - and that's what makes me a bit better than many teachers and such. And you can add a lifetime studying the field and material to my merits. Why would you send any child to an institution if you didn't believe you could trust the institution? And if you want your child to learn, why would you complain if they were learning from the most experienced person available? Or would you rather they learn from somebody that hasn't got enough time to help them when they need it?

  71. Teach them the things they want to learn by grizdog · · Score: 1

    I was a university CS professor for most of my career, and the easiest things to teach students are the things that they want to learn. What that is will vary, but working in a lab, one on one, you will have a lot of opportunities to find out what the individuals are interested in. Don't worry if it's not the same thing to every student; they will talk and teach each other what you have taught them, and they will learn it better that way

    The one thing you can can be certain they want to learn are things that will help them get a good grade in the course. So if it is a programming course, teach them how to login, manage files, and to use whatever IDE you are using for the course, whether it is vi, emacs, eclipse, or something else. While you are doing that, talk to them and see what else they are interested in, and try to run with that.

    I disagree with some of the comments here that have suggested philosophy and history. That is great stuff, but do not make the mistake of thinking that just because it interests you, it will interest them. Give them a taste, sure, but dwell on things that will help them get a good grade, and then let them suggests breadth or depth beyond that.

  72. Re:Lol by Joce640k · · Score: 1

    Oh yeah, sed, awk and regex are going to convert Windows/Mac users to command line Linux.

    Not.

    Linux is for people who want to hack around and get to the guts of the OS because they're interested in that sort of thing. Everybody else is going to be too distracted by the fact that flash doesn't work properly.

    --
    No sig today...
  73. Linux from scratch by sprior · · Score: 3, Interesting

    Give them a box of computer parts and a printed copy of linuxfromscratch.org and tell them their grade for the class is going to be the one displayed on a web page served by apache under Linux installed on the machine they assemble from those parts by the end of the semester. Best class they'll ever take on Linux.

    1. Re:Linux from scratch by adamofgreyskull · · Score: 1
      • 1. Build computer and Install Linux and Apache
      • 2. echo "10000000%" > /var/www/httpdocs/index.html
      • 3. ????
      • 4. Graduate!
    2. Re:Linux from scratch by sprior · · Score: 1

      linuxfromscratch.org contains instructions on how to build a linux system from source code. It's the most educational thing I've ever done on Unix.

    3. Re:Linux from scratch by adamofgreyskull · · Score: 1
      Yes. I know. :) I was referring to this:

      (...)tell them their grade for the class is going to be the one displayed on a web page served by apache under Linux installed on the machine they assemble from those parts by the end of the semester.

      I trivialised the install of LFS into "Step 1" for the purposes of following the "4 step Profit! meme" and making light of the "grade displayed on a web page" part.

      It is very educational, however you'll end up with 2 groups of students, those with 100% (Or higher) and those with 0%. The latter will dwarf the former. Either that, or a few entrepreneurial members of the former group will make a tidy sum! For a 100-level class, that is not an ideal situation. Either way, you end up with a large proportion of the class who are no closer to understanding Linux/Operating Systems.

    4. Re:Linux from scratch by sprior · · Score: 1

      Yeah, probably a graduate level class. I got carried away because in 1987 as a senior level independent study course I made a deal with a professor that I'd build a hardware voice synthesizer and he'd give me the grade the computer verbally asked him for at the end of the semester, this meant I built the hardware and wrote a DOS device driver in assembler. No backup plan whatsoever. I got an A and the professor regretted not having me build one for him as well.

    5. Re:Linux from scratch by Anonymous Coward · · Score: 0

      Give them a box of computer parts and a printed copy of linuxfromscratch.org and tell them their grade for the class is going to be the one displayed on a web page served by apache under Linux installed on the machine they assemble from those parts by the end of the semester. Best class they'll ever take on Linux.

      Brilliant!!

  74. You need clearly defined goals by Anonymous Coward · · Score: 0

    Ahhh, the relentless energy of a young, new teachers assistant who will expend countless hours in the pursuit of "something" in order to feel like he is helping freshmen out. Don't get me wrong, good on you for getting into this endeavor, teaching is very rewarding and will sharpen you ability to interact with people very quickly. That being said, if you do not have clear goals to teach, you will quickly spin your wheels, loose the interest of your students and become very frustrated. You said you have a professor you are working under. Apparently he or she is not very good at expressing the desired end state of the class. Or you are not a very good listener.

    Teaching is easy. Answer these questions:
    1) What skill, knowledge or technique should a student have mastered by the end of the course.
          This list should be extensive, but finite. Once again ask your boss.
    2)To what standard should each student be able to execute, recite or whatever the aforementioned tasks.
          This is not your standard. You are not an expert, you are a college sophomore. Find the expert (presumably your boss) and ask him or her. If he or she is
          not the real expert, find one.

    After numbers 1 and 2 are answered, complete the following:
    3)Constantly evaluate the students to see who is progressing along the learning continuum. Some will soak it up like sponges, some will be too high to know what day
            it is. Focus on the students who want to be there and use them to leverage the fence sitters to your side of the fence. Let the ones who will not put in any effort go.
    4)Repeat step 3 until the semester is done.
    5)Take a well deserved drink.

    Seriously. If you do not have clearly defined, articulated, measurable tasks and goals, you need to get into something touchy feely, like philosophy.

  75. Re:Lol by larry+bagina · · Score: 2

    OS X has a command line. If there's a reason to switch, that's not it.

    --
    Do you even lift?

    These aren't the 'roids you're looking for.

  76. Sounds like a waste of time by SpinyNorman · · Score: 1

    getting ready to go over the major ins and outs of the Linux terminal and GUI

    WTF? An introduction to the Linux command line/shell (pipes, "find", etc) might be useful, but teaching a GUI to CS students is just insulting and a waste of time.

    ...to connect the dots and understand how it relates to what they already know about computers

    Has it occurred to you that the problem might be you and your choice of topic rather than the students?

    For a "linux terminal" class with some meat to it, how about a Perl class instead?

  77. The Art of Unix Programming by at.drinian · · Score: 1

    Say what you will about Eric S. Raymond, reading his (free) book The Art of Unix Programming is the best way to understand the design philosophy behind any Unix system, not just Linux. And it has general applicability as well.

  78. Break things, have them fix it by giminy · · Score: 1

    I learned Linux by installing it on my desktop and forcing myself to run it as my primary OS. What taught me the most? When things went wrong.

    I recommend coming up with ways to break the computer wherein fixing it will cause learning. Start by assigning the use of a utility or system service that is actually configured incorrectly and isn't running. This teaches things like: run the program from the command-line to see what it is outputting to stdout, look at log files, edit configuration text files. Make things harder by breaking boot services, changing the xserver configuration so that it starts as a command-line, etc. Finish by breaking grub, or deleting /etc/passwd and forcing them to boot into single-user mode to fix things.

    Troubleshooting a computer is the best way to learn...

    --
    The Right Reverend K. Reid Wightman,
  79. yes they will by r00t · · Score: 5, Interesting

    These are CS students. Discounting the ones who will be quickly switching majors or dropping out, sed, awk and regex are going to convert Windows/Mac users to command line Linux.

    Really, it's just plain mean to wait until senior year for the weed out class. Freshman year is the time to ditch people who think that a love of playing computer games means that they will get to enjoy a well-paid career as a game designer.

    1. Re:yes they will by gtall · · Score: 1

      Yes, I agree, but then I've seen and talked to senior CS students at a major midwestern university. If they weeded out in the freshmen year, there'd be no senior CS students. CS has gone down hill but for the big name schools who can attract the brightest who somehow fail to be attracted becoming Business School Product.

    2. Re:yes they will by Anonymous Coward · · Score: 0

      At last someone who seems to understand what he/she is talking about.

      I completely agree with your point and I should add that not only its mean, it also is bad for the overall budget of misplaced students to be in the wrong major for so long.

    3. Re:yes they will by Nutria · · Score: 2

      Guenter: All I want is to be a monkey of moderate intelligence who wears a suit... that's why I'm transferring to business school!
      Professor Farnsworth: NOOOOOO!

      --
      "I don't know, therefore Aliens" Wafflebox1
    4. Re:yes they will by Anonymous Coward · · Score: 0

      sed, awk and regex are going to convert Windows/Mac users to command line Linux.

      sed, awk, and grep all come with Mac OS X, installed by default and ready from the Terminal.

    5. Re:yes they will by Anonymous Coward · · Score: 0

      We are forgetting here that about 80% of students are average students, yet they are the ones who will pay taxes to our country. Educating them and teaching them is important. Weeding out them will not produce wealth to a country. So, we don't have to tutor them , train them rather teach them. If an instructor is not ready to teach the average students, then they should not be in a teaching position. So, we need to investigate how to teach these 80%, without whom the future of this country will be bleak.

    6. Re:yes they will by dkh2 · · Score: 1

      On top of that, if you dream of being a game designer you should be well versed in sed, awk and regex, plus a few core skill sets like parsing XML/XSLT and other data persistance techniques.

      --
      My office has been taken over by iPod people.
    7. Re:yes they will by not-my-real-name · · Score: 1

      These are CS students. Discounting the ones who will be quickly switching majors or dropping out, sed, awk and regex are going to convert Windows/Mac users to command line Linux.

      I hate to break it to you, but Mac users can already use sed, awk, and regex. Whether they use them or not is another question, but the tools are there.

      --
      un-ALTERED reproduction and dissimination of this IMPORTANT information is ENCOURAGED
    8. Re:yes they will by Desler · · Score: 1

      Discounting the ones who will be quickly switching majors or dropping out, sed, awk and regex are going to convert Windows/Mac users to command line Linux.

      Why would they do so when Mac users already have those programs and you can get it for Windows by installing SFU for anyone actually interested.

  80. Focus on the relations by wvwalt · · Score: 1

    Once they are setup with a linux distro, tell them that they need to obtain an application that will allow them to read and write Microsoft Office format files. "What?" "How much will that cost?". Introduce them to OpenOffice. Require assignments to be submitted in OpenOffice format.

  81. Goodmorgning everybody... by Anonymous Coward · · Score: 0

    ...I'm Your local UNIX guru. Today You will learn that everything You have learned about computers is fundamentally WRONG.
    Today You will learn a flavor of historys most successful operating systems, an operating system running on everything from the biggest supercomputers to the smallest PDA.
    Today You will learn Linux.

  82. Something Practical by thatskinnyguy · · Score: 1

    In order to really get any appreciation for Linux whatsoever instead of a bunch of students that are in the class because it's required, the students have to have a practical use for it.

    I tooled around with Linux for a few years off and on but really didn't get into it until I wanted my own web server but didn't want to screw around with IIS.

    Since then, my practical uses for Linux have increased to include things like a thin client server and network security monitoring/data aquisition. The point is: it has to be useful to them personally.

    --
    The game.
  83. CS: The XINU Approach, Trade: LAMP by cmholm · · Score: 1

    If you're trying to teach OS concepts, I found "Operating System Design: The Xinu Approach" (Comer) a good text. Otherwise, have the kids install a LAMP stack.

    --
    Luke, help me take this mask off ... Just for once, let me butterfly kiss you with my own eyes.
  84. Don't Teach Linux by Anonymous Coward · · Score: 0

    Teach them a variety of Operating Systems and operating system concepts, keep ideologies away from teaching, your students will benefit more.

  85. linux srsly/ by Anonymous Coward · · Score: 0

    what does linux have to do with intro computer science, seriously? if you're teaching a class to network admins or a class on OS's then maybe. but intro cs should just be programming, data structures, big O, sorting, searching, etc.

    sounds like youre just a linux geek looking for an excuse to convert windoze/mac fanboys

  86. What I don't get is: by aliquis · · Score: 1

    1) If they aren't interested by themselves (or learn by themselves) why the fuck are they studying CS to begin with?

    2) Shouldn't you have a plan with _WHY_ you want to include Linux in the class? What's the purpose of the course? Just because it sounds good with putting Linux on a piece of paper? Then maybe you shouldn't have created the course.

    Personally I guess I would had started with users vs super-user/root, groups and file permissions, process ids, pipes, jobs, man, basic vi, shell-scripts, regexp/sed, crontab, ...

    1. Re:What I don't get is: by Have+Brain+Will+Rent · · Score: 1

      1) If they aren't interested by themselves (or learn by themselves) why the fuck are they studying CS to begin with?

      Yeah... think of all the money we could save on schools if people would just learn by themselves.

      --
      The tyrant will always find a pretext for his tyranny - Aesop
    2. Re:What I don't get is: by aliquis · · Score: 1

      Yeah... think of all the money we could save on schools if people would just learn by themselves.

      Ok, maybe it doesn't give enough skilled people. But atleast you'd know the people who knew anything about something would be capable.

  87. a few hints by Anonymous Coward · · Score: 0

    Me too was in the same situation this year. I had to teach the command line interface and a bunch of commands. I wanted to make things more funny and incorporated a few add-ons besides plain "I do - Now you repeat". So students could learne command line interface while doing something that kept them motivated. Some hints in no particular order:

    1. As a number of people suggested: LAMP in a nice try. Setting everything up was good but THE promise that we will create a phishing site at the end was what kept them going :). We just saved a login page of a bank, learned some HTML on the way and wrote a simple php echo script which printed username and password on the screen. We learned, config files, file system, editors (I showed some, but they all prefer Gedit :)), cron, tail (for logs), etc.

    2. Cracking passwords is one of the most funny examples I do. This year I used Gawker's list of leaked password hashes, a small dictionary of 100 most common passwords and John The Ripper (cracking 700k hashes in 14 seconds on one core). While adapting the list and the dictionary we used awk, sed, wc, grep (I cant remember what else ;)), pipes, explained the file system, etc. Students really loved it!

    3. I also taught them nmap (with e.g. redirecting IO to a file), telnet (sending email on a SMTP is always interesting), traceroute, tcpdump (on a gateway when they login to a ftp site so I collect (fake) passwords :)) and similar examples that (I hope) keept them interested.

    4. Bash scripting can be taught with some simple yet useful examples. This year we created a simple script that creates a HTML photo album from images in a folder (checking if the directory is empty, splitting file names, checking extensions, renaming, using image magic to figure out file detailes, etc - needles to say we used a lot of command line commands).

    Through all these examples students learn a bunch of simple and more complex commands.
    We did it most of these exercises in a sandbox, they had to install the who OS (Ubuntu Linux in my example but command line interface is the same in all distros) and a lot of commands themselves and they were administrators of their environments which made them happy.

    Someone suggested that such examples could rack up their dark side forces - before hacking passwords or using nmap I TELL them to use this knowledge for their own security and what can happen if they put their noses in someone else's system uninvited.

    Hope it helps you (or someone else).

    lp mk

  88. I'm glad you weren't my teacher by KingSkippus · · Score: 4, Insightful

    If they haven't already looked at linux, it's because they lack the innate curiosity to find out more about their chosen profession.

    These are the types who will mostly not graduate beyond "I can admin a server because I know where to point and click" anyways.

    Even the simplest of tools, like vi or ssh, are pretty much beyond them.

    Wow, what an arrogant, asinine point of view. These are college freshmen that we're talking about here. Yes, there's a good chance that many of them have had no exposure to Linux, since statistically speaking, most college freshmen probably come from households which have only used Windows or Apple PCs. They're majoring in computer science because they want to learn about computers, not because they already know about them, duh.

    I'm glad that I didn't have teachers, parents, or friends with this attitude. When I started out as a computer science major, I knew my Commodore 64 in and out, but I had maybe touched an Intel-based PC a handful of times. I was dumb as dirt too, and I didn't know a damn thing about various Unix- or PC-based editors. I was motivated, though, so I came up to speed. Believe it or not, you were dumb as dirt at one point, too. Back when vi and ssh were beyond you (and I'm 100% sure that at one point, they were), how would you have liked it had someone told you that those simple tools were pretty much beyond you, and that you probably would never graduate beyond "I can admin a server because I know where to point and click"? Such comments are completely non-productive, and irrelevant to the submitter's question.

    Maybe some of them will drop out of CS. Maybe some of them really don't understand what they're in for and will leave. But then again, I'll bet that there are quite a few who are going to college to learn about stuff they want to know, not more about stuff they already knew. Some will undoubtedly be part of the next generation of people who will make fun of you someday as one of those old fogies who can't keep up with the stuff they're working on.

    1. Re:I'm glad you weren't my teacher by tomhudson · · Score: 2
      Here's a news flash for you: You don't go to school to be spoon-fed information. More than half of all the people in college and university shouldn't be there, for one simple reason

      they can't learn unless it's fed to them in dribs and drabs, so they aren't really "learning" anything.

      It's called "grade inflation" for a reason. Time to put some rules into place, such as "if you don't have basic reading, writing, and math skills, you don't get in."

      http://education-portal.com/articles/Grim_Illiteracy_Statistics_Indicate_Americans_Have_a_Reading_Problem.html

      * 42 million American adults can't read at all; 50 million are unable to read at a higher level that is expected of a fourth or fifth grader.
      * The number of adults that are classified as functionally illiterate increases by about 2.25 million each year.
      * 20 percent of high school seniors can be classified as being functionally illiterate at the time they graduate.

      None of these qualify for admission, and yet they get in, because of the almighty buck.

      And from the looks of the postings here on slashdot, many stay functionally illiterate throughout their lives. These are not people who should be learning about computers - they should be learning how to read and write.

    2. Re:I'm glad you weren't my teacher by Nutria · · Score: 1

      most college freshmen probably come from households which have only used Windows or Apple PCs

      Burning a LiveCD and rebooting into $DISTRO isn't that difficult.

      OP's point is that good CompSci students must have an innate curiosity/geekiness about computers. In 2008, there's no excuse for him not to burn an Ubuntu or Fedora LiveCD and poke around.

      They're majoring in computer science because they want to learn about computers

      I had fellow students like that. They were B-A-D *horrible* programmers.

      (Yes, no matter what "Computer Science isn't programming" fools say, it *is* programming since there's a metric ass-load more need for software engineers and clever problem-solving programmers than there is for CompSci Professors.)

      --
      "I don't know, therefore Aliens" Wafflebox1
    3. Re:I'm glad you weren't my teacher by Anonymous Coward · · Score: 0

      So what you're saying is that CS freshman should know the inner workings of the linux kernel?
      Because teaching them is spoon-feeding them this information?
      Not everyone magically learns everything they need to know all by themselves.
      Sometime people need some direction, and to be told what they should focus on.

      Of course some don't put in any effort beyond what is needed to pass a course (or sometimes even less effort than that),
      but that doesn't mean you should have the course for the other students who are actually interested.

      I will go so far as to agree that a course on using a linux terminal is ridiculous.
      This could maybe be part of some practical where they use linux since it should only take several minutes to tell them what to do.
      Some students will figure out for themselves how everyhing works and have a much easier time.
      The other student will be able to pass the course with some minimal knowledge of using a command line.
      They probably wont even know why they had to type some crap into a terminal.

    4. Re:I'm glad you weren't my teacher by Anonymous Coward · · Score: 0

      * 42 million American adults can't read ENGLISH at all; 50 million are unable to read ENGLISH at a higher level that is expected of a fourth or fifth grader.

      * The number of adults that are classified as functionally illiterate IN ENGLISH increases by about 2.25 million each year.

      * 20 percent of high school seniors can be classified as being functionally illiterate at the time they graduate.

      There, fixed the first two wildly misused statistics for you. I do hope that you can figure out just why thses adults and children might have this problem (hint: it has to do with imigration). I doubt you will figure it out but I can always hope.

    5. Re:I'm glad you weren't my teacher by tomhudson · · Score: 1
      Bull.

      First, these are ADULTS, not children.

      Second, learning a second language is normal for people in most of the world. It's funny how Americans like to hide behind excuses like "it's immigration."

      We have the same problem in Kanuckistan - and it's the people in the two official language groups who are the laggards, not the immigrants. In other words, it's the same situation as in the US.

  89. Seasoned Teacher by Anonymous Coward · · Score: 0

    Timothy,

    I have been teaching high school students, college students, and colleagues for almost 20 years. My lab is running all Linux PCs. My high school students have been compiling and running Linux distros every other year (Even stage 1 Gentoo and LFS). They also learn C++, PC Repair, and Networking (CCNA). If they can handle a good immersion in Linux, so can your students. If I were in your position I would:

    1) Look up the certification standards - LPIC-1 is a good place to start.
    2) Look at some comparative curriculum - Buy TestOut, get a book from the library, etc.
    3) Update the computers that you are using (with permission). Hardy is way too old.
    4) Plan the topics that you will cover.
    5) Teach to the students strengths and interests.

    Good Luck,

    ST

  90. Some ideas by Hymer · · Score: 1

    Use OpenSuSE, everything in OpenSuSE can be done thru the GUI: installation, configuration, administration, software maintenance... everything.
    Don't use the command line when it is easier for you, it will be interpreted as missing GUI functionality.

  91. Ok, I doubt this will be seen, but... by adamofgreyskull · · Score: 3, Insightful

    The problem as I see it is this: "Back in the day" (hah!) when I installed Mandrake for the first time, then Red Hat, then Slackware on my store-bought "first PC" at university, of my own volition, it was an absolute pain in the fucking neck to get it working. There seem to be a lot of people who are saying "the best way to learn is by installing it yourself" or "if they haven't already tried it they are n00bs and should quit CS and take up needlework". But the fact of the matter is that when most people try "Linux" these days, it's Ubuntu, which, I hear, is a piece of piss to install. Hell, the last time I installed Slackware (aside from the clunky-looking installer) it was incredibly straightforward.

    My point is, there's actually value in teaching the inner workings of Linux because there's no guarantee anymore that you'll encounter sed, awk, vi or even a command line just because you're using "Linux".

    1. Re:Ok, I doubt this will be seen, but... by w_dragon · · Score: 1

      Even Gentoo is dead-simple to install these days! If you want difficult you'd probably have to go for some flavor of build-your-own Linux

    2. Re:Ok, I doubt this will be seen, but... by Anonymous Coward · · Score: 0

      Shame this won't be seen. I started using Linux when Hardy had just came out. Since then, all the command line I've learned is through my own curiosity, not because it was necessary.

  92. My Class Documents by Anonymous Coward · · Score: 0

    Here are all of the documents from a class I taught. Advanced Linux Usage, a special topic course.
    https://docs.google.com/leaf?id=0B1VZQff8I3deMGFhODA2MTktODBjNi00ZjA0LWE5ZGMtMjMxNDFmOTRmOWUz&hl=en

    Includes Syllabus as well as some quizes, exams, and class notes.

    feel free to email me if you have any questions. willm.wade(at.)gmail.com

  93. Re:games to work. the issue. comfort in foreign ar by next_ghost · · Score: 1

    And how exactly is that supposed to give them programmer level proficiency in CLI and basic understanding of system structure, which is probably the sole point of the class?

  94. Shell Scripting by misterich · · Score: 1

    I think that the heart of any OS is found on the command line. Yes, you need to learn vi(m) and maybe emacs, but I think that can be done by using them to do other tasks.

    I developed my skills through shell scripting. A great book on the topic is Unix Shell Scripting by Stephen G. Kochan and Patrick H. Wood. The concepts are usable in just about any environment, plus they'll learn the main tools found in the shell.

  95. In the Beginning was the Command Line by Geodesy99 · · Score: 1

    The first day I'd assign reading Neal Stephenson's "In the Beginning was the Command Line" ( http://www.nealstephenson.com/command/ and http://www.cryptonomicon.com/beginning.html online ). I've used it in situations with even non-technical people to explain "Why Linux", and it's highly entertaining even if one is an expert. As another poster said, there is some "History and Philosophy". I also use it as an ESL text for engineering graduate students :-)

  96. vi's fine as long as you remap shift-J by Rob+Y. · · Score: 2

    I used vi for years, and had convinced myself I actually preferred it to, say, the editor in Visual Studio. It's definitely true that there are things you can do super-fast in vi once you commit its commands to sense memory - once you've mapped the brain-dead 'join' command away from the Shift-J keystroke. Is there anybody who hasn't been driven nuts by having their entire file collapsed into a single line just by trying to 'scroll down' with Caps Lock on?

    That said, I've gotten used to using a PC editor (EditPlus) on files in a Samba-mounted filesystem, and I'm probably not going back. Not a second too soon, it turns out, since the unix server where those files live has been moved to another site, and vi over a VPN is nasty. I still find it useful for quick editing at the command line, though - in a DOS command window too. But if you're gonna teach 'em vi, teach 'em how to remap the commands while you're at it.

    --
    Posted from my Android phone. Oh, I can change this? There, that's better...
    1. Re:vi's fine as long as you remap shift-J by h4rr4r · · Score: 1

      Running vi locally is just better, there are builds for windows if you are so inclined/brain damaged.

    2. Re:vi's fine as long as you remap shift-J by Anonymous Coward · · Score: 0

      :un

    3. Re:vi's fine as long as you remap shift-J by jthill · · Score: 1

      Scroll with j? I think you're doing it wrong.

      h j k l are local motion like f F t T ; , . w W b B e E ( ) % -- those aren't browsing keys.

      Browse motion starts { } z zt. z- H M L ^f ^u ^b ^d ^] ^o ^i and ^e ^y to taste. I don't use [[ ]] much.

      Bulk and syntax motion. Targeted scrolling. Screw autorepeat.

      --
      As always, all IMO. Insert "I think" everywhere grammatically possible.
    4. Re:vi's fine as long as you remap shift-J by Anonymous Coward · · Score: 0

      Is that Perl?

  97. Break their will by CAIMLAS · · Score: 1

    You really need to break their will - to use the GUI. It's not terribly useful for people who will be using Linux as a server or development platform. They don't need a course to tell them these basic, largely intuitive things.

    They need to start from the core of the system; ie, what the system does as it boots.

    Walk them through that. Have them read over and analyze the output from dmesg, for starters.

    Then start them with some basic console commands. ls, du, who, ps, top, mv, cp, ln, rm, kill, ed/vi/nano, find, whereis/where/which, less/more/cat, and echo are useful, but also be sure to let them know how to find help, and where to look for things - man, apropos, info,, etc. Be sure to include the process of how to use these commands adeptly: man and apropos will go a long, long, long way.

    I can't emphasize the use of apropos and man enough. Teach them how to use these things - ie, "how to help yourself" and they will be competent Linux users able to adapt to a myriad of other systems as well (with time).

    Touching on hardware interface commands (lspci, lsusb, etc.), system proc files (/proc), exit codes, lsof, and other "programmer useful" things would be nice, too. Package management (dependencies, managers, frontends, interfaces, etc.) would likewise be useful.

    Once they understand the kernel boot process, the basics of shell operation, and the system boot process (init/upstart/rc/whatever), they should be well on their way to competence. (Then, of course, there are the usual 'gotchas' everyone runs into in their course of growth - the accidental rm -rf, or killall on a non-Linux system, for instance.)

    I would verge towards overloading them with work to encourage them to dig in, instead of going too lean. If you must, grade on a curve - there's a lot to learn here if you're not a competent "professional" already, and a lot of stuff to "unlearn", if coming from the Windows side of things (eg. "errors").

    --
    ~/ssh slashdot.org ssh: connect to host slashdot.org port 22: too many beers
  98. Agree by turing_m · · Score: 1
    Back when I went to school, all the best computer geek friends I had ran Linux. This made me want to check it out too. It's not as if ease of use is even really a barrier these days either, like it was when I was starting out. At the very least, surely the CS majors would want to have a Linux box at home to allow them to write and test code at home rather than having to come to the CS labs to do it.

    If none of those reasons sell someone on Linux, then they most likely will be happier doing something else.

    --
    If I have seen further it is by stealing the Intellectual Property of giants.
  99. Re:Lol by JWSmythe · · Score: 3, Interesting

        Actually... :)

        My girlfriend has a Mac. Right now, I have a Windows machine beside hers, because I'm gaming on it a good bit. I make up for this by having a Linux server farm, so I do "real" work on those machines.

        She's seen where I've had issues on my Windows machine. I get frustrated. She watched me work through a mystery blue-screen problem that turned out to be a particular version of the video driver was causing. It was very difficult to diagnose, and using the Microsoft provided driver, or the manufacturers most recent driver was not the fix. {sigh}

        On her machine, she was running into some issues also. She plays a few full-screen games. One of the games was performing horribly. To diagnose it, I ssh'd to her machine while she was gaming. Using standard tools (like top, ps, and kill), I was able to help her out. For example, from the desktop, she knew she had closed an application. From top, I could see that it not only wasn't dead, but it was taking up half the memory in the machine. While she was playing the game, I could see the system was using over 80% of the memory (2Gb), and and when it started swapping, that's when the performance went to hell. I helped keep the machine performing ok by killing unwanted applications while she was playing. You can't do that on a Windows machine without a bit of 3rd party magic and virgin sacrifices.

        Then there was parsing some information. She has a book cataloging program. She wanted to import the information from one application to another one. She pointed & clicked around for a while, and was making very slow progress. She was to the point where she had a file with almost 2000 records, that she needed to clean up to import. It would have taken her quite a while, so I shelled in and did "cat file.txt | cut -f 2 -d , | sort > import_me.txt" Voila, one line, and it was done. Again, standard tools for *nix, Linux, and OSX, that are not standard for Windows (adding 3rd party apps doesn't count).

        I've been trying to encourage her to get familiar with working in the shell. She understands what to do.

        We're to the point of wanting to set her up with a hackintosh. I have spare hardware that would build her a very nice fast machine with more memory than hers has. Even the 2GB upgrade was expensive for the Mac. It's outrageously priced from Apple, and still overly expensive from 3rd parties. We ordered it from Crucial, who had the best price for the required full buffered RAM. She likes the idea of my spare 6GB RAM, and faster CPU, than spending thousands on a new Mac. Her only consideration now is how pretty the case is going to be. There's an alienware-like case on CompUSA's site that I'm considering for her. :)

    --
    Serious? Seriousness is well above my pay grade.
  100. Open Courseware by MIT? by Anonymous Coward · · Score: 0
  101. few hints by Anonymous Coward · · Score: 0

    Make some exercises through which they'll learn command line. Few examples I used (in a practical course for freshmen):

    1. Cracking passwords: We used Gawker's leaked list of hashes, a 100 words dictionary and john the ripper. We learned, sed, awk ("editing" the list), touch, editors (they all ended up writing in Gedit :)), wc (counting lines), installing applications, and whatever command suits you here.

    2. Create a phishing site: set up LAMP, did some configuring, saved the login screen of a bank, learned some html, created a php script that printed the user name and the password on the screen, used editors, installed applications, cp, mv, and whatever command suits you here.

    3. Net tools: these are always interesting like ping, traceroute, nmap (finding services and software packages and search google for holes - have your own example), telnet (sending email on a SMTP server), whois, dig, tcpdump (scan the traffic on a gateway grabbing password while they try to ftp :)), ssh (make them create users for other in the class to log in to their machines), scp (make them copy one file to other computers), ddosim (we compiled it and simulated ddos attack on the LAN)

    5. Shell programming - nice to include all commands they already know and new ones. We did a simple script that created a HTML photo album from a directory of images. The script included checking if the directory is empty, splitting files, renaming them, checking for extension, imagemagic to find image details and conversion, etc. etc (do a lot of checks using a lot of commands)

    They all had to install their own VM in which they had total control and they also had to install a lot of packages which weren't installed by default. They were administrators on their machines which they really liked! They could have their VM's running and ssh to them from home.

    I also agree with others that some concepts must be thought, but the students must have fun as well.

    lp mk

  102. Re:Lol by fishexe · · Score: 1

    Linux is for people who want to hack around and get to the guts of the OS because they're interested in that sort of thing. Everybody else is going to be too distracted by the fact that flash doesn't work properly.

    Hmm. People who want to hack around and get to the guts. People who are interested in that sort of thing. You mean like...CS students? You know, the people the whole question is about...

    --
    "I don't care about the Constitution!" --Bill O'Reilly, November 17, 2009
  103. As a CS Junior by Acidraven · · Score: 1

    If you are not running Linux in a Virtual Machine do it. then they can take root control when ever they want Mess up there config and then go back to a save point or just reinstall without messing up others work. Install Some current and older versions of them as as files to distribute. If this is a class where they should be comfortable messing around with things, stuff will get messed up but they should try to fix it first, then restore/reinstall. Slackware a few years back was a good one for CS people who wanted to learn there was little in the way of gui config programs so you would look on pages like linuxquestions and retype parts of config files to make it do what you wanted. it also did not have package utilities so you would have to compile your own code and find what it depends on. But the big thing is if they are CS students they should not be afraid of there computers, they should be able to complete most any task they can in windows by using the open sourced programs that are out there like Libre office, Fire fox, Gimp, etc. they should know that wine exists but take pride in using it as little as possible. Hopefully they will use linux as a 2nd os on there computer or on a virtual machine (Some laptops still have issues with linux so a VM helps solve those problems) and most of the open sourced programs are also around for windows so they can use those in there every day life. Hope that gives some ideas of what I would look for in a class like that as a CS Junior .

  104. Re:Lol by KingMotley · · Score: 1

    You can do all of that in powershell as well. But I expect you are still using windows XP, and wondering why it's acting like a 10 year old OS.

  105. Start with Fundamentals, not the deep stuff by HeraldMage · · Score: 1

    I've taught an intro course to UNIX and systems administration to MIS students years ago. The concepts are the same for Linux. And I've got a pretty good background in instructional design. If your students are starting off, teaching them complex sed/awk stuff, packages, pipes, and the GUI is going to start already leaving them behind. And there are so many people who work on that stuff, but don't understand the basics.

    In the course I taught, I started with things that many of them, even the Linux users among them, never knew about their systems. Such as the fundamental that *everything* in UNIX/Linux is a file. Directories are really files. The keyboard is a file. So is the display. And the network card. That is an important concept to understand later why redirection, pipes and the like work as well as they do.

    I also taught things like symbolic vs. hard links. And how that all relates to inodes. Therefore, how you can move or copy files and create symbolic links that can change the one or the other. True of just about every file system.

    Then you can get into how processes work. And how all of them spawn from one root process (initd). Children, zombies and the rest come into play, and the kill command, and how to use a tool like top to see how they all work. And how to reset them when they run amok. I used Mark Sobell's book on UNIX, but he has newer ones out on Ubuntu and Linux and such as well.

    You can then continue with a basic editor like vi, which is a good one simply because it's likely going to be on just about any system they'll come across. Emacs is not as ubiquitous, so I won't get into a war over which is better. If you like emacs, you can install that too, but some systems won't have it and you may need basic vi or even ed skills to get the box going enough to get emacs installed. The same is true for shell programming. I would use bash, simply because the context and syntax carries across most systems well, regardless of the type (Linux, BSD, Mac OS X).

    Once they get all that you can get them into pipes and redirects and how they can be used to create wonderful things by coupling lots of simple tools together.

    And all of that even without a GUI!

    --
    Ich suche die Leidenschaft, die keine Leiden schafft.
  106. A Dad wants to know... by sycodon · · Score: 3, Insightful

    ....why am I paying $20,000 a year (on the low end) for my kid to go to school and study Computer Science just to have a freakin sophomore teach him?

    Major WTF?

    --
    When Fascism comes to America, it will call itself Anti-Fascism, and tell you to give up your guns.
    1. Re:A Dad wants to know... by quixote9 · · Score: 5, Interesting

      I'm a biology prof and have been around universities all my life. (Really. My mother was a university prof too.) There are a lot of misconceptions about what goes in to good teaching. In computer science, a sophomore may well be a better teacher than a 40 year-old full professor.

      Professors are not rewarded for good teaching. We're rewarded mainly for bringing in grant funds. So getting good teachers depends pretty much on the luck of the draw, unless you're up at Stanford or Harvard levels. Community colleges often have better teachers than 4-year schools because they have much more focus on teaching.

      The main thing you're paying $20,000/yr for is the higher class union card. A better name school is a ticket to a better-paying job. Which means, in terms of bang for the buck, a student is best off going to community college for the first two years, and then transferring to as flagship a school as they can manage.

      As for actually learning something, well, that's a different matter entirely...

    2. Re:A Dad wants to know... by dkh2 · · Score: 1

      Because universities recognize that teaching is an important part of learning and all of these sophomore instructors of freshman classes are being watched by the fully degreed professor anyway.

      --
      My office has been taken over by iPod people.
    3. Re:A Dad wants to know... by gnapster · · Score: 1

      The student is tutoring in a lab, not teaching. There is a professor delivering the main lectures and watching over the sophomore tutor.

      • Maybe the student really is that experienced?
      • Maybe It is a small university that does not have a grad program for CS?
      • Maybe you should be glad that your son is getting support outside of class?
    4. Re:A Dad wants to know... by copb.phoenix · · Score: 1

      All three. I am considered better than the students that generally graduate the program here. I have studied computers and coding my whole life, although admittedly the language was new to me when I started college (C++), many of the underlying concepts are the same.

    5. Re:A Dad wants to know... by copb.phoenix · · Score: 1

      Redaction: I am considered better at _what I've taken/studied_ than the students that generally graduate the program here. I was being egotistical the first time around; sincere apologies.

    6. Re:A Dad wants to know... by gnapster · · Score: 1

      LOL

      No sweat. I understand what you mean. I minored in CS at a school that fit my description, and the only time we were tutored was in CS 101. The tutor was a student, and during the first session he showed us how to log into the department's Linux server remotely and write, compile, and execute a small Java program.

      This contrasted supremely with the programming environment we were using during lectures: Eclipse on Windows XP. I had used and installed Linux, but never used it remotely, nor done any programming on it. I was sold from the outset.

  107. Over at my school... by Anonymous Coward · · Score: 0
    I've taught an operating systems to CS and IT students at Ateneo de Davao University (Philippines) for five semesters now. Each class consists of two hours of lectures and three hours of laboratory per week (though I can alter the mix, as needed). For the theory, we use Silberschatz et al.; and for the labs, we use primarily Ubuntu installed via Wubi.

    Roughly, this is how the labs are laid out:

    Week 1: I have the students install Ubuntu via wubi. Wubi isn't without its problems but it's a good compromise to our Windows-only systems. Having the students do the installation is a learning process in itself. Explore the Ubuntu interface, list out applications, compare to Windows, etc. Install software via Synaptic.

    Week 2: Command-line exercises. I set up an Ubuntu machine where they can log in. I give them stuff to do with files and directories and such. I have them create HTML pages, compile C and Java programs. I have them use "The Linux Command Line" as reference.

    Week 3: More command-line exercises. Stuff with sort, grep, find, cut, etc. I have them do stuff that's difficult to perform with GUI but easy to do with CLI.

    Week 4: Students install VirtualBox and a command-line only virtual machine. This gives them an idea what it's like to install Ubuntu on a full system. Optional: install Ubuntu on USB flash drive.

    Week 5-Week 6: Students install the LAMP stack and some popular CMSes like WordPress, Joomla, Drupal. Again, I force them to use only the command line.

    Week 7: Students install and work with Tomcat. Just some basic programming and deployment with Netbeans. This provides some perspective beyond PHP.

    Week 8-Week 9: Programming languages: assembly, C, Java, Python, Perl, command-line PHP, Ruby. Not too in-depth, just enough to give them a taste of each. I use combinations of ps, time, and strace to explain processes and system calls.

    Week 10: Wine, with some Windows games, and Dosbox, with some DOS games. Used to explain system calls, APIs, and emulation.

    Week 11: Explanation of the Linux boot process and Windows boot process. See my presentation (needs some updates.)

    Week 12-13: Compiling the Linux kernel.

    Week 14-15: Linux networking. DHCP, DNS, routing, mail services, etc.

    Week 16: Webmin

    Week 17-18: Their choice of operating system to work on.

    Every sem I tweak my labs further, but more or less, it's laid out as above. So far, the response has been good. Enrollment varies, but at one time I was getting 100 or so students to use Ubuntu. As an added activity, we run an open source mini-conference in school for other students and Software Freedom Day. Some of my students eventually get jobs involving open source.

    Drop me an email if you want to trade notes. I'd be happy to share some of my lab exercises with you. I also teach an information security class (using mostly Ubuntu, too) and an open source class. Our class blog gives some idea of what the students are working on.

  108. Re:Lol by Anonymous Coward · · Score: 0

    how dare you show a /.er common sense!

  109. Remember that CS is more than computer tinkering by Explodo · · Score: 0

    I rarely post on /., but this is something I feel I need to get my $0.02 in on. I love computers for the power that they give you to solve problems. I have a BS in applied math and an MS in CS. I hate linux. I have a linux system and I absolutely hate having to deal with it. In fact, I don't have any coworkers that like to work with linux either. There's a simple reason for that. I see a computer as a powerful too to help me write software to implement my algorithms. Anything that makes that process take more time annoys me. Linux is for people who like to tinker with computers. Some CS people just want to write algorithms, or just want to write beautiful interfaces, or maybe just make interesting applications. There are others that love the OS and its interface with the hardware. Remember to keep in mind that just because someone is a "CS student" doesn't meant that they should know how to use, or even like, linux. Telling intro students that they have to either like linux or GTFO is counter-productive and you could drive off someone who could have made great advances in CS otherwise.

  110. Re:Lol by JWSmythe · · Score: 1

    Actually, I'm on Windows 7 x64 Ultimate.

        Lets consider what comes with the OS, not what you have to install. I know cygwin does a lot. I see that there's a SUA "Utilities and SDK for UNIX-based Applications_AMD64.exe" that Windows has available, if you have the "Subsystem for UNIX-based Applications" turned on. You still have to download almost 500MB from Microsoft, so I won't consider that "comes with the OS".

        In Windows 7, lets poke around with powershell, as you suggested.

    PS C:\Users\User\Desktop> which
    The term 'which' is not recognized as the name of a cmdlet, function, script fi
    [SNIP]

    Oops, that doesn't work. Ok, lets try a few other things.

    PS C:\Users\User\Desktop> top
    The term 'top' is not recognized as the name of a cmdlet, function, script file
    [SNIP]
     
    PS C:\Users\User\Desktop> grep
    The term 'grep' is not recognized as the name of a cmdlet, function, script fil
    [SNIP]
     
    PS C:\Users\User\Desktop> cut
    The term 'cut' is not recognized as the name of a cmdlet, function, script file
    [SNIP]

    Ok, that really sucked, and was really ugly. I had to snip out the other 7 lines on each error to get through the filters on here.

    I already know "which" works on OSX, so lets look around OSX.

    mac-pro:~ User$ uname -a
    Darwin mac-pro.local 10.6.0 Darwin Kernel Version 10.6.0: Wed Nov 10 18:13:17 PST 2010; root:xnu-1504.9.26~3/RELEASE_I386 i386
     
    mac-pro:~ User$ which top
    /usr/bin/top
     
    mac-pro:~ User$ which ps
    /bin/ps
     
    mac-pro:~ User$ which grep
    /usr/bin/grep
     
    mac-pro:~ User$ which sort
    /usr/bin/sort
     
    mac-pro:~ User$ which cat
    /bin/cat

    Nice. How about an older Linux machine...

    uname -a
    Linux p01 2.6.27.7 #1 SMP Sun Dec 7 22:31:27 GMT 2008 x86_64 AMD Opteron(tm) Processor 240 AuthenticAMD GNU/Linux
     
    which top
    /usr/bin/top
     
    which ps
    /bin/ps
     
    which grep
    ./grep
     
    which sort
    /bin/sort
     
    which cat
    /bin/cat

    It can pretty much be said that any OS other than Windows, comes with the same standard tools. But hey, some people love Windows. I use it a lot too. I have to support an awful lot of Windows desktops, and servers. Standards there are rough. There are plenty of things that give Windows admins headaches. Just try telling a user how to do something without first asking "what version of Windows are you using", or already knowing. Knowing your average user, if you ask, they won't know. And yes, I was just brought in to a place where a lot of the desktops are still WinXP, and don't have enough memory nor drive space to upgrade to anything else.

    --
    Serious? Seriousness is well above my pay grade.
  111. Debian vs Red Hat by Anonymous Coward · · Score: 0

    Teach them the differences between the two major Linux distributions, Debian and Red Hat.

    And how these difference( Configuration Files, init scripts, file system layout, etc, etc, etc) make it a total pain in the ass when trying to learn.

    [/endrant]

  112. Tying it all together by Kreychek · · Score: 1

    I found that learning about the toolchains, the reasons for having sources (or just headers) available on-system, and compiling my own apps from sources has had the effect of really showing me (and others, who I've had go through these concepts) how the openness of linux ties in with programming and creating software.

  113. Freakin Nannyism by Anonymous Coward · · Score: 0

    This is damn crazy. Let them figure it out on their own ok? When I was a freshman did any one teach me how to use the cdc cyber NOS? Dec VMS or TOPS20? NO!
    We found the manuals and read them or figured it out on our own. STOP HOLDING THE CHILDRENS HANDS.

  114. Don't by RzUpAnmsCwrds · · Score: 1

    Don't teach them Linux unless that's what the class is about.

    My 1st-year CS intro course (CS 1300) was taught in Python, but that's not particularly important because virtually any decent programming language is acceptable.

    An intro CS course should be focused more on things like algorithms, data structures, time/space complexity, and other theory. It's not the place to teach system administration and it's not the place to teach software engineering.

    Pragmatically speaking, people are going to have to compile and run code. So you might end up having to teach some basic Linux skills. At my university we ran RHEL 4.x on the lab machines at the time (now they're on Ubuntu), and there was a weekly lab section where the TAs could provide 1-on-1 instruction on how to get things working. A substantial fraction of the class was already familiar with Linux, but there were also a good number of students who weren't.

    The point is that the mechanics (e.g. "type make") should be addressed during the labs if possible, or in the instructions for the assignments, or during office hours, or during an (optional) concurrent course. The intent should be to provide the necessary skills for students who have no Linux background without devoting much of your (very limited) lecture time to it. If you spend a week or two trying to teach Linux, you'll find that 1/3 of your students don't show up.

  115. Re:Lol by Nutria · · Score: 2

    Linux is for people who want to hack around and get to the guts of the OS because they're interested in that sort of thing.

    That's so completely wrong I just don't where to start.

    Linux (with the nvidia binary drivers) gives me the power of a minicomputer (I'm an old CLI geek) and us (me, wife & kids) simultaneous access to modern s/w and h/w without having to worry about malware.

    (FreeBSD is certainly in the same class, but I have no reason to use it instead of Debian Sid.)

    --
    "I don't know, therefore Aliens" Wafflebox1
  116. Go source non binary by unlocked · · Score: 0

    Try a Linux from scratch or source distro against a binary distro to show how the system is integrated and the fact that a source distro can have gcc and glibc replaced and recompiled vs a binary distro which is a nightmare to wedge in or damn near impossible. You can show tool chains and from command line to gui use and compiler intricacies of various code bases and libraries. People should go from learning source code distros first then move on to binary ditros so they have a better understanding of package management and how their system can go haywire fast jacking with mixed up repositories.

  117. Hot Chicks in Bikinis by Anonymous Coward · · Score: 0

    and beer

  118. Re:Lol by KingMotley · · Score: 1

    Windows is not *nix, so yes, it doesn't use the same commands. Then again, why doesn't linux support DOS/CPM commands? While *nix commands are text-stream based, Powershell uses a more modern object oriented approach.

    top: Get-Process
    top using WMI:Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | `
        where-object{ $_.Name -ne "_Total" -and $_.Name -ne "Idle"} | `
        Sort-Object PercentProcessorTime -Descending | `
        select -First 5 | `
        Format-Table Name,IDProcess,PercentProcessorTime -AutoSize

    ps: Get-Process
    ps: ps
    grep: Select-String
    sort: Sort-Object
    cut: Split

  119. You shouldn't need the advice! by Anonymous Coward · · Score: 0

    Anyone who can't figure out how to teach Linux basics probably should not be teaching CS at a college to begin with.

  120. My course curriculum by deek · · Score: 2

    I used to teach Linux, a few years back, in TAFE (provides further education in Australia, from high school, but not to the level of universities).

    I created all the coursework myself. If it helps, below is my lesson outline. I designed it to be generic Linux for the most part, but when I get specific, I concentrated on RedHat. At the time, that was the Linux distribution that most people were aware of. If I was doing it today, I would probably go for Ubuntu.

    ----------

    Week 1
    Introduction to Linux
    A brief history of Unix
    How Unix is organised
    Features of Unix/Linux

    Week 2
    Installation of Linux
    Steps to installing Red Hat on your computer

    Week 3
    The Linux Console
    An Introduction to the Shell
    Basic Linux commands
    Shutting down the system

    Week 4
    Managing Files
    The Linux Directory structure

    Week 5
    Redirecting I/O
    Basic Regular Expressions
    Unix Permissions and Attributes

    Week 6
    Using VI
    Linux Kernel Modules

    Week 7
    Unix Shell Scripts
    Scheduling and Cron

    Week 8
    Adding and Removing Users and Groups
    Managing devices and Mounting Filesystems

    Week 9
    Mid-semester Lab Test

    Week 10
    Managing Processes
    The Unix boot process

    Week 11
    Setting up a Linux Printer
    Using a Linux Printer

    Week 12
    Linux Networking

    Week 13
    Unix Network Services
    FTP and Telnet

    Week 14
    Linux Network Filtering

    Week 15
    RedHat RPM
    XWindows

    Week 16
    Revision

    Week 17
    Exam

  121. Re:Lol by KingMotley · · Score: 1

    It can pretty much be said that any OS other than Windows, comes with the same standard tools.

    Well I think that pretty much sums up where the vast majority of your experience comes from. Let's run down a quick list off the top of my head of OS's and let's see if they support these "standard tools":

    Windows: No.
    Mac OS: No.
    BeOS: No.
    VMS: No.
    OS/2: No.
    Morph: No.
    Gem: No.
    AmigaOS: No.
    CPM: No.
    DOS: No.
    Cisco's IOS: No.
    RealTime OS: No.

    By "standard tools" I think you meant linux, and similiarly unix.

  122. gonna be marked troll, but cs student's opinion by whong09 · · Score: 0

    Why learn linux? What's the point? Seriously I'm taking a cs lab right now teaching linux and we just went over shell scripting. The biggest question I have is how is this useful to anybody ever? Oh in VI if you press 5dd you can cut 5 lines!!! Except in notepad this is a completely trivial problem. Why use linux when there's already windows?

  123. The shell is a programming language by Ken_g6 · · Score: 1

    You wanted inspiration; hopefully this inspires you. I presume these kids know how to program *something*. If not, this is going to be a painful experience anyway.

    First of all, the shell (bash, let's say) is an immediate prompt for the bash programming language. If any of them have used Python, they'll know what you're talking about.

    It would be nice to have a couple of things set up: Man pages on a website, and some .bashrc macros matching dos, like "dir".

    Second, the shell has very easy access to the filesystem, with , >>, and cat. Let's summarize that you can read files with cat (file) or cat >> (file). cat (file) creates what I'll call a "list argument". Note that when "properly" used, "cat" is practically never necessary in bash, but it can make things clearer here.

    Third, all commands are functions, but you only get one list argument input and one list argument output per command. And they're backwards from most programming languages. In Python you'd say print(sort(list)) or something, but in bash you say cat list | sort | cat (where the first cat reads the list and the second prints it.

    Fourth, grep and cut. Treat any file like a database table. Grep is like the Where clause, and cut is like the Select clause.

    Fifth, maybe functional programming for bash. You've already seen filter - it's called grep. Map is called "xargs". Sorry, there is no "reduce" that I know of.

    --
    (T>t && O(n)--) == sqrt(666)
  124. Re:Lol by budgenator · · Score: 1

    A surprising amount of networking utilities are almost the same in *nix and windows, especially things you need for serious troubleshooting.

    --
    Apocalypse Cancelled, Sorry, No Ticket Refunds
  125. CS Freshmen? You mean OSS Freshmen! n/t by Anonymous Coward · · Score: 0

    n/t

  126. I've taught Systems Programming by syousef · · Score: 1

    Here is what you need:

    - Start with some basic commands. You need a cheat sheet with a one line description. man pages are pure garbage as a reference until you are well acquainted with and know the language

    - Command line editing and file editing. Cover both vi (or vim) and Emacs

    - They do need to understand the command line, pipes and redirection

    - Next they need to understand some of the more complex text processing commands

    - ...and some comms commands. ping, traceroute, netstat etc.

    - Teach them about configuring the system, what the various directories

    The course I taught was laid out for me by a Unix professor who knew it inside out. It went on to teach perl, C, shell scripting and it did it by setting small assignments. The technique had it's pros and cons but was definitely more suited to the elective I was teaching than a beginners course. Therefore I'd probably go more along the lines of feaching intros to each, what they're good for, how powerful even short programs can be. Let them know what tools exist (eg. command line debugger). Show them something fast (large file IO if you have fast machines, fast computation etc.). Show them something resource intensive (maybe something that creates a large number of processes in parallel).

    A good book or curriculum would help immensely. Linux beginner books vary widely and can get dated quickly, but there are some very good ones.

    --
    These posts express my own personal views, not those of my employer
  127. Re:Lol by darkpixel2k · · Score: 1

    top using WMI:Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | `where-object{ $_.Name -ne "_Total" -and $_.Name -ne "Idle"} | `Sort-Object PercentProcessorTime -Descending | `select -First 5 | `Format-Table Name,IDProcess,PercentProcessorTime -AutoSize

    And they say linux is 'hard'...

    --
    There's no place like ::1 (I've completed my transition to IPv6)
  128. GNU userland by Anonymous Coward · · Score: 0

    If you don't like the userland, change it, don't whine about it. Last time I compiled the Linux kernel, it didn't include any command line tools either. I encourage you to download MSYS (super-lightweight Cygwin) from devkitpro, let the self extracting archive do it's thing, then add it's bin folder to your PATH environment variable... There's no easier way to get bash and friends on your Windows.

    1. Re:GNU userland by JWSmythe · · Score: 1

          See, that's the thing though. The userspace tools are already there. It's fine and dandy to suggest Cygwin, or any of several tool sets that are not included with Windows. The problem isn't my machine. It's every time I sit down at a strange machine, and find the tools aren't there. For example, I just started a new job. There are about 100 or so machines, mostly Windows. I could push an update out to all of the machines to add on tools, but that doesn't help when someone (say a C-level someone) says "my laptop isn't working, fix it). Or say my own laptop dies, and I go pick up another one. The standard userspace tools aren't there. I guess the whole subject seems silly to people who use and prefer Windows. Some of us have used a whole variety of platforms, and appreciate consistency.

      --
      Serious? Seriousness is well above my pay grade.
  129. Not What to Do by wisnoskij · · Score: 1

    Well having gone through a few courses that tried to teach me Linux I have a few ideas of what you should not do.
    You probably do not want to teach it through assignments that simply require linux for no good reason, like "learn Linux because your assignment answers must be handed in with Linux end of line characters"
    Or simply learn Linux because we want you to.
    Personally I have not learned anything useful when doing assignments that simply have to learn something for the sake of learning.
    I would teach Linux, and all other concepts, (if possibly) through realistic challenges/assignments.
    Think of why they should learn Linux (not simply because you think it is better) and why they will need that knowledge, and give them assignments on those problems, forcing them to learn Linux to complete it.

    --
    Troll is not a replacement for I disagree.
  130. start with building blocks by steveha · · Score: 1

    You should really start with basics and build up gradually. Get them to learn how to open a command line shell, then start typing commands in command lines. A fun place to start is the fortune command, which you could make sure is available by installing the "fortune" package; this prints a random message. Next tell them the basics of command line editing and the "history" command. Then have them use the command line to launch the GUI text editor (gedit) to make them understand that tasks launched at the command line are just as good as things run using icons in the GUI.

    IMHO shell scripting is tricky and difficult. It starts easy, but very quickly becomes insane as you try to learn the weird quoting rules. I suggest to show them a very simple shell script basically just running a few commands in a row; for anything more complicated than that go straight to Python.

    Definitely teach them about package management. Have them boot an Ubuntu live CD and then have them install the fortune package, run it, remove it again.

    I am a huge fan of vi, and have been for decades, so believe me when I tell you to not try to teach vi or emacs. Just have them use GEdit and focus on the tasks at hand.

    steveha

    --
    lf(1): it's like ls(1) but sorts filenames by extension, tersely
  131. Ubuntu Hardy??? by Anonymous Coward · · Score: 0

    That's like, what 6 years old? You could as well teach them PDP and VAX!

    Install a fresh distro that matters, like Debian, Fedora or Slackware.

    1st lesson: GNU/Linux is a swiftly moving target!

  132. Re:Lol by JWSmythe · · Score: 1

    If there was say a well established set of rules that virtually all operating systems followed, wouldn't you think it would be prudent that the ugly kid on the block follow those rules? I've worked on Linux, Solaris (and cousins), BSD (and cousins), OSX, Irix, and Digital Unix. I've also worked on every Windows platform since Windows 3.1, and touched OS/2 and BeOS. Every modern OS (like, you can still find one in production), except for the Windows platform, you can use the same tools on any of them, with rare exceptions. They don't require add-ons for standard tasks. They don't rename standard tasks to obscure names. They "just work"(tm).

       

    --
    Serious? Seriousness is well above my pay grade.
  133. Re:Lol by Joce640k · · Score: 1

    I was going to write something like that as about the only thing I can think of that might impress a windows user - proper access to the processes which are running, real information about what's going on, etc.

    Then there's proper file systems that don't constantly tell you files "can't be deleted because...".

    --
    No sig today...
  134. Re:Lol by JWSmythe · · Score: 1

        Hmmm, let me think on this for a second.

        To ping a host until abort:

        Everyone else: ping [hostname]
        Windows: ping -t [hostname]

        (and -t isn't compatible to anything on other platforms)

        Everyone else: traceroute
        Windows: tracert

        (and damned if I haven't typed "traceroute" a million times on various Windows machines)

        Everyone else: netstat -a -n | grep LISTEN
        Windows: netstat -a -n

        Except, there's no obvious way to only show listening ports. And I tried the previously mentioned select-string as a replacement for grep in both cmd and powershell, and that doesn't work either.

        So, completely compatible, except they aren't.

    --
    Serious? Seriousness is well above my pay grade.
  135. Best solution: use Live CDs on their own computers by Anonymous Coward · · Score: 0

    First, ditch 8.04 (Hardy) in favor of 10.04 (Lucid). Hardy ends its LTS phase before the end of the spring semester, but Lucid will be supported until April 2013.

    Second, tell the students to bring a CD or thumb drive, and make sure they all end up with Live CDs or bootable thumbdrives in the first week. Then give homework assignments using their own computers booted into Ubuntu.

    Third, use VirtualBox to run multiple copies of the OS and show them how to set up VPNs between their virtual machines.

    Jaws will hit the floor. Life-long windows users will convert to Linux and worship St. IGNUcious.

  136. Prepare them for the future by Anonymous Coward · · Score: 0

    Prepare them for the future- teach them how to use Windows.

    It will give them job skills that will last a lifetime, instead of delusions that will last until they get discouraged and buy a MacBook (such as my favorite delusion, "This is teh year of Teh Lunix On Teh Desktop"). Plus, it will prevent them from being "that guy" who always says Windows can't do such-and-such, who gets embarassed by some Windows dude telling him Windows has been doing for at least a decade whatever it's claimed to not be able to do.

  137. Re:Lol by lingon · · Score: 1

    It can pretty much be said that any OS other than Windows, comes with the same standard tools.

    Well I think that pretty much sums up where the vast majority of your experience comes from. Let's run down a quick list off the top of my head of OS's and let's see if they support these "standard tools":

    Of all the operating systems you listed, only two are supported today (while the others could be in use by happy geeks, I hardly think they are in any professional use): Windows and Cisco's IOS (I don't know what you mean by "RealTime OS", any RTOS in particular?

    Off the top of my head, I can think of Linux, BSD, Mac OS X and Solaris, which (excluding Windows) combined makes up almost the entire market for server operating systems.

    The whole point of a text UI is it's expressivity and, once you pass the learning threshold, the speed in which you can do pretty advanced stuff. The Windows hack with camel-case command names, longer than a whole goddam command line on Unix, isn't really impressive at all; it seems totally unusable in practice. Am I supposed to write a whole novel each nice I'd like to rename all files in a directory using a regexp?

  138. Make them work the console. by business_kid · · Score: 1

    Have them do a linuxfromscratch book http://www.linuxfromscratch.org/ keep them off a gui and surf with links or wget. I learnt on a box w/250mags HD space and 64k ram.

  139. Re:Lol by jpate · · Score: 2

    Here is your Useless Use of Cat Award ;)

  140. Re:Lol by Deviant · · Score: 1

    I work in IT and have to manage both Unix and Windows servers and some occasional desktops and I respectfully disagree - PowerShell and WMI are better than unix tools and SSH for managing systems via the commandline once you know them.

    With PowerShell Microsoft took a step back and basically said if we designed a whole shell and all of the commands from scratch what can we achieve for modern server command-line management? What they came up with is an object-oriented approach where you do not need to parse text with your pipes but actually send whole objects with all of their properties - and you can still query against those properties even further down the piping chain. Not only that, since they designed all of the commands centrally and at nearly the same time they all pipe perfectly well into each other. It has great support for csvs to quickly pull raw data in and out from Excel where you can do a bit more fine-tuning as well. For their server commands they tend to fit the get- set- mould and they do tab completion of not just the commands but all of the commandline options/flags as well. They have the help command which is the equivilent as man too. The power of this is amazing - particularly in server maagement. Here is a few examples:

    Let's say I want to change the mailbox quota for all users in the Boston office on Exchange - I can do this:
    get-mailbox -filter {office -eq "Boston" } | set-Mailbox -UseDatabaseQuotaDefaults:$false -IssueWarningQuota 800MB -ProhibitSendQuota 900MB -ProhibitSendReceiveQuota 1GB

    Let's do some bulk account creation from a CSV:
    The following one-liner creates mailboxes for all team members listed in an Avalanche.csv file, which contains NHL Avalanche team roster information with the following column format:
            Pos,No,Player,Age,Ht,Wt,Born,Exp,Birth City
    $password = Read-Host "Enter password" -AsSecureString
    import-csv Avalanche.csv | foreach {new-mailbox -alias "avalanche$($_.No)" -Name $_.Player -password $password -database "Mailbox Database" -org Users -UserPrincipalName "avalanche$($_.No)@example.com"}

    These are the sorts of tasks that were really hard to do on Unix where you had to use sed and awk to massage text outputs of commands as you piped them around etc. When you go OO and design all of the commands around it you get an amazing experience. And using WMI you can run these commands not just on the local system but on any system where you have appropriate permission and have not firewalled it off on the local network.

    And we are not going to get into the great Group Policy changes with recent versions of Windows - I can set any registry key or file permission or run any script (powershell or vb or even batch) on a system/user matching a wide variety of detailed criteria (OU, Site, Security Group, etc). And that is even before the enterprise management tools like SCCM or Altiris are figured in. I have had to manage a bunch of Macs before and I'd take a bunch of Windows 7 PCs and even Server 2008 R2 Boxes over them any day now that I know how to do it properly...

  141. Teach the browser first and shell last by gig · · Score: 1

    If you teach the browser first and the shell last then students will be much more interested. If you understand about HTML, CSS, JavaScript, the DOM, HTTP, httpd, FTP, and TCP/IP then you have the context to learn bash.

    You're trying to teach auto mechanics to students who likely can't drive because they've been using DOS and their brains are like putty. Get them driving a Unix first through showing them the Web they already know is actually a Unix app (well, technically a NeXT app, but close enough) and then drill down through the layers.

    In other words, start from close to the user, not close to the kernel.

  142. Teach them on Ubuntu first by Anonymous Coward · · Score: 0

    Teach them on Ubuntu first, then move them to Slackware which tells them what is REALLY happening. It also shows pretty well that all that GUI-fication going on, even in Windows, can be merely a wrapper around a file format. Heck, Word is merely that for 90% of uses.

    It helps too to show the GUI output and how you get that down as a text file and slack is better at that than Ubuntu.

    Also knowing the differences may help when going to the real world, where they may use Red Hat, Solaris or something else. When you know several options, you learn where the commonality is and work from there.

  143. Easy by Legion303 · · Score: 1

    "This is man. This is apropos. Start typing."

  144. Straw man by KingSkippus · · Score: 1

    Nice straw man. Here's a news flash for you. In your OP, you didn't say a damn thing about reading or writing. You also didn't say a damn thing about teaching methods. Both of those are completely separate conversations, some of which I might actually agree with you on.

    No, you specifically referred to "looking at Linux" as the measurement of whether or not a person deserves a chance to learn more about computer science, which is, as I said, an arrogant and asinine point of view. By the way, if you think that one's proficiency with Linux directly corresponds with their ability as a computer scientist, you're sadly mistaken. I know several brilliant people who have had little or no exposure to Unix-based operating systems. Obviously, I encourage anyone who wants to go into the field to learn about Linux, but I sure as hell wouldn't classify knowing how to use vi and/or ssh as a prerequisite.

    1. Re:Straw man by tomhudson · · Score: 1
      If you're taking a course in something, it's expected that you will bone up on it to prepare for the class. Any student who doesn't do some background beforehand deserves to be failed the first day, BEFORE they drag down the rest of the class.

      This is not grade school, or even high school. Students are not expected to be a tabula rasa. If you're taking a college-level course in linux, you'd better have a few hours under your belt to give you some context before the first class - otherwise, you're simply not prepared, and obviously also not sufficiently motivated.

      Once you're out of high school, you're expected to be able to do some research yourself. No more being spoon fed. That's for PHBs.

    2. Re:Straw man by KingSkippus · · Score: 1

      I'll remind you yet again that we're talking specifically about college freshmen. "Boning up" does not mean to them what you think it means.

      Regardless, even in the context of what you're saying, you're just plain wrong. "Boning up" would mean, "I know how a computer works, and I'm going to take some course about programming," not learning the ins and outs of Linux or its command-line tools. Again, you make this painful assumption that people should already know the subject they're paying a lot of money to learn about.

  145. Does not compute by kenh · · Score: 1

    I'm at a loss - this is a second-year college student that is trying to shape the course taught by a professor to first-year college students? How much are the students paying for this class?

    The lab should compliment the lectures, not the other way around. It sounds like this second-year student wants to make converts out of windows users, I don't think that's why they are taking the class.

    It is your job to help the students work with the tools provided to complete the projects for the course your lab period supports, try to evangelize Linux and you'll lose students attention, period. If students want to know more than the basics, they can come to you OR research it on their own...

    To be honest, the poster sounds like too many Linux 'enthusiasts' - they want you to embrace Linux as deeply & completely as they themselves do, and won't take no for an answer.

    If you can't put together a decent "how to work with the Linux-based CS lab for class CS101" pamphlet, consider using selected portions of existing works, like Kier Thomas' Linux Pocket Guide:

    http://www.ubuntupocketguide.com/index_main.html

    It was written for Ubuntu 8.04, but could easily serve as the basis for a how to get started guide (and the students will appreciate not having to buy another textbook)...

    --
    Ken
    1. Re:Does not compute by copb.phoenix · · Score: 1

      True, I am an overeager Linux enthusiast. My position relies on me not pushing that point, and I think perhaps it's a good time to stress that part of the reason I was given this task was to teach me more than the students I will be teaching. Different areas of focus - I will tell you that the Microsoft nuts in my class know more about Linux without touching it than I do about not being dramatic, not being forceful, being someone that they feel they can approach for what I do definitely know, and otherwise a few things that are personal and being given a chance as an opportunity for me to grow. That being said, the rest of my statement is: I am qualified, even without a degree, to do the part of this class I am doing. I am not the only one, but I am the only one interested enough to do so. We don't do much of anything overly complex because this class is mixed a bit and it's a first year class. Our entire campus's philosophy is that if you approach people with the reality of what they are signing themselves up for a lifetime of, they will either love it or leave it, and perhaps that's for everyone's better nature. Beyond that, we are not the sort to be abusive, forceful, or absurd ~ we teach a what a love of the field means with patience and understanding, and know that some students don't even want to be in our institution (IMHO, one of the worst mistakes parents make is to FORCE their kids into college). Of course, I am always open to my department head testing me on knowledge of the material on the syllabus. I can do it in my sleep - indeed, I already do so much more to pay for my tuition and bills outside of college. You made the mistake of assuming that sophomore means "not a clue what to do or what he's doing". I do have a good feel (granted, with always more to learn), but I needed different perspectives and advice that can't be naturally pooled into a single person - something the Internet (in general) is good at after you filter out the noise.

  146. Re:Lol by jellomizer · · Score: 1

    I say just teach them enough to pass the class. If they want to learn more feel free to show them more. But don't stress out over trying to Evangelicalize them to the Linux way, really it isn't worth it. Some of them will stick to Microsoft and make their living doing MS Coding, others will learn Linux and be interested enough to be comfortable with it, and others will really love it and ditch all things Microsoft.

    Focus on teaching them enough to pass the class is the only way to go.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  147. Teaching something new by lsatenstein · · Score: 1

    When the only tool you have is a hammer, everything looks like a nail. The way then is to explain to students that by maintaining tunnel vision, they will not be as skilled as the competition, and on graduation, will find it harder to get a good job. In the class, you will have some GURUS, and try to get them to motivate their peers. See what you can do to make the use of Linux a positive experience. Good luck

    --
    Leslie Satenstein Montreal Quebec Canada
  148. Paradigm shift by ResidentSourcerer · · Score: 1

    You are doing things in a different way. This is a mind stretch moment.

    When I went form DOS to Mac, one of the concepts that took me a bit to realize is that the syntax is inverted:

    In a gui world, much of the itme, syntax is Object -> Verb. Select what you want, then what you do to it.

    In a cli world, the verb comes first.

    In vi it varies. 6} the 6 is an adverb, modifying how many paragraphs to go. But in :s/foo/bar/g the adverb (g) comes at the end.

    ***

    One of the ways that will help you teach is to present the same task in both a gui and cli way to do it.
    So as an example use an event log, and go through it looking for certain types of events. Then show them grep and sort

    When I learned to use a NeXT one of the joys of it was that for most things there was a GUI way (good for doing it the first or occasional times) and a CLI way (good for frequent, automated use.)

    SMIT, the AIX admin interface, was way cool in that as you used the GUI interface there was a window that constructed the cli command that was going to actually do the work.

    Another cool thing to show them is how easy it is to monitor a bunch of computers/processes with a combination of x11 and xterm. When I was sysadmin I frequently had 30-40 xterms spread over 8 virtual workspaces.

    --
    Third Career: Tree Farmer Second Career: Computer Geek First Career: Teacher, Outdoor Instructor, Photographer.
  149. replying to reverse a bad mod by Rysc · · Score: 1

    please disregard

    --
    I want my Cowboyneal
  150. Re:Lol by KingMotley · · Score: 1

    I agree. Please tell the *nix community to adopt the standards set by the OS's that currently have 95% marketshare and we can all be happy.

    Still in production:
    VMS
    OpenVMS
    Windows Vista
    Windows 7
    Windows CE
    Windows Phone 7
    Android
    iOS
    XBox 360
    PS3
    Cisco IOS
    Linksys Embedded OS
    RealTime OS

    None of these can you drop to a command line and "just use" *nix commands. Stream piping and forking isn't "modern" it's archaic. It's been around for nearly 30 years.

  151. Re:Lol by KingMotley · · Score: 1

    OpenVMS latest release was just 6 months ago. I'd say that's still fully supported.

    Yes, all OS's derived from *nix typically have the same basic set of commands. Those OS's that don't derive from *nix typically do not have the same set of commands.

    Off the top of my head, Windows 95, XP, ME, 2000, Vista, 7, etc. combined makes up almost the entire PC market (including server) operating systems and out number those based on linux nearly 20:1. All of these support DOS commands (derived from CP/M), and most either come with or can support PowerShell.

    The whole point of a PowerShell is it's simplicity and uniformity of how things work from one command to the next, which has a smaller learning curve than *nix. Commands ALWAYS follow verb-noun format, and the commands are case insensitive, so calling them a hack with camel-case is about as appropriate as calling them a hack with ElItE-SpEaKnEsS-CaSe. In practice, most commands additionally have aliases, and you can make your own aliases as well.

    Of course commands that have a built in command in *nix will be longer when they don't have an exact equivalent in PowerShell, that's to be expected. But there are a ton of things that would be extremely long, impossible, or prohibitively complex for *nix (without 3rd party/non standard tools) to do that PowerShell does with ease. For example what's the standard way of processing through an XML fragment, iterating through subnodes and executing a program passing the subnode values as parameters using no 3rd party tools in *nix? PowerShell it's trivial. How about about what Physical disk in a remote machine on the network is getting used the most? Again, trivial. What's the screen resolution of a remote machine? What format is the primary partition? What what the longest running SQL query on your database server? What is the average response time of your primary drive? What is the average response time? Anything and everything that is available from the registry, the performance counters, or WMI is accessible easily.

  152. Cram, or light their fire? by OutOfMyTree · · Score: 1

    There are three key points here:
    1) You need to be clear why the students are being offered this course. What are they expected to gain from it? (I hope you know this already, but you haven't told us.)

    2) You need your professor to be very clear to you about what work is good enough to pass the course. Good students (which I assume you are) often have great difficulty in accepting work which is below the standard they set themselves, but clearly there must be a big gap between what you are used to doing which receives high marks and what just scrapes through.

    3) Go through the basics very slowly. Part of the point of the course must be to encourage the students to go on and work to really master the subject. You need to give the impression they can get on top of it. Hurrying them through half-understood material will not give them the confidence to go further. Always have some extension exercises for students who do zip through your material. You can give them little challenges to work on while you assist the bulk of the students towards getting a good grasp.

    [4) if there are a lot of absolute beginners in your class, request a second person to be your helper. Having two people makes a huge difference.]

  153. no gui by Anonymous Coward · · Score: 0

    give them a shell account and have them learn man and other cmd line tools, no gui.

  154. To the countless people who have commented... by copb.phoenix · · Score: 1

    Thank you. Even though my inability to stop and think to realize that our intstitution's arrangements for classes isn't the same as everywhere, much of the advice is still sound, and I'm reading through the vast majority of the comments. For those who asked for clarification time and time again, the following snippets of information seem to be the ones most needed: The course actually has a split purpose that goes three ways - teaching Linux, teaching a lot of fundamental theory in programming (loops, data structures, etc), and teaching C++ to the students. It is taught in two halves (each being a semester long course), and I'm helping teach the first half. As to the teaching itself, in the labs, they learn the practical part - where they actually use the machinery and things they're lectured on. In lectures, they learn history (in Computing), theory, and the concepts behind a lot of what I will most likely be responsible for. My professor is teaching the largest chunk of everything, but our planned focus is for him to teach lectures and for me to teach labs. The college is liberal arts, 4 years for most programs of study. My personal experience... Well, let's say I get most modern versions of Windows for free through MSDNAA and still get frustrated if I even have to spend the school's bandwidth to download a copy. I love Linux! And indeed, that is part of why I was selected for a potential candidate for helping teach this course - my love of FOSS, my ability to use everything needed in the class, and my seemingly endless patience and reason with people. Beyond that, I'm going to be going through these over the next week or so and reading them. Everyone's input is appreciated, and I would like to thank everyone.

  155. Re:Lol by Anonymous Coward · · Score: 0

    oo is great for encapsulation and inheritance and you can have it under unix with dozens scripting languages, but it`s a complement or glue to those tools you call archaic, in fact most people familiar with both would do a `top` replacement by filtering ps in one third of the lines you used if they want readability, or in a perl one-liner if they are showoffs.

  156. tomhudson? Shut up already, you nothing/nobody by Anonymous Coward · · Score: 0

    tomhudson, What have you ever done with any of the OS' mentioned that was any good as rated by others in the sciences of computing? Nothing I can find attached to the name tomhudson. tomhudson, You're just another dime a dozen wannabe tech wasting his days on slashdot because he's not good enough to have an actual job in the arena of computing.

    1. Re:tomhudson? Shut up already, you nothing/nobody by tomhudson · · Score: 2

      Oh look - the apk "you can protect your computer from viruses with a hosts file" dickhead.

  157. tomhudson do you have an actual CSC or CIS degree? by Anonymous Coward · · Score: 0

    Answer the question in my subject line above, tomhudson. Or, are you just "talking out your ass" again, as you usually do? We already know you don't know shit about this curriculum and that you do not have a computer science or computer information systems degree, so why on earth are you trying to play "expert" on something you have NO clue/idea/experience in yourself?? We already know the answer: tomhudson the wannabe is trying to play "expert" again as per his usual, in areas he has NO CLUE, or actual experience, in.

  158. tomhudson do you have an actual CSC or CIS degree? by Anonymous Coward · · Score: 0
  159. tomhudson is the straw man (he has no CSC degree) by Anonymous Coward · · Score: 0

    http://slashdot.org/comments.pl?sid=1952834&cid=34915292 answer the question there at the url where it was asked of you. Why do I get the feeling that tomhudson is talking out of his ass again as is his usual, on things he has no experience or clue in (such as actually having a CSC degree to his name)? If anyone is the "straw man" here, it's tomhudson the bullshit artist.

  160. tomhudson do you have a CSC degree to your name? by Anonymous Coward · · Score: 0

    http://slashdot.org/comments.pl?sid=1952834&cid=34915292 answer the question there at the url where it was asked of you tomhudson. I get the feeling that tomhudson is talking out of his ass again as is his usual, on things he has no experience or clue in (such as actually having a CSC degree to his name).

  161. Big talker tomhudson, a question is asked of you by Anonymous Coward · · Score: 0

    http://slashdot.org/comments.pl?sid=1952834&cid=34915292 , and answer the question there at the url where it was asked of you, tomhudson. Personally, I get the feeling that tomhudson is talking out of his ass again, as is his usual, on things he has no experience or clue in (such as actually having a CSC or CIS degree to his name), and yet he's talking as if he actually has taken and passed the entire gamut of coursework for a degree in the computer sciences? Let's see if he actually has said degree(s) and let him answer the question that was asked of him in the url above. He'll run away from it, as is his usual.

  162. tomhudson, running away from a simple question? by Anonymous Coward · · Score: 0

    http://slashdot.org/comments.pl?sid=1952834&cid=34915292 , and answer the question there at the url where it was asked of you, tomhudson. Personally, I get the feeling that tomhudson is talking out of his ass again, as is his usual, on things he has no experience or clue in (such as actually having a CSC or CIS degree to his name), and yet he's talking as if he actually has taken and passed the entire gamut of coursework for a degree in the computer sciences? Let's see if he actually has said degree(s) and let him answer the question that was asked of him in the url above then.

  163. tomhudson answer this question (and make us laugh) by Anonymous Coward · · Score: 0

    http://slashdot.org/comments.pl?sid=1952834&cid=34901396 answer the question there tomhudson. Make us laugh at you acting like you actually have a computer science degree to your name you actually earned (and we know you do not have that, and yet, you talk as if you do. You're always acting the "expert" tomhudson, so let's see how much of an expert you are and produce proof of your expertise in a degree in the computer sciences to your name, you wannabe).

  164. Please by Locke2005 · · Score: 1

    Teach them Windows instead. I've got to compete with these young whippersnappers, and I'd prefer they be hobbled as much as possible.

    --
    I've abandoned my search for truth; now I'm just looking for some useful delusions.
  165. Focus on useful tasks by lneely · · Score: 1

    Nobody gives a crap about how to navigate the terminal or GUI. These concepts are too abstract to be useful, and too boring to care. People learn by making connections to things that are important to them. You're talking about a group of CS students, so what will a CS student most likely want to do? Off the top of my head: online research and collaboration, writing technical papers, authoring and compiling code... What do these tasks involve? You're the teacher. :)

  166. Re:Lol by badkarmadayaccount · · Score: 1

    An object wrapping utility (call it obj) that takes the relevant command as an argument, checks options, and parses the output as a standard YAML encoded document would achieve that. So, when you want to create an object from the output of a command (assuming obj has appropriate descriptors), you just
    $my_object = obj command -a -b -c -d=5 --foo=enable.
    Want to get a member - enter the get utility
    get $my_object member_val.
    Sound reasonable?

    --
    I know tobacco is bad for you, so I smoke weed with crack.
  167. Please Don't by Anonymous Coward · · Score: 0

    I was a freshman in CS and had a course in Linux. I absolutely hated it. There is enough to learn about the basics of computer operation that you don't need to muddle their minds with legal bullshit, legacy crap, and "desktop customization". Just stick to windows. They weren't made for the lowest common denominator for no reason.

  168. Ubuntu is the first mistake by Murdoch5 · · Score: 1

    Install a bare minimum shell environment and have the students learn why Linux has the industry's best IPC mechanisms and why Linux has the best bar none performance. Instead of trying to each them Linux step by step have them see why it's a much more powerful environment then Windows. In truth most Linux classes are taught horribly and actually leave the students asking more questions and leave hating the system.

    If I were teaching it I would let the students explore and give them only one big project which needs to reply on all the different aspects of the Linux environment which make it special. If they are able to finish it then they can draw there own conclusions about what they think. If not then well then deal with that when it comes. I think for the first time I've ever seen, Linux should be taught with a simple, do it yourself and figure it out method, instead of the here's the shell, here's the message Q approach.

    After all aren't don't most Linux users have to figure this stuff out for there self when they start.