Module ICP-1023:
Object Oriented Programming

Module Facts

Run by School of Computer Science and Electronic Engineering

10 Credits or 5 ECTS Credits

Semester 2

Organiser: Dr David Edward Perkins

Overall aims and purpose

To introduce the object-oriented approach to software design and implementation; to explore a range of advanced features of Java, including the Java Collections Framework(JCF) and Generic Programming; to introduce basic search and sort algorithms, to introduce the use of the UML design language; to familiarize students with a variety of test strategies.

Course content

• Classes, objects and encapsulation; instance variables and method implementation; the public interface of a class; constructors and overloading; access and mutator methods; reference types; static variables and methods. • Inheritance; superclasses and subclasses; overriding methods; polymorphism; interface types; abstract classes; final methods and classes; the class Object; generic types and classes; generic programming techniques. • JCF architecture; use and implementation of lists, sets, maps, stacks and queues; iterators; efficiency of data structures. • Error types; compile time vs. run time errors; error handling strategies; the exception mechanism; use of try, catch, finally, throws; exception hierarchy. • UML structure diagrams; class relations; top-down and bottom-up design; CRC cards; design patterns; development strategies and the software life cycle. • Unit and system testing; white-box and black-box testing; regression testing; boundary conditions; tester classes; mock objects; use of debugging facilities in a modern IDE; use of pseudo-random data sets. • Text and binary file formats; Java class hierarchy for handling IO; streams; sequential and random file access; object streams; serialization. • Simple search and sort algorithms. Algorithm metrics. Big-Oh notation. Linear and binary search. Non-quadratic sort algorithms.

Learning outcomes mapped to assessment criteria

  threshold

40%

good

60%

excellent

70%

Apply an object-oriented approach to the process of software construction.

Implement classes in accordance with a given public interface; declare and use arrays of objects. Understand the concept of a class, distinguish between a class and an object; implement simple classes. Independently design and develop classes to solve a range of programming problems.

Make use of and/or develop inheritance hierarchies; implement interfaces; utilize facilities for generic programming.

Understand the principles of a class hierarchy; make use of pre-existing hierarchies. Implement a class hierarchy; implement an interface; use pre-existing generic classes; use polymorphism to process objects of a related type. Implement a generic classes and interfaces; specify constraints on type parameters.

Understand and use classes provided through the Java Collections Framework.

Create linked lists and use some of the fundamental methods associated with this class. Utilize a range of classes from the JFC (e.g. stacks, queues, maps). Identify the most appropriate components of the JCF for solution of specific programming problems.

Employ the exception handling mechanism to deal with program errors.

Select appropriate set of exceptions for use within a particular method. Distinguish between compile and run-time errors; handle run-time errors using exceptions. Create and make effective use of programmer defined exceptions.

Employ systematic design strategies in the process of program development.

Develop programs in accordance with class diagrams and other design documentation. Read and understand UML class and object diagrams. Appreciate the nature of the software life cycle ; demonstrate knowledge of at least two alternative models of the cycle.

Test and debug software

Design and implement test plan; document the process testing; utilize a variety of debugging strategies and techniques. Correct simple errors arising from user input; conduct tests in accordance with a test plan. Produce data sets for use in program testing; clearly distinguish test strategies and assess their utility.

Use a range of advanced file handling techniques.

Use readers and writers to manipulate sequences of bytes and characters. Write programs to process binary data; use sequential and random access to process data stored in files. Make effective use of object streams; use simple file encryption techniques.

Understand and use simple search and sort algorithms.

Use linear and binary search techniques. Use a range of sort techniques. Determine time complexity of search and sort algorithms.

Assessment Methods

Type Name Description Weight
Laboratory 30
Programming Assignment 30
In-class Tests x 4 40

Teaching and Learning Strategy

Hours
Tutorial

12 hours over 12 weeks

12
Lecture

24 hours over 12 weeks

24
Private study 10
 

ASSESSED assignments, including tutorial questions, problems, essays etc.

18
Laboratory

36 hours over 12 weeks

36

Transferable skills

  • Literacy - Proficiency in reading and writing through a variety of media
  • Numeracy - Proficiency in using numbers at appropriate levels of accuracy
  • Computer Literacy - Proficiency in using a varied range of computer software
  • Self-Management - Able to work unsupervised in an efficient, punctual and structured manner. To examine the outcomes of tasks and events, and judge levels of quality and importance
  • Exploring - Able to investigate, research and consider alternatives
  • Critical analysis & Problem Solving - Able to deconstruct and analyse problems or complex situations. To find solutions to problems through analyses and exploration of all possibilities using appropriate methods, rescources and creativity.

Subject specific skills

  • Knowledge and understanding of facts, concepts, principles & theories
  • Use of such knowledge in modelling and design
  • Problem solving strategies
  • Deploy tools effectively
  • Knowledge and/or understanding of appropriate scientific and engineering principles
  • Principles of appropriate supporting engineering and scientific disciplines

Pre- and Co-requisite Modules

Courses including this module

Compulsory in courses:

Optional in courses: