Advanced Programming

Module summary

Module code: COMP1549
Level: 5
Credits: 15
School: Liberal Arts and Sciences
Department: Computing and Mathematical Sci.
Module Coordinator(s): Muhammad Taimoor Khan


Pre and co requisites

COMP1148 Computer Programming.


Working effectively as a programmer or software engineer requires a sophisticated mixture of technical skills and knowledge. Although details of technologies may change frequently many concepts such as: componentisation, concurrent programming, use of design patterns, and programming in a distributed environment are likely to remain relevant for the foreseeable future. All programmers and software engineers should have an understanding of the role and use of supporting tools e.g. for testing, version control and documentation and project building. This course aims to broaden and deepen the skills and knowledge that the students will have gained from completing their level 4 programming courses. The skills and concepts mastered will be useful in themselves and will form a firm foundation on which higher-level skills can be built at level 6.

Learning outcomes

On successful completion of this course, a student will be able to:

1. Use professional techniques for code and design reuse such as library creation, application of design patterns and development of software components.

2. Apply advanced programming techniques such as threads, reflection and generic classes, basic distributed programming techniques, object relational mapping.

3. Make appropriate use of software engineering tools and techniques such as test-driven development, version control, generation of documentation, build-tools

Indicative content

Programming with threads;
Using reflection;
Creating software components;
Test-driven development (e.g. with JUnit);
Version control and build tools (e.g. Git);
Creating Generic classes;
Design patterns;
Building libraries.
Lambda expressions

Teaching and learning activity

Concepts with be introduced in formal lectures. Practical skills will be demonstrated during the lectures. Practical skills will be developed and concepts reinforced during laboratory and tutorial sessions. In the laboratory sessions students will be introduced to the professional practice of "pair programming".


Coursework 1 – LO 1-3, 100% weighting, 1500 words, Groupwork Software development including code, documentation and evaluation and self-reflection