Module Provider: |
School of Systems Engineering |
Number of credits: |
10 [5 ECTS credits] |
Level: |
I (Intermediate) |
Terms in which taught: |
Autumn |
Module Convenor: |
Dr
JAD
Anderson |
Pre-requisites: |
CS1B2 SE1A2 or CS1D2
|
Co-requisites: |
|
Modules excluded: |
|
Current from: |
2005/6 |
Aims:
To teach the C Programming language and the theory and practice of compilers. |
Assessable learning outcomes:
This course teaches introductory C programming, and also introduces the concepts underlying compiler design and compiler writing, such as: regular expressions, grammars, parsing, and finite state machines. Compiler design is taught using both hand-written lexical analysers and compilers and by using lexical analysers and compilers generated with the Unix tools Lex and YACC. |
Additional outcomes:
Appreciation of all standard computation as a transformation from an input text to an output text. |
Outline content:
The C programming language, including file handling using buffered and un-buffered input and output. Lexical analysis. Writing simple lexical analysers in C. Regular expressions and finite state machines. Writing simple lexical analysers with Lex. Introduction to compilation. Roles of lexical analysis and parsing. Grammars and parsing methods. Top-down and bottom-up parsing. Symbol tables and hashing. Code generation and code optimisation. |
Brief description of teaching
and learning methods:
Lectures. |
Contact hours:
| |
Autumn |
Spring |
Summer |
| Lectures |
20 |
|
|
| Tutorials/seminars |
|
|
|
| Practicals |
|
|
|
| Other contact (eg study visits) |
|
|
|
| |
|
|
|
| Total hours |
20 |
|
|
| |
|
|
|
| Number of essays or assignments |
1 |
|
|
| Other (eg major seminar paper) |
|
|
|
|
Assessment:
Coursework To implement a compiler for part of C. Relative percentage of coursework: 30% Examinations: One 90-minute written examination Requirements for a pass: 40% Reassessment arrangements: Examination only |