Slashdot is powered by your submissions, so send in your scoop

 



Forgot your password?
typodupeerror
×
Education Linux

Advice On Teaching Linux To CS Freshmen? 467

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.)"
This discussion has been archived. No new comments can be posted.

Advice On Teaching Linux To CS Freshmen?

Comments Filter:
  • LAMP (Score:4, Interesting)

    by neochubbz ( 937091 ) on Sunday January 16, 2011 @02:59PM (#34898328) Homepage
    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.
  • by Sivar ( 316343 ) <charlesnburns[ AT ]gmail DOT com> on Sunday January 16, 2011 @03:02PM (#34898340)

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

  • Re:WHAT? (Score:4, Interesting)

    by Nigel Stepp ( 446 ) on Sunday January 16, 2011 @03:26PM (#34898522) Homepage

    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.

  • by wonkavader ( 605434 ) on Sunday January 16, 2011 @03:29PM (#34898536)

    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.

  • by wonkavader ( 605434 ) on Sunday January 16, 2011 @03:40PM (#34898622)

    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.

  • by cskrat ( 921721 ) on Sunday January 16, 2011 @04:57PM (#34899136)
    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)
  • Linux from scratch (Score:4, Interesting)

    by sprior ( 249994 ) on Sunday January 16, 2011 @05:10PM (#34899210) Homepage

    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.

  • yes they will (Score:5, Interesting)

    by r00t ( 33219 ) on Sunday January 16, 2011 @05:24PM (#34899298) Journal

    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.

  • Re:Lol (Score:4, Interesting)

    by JWSmythe ( 446288 ) <jwsmythe@nospam.jwsmythe.com> on Sunday January 16, 2011 @06:47PM (#34899906) Homepage Journal

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

  • by quixote9 ( 999874 ) on Monday January 17, 2011 @01:03AM (#34901952) Homepage
    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...

To the systems programmer, users and applications serve only to provide a test load.

Working...