The descriptions are for modules currently being taught. They should be viewed as an example of the modules we provide. All modules are subject to change for later academic years.

Systems Software & Compilers (SYAC) 2014/5

Workload - Private Study - Assessment - Description - Aims - Learning Outcomes - Content - Teaching Materials - Recommended Books

Module Code COM00007I
Lecturers Jeremy Jacob, Lilian Blot, Neil Audsley
Taken By CS 2, CSESE 2, CSYS 2, MEng CS 2, MEng CSAI 2, MEng CSESE 2, MEng CSSE 2, MEng CSYS 2
Number of Credits 30
Teaching Autumn 2-10, Spring 2-10, Summer 1-3
Closed Assessments [33%] Closed Exam Spring 1, 1.50 hours
[50%] Closed Exam Summer 5-7, 2.00 hours
[17%] Closed Exam Summer 5-7, 1.50 hours
Reassessment [100%] Closed Exam - August Resit Week, 3.00 hours


  • Lectures: 48 x 1hr
  • Practicals: 24 x 1hr
  • Private Study: 1hr
  • Assessment: 1 x 1.5hrs
  • Assessment 2: 1 x 2hrs
  • Assessment 3: 1 x 1.5hrs

Private Study

Private study time should be used for reflection on the taught lecture material, and also to complete practicals questions set in the lab sessions.


Closed Assessments

  • Closed Exam Spring 1, 1.50 hours
  • Closed Exam Summer 5-7, 2.00 hours
  • Closed Exam Summer 5-7, 1.50 hours

There are three closed assessments: the spring/1 exam covers material taught in Autumn term; the 2 hour summer exams covers the material taught in spring term; the final 1.5 hour exam covers the remainder of the material.

Formative Feedback

Some sessions are used for practicing questions typical of the closed exams. Feedback will be given on submitted answers.


The module covers the main theories and techniques used in the compilation of software programming languages; in the design and implementation of system software, including operating systems and networks; and the principles of database systems. It commences with compilers, considering language grammars, parsing, parser generators, code generation and optimisation. Next, it covers operating systems, including processes, scheduling, inter-process communication and memory management. The third part of the module introduces computer networks, with an emphasis on the concepts and design issues of layered communication protocol architectures, local area networks and packet switching, and the basics of internetworking. The final part of the module introduces the theory of database design and the software engineering concepts involved in the development of databases and information systems, focussing on the relational database paradigm. Important issues such as information security are covered from both operating systems and database perspectives.


The aims of the module are to:

  • Understand the principles, design and implementation of system software, including operating systems and networks.
  • Understand the principles of the compilation of software programming languages.

Learning Outcomes

  • On completion of the compilers component of this module:
o Students will understand the theory and practice of programming language compilation, parsing, code generation and optimisation.
o Students will be able to: read and write concrete and abstract syntax definitions; develop backtracking and predictive parsers; develop parsers using parser generator tools; understand (some) theory behind parser generator tools; write programs to analyse and transform abstract syntax trees; read and write semantic definitions of programming languages; read and write definitions of compilers; define and test the correctness of compilers; understand an optimising compiler for simple procedural programming language, and extend it in new ways.
  • On completion of the operating systems component of this module students should understand:
o the structure and operation of an operating system; how the operating system supports application programming of concurrency, communication and I/O; have an appreciation of the facilities provided by common operating systems; computer architectures and their support within operating systems; provision of information security by the operating system.
  • On completion of the networks and distributed systems component of this module students should understand:
o basic concepts of networking, and the problems that they are trying to solve;
o the concepts of services and protocols, and the significance of the layering of protocols;
o the principles of operation of common protocols (examples of protocols are mainly taken from the Internet protocol suite and include TCP/IP).
  • On completion of the database component of this module students should be able to:
o design valid relational models and associated relational algebra and relational calculus queries;
o validate designs against specifications and understand the issues involved in building a relational database from a logical design;
o write SQL-based transactions;
o information security from a database perspective.


This module will integrate the concepts of system software (operating systems, networks and compilers) via substantive lectures and laboratory sessions.


Compilers: Concrete and abstract syntax. Lexical analysis, Thompson's Construction. Grammar transformations, ambiguity removal, left-recursion removal, left-factoring. Recursive descent, backtracking, first and follow sets, LL(k) parsing. Flex and Bison. Haskell for compiler writers. Big-step and small-step semantics. Syntax-directed translation. Control-flow graphs, liveness analysis, reaching definitions analysis. Optimisations, dead code elimination, constant propagation. Register allocation via graph colouring. Local variables and procedures.

Operating Systems: OS supported concurrency, including processes and threads; scheduling of processes and threads; inter-process communication, including both shared memory and message passing; deadlock avoidance and detection; memory management, including physical and virtual; file systems and I/O; information security.

Networks: Introduction to computer networks; network architecture; data link layer; network layer; internetworking; routing; transport layer; congestion control; application layer; middleware concepts.

Databases: Introduction to databases; relational databases; relational algebra; relational calculus ; normalisation; introduction to SQL; information security.

Teaching Materials

Copies of the lecture slides will be made available, together with any material required for the practicals.

Recommended Books

Rating Author Title Publisher Year
*** Aho, Lam, Sethi, and Ullman Compilers: Principles, Techniques, and Tools Prentice Hall 2006
*** Appel Modern Compiler Implementation in C (or Java) Cambridge 1998
*** Silberschatz Operating System Concepts Wiley 2009
*** Kurose and Ross Computer Networking: a top down approach (6th Ed) Pearson 2012
+++ Tanenbaum Computer Networks (5th Ed) Prentice Hall 2010
Back to top

Last updated: 25th August 2015