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.)"

12 of 467 comments (clear)

  1. 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
  2. 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 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: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".

  4. 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
  5. 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
  6. 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
  7. 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.

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

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

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