COMP103P - Applied Software Development

This database contains 2017-18 versions of the syllabuses. For current versions please see here.

Code COMP103P
PrerequisitesSuccessful completion of COMP101P
Taught ByGraham Roberts (40%)
Dean Mohamedally (40%)
Yun Fu (20%)
AimsThis module provides a thorough introduction to object-oriented (OO) programming and mobile application development. The first part of the module uses Java to give a grounding in key object-oriented concepts such as class design, inheritance, dynamic binding and interfaces. Material is also included on the implementation of core data structures such as lists, trees and hash tables, and on key development tools and practices.

The second part of the module focuses on applying the principles of OO programming in the development of apps via learning-by-doing and problem based learning (PBL) approaches. Several introductions to popular mobile and cloud/web service platforms are included, with continued emphasis on the OO approach to software development. User interface (UI) design and implementation is also introduced.

This is an intensely practical module and full student engagement outside of lectures and in lab classes is critical to successful completion of the module. To ensure that the process of designing and implementing mobile and cloud applications is fully understood, the module requires students to undertake a major group project where they must work with an external client to develop and deliver a working application. This takes students through all the stages of a software development project, applying the concepts taught via lectures and online material. Outcomes in addition to the software deliverable include real-world client engagement, team management and project documentation deliverables.

The project clients come from a wide range of backgrounds, including companies of all sizes, the NHS, academic organisations and charities. Each client defines an application that they have a real need for and will put into use. A successful project will not only deliver a working application but also have it ready either for distribution via an app store at their client’s request or for handover as research materials. The interaction with clients to develop software meeting real-world needs is a unique and defining characteristic of this module, and provides students with a thorough introduction to the processes and challenges involved.

Learning OutcomesAfter completing the module attendees will:
  • Be able to design and implement object-oriented programs in Java, using a large sub-set of the language effectively.
  • Have knowledge of key object-oriented principles and design strategies.
  • Understand how core data structures are implemented.
  • Be able to use programming tools such as an integrated development environment (IDE), debugger, and code repository.
  • Be able to design, document and implement the software for a real-world client application, which could be a mobile app, cloud app or webservice.
  • Be able to design and implement graphical user interfaces suitable for scaling on multiple devices and resolutions.
  • Have experience of effective team work methods and project organisation skills.
  • Have experience of interacting with a real client. 




Topics covered in lectures or via online material:

Course Introduction

Programming with the Java Programming Language

  • The core language.
  • Developing classes, inheritance and dynamic binding.
  • Exceptions and file handling.
  • Comparison of Java to other languages.

Object-Oriented Programming

  • Developing small programs using classes.
  • Identifying and implementing class relationships.
  • Using abstract classes, interfaces and inheritance.
  • Good design and programming practice.
  • Using basic UML class diagrams.

Data structures

  • Implementing common data structures, such as trees, lists and hash tables.

Mobile/Cloud development

  • Requirements capture.
  • Design for a mobile/cloud/web application.
  • Event driven programming.
  • App development frameworks.
  • Storing data.

Client and Project Management

  • Working as an effective software development team.
  • Preparing project timelines and document templates.
  • Communicating effectively with clients to meet requirements.
  • Report writing.

Project work

For BSc/MEng Computer Science students the app development project begins during term 1 in the second half of ENGS102P. For MEng Mathematical Computation students the app development project begins at the start of term in January. All projects continue through to late April when the final submission is made.

Team formation

Students are formed into project teams with three members, each team being allocated a client who provides the requirements for the app to be developed. Project teams are selected by the module organisers, who also provide the clients. Clients will enter a partnership agreement with the student team via a formal contract. Project teams are responsible for organising themselves, submitting regular progress reports and working with the client. Lecturers and teaching assistants monitor progress and provide feedback.

Team deliverables

Regular bi-weekly progress reports and a sequence of milestone submissions are made during the course of the project. The final submission includes the working version of the client’s application, and project report documentation for both the client and for assessment.

Individual deliverables

Each student is required to submit an individual report giving an evaluation of the project and an assessment of each team member including themselves.

Method of Instruction

Lecture presentations and online material. Group project tutorials and group working.


The course has the following assessment components:

  • Group Project (80%);
  • Two In-class Tests (20%);

To pass this module, a student must:

  • Gain a mark of 40% or more from all components combined;
  • Obtain a minimum mark of 30% in each component worth ≥ 30% of the module as a whole.


Reading list available via the UCL Library catalogue.