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|
ECM1410 Object-Oriented Programming
ECM1410 or equivalent
|Duration of module:||
Duration (weeks) - term 1: |
12Duration (weeks) - term 2:
0Duration (weeks) - term 3:
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 Activities||Guided independent study||Placement / study abroad|
Details of learning activities and teaching methods
|Category||Hours of study time||Description|
|Scheduled learning and teaching activities||22||Lectures|
|Scheduled learning and teaching activities||20||Workshops/tutorials|
|Scheduled learning and teaching activities||10||Surgeries|
|Guided independent study||20||Individual assessed work|
|Guided independent study||78||Wider reading and exam preparation|
|Form of assessment||Size of the assessment (eg length / duration)||ILOs assessed||Feedback method|
|Coursework practical programming assignments||10 hours||1, 3, 5, 6, 7, 8||Oral, on feedback sheet, and in model answer review in surgeries|
Summative assessment (% of credit)
|Coursework||Written exams||Practical exams|
Details of summative assessment
|Form of assessment||% of credit||Size of the assessment (eg length / duration)||ILOs assessed||Feedback method|
|Written exam closed book||70||2 hours||3, 5, 6, 7, 8||Oral, on request|
|Coursework practical programming assignments||30||30 hours||All||Written 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 assessment||Form of re-assessment||ILOs re-assessed||Timescale for re-assessment|
|All above||Written exam (100%)||All||August Ref/Def period|
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.
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
ELE – http://vle.exeter.ac.uk
- Introduction to Programming and Object Orientated Design Using Java,James Nino and Frederick A. Horsch,3rd,Wiley,2008
- Learning Java,Niemeyer, Patrick and Knudsen, Jonathan,3rd,O'Reilly,2005,001.6424/JAV NIE
- Head First Design Patterns,Freeman, E & E, Sierra, K, Bates, B,,O'Reilly Media,2004,005.2762 FRE,978-0596007126
- Java Cookbook,Darwin, Ian,2nd,O'Reilly,2004,001.6424/JAV DAR,978-0596007010
- Effective Java: Programming Language Guide ,Bloch, Joshua,2nd,Addison Wesley,2008,001.6424/JAV BLO,978-0321356680
- Developing Java Software,Winder, Russel and Roberts, Graham,3rd,Wiley,2006,001.6424/JAV WIN
- 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, http://www.greentreepress.com/thinkapjava/ ,2004
Last revision date