<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_plain.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="m10470">

    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">Linux for Computer Scientists and Engineers</name>
    <metadata xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">
  <md:version xmlns:bib="http://bibtexml.sf.net/">2.1</md:version>
  <md:created xmlns:bib="http://bibtexml.sf.net/">2002/01/22</md:created>
  <md:revised xmlns:bib="http://bibtexml.sf.net/">2004/08/10 08:47:25.295 GMT-5</md:revised>
  <md:authorlist xmlns:bib="http://bibtexml.sf.net/">
      <md:author xmlns:bib="http://bibtexml.sf.net/" id="arudys">
      <md:firstname xmlns:bib="http://bibtexml.sf.net/">Algis</md:firstname>
      
      <md:surname xmlns:bib="http://bibtexml.sf.net/">Rudys</md:surname>
      <md:email xmlns:bib="http://bibtexml.sf.net/">arudys@rice.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist xmlns:bib="http://bibtexml.sf.net/">
    <md:maintainer xmlns:bib="http://bibtexml.sf.net/" id="arudys">
      <md:firstname xmlns:bib="http://bibtexml.sf.net/">Algis</md:firstname>
      
      <md:surname xmlns:bib="http://bibtexml.sf.net/">Rudys</md:surname>
      <md:email xmlns:bib="http://bibtexml.sf.net/">arudys@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer xmlns:bib="http://bibtexml.sf.net/" id="reedstrm">
      <md:firstname xmlns:bib="http://bibtexml.sf.net/">Ross</md:firstname>
      
      <md:surname xmlns:bib="http://bibtexml.sf.net/">Reedstrom</md:surname>
      <md:email xmlns:bib="http://bibtexml.sf.net/">reedstrm@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  <md:keywordlist xmlns:bib="http://bibtexml.sf.net/">
    <md:keyword xmlns:bib="http://bibtexml.sf.net/">Linux</md:keyword>
  </md:keywordlist>

  <md:abstract xmlns:bib="http://bibtexml.sf.net/"/>
</metadata>
    
    <content xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">
	<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="intro">
	    Linux is used a great deal in the computer science and
	    engineering communities.  This is largely because of the
	    wealth of tools available in these problem domains.
	    Engineers and computer scientists have historically relied
	    on various versions of UNIX, so this has been a natural
	    progression.  Here we mention a small subset of the
	    available tools.
	</para>
	<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="emacs">
	    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">Emacs</name>
	    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="emacs-intro">
		Emacs is a well-known textfile editor originally
		developed for UNIX.  It is a graphical editor, and is
		extremely extensible and configurable.  Emacs is
		configured and extended using a programming language
		(called elisp), which basically means that extensions
		can be arbitrarily powerful.  Emacs' features include
		syntax highlighting, auto-indenting, multiple buffers
		and windows, support for CVS, and many others. 
	    </para>
	</section>
	<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="vi">
	    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">VI</name>
	    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="vi-intro">
		Vi is another popular editor for UNIX.  It is much
		smaller and less extensible than emacs.  For the
		uninitiated, it is cryptic (you have to type a command
		just to be able to start typing).  However, once you
		learn the relevant commands, it is surprisingly
		powerful.
	    </para>
	</section>
	<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="make">
	    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">Make</name>
	    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="make-intro">
		Make is an automated tool originally written to for
		recompiling programs based on which files have
		changed.  It has developed into a general-purpose tool
		for satisfying dependencies.  You specify a
		configuration file which contains an encoding of a
		dependency graph and associated commands to execute to
		satisfy a particular dependency.  Then depending on
		which dependencies still need satisfying, make will
		run the respective commands.
	    </para>
	    <example xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="make-example">
		<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="make-example-intro">
		    This is perhaps best-illustrated by an example.
		    Consider the following "Makefile":
		</para>
		<code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" type="block" id="make-makefile">
prog: prog.o
	gcc prog.o -o prog

prog.o: prog.c
	gcc -c prog.c -o prog.o
		</code>
		<para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="make-example-descr">
		    This is an example showing how to build the
		    program <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog</code> from the source
		    file <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.c</code>.  It shows the
		    file <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog</code> depending on the
		    intermediate file <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.o</code>, and
		    <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.o</code> depends on
		    <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.c</code>.  If
		    <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.o</code> is out of date
		    relative to its dependencies (that is,
		    <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">prog.c</code>), then it is
		    regenerated using the associated command (that is,
		    <code xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">gcc -c prog.c -o prog.o</code>). 
		</para>
	    </example>
	</section>
	<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="cvs">
	    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">CVS</name>
	    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="cvs-intro">
		CVS is a version management system.  It is used as
		backup storage for the current version of a file and
		as a repository for old versions of the file.  It is
		most commonly used to track versions of source code,
		but can also be used for tracking LaTeX documents, web
		pages, and has been used for configuration files as
		well. 
	    </para>
	</section>
	<section xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="latex">
	    <name xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/">LaTeX</name>
	    <para xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:bib="http://bibtexml.sf.net/" id="latex-intro">
		LaTeX is a document-generation system.  It uses
		plaintext source files with mark-up tags to indicate
		how the text should be formatted (a lot like HTML).
		It supports document sectioning, tables, embedded
		figures, and (perhaps most relevant to computer
		scientists and engineers) incredible support for
		mathematical equations, formulas, and theorems.
	    </para>
	</section>
	    
    </content>
    
</document>
