



Next: Lent Term 2008: Part Up: Michaelmas Term 2007: Part Previous: Software Engineering Contents
Unix Tools
Lecturer: Dr M.G. Kuhn
No. of lectures: 10
Operating Systems provides a useful foundation for this course.
Aims
This non-examinable course provides students with little Unix/Linux experience some important practical skills in using the Unix shell as an efficient working environment. It also introduces some popular software-engineering tools for working in teams, as well as formatting and data-analysis tools for preparing dissertations and scientific publications. These skills are essential not only for future practical CST projects, but for participating effectively in most real-world software projects.
Lectures
- Unix background and shell basics. Brief review of Unix
history and design philosophy. Inter-process communication
mechanisms and conventions (command-line arguments, environment
variables, files, directories, plain-text format, pipes, standard
I/O, signals, process groups, locale). Using the shell (bash)
for file system navigation, program invocation, piping and job
control. Finding documentation.
- Shell script programming and configuration. Efficient
command entry with history and alias functions. Regular expressions.
The shell as a simple scripting language with parameter
substitution, control structures, functions. Customizing user
environments with start-up scripts. Basics of X Window System
configuration. Some notes on PWF Linux.
- Common tools. Overview of common text, shell, and network
utilities and their most frequently used options.
- Software development tools. C compiler, linker and
debugger. Makefiles, packaging and compression tools.
- Revision control systems. Patch generation and application,
RCS, Subversion.
- Perl. Introduction to a powerful scripting and text
manipulation language. [2 lectures]
- LATEX. Typesetting basics, introduction to the most
popular tool for scientific document formatting. [2 lectures]
- Number crunching and data visualization. Use of MATLAB on
PWF machines.
Objectives
At the end of the course students should
- be confident in performing routine user tasks on a POSIX system,
understand command-line user-interface conventions and know how to
find more detailed documentation
- appreciate how a range of simple tools can be combined with
little effort in pipes and scripts to perform a large variety of
tasks
- be familiar with the most common tools, file formats and
configuration practices used
- be able to understand, write, and maintain shell scripts and
makefiles
- appreciate how using revision control systems and fully
automated build processes help to maintain reproducibility and
audit trails during software development
- know enough about basic development tools to be able to install
and modify C source code
- have gained experience in using Perl, LATEX and MATLAB
Recommended reading
* Lamport, L. (1994). LATEX - a documentation preparation system user's guide and reference manual. Addison-Wesley (2nd ed.).
Robbins, A. (2005). Unix in a nutshell. O'Reilly (4th ed.).
Schwartz, R.L. & Phoenix, T. (2005). Learning Perl. O'Reilly (4th ed.).




Next: Lent Term 2008: Part Up: Michaelmas Term 2007: Part Previous: Software Engineering Contents