Operating Systems provides a useful foundation for this course.
Aims
This non-examinable course gives students with little Unix/Linux
experience a basic understanding of the use of the shell and some
popular development utilities. These skills will be important for
future practical CST project work.
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. Customising user
environment 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, patch generation and application, revision control systems
(RCS, CVS, 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.
MATLAB.
Use of MATLAB on PWF machines to perform numerical experiments and
visualise the results in homework exercises.
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
appreciate how using revision control systems and fully automated
build processes helps to maintain reproducibility and audit trails
during software development
know enough about basic development tools to be able to install
and modify openly available C source code
have some idea of the capabilities of 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. & Gilly, D. (1999). Unix in a nutshell. O'Reilly (3rd ed.).
Schwartz, R.L. & Phoenix, T. (2001). Learning Perl. O'Reilly (3rd ed.).