Operating Systems provides a useful foundation for this course.
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.
Unix background and shell basics.
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.
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.
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
Introduction to a powerful scripting and text manipulation language.
Typesetting basics, introduction to the most popular tool for
scientific document formatting.
Use of MATLAB on PWF machines to perform numerical experiments and
visualise the results in homework exercises.
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
* 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.).