tags:

views:

389

answers:

12

I was asked to teach UNIX to a group of people in my company who probably don't know much about UNIX with total Windows background. Help me decide the Course Contents. I don't want to go in and teach them a set of commands. I want it to be more on the lines of the UNIX architecture, file system, pipes, how everything are files, process creation and handling, virtual memory management etc. What do you all think? Help me in covering these topics.

+1  A: 

Both Unix and Windows share most of their basic OS concepts: file descriptors, processes, virtual memory, etc... The only main difference you will need to address immediately is the different path tree structure: single root plus mount points vs drive letters.

I think you have to distinguish between several widely different topics:

  • using the shell: You will need to get into concepts like process structure, file descriptors, basic commands.

  • programming under Unix: You will need to address IDEs, compiling tools, building tools, and dynamic linking.

  • using the Unix desktop: Modern Unices all have fairly comprehensive desktop environments, that work in a pretty similar way to Window... no big learning curve there.

Varkhan
Its not about system programming or C programming. It is more sort of shell scripting, and getting around with UNIX.
butters
A: 

Sounds to me like you want to take a basic OS course, and make it UNIX specific. If you're designing the course for developer types, I'd think that would work well - they'd be familar with basic OS constructs and would appreciate knowing the UNIX specific flavors and then the commands that interact with each construct.

If you're designing the course for regular people, though, they might get lost in the OS theory. Even with a simple OS example, the whole thing gets very complicated.

My favorite UNIX book of all time is "A Student's Guide to UNIX". I'm sure there's many great competitor's out there. But what I liked was that it combined commands with basic theory and bundled each section with a bit of history on why given parts of the OS were designed a certain way and/or a bit of history on who the designers were. So much of UNIX is the commands, it was nice to have all those little blurbs and they were often nice memory joggers.

bethlakshmi
Yes. It is for the developer type peoples. But most of the people who are going to attend are more experienced compared to me.
butters
+1  A: 

You should include information about the shell. Explain the standard old method of using the output of one command as the input for the next, using the pipe.

Also show how output redirection is powerful, and how error redirection works (&2>).

Have your "Students" install Cygwin on their workstations to give them the opportunity to run "Unix-Commands" right inside Windows.

Hendrik
+1  A: 

Underlying theory is always good, mention why UNIX is designed the way it is Eric Raymond's The Art of UNIX programming is good for that.

If they're going to be developing for UNIX some of the standards wont be amiss, Filesysetm Hierarchy standard and POSIX for example.

Benjamin Confino
A: 

I'd start with fundamentals and compare each concept to its Windows counterpart. Kernel, driver, memory, process, daemon, file, user, a shell (vs. the command prompt), a filesystem etc.

zvolkov
A: 

let them run some UNIX-like system e.g. from live-cd etc (ubuntu or knoppix maybe some other live UNIX systems as well)

If they are power windows users, compare bash to powershell. Most of windows users also don't get the cncept of init scripts vs. Windows services so I would explain that as well.

awk
+3  A: 

Unix topics in order of importance:

  1. Pipes

  2. Tool philosophy (do one thing well)

  3. The permissions model

  4. Shell syntax

  5. Interacting with processes

  6. Picking and using an editor

  7. Basic C programming

An ideal way for Windows folks to learn how to function in a Unix environment is to have them use Cygwin on their Windows box.

Jon Ericson
+1: not sure about the C bit though, basic perl or python possibly as they're easier and more useful for doing os interaction
cobbal
Jon Ericson
I think some scripting would be more useful than c
sixtyfootersdude
A: 
  • General directory structure.
  • Sockets and other various IPCs. Unix lets you treat them as files, which makes programming easier.
  • pthread library and concurrency concepts.
eed3si9n
A: 

I would go through the Linux Administration Handbook and look at the chapters in the book and focus on those concepts that are important to a user as opposed to an administrator.

NoahD
A: 

How about to talk a little about its history? http://www.bell-labs.com/history/unix/

epatel
Yes. Will definitely include it.
butters
+3  A: 

You must read The UNIX Philosophy by Mike Gancarz. It might be worthwhile using as a text, but it will definitely give you a lot of the reasons why UNIX is good and how to leverage it's power best.

dwc
Thanks for pointing the books. The books seems really interesting will definitely check it out. But I can't seem to find a free copy online :(
butters
A: 

In addition to all of the other great suggestions, I would recommend discussing regular expressions in detail with examples in sed, awk, perl, vi, etc. REs are used in so many places, they really deserve their own place in the discussion. Add in a discussion of the common text processing utilities - cut, paste, grep, etc.

D.Shawley