Course pages 2013–14
Unix Tools
Lecturer: Dr M.G. Kuhn
No. of lectures: 10
Suggested hours of supervisions: 0-1 (non-examinable course with exercises)
Operating Systems provides a useful foundation for this course.
Aims
This non-examinable course provides students with basic Unix/Linux experience and 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 concepts. Brief review of Unix history and design
philosophy, documentation, terminals, inter-process communication
mechanisms and conventions, shell, command-line arguments,
environment variables, file descriptors.
- Shell basics. Program invocation, redirecting standard I/O,
pipes, file-system navigation, argument expansion, quoting, job
control, signals, process groups, variables, locale.
- Shell script programming and configuration. Efficient
command entry with history and alias functions. Scripts, plain-text
file formats, control structures, functions. Customizing user
environments. Basics of X Window System configuration. Some
notes on MCS Linux.
- Common tools. Overview of common text, shell, and network
utilities and their most frequently used options, including sed,
grep, chmod, find, ssh, rsync, packaging and compression tools.
- Revision control systems. diff, patch, RCS, Subversion, git.
- Software development tools. C compiler, linker and
debugger, makefiles.
- 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.
- Number crunching and data visualization. Introduction to MATLAB.
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;
- 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., Foy, B.D. & Phoenix, T. (2011). Learning Perl. O’Reilly (6th ed.).