COMP30070 Object-Oriented Programming

Academic Year 2020/2021

This module reviews object-oriented concepts such as classes, objects, message passing, inheritance and polymorphism, and studies in detail how these concepts are used in software development. The focus is on producing software that is:
(1) verifiably-correct, by using Test-Driven Development and
(2) maintainable, by observing solid programming principles during development.
There is a strong emphasis on practical programming skills throughout this module. The main programming language employed may vary from year to year.

Show/hide contentOpenClose All

Curricular information is subject to change

Learning Outcomes:

On successful completion of this module students should be able to:
describe the key aspects of object-oriented programming and their inter-relationships,
design, implement, test and debug object-oriented programs of moderate complexity,
compare and contrast different object-oriented programming languages,
assess the quality of a piece of object-oriented software.

Indicative Module Content:

- Introduction to OOP and OOPL used in the module
- Unit Testing
- Inheritance
- Software Quality: Coupling, cohesion, abstraction and encapsulation
- Polymorphism: Type systems, overriding, abstract methods, template methods, hook methods.
- Alternatives to inheritance
- Combining Closures with OOP
- Web app development using an OO framework
Plus
- Three programming assignments, developed & submitted through GitHub
- End-of-semester, programming exam

Student Effort Hours: 
Student Effort Type Hours
Lectures

24

Practical

24

Autonomous Student Learning

70

Total

118

Approaches to Teaching and Learning:
The module material is presented in face-to-face or online lectures where students are actively encouraged to ask questions and discuss the material further. The weekly labs involve give the students a space to engage with the material in a practical way. A number of programming assignments are set to enable students to improve their programming skills. 
Requirements, Exclusions and Recommendations
Learning Requirements:

This module assumes that participants:
have a solid grounding in object-oriented programming using Java, or a similar language,
have some experience of functional programming,
are familiar with basic data structures and algorithms,
are competent users of Git and GitHub,
have some experience with test-driven development.

Learning Recommendations:

Participants on this module should have covered the material provided by:
COMP20010 Data Structures and Algorithms I
COMP20040 Data Structures and Algorithms II


Module Requisites and Incompatibles
Not applicable to this module.
 
Assessment Strategy  
Description Timing Open Book Exam Component Scale Must Pass Component % of Final Grade
Examination: Examination of theoretical and programming elements of the module. Week 12 Yes Graded No

70

Assignment: Programming assignments Throughout the Trimester n/a Graded No

30


Carry forward of passed components
Yes
 
Resit In Terminal Exam
Spring No
Please see Student Jargon Buster for more information about remediation types and timing. 
Feedback Strategy/Strategies

• Group/class feedback, post-assessment

How will my Feedback be Delivered?

After each assignment the lecturer will discuss a sample solution with the class and highlight the most common errors.