Module Information

Module Identifier
Module Title
Academic Year
Semester 1
Mutually Exclusive
Other Staff

Course Delivery

Delivery Type Delivery length / details
Practical 11 x 2hr practicals (2 groups)
Other 10 x 1 hr workshops
Lecture Up to 42 lectures


Assessment Type Assessment length / details Proportion
Semester Exam 2 Hours   Online examination  40%
Semester Assessment Best of 2 in-class tests  20%
Semester Assessment 1 practical programming assignment involving design and implementation of a java solution to a problem  30%
Semester Assessment Up to 8 practical worksheets completed in labs and in own time.  10%
Supplementary Exam 2.5 Hours   Supplementary exam  Resit failed examination and/or resubmission or failed/non-submitted coursework components or ones of equivalent value  100%

Learning Outcomes

On successful completion of this module students should be able to:

1. Demonstrate an understanding of problem abstraction and program design by producing good software designs using simple Universal Modelling Language (UML) notation.

2. Realise those designs by using Java concepts in programs that solve a variety of problems.

3. Demonstrate professionalism through the production of high quality program code.

4. Describe the fundamental concepts of programming and compare how these are expressed in Java and in other programming languages.


This module is designed for students with experience of programming in procedural languages. The material covered will build on the students' previous computing experience. The practical work associated with the module will help students to become familiar with Java and the development environment offered at Aberystwyth.

Brief description

The module concentrates on the design of software using object oriented design techniques in a way that eases development by a team of programmers, enhances reuse of existing components and improves the maintainability of the resulting software. The idea of problem solving and algorithm design is addressed very early on in the module. Through extensive practical experience, students gain skills in developing, evaluating and implementing their own designs.

Through the tutorial system they are also given practice in evaluating and implementing designs produced by others. Emphasis is placed on distinguishing between the design of a software product and its implementation.

The Java programming language is used as a basis for illustrating the concepts covered by the syllabus.

The intention of the supervised practical sessions is to enhance the problem solving and programming skills of participants, giving them practical experience of writing software systems in Java. Java is integrated into students' existing mental models of programming by consideration of other programming paradigms.


1. Welcome and preview - 1 Lecture

Introduction to the department and the course.

2. Management Issues and Professional Conduct - 1 Lecture

The growing role of computing and software. The need for software engineering and professionalism.

3. Computer system appreciation - 1 Lecture

Computer organisation at Aberystwyth. Emphasis is placed on the relationships between hardware, architecture and software, with reference to the computer systems at Aberystwyth.

4. Programming Paradigms - 10 lectures

An examination of different programming paradigms. Linking previous experience with Object-oriented ideas. Other paradigms and Tools.

5. Representation of designs - 3 Lectures

An introduction to illustrating designs using the Unified Modelling Language (UML).

6. Programming in the large - An introduction to Java - 23 Lectures

Software crisis, abstraction, algorithms and programs. The design of algorithms, object oriented programming, and an introduction to Java. Programming constructs, expressions, primitive types, classes and objects. Information hiding. Further object oriented design - inheritance.

7. Testing - 1 Lectures

Techniques and aids for error detection.

Module Skills

Skills Type Skills details
Application of Number Throughout. Inherent in subject
Communication In tutorials and weekend and write-ups of assignments
Improving own Learning and Performance Yes. In practicals
Information Technology Throughout. Inherent in subject
Personal Development and Career planning To some extent. Encourages students to see roles in subject for career and personal development.
Problem solving Throughout. Inherent in subject
Research skills Throughout. Looking up solutions to problems
Subject Specific Skills Java Programming
Team work In tutorials and weekend

Reading List

Recommended Text
Hutton, Graham (2007 (various p) Programming in Haskell /Graham Hutton. Cambridge University Press Primo search Stevens, Perdita. (2006.) Using UML :software engineering with objects and components /Perdita Stevens with Rob Pooley. 2nd ed. Addison-Wesley Primo search
Consult For Futher Information
Bird, Richard (1998.) Introduction to functional programming using Haskell /Richard Bird. 2nd ed. Prentice Hall Europe Primo search O'Sullivan, Bryan. (2009.) Real world Haskell /by Bryan O'Sullivan, John Goerzen, and Don Stewart. Also available for free online at O'Reilly Skansholm, Jan (2004.) Java from the beginning /Jan Skansholm. 2nd ed. Addison-Wesley Primo search Thompson, Simon. (2011.) Haskell :the craft of functional programming /by Simon Thompson. 3rd ed. Addison-Wesley Primo search


This module is at CQFW Level 4