Object Oriented Programming
Run by School of Computer Science and Electronic Engineering
10 Credits or 5 ECTS Credits
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.
• 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
Apply an object-oriented approach to the process of software construction.
|Understand the concept of a class, distinguish between a class and an object; implement simple classes.||Implement classes in accordance with a given public interface; declare and use arrays of objects.||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.
|Distinguish between compile and run-time errors; handle run-time errors using exceptions.||Select appropriate set of exceptions for use within a particular method.||Create and make effective use of programmer defined exceptions.|
Employ systematic design strategies in the process of program development.
|Read and understand UML class and object diagrams.||Develop programs in accordance with class diagrams and other design documentation.||Appreciate the nature of the software life cycle ; demonstrate knowledge of at least two alternative models of the cycle.|
Test and debug software
|Correct simple errors arising from user input; conduct tests in accordance with a test plan.||Design and implement test plan; document the process testing; utilize a variety of debugging strategies and techniques.||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.|
|In-class Tests x 4||40|
Teaching and Learning Strategy
12 hours over 12 weeks
24 hours over 12 weeks
ASSESSED assignments, including tutorial questions, problems, essays etc.
36 hours over 12 weeks
- 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
- ICP-2150: Advanced Java Programming
- ICP-3011: Computer & Network Security
- ICP-2037: Databases - Design & Implement
- ICP-2027: Data Structures and Algorithms
- ICP-2225: Knowledge Manag & Info Retriev
- ICP-2221: Database Systems 1
- ICP-3123: Internet Tech for E-Commerce
- ICP-2302: Software Hut
- ICP-2005: Graphics & Web Design
- ICP-2011: Computer Networks
- ICP-2021: Algorithm Design with MATLAB
- ICP-3038: Computer Vision (20cr)
- ICP-2002: System Administration & Mainte
Courses including this module
Compulsory in courses:
- H612: BEng Computer Systs Eng (3 yrs) year 1 (BENG/CSE)
- G400: BSC Computer Science year 1 (BSC/CS)
- GN41: BSC Computer Science for Business year 1 (BSC/CSFB)
- I102: BSc Computer Science (with International Experience) year 1 (BSC/CSIE)
- GW49: BSC Creative Technologies year 1 (BSC/CT)
- H661: MEng Control and Instrumentation Engineering year 1 (MENG/CIE)
- H660: MEng Critical Safety Engineering year 1 (MENG/CRSEN)
- H617: MEng Computer Systs Eng (4 yrs) year 1 (MENG/CSE)
- H619: MEng Computer Systems Engineering (with International Exper) year 1 (MENG/CSEIE)