COMP103P- Object-Oriented Programming
This database contains 2016-17 versions of the syllabuses. For current versions please see here.
|Prerequisites||Successful completion of COMP101P|
|Taught By||Graham Roberts (50%), Dean Mohamedally (50%)|
|Aims||This 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 Outcomes||After completing the module attendees will: |
Topics covered in lectures or via online material:
Programming with the Java Programming Language
The core language.
Inheritance and dynamic binding.
Comparison of Java to other languages.
Developing small programs using classes.
Identifying and implementing class relationships.
Using abstract classes, interfaces and inheritance.
Good design and programming practice.
Simple UML class diagrams.
Implementing common data structures, such as trees, lists and hash tables.
Principles of graphical user interface design and implementation.
Designing a mobile application.
Event driven programming.
Mobile app frameworks.
User interface design and implementation for touch based user interfaces.
Client and Project Management
Working as an effective software development team Preparing project timelines and document templates.
Reporting effectively with clients to meet requirements.
• Two in-class tests (60 minute mini-exams)
The apps development project begins at the start of term in January, and continues through to late April when the final submission is made.
Group formation: Students are split into project groups with around 2-3 members, each group being allocated a client who provides the requirements for the app to be developed. Project groups are selected by the module organisers, who also provide the clients. Clients will enter a partnership agreement with the student team via UCL Advances. Project groups are responsible for organising themselves, submitting regular progress reports and working with the client. Lecturers and teaching assistants monitor progress and provide feedback.
Group deliverables: Regularly bi-weekly progress reports and three 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 group 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.
A UCL Library reading list can be found on Moodle.
The recommended text is:
Developing Java Software, 3rd Edition,
by Russel Winder and Graham Roberts,
published by John Wiley and Sons, 2006
A useful Android text is:
Beginning Android Application Development
by Wei-Meng Lee
published by John Wiley and Sons, 2012