Beta
×

Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Advice On Teaching Linux To CS Freshmen?

timothy posted more than 3 years ago | from the treat-them-like-your-future-boss dept.

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

cancel ×

467 comments

Sorry! There are no comments related to the filter you selected.

Lol (-1, Troll)

Anonymous Coward | more than 3 years ago | (#34898306)

don't bother..

Re:Lol (2, Insightful)

Anonymous Coward | more than 3 years ago | (#34898356)

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.

Beat me to it. (2, Insightful)

tomhudson (43916) | more than 3 years ago | (#34898418)

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.

Re:Beat me to it. (4, Insightful)

punnie (1977628) | more than 3 years ago | (#34898512)

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

Re:Beat me to it. (2)

Mitchell314 (1576581) | more than 3 years ago | (#34898582)

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

Re:Beat me to it. (1)

noobermin (1950642) | more than 3 years ago | (#34898708)

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.

Re:Lol (1)

Mitchell314 (1576581) | more than 3 years ago | (#34898570)

don't bother..

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

Deja-vu (0)

Anonymous Coward | more than 3 years ago | (#34898316)

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

Everything and Nothing (4, Insightful)

fineghal (989689) | more than 3 years ago | (#34898320)

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

Re:Everything and Nothing (3, Funny)

Anonymous Coward | more than 3 years ago | (#34898488)

Start with vi and go from there.

They should already know! (0, Flamebait)

frinkacheese (790787) | more than 3 years ago | (#34898324)

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.

Re:They should already know! (2)

GPSguy (62002) | more than 3 years ago | (#34898364)

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.

Re:They should already know! (4, Insightful)

MoonBuggy (611105) | more than 3 years ago | (#34898412)

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.

Re:They should already know! (4, Interesting)

wonkavader (605434) | more than 3 years ago | (#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.

Re:They should already know! (1)

wonkavader (605434) | more than 3 years ago | (#34898480)

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

Re:They should already know! (0)

Anonymous Coward | more than 3 years ago | (#34898482)

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.

Re:They should already know! (4, Informative)

rainmouse (1784278) | more than 3 years ago | (#34898374)

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.

Re:They should already know! (0, Flamebait)

tomhudson (43916) | more than 3 years ago | (#34898456)

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 [alphagfx.com]
  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.

Re:They should already know! (0, Insightful)

Anonymous Coward | more than 3 years ago | (#34898378)

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.

Re:They should already know! (2)

ocdscouter (1922930) | more than 3 years ago | (#34898408)

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.

Re:They should already know! (5, Insightful)

dmomo (256005) | more than 3 years ago | (#34898392)

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

Re:They should already know! (3, Interesting)

wonkavader (605434) | more than 3 years ago | (#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.

Re:They should already know! (1)

next_ghost (1868792) | more than 3 years ago | (#34898544)

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.

LAMP (3, Interesting)

neochubbz (937091) | more than 3 years ago | (#34898328)

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.

Re:LAMP (2)

allometry (840925) | more than 3 years ago | (#34898464)

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.

Re:LAMP (1)

neochubbz (937091) | more than 3 years ago | (#34898508)

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.

Re:LAMP (1)

royallthefourth (1564389) | more than 3 years ago | (#34898478)

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.

Re:LAMP (0)

Anonymous Coward | more than 3 years ago | (#34898686)

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

Re:LAMP (1)

wonkavader (605434) | more than 3 years ago | (#34898636)

Here here. Good idea.

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

Re:LAMP (1)

NortySpock (1966236) | more than 3 years ago | (#34898714)

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

It's Relatively Hit Or Miss (1)

Anonymous Coward | more than 3 years ago | (#34898332)

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.

Start by... (0)

Anonymous Coward | more than 3 years ago | (#34898336)

teaching them how to update those hardy's :P

Re:Start by... (3, Insightful)

Arker (91948) | more than 3 years ago | (#34898348)

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

Re:Start by... (2)

GPSguy (62002) | more than 3 years ago | (#34898382)

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.

Re:Start by... (0)

Anonymous Coward | more than 3 years ago | (#34898432)

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.

Compiling. (0)

Anonymous Coward | more than 3 years ago | (#34898640)

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

Re:Start by... (1)

Arker (91948) | more than 3 years ago | (#34898734)

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.

Re:Start by... (1)

Ironchew (1069966) | more than 3 years ago | (#34898422)

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

Re:Start by... (5, Funny)

TheRaven64 (641858) | more than 3 years ago | (#34898442)

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

Feeling leet.

Re:Start by... (1)

Anonymous Coward | more than 3 years ago | (#34898610)

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

Re:Start by... (1)

Arker (91948) | more than 3 years ago | (#34898696)

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.

Re:Start by... (2)

Nigel Stepp (446) | more than 3 years ago | (#34898444)

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.

Re:Start by... (1)

tomhudson (43916) | more than 3 years ago | (#34898494)

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.

how i learned to use linux in 4 days (3, Insightful)

digitalsushi (137809) | more than 3 years ago | (#34898338)

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.

Re:how i learned to use linux in 4 days (2)

tomhudson (43916) | more than 3 years ago | (#34898516)

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.

Re:how i learned to use linux in 4 days (0)

Anonymous Coward | more than 3 years ago | (#34898630)

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

Show the CLI controlling the GUI (5, Interesting)

Sivar (316343) | more than 3 years ago | (#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+.

Teaching the basics of linux use to freshmen (5, Insightful)

GPSguy (62002) | more than 3 years ago | (#34898350)

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.

Re:Teaching the basics of linux use to freshmen (1)

jedidiah (1196) | more than 3 years ago | (#34898628)

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.

Re:Teaching the basics of linux use to freshmen (5, Insightful)

AchilleTalon (540925) | more than 3 years ago | (#34898656)

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.

explore (1)

Anonymous Coward | more than 3 years ago | (#34898352)

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

WHAT? (1)

Ebbesen (166619) | more than 3 years ago | (#34898358)

CS students with no experience with Linux when they start?

Damn.

Re:WHAT? (3, Informative)

Cidolfas (1358603) | more than 3 years ago | (#34898424)

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.

Re:WHAT? (3, Interesting)

Nigel Stepp (446) | more than 3 years ago | (#34898522)

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.

Re:WHAT? (0)

Anonymous Coward | more than 3 years ago | (#34898426)

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

'nuff said!

Terminal (0)

Anonymous Coward | more than 3 years ago | (#34898362)

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.

Re:Terminal (2)

Dr_Barnowl (709838) | more than 3 years ago | (#34898728)

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.

Which GUI? (1)

Kenja (541830) | more than 3 years ago | (#34898410)

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

Well, what DO they already know about computers? (4, Insightful)

excelsior_gr (969383) | more than 3 years ago | (#34898430)

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.

Split the class in half (5, Funny)

TheRaven64 (641858) | more than 3 years ago | (#34898454)

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

Re:Split the class in half (0)

Anonymous Coward | more than 3 years ago | (#34898558)

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

 

Re:Split the class in half (0)

Anonymous Coward | more than 3 years ago | (#34898568)

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.

Demo linux power on old hardware (0)

Anonymous Coward | more than 3 years ago | (#34898460)

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.

Shouldn't take much (1)

Urza9814 (883915) | more than 3 years ago | (#34898470)

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.

Really? (1)

Dogbertius (1333565) | more than 3 years ago | (#34898474)

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"

What I had... (1)

Haedrian (1676506) | more than 3 years ago | (#34898484)

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.

Re:What I had... (1)

gomiam (587421) | more than 3 years ago | (#34898724)

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.

Show the several faces of Linux (1)

Anonymous Coward | more than 3 years ago | (#34898492)

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.

And what is the purpose of the class? (1)

joeaguy (884004) | more than 3 years ago | (#34898502)

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.

First Time Teaching (5, Insightful)

perry64 (1324755) | more than 3 years ago | (#34898510)

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!!!

Two Questions (1)

jasnw (1913892) | more than 3 years ago | (#34898528)

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.

Pipes and more pipes. (5, Insightful)

tempest69 (572798) | more than 3 years ago | (#34898530)

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.

Re:Pipes and more pipes. (-1)

Anonymous Coward | more than 3 years ago | (#34898760)

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.

Nice greetings, to my favorite store http://www.hot-styles-for-you.de

can't be said enough (0)

Anonymous Coward | more than 3 years ago | (#34898548)

RTFM

Concepts and implementation. (1)

fahrbot-bot (874524) | more than 3 years ago | (#34898560)

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.

Re:Concepts and implementation. (1)

rjstanford (69735) | more than 3 years ago | (#34898688)

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.

Have fun(it will allow them to have it to)! (1)

hrrY (954980) | more than 3 years ago | (#34898572)

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

The filesystem is a good starting place (0)

Anonymous Coward | more than 3 years ago | (#34898586)

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.

Doesn't compute (4, Insightful)

ThePhilips (752041) | more than 3 years ago | (#34898614)

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

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

Re:Doesn't compute (1)

SocratesJedi (986460) | more than 3 years ago | (#34898746)

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.

Some ideas (1)

next_ghost (1868792) | more than 3 years ago | (#34898616)

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.

Their Imaginations (1)

b4upoo (166390) | more than 3 years ago | (#34898620)

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

From experience... (1)

rogueippacket (1977626) | more than 3 years ago | (#34898624)

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.

It is a tool (1)

fermion (181285) | more than 3 years ago | (#34898632)

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.

50% basics + 50% question and answer (1)

millisa (151093) | more than 3 years ago | (#34898638)

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

How I taught a complete noob (now he's a sysadmin) (0)

Anonymous Coward | more than 3 years ago | (#34898652)

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.

Make them use linux. (1)

JismTroll (588456) | more than 3 years ago | (#34898666)

The only way to do it is going to be to force them to rely on Linux. That's how I learned.

simple (1)

monkyyy (1901940) | more than 3 years ago | (#34898668)

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

it's a bit dated... (1)

capsteve (4595) | more than 3 years ago | (#34898670)

but chris taylors' thesis [http] 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 [faqs.org]

Make it relevant (1)

Vrtigo1 (1303147) | more than 3 years ago | (#34898672)

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.

Why Unix ? (0)

Anonymous Coward | more than 3 years ago | (#34898692)

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.

What is there to teach? (0)

Anonymous Coward | more than 3 years ago | (#34898694)

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

Filosophy and history (3, Insightful)

internet-redstar (552612) | more than 3 years ago | (#34898698)

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

Yo, /. geeks pay attention! (1, Insightful)

sribe (304414) | more than 3 years ago | (#34898700)

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.

Show them the things they use every day... (0)

Anonymous Coward | more than 3 years ago | (#34898740)

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.

Don't (1, Flamebait)

LBArrettAnderson (655246) | more than 3 years ago | (#34898748)

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.

Give them insight into the underpinnings (1)

solid_liq (720160) | more than 3 years ago | (#34898750)

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.

Go slow, let them own it. (1)

hunteke (1172571) | more than 3 years ago | (#34898756)

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.

Teach them how to develop on Linux (2)

kbielefe (606566) | more than 3 years ago | (#34898776)

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

Load More Comments
Slashdot Login

Need an Account?

Forgot your password?

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>