EE206: Software Engineering 4
Module co-ordinator: Prof. Barry McMullin
5 February 2006: This is a legacy website for module
EE206, which was used to support the module in academic years
prior to 2005-2006. From 2005-2006 onward the module is instead
supported via the DCU Virtual Learning Environment Moodle. This site has been left
in place for reference purposes, but it is no longer
maintained. All current information on the module will be made
available through the Moodle site only.
and Learning Outcomes | Syllabus |
Lecture Notes |
Links | Assignments | Tutorials
The course will be concerned with applications involving
the interaction of concurrent processes: means of realising
concurrency, and the use of modern interaction primitives
(semaphores, message passing). The course will also give the
students a basic introduction to the UNIX operating system and
discuss the interaction of concurrent processes using C code
developed on a UNIX system.
Goals and Learning
OutcomesHaving successfully completed this course, the
- be familiar with the fundamental principles of
- be familiar with key software optimisation
techniques for real-time systems.
- have acquired the basic skills necessary to work
in a UNIX environment.
- Real-time Programming: Features of a
- Real-time Optimisation: Arithmetic
identities, Constant folding, Reduction in strength, Common
sub-expression elimination, Loop invariant removal, Loop
induction elimination, Loop unrolling, Loop jamming, Scaled
numbers, Look-up tables, Imprecise computation (approximate
reasoning), Memory optimisation.
- Introductory UNIX: Overview of the UNIX
operating system,. UNIX implementations. Basic operations
and commands, File redirection, Command shells,
Communicating with remote systems, Manipulating
- Concurrent processes: Meaning of a
process. Natural analysis of real world applications in
terms of interacting concurrent processes. Difficulty of
mapping this onto the VonNeumann sequential architecture.
Solutions based on parallel hardware architecture and/or
pseudo-parallelism by time-slicing a single sequential
processor. Process interaction.
- Inter-process communication:
Synchronisation and communication. Use of semaphore
synchronisation and shared memory communication. Critical
section implementation. Examples using C code fragments.
Producer/consumer problem. Problems of unintended
side-effects and deadlocks. Use of message passing for
synchronisation and communication.
- Deadlock: Formal analysis. Deadlock
conditions. Resource allocation graph. Handling
- Input/output architecture: I/O device
classification. I/O hardware architecture.
TextbooksRecommended textbook (Purchase
- Tanenbaum, A.S., "Modern
operating systems", Prentice-Hall, 1992.
All are in the library.
- Kernighan, B & Pike,
R, “The UNIX programming
environment”, Prentice-Hall, 1984.
- Tanenbaum, A.S.,
"Operating systems - Design and implementation",
- Theaker, C.J. & Brookes,
G.R., "Concepts of operating systems",
- Ripps, D.L., "An
implementation guide to real-time programming", Yourdon
Latest revision: April 23rd, 2004.
BACK TO EE206