Software Development

Module description

The module will introduce you to software design and development concepts and methods, alongside intermediate and advanced constructs and concepts in the Java programming language, and the programming paradigms these relate to. This includes generic programming (and Java generics), concurrent programming (via Java threads), design patterns, networked programs and nested inner classes. We will also cover widespread tools in software development, including version control, unit testing, and code coverage.
Prerequisite module: ECM1410 or equivalent

Full module specification

Module title:Software Development
Module code:ECM2414
Module level:2
Academic year:2014/5
Module lecturers:
  • Professor Jonathan Fieldsend - Convenor
Module credit:15
ECTS value:



ECM1410 Object-Oriented Programming


ECM1410 or equivalent

Duration of module: Duration (weeks) - term 1:


Duration (weeks) - term 2:


Duration (weeks) - term 3:


Module aims

This module will introduce you to methods for the rigorous testing and assessment of software, and prepare you for complex programming tasks in a specific object-oriented programming language, including advanced concepts and syntax, and the use of multiple programs in parallel.

ILO: Module-specific skills

  • 1. use a software design and development method which incorporates both formal and informal techniques appropriately;
  • 2. design and implement rigorous testing frameworks for software, and be aware of the inherent limitations of tests developed;
  • 3. deploy advanced object-oriented language concepts and techniques;
  • 4. develop multi-program software systems.

ILO: Discipline-specific skills

  • 5. follow the phases of software development;
  • 6. recognise and evaluate different development practices, and judge their appropriateness for a specific development problem.

ILO: Personal and key skills

  • 7. analyse and break down a problem into constituent parts;
  • 8. compare and contrast critically different potential solutions to a problem.

Learning activities and teaching methods (given in hours of study time)

Scheduled Learning and Teaching ActivitiesGuided independent studyPlacement / study abroad

Details of learning activities and teaching methods

CategoryHours of study timeDescription
Scheduled learning and teaching activities 22Lectures
Scheduled learning and teaching activities 20Workshops/tutorials
Scheduled learning and teaching activities10Surgeries
Guided independent study20Individual assessed work
Guided independent study78Wider reading and exam preparation

Formative assessment

Form of assessmentSize of the assessment (eg length / duration)ILOs assessedFeedback method
Coursework – practical programming assignments10 hours1, 3, 5, 6, 7, 8Oral, on feedback sheet, and in model answer review in surgeries

Summative assessment (% of credit)

CourseworkWritten examsPractical exams

Details of summative assessment

Form of assessment% of creditSize of the assessment (eg length / duration)ILOs assessedFeedback method
Written exam – closed book702 hours3, 5, 6, 7, 8Oral, on request
Coursework – practical programming assignments3030 hoursAllWritten directly on submitted code/assignment, on feedback sheet, and in model answer review in surgeries

Details of re-assessment (where required by referral or deferral)

Original form of assessmentForm of re-assessmentILOs re-assessedTimescale for re-assessment
All aboveWritten exam (100%)AllAugust Ref/Def period

Re-assessment notes

Reassessment is by written exam only. For referred candidates the exam mark is capped at 40%. Deferred candidates will be awarded the higher of the uncapped exam mark alone and the uncapped exam mark combined with marks from previously completed assessments in the ratio 70:30.

Syllabus plan

The module syllabus is based on the four themes below, each individual topic listed being related to at least one of these themes:

- software design: system architectures, design patterns (builder pattern, singleton pattern, abstract factory method pattern, decorator pattern);

- software development and testing: fundamentals of software development and testing, V-model, unit testing, code coverage, corner cases, unit tests and the JUnit framework, mock objects and test suites, sophisticated integrated development environments (IDEs), profilers, version control systems;

- doing multiple things at once: concurrency, multi-tasking and threading, race conditions, atomic data, locks, deadlock, starvation, livelock, synchronisation, thread notification, data freshness, instance confinement, object publication and escape, safe construction, thread confinement, thread management, thread states, sockets, remote method invocation;

- programming styles and advanced Java syntax: generic programming, Java generics, event-driven programming, events and listeners, reflection in Java, Java collections framework.

Indicative learning resources - Basic reading



  1. Introduction to Programming and Object Orientated Design Using Java,James Nino and Frederick A. Horsch,3rd,Wiley,2008
  2. Learning Java,Niemeyer, Patrick and Knudsen, Jonathan,3rd,O'Reilly,2005,001.6424/JAV NIE
  3. Head First Design Patterns,Freeman, E & E, Sierra, K, Bates, B,,O'Reilly Media,2004,005.2762 FRE,978-0596007126
  4. Java Cookbook,Darwin, Ian,2nd,O'Reilly,2004,001.6424/JAV DAR,978-0596007010
  5. Effective Java: Programming Language Guide ,Bloch, Joshua,2nd,Addison Wesley,2008,001.6424/JAV BLO,978-0321356680
  6. Developing Java Software,Winder, Russel and Roberts, Graham,3rd,Wiley,2006,001.6424/JAV WIN
  7. Pragmatic Unit Testing In Java with JUnit, Hunt A. and Thomas D., Pragmatic Bookshelf, 2003, 005.1 HUN, 0-9745140-1-2

Module has an active ELE page?


Indicative learning resources - Web based and electronic resources

How to think like a computer scientist, DowneyAdam, 4th, ,2004

Origin date


Last revision date