Course Description

Course Name

Programming and Problem Solving

Session: VDNS3121

Hours & Credits

18 Credit Points

Prerequisites & Language Level

Taught In English

  • There is no language prerequisite for courses at this language level.


Programming in Java to solve real-world problems; abstract data types; lists, stacks, and trees; algorithm design.

This paper builds on and extends the knowledge students gained of programming and the Java language in COMP 160. More advanced programming ideas, such as recursion and abstract data type design, are introduced, as well as their implementations in Java. A variety of different data structures are discussed together with the algorithms to query and modify them. Theoretical and practical analyses of efficiency are used throughout the paper.

Teaching Arrangements
There are two labs and two lectures per week.

Course Structure
This paper follows on from COMP 160. Its major aims are:
- To reinforce the abstract data type concept introduced in COMP 160 and to explain some of the most useful abstract data types
- To explain some important data structures with which to implement these abstract data types
- To introduce design and analysis techniques for algorithms
- To give practice in writing medium-scale Java programs (testing, de-bugging, run-time and storage analysis from both a theoretical and a practical viewpoint)
- To encourage good practice in all aspects of programming

- Assignment 10%
- Practical Tests 5% and 10%
- Assessed Labs 15%
- Final Exam 60%

Learning Outcomes
Students will:
- Understand the nature of algorithms and how to analyse their efficiency
- Understand random number generators and how to make use of them
- Have an appreciation for abstract data types (ADTs) and a knowledge of the ADTs most commonly used in software development (eg stacks, queues, lists, sets, priority queues and equivalence relations)
- Have an understanding of the most common data structures used to represent ADTs (eg arrays, linked lists, binary search trees) and the algorithms that operate on them
- Understand the structure of graphs and networks and some of the algorithms that apply to them
- Have an increased proficiency in Java programming

Java Foundations: Introduction to program design & data structures, second edition, by Lewis, DePasquale and Chase.

*Course content subject to change