Page 1 of 1

Module Code - Title:


Year Last Offered:


Hours Per Week:













Grading Type:


Prerequisite Modules:

Rationale and Purpose of the Module:

Starting from the foundations laid out in Initial Programming this module progresses to classical algorithms, data structures, and more advanced programming constructs, for application to problems from a range of domains. Likewise, students will employ modular design, software reuse and the object oriented concepts of inheritance, encapsulation and polymorphism, to solve such problems.


On the basis of the concepts and programming skills learned in Initial Programming, the following topics will be dealt with: 1. a more detailed examination of functions and parameter types; 2. a more detailed examination of classes, objects and encapsulation, covering key terminology like state, instances, abstraction, inheritance, polymorphism, association, and generalization/specialization; 3. Introduction to abstract data types, and their use to describe and implement common data structures (e.g. arrays, lists, trees etc.) 4. Introduction to common algorithms on those structures (e.g. sorting and searching techniques); 5. Recursion as a problem solving technique: iterative and recursive solutions to problems and their implementation; 6. The relevance of these programming constructs to problems from various application domains including those of the students' degrees; 7. Modularity in specification and code, the concept of component models; and the use of simple libraries; 8. Problem solving using object-oriented as opposed to procedural approaches; 9. Constructors and extending classes: abstract classes, interfaces and polymorphism, single V multiple inheritance, accessing and initializing super-classes;

Learning Outcomes:

Cognitive (Knowledge, Understanding, Application, Analysis, Evaluation, Synthesis)

On successful completion of this module, students should be able to: 1. Given a moderately complex problem description from an application domain, design, evaluate, and synthesise programs that solve the problem. 2. Design, and assemble software components in an object oriented manner (e.g., classes, interfaces, inheritance) to solve the specified problem appropriately. 3. Apply appropriate common abstract data type techniques in the development of components and programs. 4. Compare and integrate basic data structure manipulation algorithms (e.g. search, sort) into software solutions for specified problems. 5. Construct and discriminate-between solutions for specified problems based on recursion and iteration. 6. Synthesise knowledge of more advanced (including object-oriented) programming concepts with problems that arise in an application domain. 7. Debate the appropriateness of various data structure manipulation algorithms for specified problems. 8. Judge the relevance of control-flow solutions (recursion/iteration) for specified problems.

Affective (Attitudes and Values)

On successful completion of this module, students should be able to: 1. Appreciate the significance of the contribution programmers make to the development of a software product 2. Appreciate the value of efficient, effective and reliable programming code to the overall software system

Psychomotor (Physical Skills)


How the Module will be Taught and what will be the Learning Experiences of the Students:

The lectures will be used to present more advanced programming concepts, including object-oriented programming concepts, and related examples (Knowledgeable). Likewise the labs will allow students to apply these concepts to specific problems via programming exercises for pre-specified and self-specified problems from the domain of their initial degree (Creative). Students will have to present on the relevance of various control-flow structures (recursion/iteration), various object oriented structures and various data structure manipulation algorithms (Articulate)

Research Findings Incorporated in to the Syllabus (If Relevant):

Prime Texts:

Y.D. Liang (2015) Introduction to Java Programming (10th edition) , Pearson, Higher Education

Other Relevant Texts:

H. Schildt and D. Skrein (2012) Java Fundamentals , McGraw Hill

Programme(s) in which this Module is Offered:

Semester - Year to be First Offered:

Module Leader: