Module Identifier CSM2510  
Module Title THE UNIX ENVIRONMENT AND THE C LANGUAGE  
Academic Year 2000/2001  
Co-ordinator Dr Myra Wilson  
Semester Semester 2  
Pre-Requisite CSM0120  
Co-Requisite CSM0320  
Course delivery Lecture   22 lectures  
  Practical   11 x 2hr practicals  
Assessment Exam   2 Hours   100%  
  Resit assessment   The supplementary examination will take the same form under the terms of the Department's policy.    

General description
This module is designed to to provide experience of using the Unix environment and supporting tools as well as an understanding of the programming language C.

Aims
This module is designed to to provide experience of using the Unix environment and supporting
tools as well as an understanding of the programming language C.

Learning outcomes
On successful completion of the module, students will:

Syllabus
1. Introduction - 1 lecture
Overall introduction to the module.

2. Unix at the command line - 2 lectures
An introduction to the alternative Unix shells. Shell built-in commands and commonly used external commands and editors.

3. Shell Script programming - 2 lectures
The programming language provided by a selected Unix shell in common usage.

4. Tools of the Unix Environment - 3 lectures
Purpose and usage of Unix environment tools such as sed, sort, uniq, awk, grep and so on.

5. Basic Concepts of "C" - 1 lecture
History of the C language, philosophical di erences between C language design and Java. Basic form of a C program compared with that of a Java program. Using the compiler.

6. Control Structures - 1 lecture
Sequence, branching and iteration in C compared with that of Java.

7. Basic Data Structures - 1 lecture
Review of basic data types and operators in C.

8. Functions - 2 lectures
Discussion of ways in which functions are implemented, and used in C, including parameter passing mechanisms. Input/Output.

9. Composite Data Structures - 1 lecture
A first discussion of Arrays in C.

10. Software Support Tools - 1 lecture
Make, Lint, Debuggers. Libraries and library utilities.

11. C Programming Style and Portability - 1 lecture
Language standards. Portability. Programming standards.

12. Arrays, Pointers and Functions - 2 lectures
A discussion of pointer data types, how they relate to arrays, and how they contrast with references to Java objects.

13. Dynamic Data Structures - 2 lectures
Implementation of various record structures and dynamic structures. Pointers. Malloc. Examples in C. Parallels will be drawn with how the internals of Java do this for you.

14. Pitfalls - 1 lecture
Major problem areas. Design rationale of C and of Java in problem areas.

15. Further Features - 1 lecture
C preprocessor, header files, conditional inclusion, macro substitution, bitwise operators, casts, enumeration, scope, static and external declarations, separate compilation.

Reading Lists
Books
** Recommended Text
L. Ammeraal. (1991) C for Programmers. Wiley
A. Kelley and I. Pohl. (1995) A Book on C: programming in C. 4rd. Benjamin Cummings ISBN: 0201183994
Students will probably wish to choose one of Ammeraal or Kelley and Pohl..
** Consult For Futher Information
M.J. Bach. (1986) The Design of the UNIX Operating System. Prentice Hall