Accessibility Skip to Global Navigation Skip to Local Navigation Skip to Content Skip to Search Skip to Site Map Menu

COSC241 Programming and Problem Solving

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.

Paper title Programming and Problem Solving
Paper code COSC241
Subject Computer Science
EFTS 0.15
Points 18 points
Teaching period Semester 1 (On campus)
Domestic Tuition Fees (NZD) $1,092.15
International Tuition Fees (NZD) $5,004.75

^ Top of page

COMP 103 or COMP 160
Schedule C
Arts and Music, Commerce, Science

Computer Science Adviser (

Teaching staff

Co-ordinator: Dr Stefanie Zollmann
Lecturer: Dr Steven Livingstone

Professional Practice Fellow: Iain Hewson

Paper 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%
Teaching Arrangements
There are two labs and two lectures per week.

Textbooks are not required for this paper.

Course outline
View the course outline for COSC 241
Graduate Attributes Emphasised
Communication, Critical thinking, Information literacy, Self-motivation, Teamwork.
View more information about Otago's graduate attributes.
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 (e.g. stacks, queues, lists, sets, priority queues and equivalence relations)
  • Have an understanding of the most common data structures used to represent ADTs (e.g. arrays, linked lists, heaps) and the algorithms that operate on them
  • Understand fundamental sorting algorithms (selection, insertion, quicksort, mergesort and heapsort)
  • Have an increased proficiency in Java programming

^ Top of page


Semester 1

Teaching method
This paper is taught On Campus
Learning management system

Computer Lab

Stream Days Times Weeks
Attend one stream from
A1 Tuesday 09:00-10:50 9-13, 15-22
A2 Tuesday 12:00-13:50 9-13, 15-22
A3 Tuesday 14:00-15:50 9-13, 15-22
AND one stream from
B1 Friday 09:00-10:50 9-12, 15-22
B2 Friday 12:00-13:50 9-12, 15-22
B3 Friday 14:00-15:50 9-12, 15-22


Stream Days Times Weeks
A1 Monday 11:00-11:50 9-13, 15-16, 18-22
Thursday 11:00-11:50 9-13, 15-22